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

Unified Diff: webrtc/modules/video_coding/main/source/codec_database.cc

Issue 1394823002: Remove internal encoders from VCMCodecDatabase. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 months 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/video_coding/main/source/codec_database.cc
diff --git a/webrtc/modules/video_coding/main/source/codec_database.cc b/webrtc/modules/video_coding/main/source/codec_database.cc
index e27314d535c0dcd7fecaf0b229363fee9c445b14..9d8068c5e948b956ee2c273c090b3680b77796c0 100644
--- a/webrtc/modules/video_coding/main/source/codec_database.cc
+++ b/webrtc/modules/video_coding/main/source/codec_database.cc
@@ -106,10 +106,9 @@ VCMCodecDataBase::VCMCodecDataBase(
max_payload_size_(kDefaultPayloadSize),
periodic_key_frames_(false),
pending_encoder_reset_(true),
- current_enc_is_external_(false),
send_codec_(),
receive_codec_(),
- external_payload_type_(0),
+ encoder_payload_type_(0),
external_encoder_(NULL),
internal_source_(false),
encoder_rate_observer_(encoder_rate_observer),
@@ -296,17 +295,10 @@ bool VCMCodecDataBase::SetSendCodec(
// If encoder exists, will destroy it and create new one.
DeleteEncoder();
- if (send_codec_.plType == external_payload_type_) {
- // External encoder.
- ptr_encoder_ = new VCMGenericEncoder(
- external_encoder_, encoder_rate_observer_, internal_source_);
- current_enc_is_external_ = true;
- } else {
- ptr_encoder_ = CreateEncoder(send_codec_.codecType);
- current_enc_is_external_ = false;
- if (!ptr_encoder_)
- return false;
- }
+ RTC_DCHECK_EQ(encoder_payload_type_, send_codec_.plType)
+ << "Encoder not registered for payload type " << send_codec_.plType;
+ ptr_encoder_ = new VCMGenericEncoder(
+ external_encoder_, encoder_rate_observer_, internal_source_);
encoded_frame_callback->SetPayloadType(send_codec_.plType);
if (ptr_encoder_->InitEncode(&send_codec_, number_of_cores_,
max_payload_size_) < 0) {
@@ -348,17 +340,16 @@ bool VCMCodecDataBase::DeregisterExternalEncoder(
uint8_t payload_type, bool* was_send_codec) {
assert(was_send_codec);
*was_send_codec = false;
- if (external_payload_type_ != payload_type) {
+ if (encoder_payload_type_ != payload_type) {
return false;
}
if (send_codec_.plType == payload_type) {
// De-register as send codec if needed.
DeleteEncoder();
memset(&send_codec_, 0, sizeof(VideoCodec));
- current_enc_is_external_ = false;
*was_send_codec = true;
}
- external_payload_type_ = 0;
+ encoder_payload_type_ = 0;
external_encoder_ = NULL;
internal_source_ = false;
return true;
@@ -371,7 +362,7 @@ void VCMCodecDataBase::RegisterExternalEncoder(
// Since only one encoder can be used at a given time, only one external
// encoder can be registered/used.
external_encoder_ = external_encoder;
- external_payload_type_ = payload_type;
+ encoder_payload_type_ = payload_type;
internal_source_ = internal_source;
pending_encoder_reset_ = true;
}
@@ -649,48 +640,12 @@ VCMGenericDecoder* VCMCodecDataBase::CreateAndInitDecoder(
return ptr_decoder;
}
-VCMGenericEncoder* VCMCodecDataBase::CreateEncoder(
- const VideoCodecType type) const {
- switch (type) {
-#ifdef VIDEOCODEC_VP8
- case kVideoCodecVP8:
- return new VCMGenericEncoder(VP8Encoder::Create(), encoder_rate_observer_,
- false);
-#endif
-#ifdef VIDEOCODEC_VP9
- case kVideoCodecVP9:
- return new VCMGenericEncoder(VP9Encoder::Create(), encoder_rate_observer_,
- false);
-#endif
-#ifdef VIDEOCODEC_I420
- case kVideoCodecI420:
- return new VCMGenericEncoder(new I420Encoder(), encoder_rate_observer_,
- false);
-#endif
-#ifdef VIDEOCODEC_H264
- case kVideoCodecH264:
- if (H264Encoder::IsSupported()) {
- return new VCMGenericEncoder(H264Encoder::Create(),
- encoder_rate_observer_,
- false);
- }
- break;
-#endif
- default:
- break;
- }
- LOG(LS_WARNING) << "No internal encoder of this type exists.";
- return NULL;
-}
-
void VCMCodecDataBase::DeleteEncoder() {
- if (ptr_encoder_) {
- ptr_encoder_->Release();
- if (!current_enc_is_external_)
- delete ptr_encoder_->encoder_;
- delete ptr_encoder_;
- ptr_encoder_ = NULL;
- }
+ if (!ptr_encoder_)
+ return;
+ ptr_encoder_->Release();
+ delete ptr_encoder_;
stefan-webrtc 2015/10/15 07:43:36 Could you make this scoped?
+ ptr_encoder_ = NULL;
}
VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const {

Powered by Google App Engine
This is Rietveld 408576698