Add RegisterExternalDecoder in VideoCodingModule.

In preparation for landing https://webrtc-review.googlesource.com/c/src/+/72441
a downstream project that uses the VideoCodingModule needs to be able to
inject a decoder object created from the outside, just like how encoders
are possible to inject.

Bug: webrtc:7925
Change-Id: Ibaeffda55f84410436d79f75730e7352e298b9f0
Reviewed-on: https://webrtc-review.googlesource.com/77160
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23297}
This commit is contained in:
Anders Carlsson 2018-05-18 10:33:04 +02:00 committed by Commit Bot
parent 460f53bb86
commit 7eb8e9fd7b
2 changed files with 14 additions and 0 deletions

View file

@ -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.

View file

@ -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());