Commit 0d60d6af by tonihei Committed by Tianyi Feng

Fix ms to us conversion bug in DecoderVideoRenderer

The current code multiplies the value by 1000 twice,
effectively converting to nanoseconds.

#minor-release

PiperOrigin-RevId: 551129750
(cherry picked from commit f6f86fdefc533d701306c3b26469a6e07343e62e)
parent a05c5ffd
...@@ -19,6 +19,7 @@ import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.DISCA ...@@ -19,6 +19,7 @@ import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.DISCA
import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.DISCARD_REASON_REUSE_NOT_IMPLEMENTED; import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.DISCARD_REASON_REUSE_NOT_IMPLEMENTED;
import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.REUSE_RESULT_NO; import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.REUSE_RESULT_NO;
import static com.google.android.exoplayer2.source.SampleStream.FLAG_REQUIRE_FORMAT; import static com.google.android.exoplayer2.source.SampleStream.FLAG_REQUIRE_FORMAT;
import static com.google.android.exoplayer2.util.Util.msToUs;
import static java.lang.Math.max; import static java.lang.Math.max;
import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.ElementType.TYPE_USE;
...@@ -51,7 +52,6 @@ import com.google.android.exoplayer2.util.Assertions; ...@@ -51,7 +52,6 @@ import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.TimedValueQueue; import com.google.android.exoplayer2.util.TimedValueQueue;
import com.google.android.exoplayer2.util.TraceUtil; import com.google.android.exoplayer2.util.TraceUtil;
import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoRendererEventListener.EventDispatcher; import com.google.android.exoplayer2.video.VideoRendererEventListener.EventDispatcher;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -302,7 +302,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer { ...@@ -302,7 +302,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
protected void onStarted() { protected void onStarted() {
droppedFrames = 0; droppedFrames = 0;
droppedFrameAccumulationStartTimeMs = SystemClock.elapsedRealtime(); droppedFrameAccumulationStartTimeMs = SystemClock.elapsedRealtime();
lastRenderTimeUs = SystemClock.elapsedRealtime() * 1000; lastRenderTimeUs = msToUs(SystemClock.elapsedRealtime());
} }
@Override @Override
...@@ -575,7 +575,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer { ...@@ -575,7 +575,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
frameMetadataListener.onVideoFrameAboutToBeRendered( frameMetadataListener.onVideoFrameAboutToBeRendered(
presentationTimeUs, System.nanoTime(), outputFormat, /* mediaFormat= */ null); presentationTimeUs, System.nanoTime(), outputFormat, /* mediaFormat= */ null);
} }
lastRenderTimeUs = Util.msToUs(SystemClock.elapsedRealtime() * 1000); lastRenderTimeUs = msToUs(SystemClock.elapsedRealtime());
int bufferMode = outputBuffer.mode; int bufferMode = outputBuffer.mode;
boolean renderSurface = bufferMode == C.VIDEO_OUTPUT_MODE_SURFACE_YUV && outputSurface != null; boolean renderSurface = bufferMode == C.VIDEO_OUTPUT_MODE_SURFACE_YUV && outputSurface != null;
boolean renderYuv = bufferMode == C.VIDEO_OUTPUT_MODE_YUV && outputBufferRenderer != null; boolean renderYuv = bufferMode == C.VIDEO_OUTPUT_MODE_YUV && outputBufferRenderer != null;
...@@ -849,7 +849,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer { ...@@ -849,7 +849,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
outputFormat = format; outputFormat = format;
} }
long elapsedRealtimeNowUs = SystemClock.elapsedRealtime() * 1000; long elapsedRealtimeNowUs = msToUs(SystemClock.elapsedRealtime());
long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs; long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs;
boolean isStarted = getState() == STATE_STARTED; boolean isStarted = getState() == STATE_STARTED;
boolean shouldRenderFirstFrame = boolean shouldRenderFirstFrame =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment