OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/sender/vp8_encoder.h" | 5 #include "media/cast/sender/vp8_encoder.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "media/base/video_frame.h" | 10 #include "media/base/video_frame.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 const_cast<uint8*>(video_frame->data(VideoFrame::kYPlane)); | 127 const_cast<uint8*>(video_frame->data(VideoFrame::kYPlane)); |
128 raw_image_->planes[PLANE_U] = | 128 raw_image_->planes[PLANE_U] = |
129 const_cast<uint8*>(video_frame->data(VideoFrame::kUPlane)); | 129 const_cast<uint8*>(video_frame->data(VideoFrame::kUPlane)); |
130 raw_image_->planes[PLANE_V] = | 130 raw_image_->planes[PLANE_V] = |
131 const_cast<uint8*>(video_frame->data(VideoFrame::kVPlane)); | 131 const_cast<uint8*>(video_frame->data(VideoFrame::kVPlane)); |
132 | 132 |
133 raw_image_->stride[VPX_PLANE_Y] = video_frame->stride(VideoFrame::kYPlane); | 133 raw_image_->stride[VPX_PLANE_Y] = video_frame->stride(VideoFrame::kYPlane); |
134 raw_image_->stride[VPX_PLANE_U] = video_frame->stride(VideoFrame::kUPlane); | 134 raw_image_->stride[VPX_PLANE_U] = video_frame->stride(VideoFrame::kUPlane); |
135 raw_image_->stride[VPX_PLANE_V] = video_frame->stride(VideoFrame::kVPlane); | 135 raw_image_->stride[VPX_PLANE_V] = video_frame->stride(VideoFrame::kVPlane); |
136 | 136 |
137 uint8 latest_frame_id_to_reference; | 137 uint32 latest_frame_id_to_reference; |
138 Vp8Buffers buffer_to_update; | 138 Vp8Buffers buffer_to_update; |
139 vpx_codec_flags_t flags = 0; | 139 vpx_codec_flags_t flags = 0; |
140 if (key_frame_requested_) { | 140 if (key_frame_requested_) { |
141 flags = VPX_EFLAG_FORCE_KF; | 141 flags = VPX_EFLAG_FORCE_KF; |
142 // Self reference. | 142 // Self reference. |
143 latest_frame_id_to_reference = last_encoded_frame_id_ + 1; | 143 latest_frame_id_to_reference = last_encoded_frame_id_ + 1; |
144 // We can pick any buffer as buffer_to_update since we update | 144 // We can pick any buffer as buffer_to_update since we update |
145 // them all. | 145 // them all. |
146 buffer_to_update = kLastBuffer; | 146 buffer_to_update = kLastBuffer; |
147 } else { | 147 } else { |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 if (buffer_to_update != kNoBuffer) { | 221 if (buffer_to_update != kNoBuffer) { |
222 buffer_state_[buffer_to_update].state = kBufferSent; | 222 buffer_state_[buffer_to_update].state = kBufferSent; |
223 buffer_state_[buffer_to_update].frame_id = encoded_image->frame_id; | 223 buffer_state_[buffer_to_update].frame_id = encoded_image->frame_id; |
224 } | 224 } |
225 } | 225 } |
226 return true; | 226 return true; |
227 } | 227 } |
228 | 228 |
229 uint32 Vp8Encoder::GetCodecReferenceFlags(vpx_codec_flags_t* flags) { | 229 uint32 Vp8Encoder::GetCodecReferenceFlags(vpx_codec_flags_t* flags) { |
230 if (!use_multiple_video_buffers_) | 230 if (!use_multiple_video_buffers_) |
231 return last_encoded_frame_id_ + 1; | 231 return last_encoded_frame_id_; |
232 | 232 |
233 const uint32 kMagicFrameOffset = 512; | 233 const uint32 kMagicFrameOffset = 512; |
234 // We set latest_frame_to_reference to an old frame so that | 234 // We set latest_frame_to_reference to an old frame so that |
235 // IsNewerFrameId will work correctly. | 235 // IsNewerFrameId will work correctly. |
236 uint32 latest_frame_to_reference = | 236 uint32 latest_frame_to_reference = |
237 last_encoded_frame_id_ - kMagicFrameOffset; | 237 last_encoded_frame_id_ - kMagicFrameOffset; |
238 | 238 |
239 // Reference all acked frames. | 239 // Reference all acked frames. |
240 // TODO(hubbe): We may also want to allow references to the | 240 // TODO(hubbe): We may also want to allow references to the |
241 // last encoded frame, if that frame was assigned to a buffer. | 241 // last encoded frame, if that frame was assigned to a buffer. |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 float scale_parameter = 0.5; | 416 float scale_parameter = 0.5; |
417 uint32 target_pct = optimal_buffer_size_ms * scale_parameter * | 417 uint32 target_pct = optimal_buffer_size_ms * scale_parameter * |
418 cast_config_.max_frame_rate / 10; | 418 cast_config_.max_frame_rate / 10; |
419 | 419 |
420 // Don't go below 3 times the per frame bandwidth. | 420 // Don't go below 3 times the per frame bandwidth. |
421 return std::max(target_pct, kMinIntra); | 421 return std::max(target_pct, kMinIntra); |
422 } | 422 } |
423 | 423 |
424 } // namespace cast | 424 } // namespace cast |
425 } // namespace media | 425 } // namespace media |
OLD | NEW |