diff --git a/modules/video_coding/include/video_coding.h b/modules/video_coding/include/video_coding.h index 5aeb222592..af03f1ea11 100644 --- a/modules/video_coding/include/video_coding.h +++ b/modules/video_coding/include/video_coding.h @@ -32,6 +32,7 @@ namespace webrtc { class Clock; class EncodedImageCallback; +class VideoDecoder; class VideoEncoder; struct CodecSpecificInfo; @@ -205,6 +206,14 @@ class VideoCodingModule : public Module { int32_t numberOfCores, bool requireKeyFrame = false) = 0; + // Register an external decoder object. + // + // Input: + // - externalDecoder : Decoder object to be used for decoding frames. + // - payloadType : The payload type which this decoder is bound to. + virtual void RegisterExternalDecoder(VideoDecoder* externalDecoder, + uint8_t payloadType) = 0; + // Register a receive callback. Will be called whenever there is a new frame // ready // for rendering. diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc index 1b098ede22..a0a3a7f409 100644 --- a/modules/video_coding/video_coding_impl.cc +++ b/modules/video_coding/video_coding_impl.cc @@ -163,6 +163,11 @@ class VideoCodingModuleImpl : public VideoCodingModule { requireKeyFrame); } + void RegisterExternalDecoder(VideoDecoder* externalDecoder, + uint8_t payloadType) override { + receiver_.RegisterExternalDecoder(externalDecoder, payloadType); + } + int32_t RegisterReceiveCallback( VCMReceiveCallback* receiveCallback) override { RTC_DCHECK(construction_thread_.CalledOnValidThread());