diff --git a/webrtc/video_engine/include/vie_external_codec.h b/webrtc/video_engine/include/vie_external_codec.h index a2e686a9f6..75b07272c0 100644 --- a/webrtc/video_engine/include/vie_external_codec.h +++ b/webrtc/video_engine/include/vie_external_codec.h @@ -27,7 +27,8 @@ class WEBRTC_DLLEXPORT ViEExternalCodec { virtual int RegisterExternalSendCodec(const int video_channel, const unsigned char pl_type, - VideoEncoder* encoder) = 0; + VideoEncoder* encoder, + bool internal_source) = 0; virtual int DeRegisterExternalSendCodec(const int video_channel, const unsigned char pl_type) = 0; diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc index 445c449759..6c0e1a47e1 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc @@ -542,7 +542,7 @@ void ViEAutoTest::ViECodecExternalCodecTest() { // Test to register on wrong channel. error = vie_external_codec->RegisterExternalSendCodec( - channel.videoChannel + 5, codec.plType, &ext_encoder); + channel.videoChannel + 5, codec.plType, &ext_encoder, false); number_of_errors += ViETest::TestError(error == -1, "ERROR: %s at line %d", __FUNCTION__, __LINE__); @@ -551,7 +551,7 @@ void ViEAutoTest::ViECodecExternalCodecTest() { "ERROR: %s at line %d", __FUNCTION__, __LINE__); error = vie_external_codec->RegisterExternalSendCodec( - channel.videoChannel, codec.plType, &ext_encoder); + channel.videoChannel, codec.plType, &ext_encoder, false); number_of_errors += ViETest::TestError(error == 0, "ERROR: %s at line %d", __FUNCTION__, __LINE__); @@ -653,7 +653,7 @@ void ViEAutoTest::ViECodecExternalCodecTest() { __FUNCTION__, __LINE__); error = vie_external_codec->RegisterExternalSendCodec( - channel.videoChannel, codec.plType, &ext_encoder); + channel.videoChannel, codec.plType, &ext_encoder, false); number_of_errors += ViETest::TestError(error == 0, "ERROR: %s at line %d", __FUNCTION__, __LINE__); diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc index 4c05855fdd..83d735dfa9 100644 --- a/webrtc/video_engine/vie_capturer.cc +++ b/webrtc/video_engine/vie_capturer.cc @@ -708,7 +708,7 @@ WebRtc_Word32 ViECapturer::PreEncodeToViEEncoder(const VideoCodec& codec, vcm_ = VideoCodingModule::Create(capture_id_); } - if (vie_encoder.RegisterExternalEncoder(this, codec.plType) != 0) { + if (vie_encoder.RegisterExternalEncoder(this, codec.plType, false) != 0) { return -1; } if (vie_encoder.SetEncoder(codec) != 0) { diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc index 9c9e681c4a..ee02fc1997 100644 --- a/webrtc/video_engine/vie_encoder.cc +++ b/webrtc/video_engine/vie_encoder.cc @@ -280,7 +280,8 @@ WebRtc_Word32 ViEEncoder::GetCodec(WebRtc_UWord8 list_index, } WebRtc_Word32 ViEEncoder::RegisterExternalEncoder(webrtc::VideoEncoder* encoder, - WebRtc_UWord8 pl_type) { + WebRtc_UWord8 pl_type, + bool internal_source) { WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideo, ViEId(engine_id_, channel_id_), "%s: pltype %u", __FUNCTION__, pl_type); @@ -288,7 +289,8 @@ WebRtc_Word32 ViEEncoder::RegisterExternalEncoder(webrtc::VideoEncoder* encoder, if (encoder == NULL) return -1; - if (vcm_.RegisterExternalEncoder(encoder, pl_type) != VCM_OK) { + if (vcm_.RegisterExternalEncoder(encoder, pl_type, internal_source) != + VCM_OK) { WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_, channel_id_), "Could not register external encoder"); diff --git a/webrtc/video_engine/vie_encoder.h b/webrtc/video_engine/vie_encoder.h index e0960338be..77aae51b2a 100644 --- a/webrtc/video_engine/vie_encoder.h +++ b/webrtc/video_engine/vie_encoder.h @@ -70,7 +70,8 @@ class ViEEncoder WebRtc_UWord8 NumberOfCodecs(); WebRtc_Word32 GetCodec(WebRtc_UWord8 list_index, VideoCodec* video_codec); WebRtc_Word32 RegisterExternalEncoder(VideoEncoder* encoder, - WebRtc_UWord8 pl_type); + WebRtc_UWord8 pl_type, + bool internal_source); WebRtc_Word32 DeRegisterExternalEncoder(WebRtc_UWord8 pl_type); WebRtc_Word32 SetEncoder(const VideoCodec& video_codec); WebRtc_Word32 GetEncoder(VideoCodec* video_codec); diff --git a/webrtc/video_engine/vie_external_codec_impl.cc b/webrtc/video_engine/vie_external_codec_impl.cc index 8c9be012d0..60edcf1d18 100644 --- a/webrtc/video_engine/vie_external_codec_impl.cc +++ b/webrtc/video_engine/vie_external_codec_impl.cc @@ -67,7 +67,8 @@ ViEExternalCodecImpl::~ViEExternalCodecImpl() { int ViEExternalCodecImpl::RegisterExternalSendCodec(const int video_channel, const unsigned char pl_type, - VideoEncoder* encoder) { + VideoEncoder* encoder, + bool internal_source) { WEBRTC_TRACE(kTraceApiCall, kTraceVideo, ViEId(shared_data_->instance_id()), "%s channel %d pl_type %d encoder 0x%x", __FUNCTION__, video_channel, pl_type, encoder); @@ -90,7 +91,8 @@ int ViEExternalCodecImpl::RegisterExternalSendCodec(const int video_channel, return -1; } - if (vie_encoder->RegisterExternalEncoder(encoder, pl_type) != 0) { + if (vie_encoder->RegisterExternalEncoder(encoder, pl_type, internal_source) + != 0) { shared_data_->SetLastError(kViECodecUnknownError); return -1; } diff --git a/webrtc/video_engine/vie_external_codec_impl.h b/webrtc/video_engine/vie_external_codec_impl.h index f06613f550..6e8c5bcf14 100644 --- a/webrtc/video_engine/vie_external_codec_impl.h +++ b/webrtc/video_engine/vie_external_codec_impl.h @@ -26,7 +26,8 @@ class ViEExternalCodecImpl virtual int Release(); virtual int RegisterExternalSendCodec(const int video_channel, const unsigned char pl_type, - VideoEncoder* encoder); + VideoEncoder* encoder, + bool internal_source = false); virtual int DeRegisterExternalSendCodec(const int video_channel, const unsigned char pl_type); virtual int RegisterExternalReceiveCodec(const int video_channel,