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

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

Issue 1428293003: Add VideoCodec::PreferDecodeLate (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixed SetExpectedRendererDelay bug Created 5 years, 1 month 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/video_receiver.cc
diff --git a/webrtc/modules/video_coding/main/source/video_receiver.cc b/webrtc/modules/video_coding/main/source/video_receiver.cc
index cf0a490da991fcc27cd338450d928b1b856c95ae..8dc8ba2cfbca2f16575ba55e9f6fc3001f345e6d 100644
--- a/webrtc/modules/video_coding/main/source/video_receiver.cc
+++ b/webrtc/modules/video_coding/main/source/video_receiver.cc
@@ -235,11 +235,9 @@ int32_t VideoReceiver::RegisterDecoderTimingCallback(
return VCM_OK;
}
-// Register an externally defined decoder/render object.
-// Can be a decoder only or a decoder coupled with a renderer.
+// Register an externally defined decoder object.
int32_t VideoReceiver::RegisterExternalDecoder(VideoDecoder* externalDecoder,
- uint8_t payloadType,
- bool internalRenderTiming) {
+ uint8_t payloadType) {
CriticalSectionScoped cs(_receiveCritSect);
if (externalDecoder == NULL) {
// Make sure the VCM updates the decoder next time it decodes.
@@ -247,7 +245,7 @@ int32_t VideoReceiver::RegisterExternalDecoder(VideoDecoder* externalDecoder,
return _codecDataBase.DeregisterExternalDecoder(payloadType) ? 0 : -1;
}
return _codecDataBase.RegisterExternalDecoder(
- externalDecoder, payloadType, internalRenderTiming)
+ externalDecoder, payloadType)
? 0
: -1;
}
@@ -282,14 +280,14 @@ void VideoReceiver::TriggerDecoderShutdown() {
// Should be called as often as possible to get the most out of the decoder.
int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) {
int64_t nextRenderTimeMs;
- bool supports_render_scheduling;
+ bool has_only_one_output_buffer = false;
{
CriticalSectionScoped cs(_receiveCritSect);
- supports_render_scheduling = _codecDataBase.SupportsRenderScheduling();
+ has_only_one_output_buffer = _codecDataBase.HasOnlyOneOutputBuffer();
}
VCMEncodedFrame* frame = _receiver.FrameForDecoding(
- maxWaitTimeMs, nextRenderTimeMs, supports_render_scheduling);
+ maxWaitTimeMs, nextRenderTimeMs, has_only_one_output_buffer);
if (frame == NULL) {
return VCM_FRAME_NOT_READY;
@@ -370,14 +368,8 @@ int32_t VideoReceiver::Decode(const VCMEncodedFrame& frame) {
"type",
frame.FrameType());
// Change decoder if payload type has changed
- const bool renderTimingBefore = _codecDataBase.SupportsRenderScheduling();
_decoder =
_codecDataBase.GetDecoder(frame.PayloadType(), &_decodedFrameCallback);
- if (renderTimingBefore != _codecDataBase.SupportsRenderScheduling()) {
- // Make sure we reset the decode time estimate since it will
- // be zero for codecs without render timing.
- _timing.ResetDecodeTime();
- }
if (_decoder == NULL) {
return VCM_NO_CODEC_REGISTERED;
}

Powered by Google App Engine
This is Rietveld 408576698