Index: webrtc/modules/video_coding/main/source/generic_decoder.cc |
diff --git a/webrtc/modules/video_coding/main/source/generic_decoder.cc b/webrtc/modules/video_coding/main/source/generic_decoder.cc |
index 8b2d3974de486f90f423709ec45665f0ea88e109..4f4a09b0581f66250b8fa0d6bcd9f5cf1826ecf6 100644 |
--- a/webrtc/modules/video_coding/main/source/generic_decoder.cc |
+++ b/webrtc/modules/video_coding/main/source/generic_decoder.cc |
@@ -47,6 +47,11 @@ VCMReceiveCallback* VCMDecodedFrameCallback::UserReceiveCallback() |
} |
int32_t VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage) { |
+ return Decoded(decodedImage, -1); |
+} |
+ |
+int32_t VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage, |
+ int64_t decode_time_ms) { |
// TODO(holmer): We should improve this so that we can handle multiple |
// callbacks from one call to Decode(). |
VCMFrameInformation* frameInfo; |
@@ -63,10 +68,15 @@ int32_t VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage) { |
return WEBRTC_VIDEO_CODEC_OK; |
} |
+ const int64_t now_ms = _clock->TimeInMilliseconds(); |
+ if (decode_time_ms < 0) { |
+ decode_time_ms = |
+ static_cast<int32_t>(now_ms - frameInfo->decodeStartTimeMs); |
+ } |
_timing.StopDecodeTimer( |
decodedImage.timestamp(), |
- frameInfo->decodeStartTimeMs, |
- _clock->TimeInMilliseconds(), |
+ decode_time_ms, |
+ now_ms, |
frameInfo->renderTimeMs); |
if (callback != NULL) |