Reland "Update internal video decoder factory to new interface"

This reverts commit 267d84baf0597f89a3d1f66d323db754bc5d9239.

Reason for reland: Fix the bug; decoder is not allowed to ever be null and we need to use a
NullVideoDecoder that ignores calls instead.

Original change's description:
> Revert "Update internal video decoder factory to new interface"
>
> This reverts commit b2fc9b1b104240e68047901309deaee3e8b94bea.
>
> Reason for revert: Suspected to cause failures on Android bots on webrtc.fyi, see https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28K%20Nexus5%29/builds/21051
>
> Original change's description:
> > Update internal video decoder factory to new interface
> >
> > We want to move away from cricket::WebRtcVideoDecoderFactory and this CL
> > updates the internal factory. Also, VideoDecoderSoftwareFallbackWrapper
> > is updated to take a VideoDecoder as argument instead of a factory so it
> > can be used with external SW decoders.
> >
> > Bug: webrtc:7925
> > Change-Id: Ie6dc6c24f8610a2129620c6e2b42e3cebb2ddef7
> > Reviewed-on: https://webrtc-review.googlesource.com/7301
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Anders Carlsson <andersc@webrtc.org>
> > Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#20597}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,andersc@webrtc.org
>
> Change-Id: I0a12c98fdc30f00d58c85ee7e088f50160d39724
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:7925
> Reviewed-on: https://webrtc-review.googlesource.com/21420
> Reviewed-by: Christian Fremerey <chfremer@webrtc.org>
> Commit-Queue: Christian Fremerey <chfremer@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20605}

TBR=brandtr@webrtc.org,magjed@webrtc.org,andersc@webrtc.org,chfremer@webrtc.org,chfremer@google.com

Change-Id: I6cf5794dc3fadfa86809a94da80b69dbb4c56f52
No-Try: true
Bug: webrtc:7925
Reviewed-on: https://webrtc-review.googlesource.com/21541
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20623}
This commit is contained in:
Magnus Jedvert
2017-11-09 13:43:42 +01:00
committed by Commit Bot
parent 5478b47b5a
commit 7501b1c3d1
10 changed files with 235 additions and 146 deletions

View File

@ -80,6 +80,23 @@ bool RunEncodeInRealTime(const TestConfig& config) {
#endif
}
// An internal decoder factory in the old WebRtcVideoDecoderFactory format.
// TODO(magjed): Update these tests to use new webrtc::VideoDecoderFactory
// instead.
class LegacyInternalDecoderFactory : public cricket::WebRtcVideoDecoderFactory {
public:
// WebRtcVideoDecoderFactory implementation.
VideoDecoder* CreateVideoDecoderWithParams(
const cricket::VideoCodec& codec,
cricket::VideoDecoderParams params) override {
return InternalDecoderFactory()
.CreateVideoDecoder(SdpVideoFormat(codec.name, codec.params))
.release();
}
void DestroyVideoDecoder(VideoDecoder* decoder) override { delete decoder; }
};
} // namespace
void VideoProcessorIntegrationTest::H264KeyframeChecker::CheckEncodedFrame(
@ -311,7 +328,7 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() {
RTC_NOTREACHED() << "Only support HW decoder on Android and iOS.";
#endif
} else {
decoder_factory.reset(new cricket::InternalDecoderFactory());
decoder_factory.reset(new LegacyInternalDecoderFactory());
}
cricket::VideoCodec codec;
@ -369,7 +386,9 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() {
}
if (config_.sw_fallback_decoder) {
decoder_ = rtc::MakeUnique<VideoDecoderSoftwareFallbackWrapper>(
config_.codec_settings.codecType, std::move(decoder_));
InternalDecoderFactory().CreateVideoDecoder(
SdpVideoFormat(codec.name, codec.params)),
std::move(decoder_));
}
EXPECT_TRUE(encoder_) << "Encoder not successfully created.";