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

Side by Side Diff: webrtc/modules/video_coding/main/source/codec_database.cc

Issue 1424843002: Make VCMEncodedFrameCallback const. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 VCMExtDecoderMapItem::VCMExtDecoderMapItem( 94 VCMExtDecoderMapItem::VCMExtDecoderMapItem(
95 VideoDecoder* external_decoder_instance, 95 VideoDecoder* external_decoder_instance,
96 uint8_t payload_type, 96 uint8_t payload_type,
97 bool internal_render_timing) 97 bool internal_render_timing)
98 : payload_type(payload_type), 98 : payload_type(payload_type),
99 external_decoder_instance(external_decoder_instance), 99 external_decoder_instance(external_decoder_instance),
100 internal_render_timing(internal_render_timing) { 100 internal_render_timing(internal_render_timing) {
101 } 101 }
102 102
103 VCMCodecDataBase::VCMCodecDataBase( 103 VCMCodecDataBase::VCMCodecDataBase(
104 VideoEncoderRateObserver* encoder_rate_observer) 104 VideoEncoderRateObserver* encoder_rate_observer,
105 VCMEncodedFrameCallback* encoded_frame_callback)
105 : number_of_cores_(0), 106 : number_of_cores_(0),
106 max_payload_size_(kDefaultPayloadSize), 107 max_payload_size_(kDefaultPayloadSize),
107 periodic_key_frames_(false), 108 periodic_key_frames_(false),
108 pending_encoder_reset_(true), 109 pending_encoder_reset_(true),
109 send_codec_(), 110 send_codec_(),
110 receive_codec_(), 111 receive_codec_(),
111 encoder_payload_type_(0), 112 encoder_payload_type_(0),
112 external_encoder_(NULL), 113 external_encoder_(NULL),
113 internal_source_(false), 114 internal_source_(false),
114 encoder_rate_observer_(encoder_rate_observer), 115 encoder_rate_observer_(encoder_rate_observer),
116 encoded_frame_callback_(encoded_frame_callback),
115 ptr_decoder_(NULL), 117 ptr_decoder_(NULL),
116 dec_map_(), 118 dec_map_(),
117 dec_external_map_() { 119 dec_external_map_() {}
118 }
119 120
120 VCMCodecDataBase::~VCMCodecDataBase() { 121 VCMCodecDataBase::~VCMCodecDataBase() {
121 ResetSender(); 122 ResetSender();
122 ResetReceiver(); 123 ResetReceiver();
123 } 124 }
124 125
125 int VCMCodecDataBase::NumberOfCodecs() { 126 int VCMCodecDataBase::NumberOfCodecs() {
126 return VCM_NUM_VIDEO_CODECS_AVAILABLE; 127 return VCM_NUM_VIDEO_CODECS_AVAILABLE;
127 } 128 }
128 129
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 } 229 }
229 return false; 230 return false;
230 } 231 }
231 232
232 void VCMCodecDataBase::ResetSender() { 233 void VCMCodecDataBase::ResetSender() {
233 DeleteEncoder(); 234 DeleteEncoder();
234 periodic_key_frames_ = false; 235 periodic_key_frames_ = false;
235 } 236 }
236 237
237 // Assuming only one registered encoder - since only one used, no need for more. 238 // Assuming only one registered encoder - since only one used, no need for more.
238 bool VCMCodecDataBase::SetSendCodec( 239 bool VCMCodecDataBase::SetSendCodec(const VideoCodec* send_codec,
239 const VideoCodec* send_codec, 240 int number_of_cores,
240 int number_of_cores, 241 size_t max_payload_size) {
241 size_t max_payload_size,
242 VCMEncodedFrameCallback* encoded_frame_callback) {
243 RTC_DCHECK(send_codec); 242 RTC_DCHECK(send_codec);
244 if (max_payload_size == 0) { 243 if (max_payload_size == 0) {
245 max_payload_size = kDefaultPayloadSize; 244 max_payload_size = kDefaultPayloadSize;
246 } 245 }
247 RTC_DCHECK_GE(number_of_cores, 1); 246 RTC_DCHECK_GE(number_of_cores, 1);
248 RTC_DCHECK_GE(send_codec->plType, 1); 247 RTC_DCHECK_GE(send_codec->plType, 1);
249 // Make sure the start bit rate is sane... 248 // Make sure the start bit rate is sane...
250 RTC_DCHECK_LE(send_codec->startBitrate, 1000000u); 249 RTC_DCHECK_LE(send_codec->startBitrate, 1000000u);
251 RTC_DCHECK(send_codec->codecType != kVideoCodecUnknown); 250 RTC_DCHECK(send_codec->codecType != kVideoCodecUnknown);
252 bool reset_required = pending_encoder_reset_; 251 bool reset_required = pending_encoder_reset_;
(...skipping 24 matching lines...) Expand all
277 if (new_send_codec.startBitrate > new_send_codec.maxBitrate) 276 if (new_send_codec.startBitrate > new_send_codec.maxBitrate)
278 new_send_codec.startBitrate = new_send_codec.maxBitrate; 277 new_send_codec.startBitrate = new_send_codec.maxBitrate;
279 278
280 if (!reset_required) { 279 if (!reset_required) {
281 reset_required = RequiresEncoderReset(new_send_codec); 280 reset_required = RequiresEncoderReset(new_send_codec);
282 } 281 }
283 282
284 memcpy(&send_codec_, &new_send_codec, sizeof(send_codec_)); 283 memcpy(&send_codec_, &new_send_codec, sizeof(send_codec_));
285 284
286 if (!reset_required) { 285 if (!reset_required) {
287 encoded_frame_callback->SetPayloadType(send_codec_.plType); 286 encoded_frame_callback_->SetPayloadType(send_codec_.plType);
288 if (ptr_encoder_->RegisterEncodeCallback(encoded_frame_callback) < 0) {
289 LOG(LS_ERROR) << "Failed to register encoded-frame callback.";
290 return false;
291 }
292 return true; 287 return true;
293 } 288 }
294 289
295 // If encoder exists, will destroy it and create new one. 290 // If encoder exists, will destroy it and create new one.
296 DeleteEncoder(); 291 DeleteEncoder();
297 RTC_DCHECK_EQ(encoder_payload_type_, send_codec_.plType) 292 RTC_DCHECK_EQ(encoder_payload_type_, send_codec_.plType)
298 << "Encoder not registered for payload type " << send_codec_.plType; 293 << "Encoder not registered for payload type " << send_codec_.plType;
299 ptr_encoder_.reset(new VCMGenericEncoder( 294 ptr_encoder_.reset(
300 external_encoder_, encoder_rate_observer_, internal_source_)); 295 new VCMGenericEncoder(external_encoder_, encoder_rate_observer_,
301 encoded_frame_callback->SetPayloadType(send_codec_.plType); 296 encoded_frame_callback_, internal_source_));
297 encoded_frame_callback_->SetPayloadType(send_codec_.plType);
298 encoded_frame_callback_->SetInternalSource(internal_source_);
302 if (ptr_encoder_->InitEncode(&send_codec_, number_of_cores_, 299 if (ptr_encoder_->InitEncode(&send_codec_, number_of_cores_,
303 max_payload_size_) < 0) { 300 max_payload_size_) < 0) {
304 LOG(LS_ERROR) << "Failed to initialize video encoder."; 301 LOG(LS_ERROR) << "Failed to initialize video encoder.";
305 DeleteEncoder(); 302 DeleteEncoder();
306 return false; 303 return false;
307 } else if (ptr_encoder_->RegisterEncodeCallback(encoded_frame_callback) < 0) {
308 LOG(LS_ERROR) << "Failed to register encoded-frame callback.";
309 DeleteEncoder();
310 return false;
311 } 304 }
312 305
313 // Intentionally don't check return value since the encoder registration 306 // Intentionally don't check return value since the encoder registration
314 // shouldn't fail because the codec doesn't support changing the periodic key 307 // shouldn't fail because the codec doesn't support changing the periodic key
315 // frame setting. 308 // frame setting.
316 ptr_encoder_->SetPeriodicKeyFrames(periodic_key_frames_); 309 ptr_encoder_->SetPeriodicKeyFrames(periodic_key_frames_);
317 310
318 pending_encoder_reset_ = false; 311 pending_encoder_reset_ = false;
319 312
320 return true; 313 return true;
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 678
686 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem( 679 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem(
687 uint8_t payload_type) const { 680 uint8_t payload_type) const {
688 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type); 681 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type);
689 if (it != dec_external_map_.end()) { 682 if (it != dec_external_map_.end()) {
690 return (*it).second; 683 return (*it).second;
691 } 684 }
692 return NULL; 685 return NULL;
693 } 686 }
694 } // namespace webrtc 687 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698