| Index: webrtc/api/java/src/org/webrtc/MediaCodecVideoDecoder.java
|
| diff --git a/webrtc/api/java/src/org/webrtc/MediaCodecVideoDecoder.java b/webrtc/api/java/src/org/webrtc/MediaCodecVideoDecoder.java
|
| index 41fd0791dccd8249f79b600b0951d373a04e52e4..26b1cf2491bcf82fe471bf5f53b571dda8fe948f 100644
|
| --- a/webrtc/api/java/src/org/webrtc/MediaCodecVideoDecoder.java
|
| +++ b/webrtc/api/java/src/org/webrtc/MediaCodecVideoDecoder.java
|
| @@ -41,6 +41,7 @@ public class MediaCodecVideoDecoder {
|
| // possibly to minimize the amount of translation work necessary.
|
|
|
| private static final String TAG = "MediaCodecVideoDecoder";
|
| + private static final long MAX_DECODE_TIME_MS = 200;
|
|
|
| // Tracks webrtc::VideoCodecType.
|
| public enum VideoCodecType {
|
| @@ -594,13 +595,19 @@ public class MediaCodecVideoDecoder {
|
| default:
|
| hasDecodedFirstFrame = true;
|
| TimeStamps timeStamps = decodeStartTimeMs.remove();
|
| + long decodeTimeMs = SystemClock.elapsedRealtime() - timeStamps.decodeStartTimeMs;
|
| + if (decodeTimeMs > MAX_DECODE_TIME_MS) {
|
| + Logging.e(TAG, "Very high decode time: " + decodeTimeMs + "ms."
|
| + + " Might be caused by resuming H264 decoding after a pause.");
|
| + decodeTimeMs = MAX_DECODE_TIME_MS;
|
| + }
|
| return new DecodedOutputBuffer(result,
|
| info.offset,
|
| info.size,
|
| TimeUnit.MICROSECONDS.toMillis(info.presentationTimeUs),
|
| timeStamps.timeStampMs,
|
| timeStamps.ntpTimeStampMs,
|
| - SystemClock.elapsedRealtime() - timeStamps.decodeStartTimeMs,
|
| + decodeTimeMs,
|
| SystemClock.elapsedRealtime());
|
| }
|
| }
|
|
|