Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc

Issue 2434073003: Extract bitrate allocation of spatial/temporal layers out of codec impl. (Closed)
Patch Set: Addressed comments. Moved VideoCodec creation to factory class. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 * 9 *
10 */ 10 */
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 encoded_image_buffer_.reset(); 245 encoded_image_buffer_.reset();
246 return WEBRTC_VIDEO_CODEC_OK; 246 return WEBRTC_VIDEO_CODEC_OK;
247 } 247 }
248 248
249 int32_t H264EncoderImpl::RegisterEncodeCompleteCallback( 249 int32_t H264EncoderImpl::RegisterEncodeCompleteCallback(
250 EncodedImageCallback* callback) { 250 EncodedImageCallback* callback) {
251 encoded_image_callback_ = callback; 251 encoded_image_callback_ = callback;
252 return WEBRTC_VIDEO_CODEC_OK; 252 return WEBRTC_VIDEO_CODEC_OK;
253 } 253 }
254 254
255 int32_t H264EncoderImpl::SetRates(uint32_t bitrate, uint32_t framerate) { 255 int32_t H264EncoderImpl::SetRateAllocation(
256 if (bitrate <= 0 || framerate <= 0) { 256 const BitrateAllocation& bitrate_allocation,
257 uint32_t framerate) {
258 if (bitrate_allocation.get_sum_kbps() <= 0 || framerate <= 0) {
257 return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; 259 return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
258 } 260 }
259 codec_settings_.targetBitrate = bitrate; 261 codec_settings_.targetBitrate = bitrate_allocation.get_sum_kbps();
260 codec_settings_.maxFramerate = framerate; 262 codec_settings_.maxFramerate = framerate;
261 quality_scaler_.ReportFramerate(framerate); 263 quality_scaler_.ReportFramerate(framerate);
262 264
263 SBitrateInfo target_bitrate; 265 SBitrateInfo target_bitrate;
264 memset(&target_bitrate, 0, sizeof(SBitrateInfo)); 266 memset(&target_bitrate, 0, sizeof(SBitrateInfo));
265 target_bitrate.iLayer = SPATIAL_LAYER_ALL, 267 target_bitrate.iLayer = SPATIAL_LAYER_ALL,
266 target_bitrate.iBitrate = codec_settings_.targetBitrate * 1000; 268 target_bitrate.iBitrate = codec_settings_.targetBitrate * 1000;
267 openh264_encoder_->SetOption(ENCODER_OPTION_BITRATE, 269 openh264_encoder_->SetOption(ENCODER_OPTION_BITRATE,
268 &target_bitrate); 270 &target_bitrate);
269 float max_framerate = static_cast<float>(codec_settings_.maxFramerate); 271 float max_framerate = static_cast<float>(codec_settings_.maxFramerate);
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 484
483 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { 485 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) {
484 return WEBRTC_VIDEO_CODEC_OK; 486 return WEBRTC_VIDEO_CODEC_OK;
485 } 487 }
486 488
487 void H264EncoderImpl::OnDroppedFrame() { 489 void H264EncoderImpl::OnDroppedFrame() {
488 quality_scaler_.ReportDroppedFrame(); 490 quality_scaler_.ReportDroppedFrame();
489 } 491 }
490 492
491 } // namespace webrtc 493 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698