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
This commit is contained in:
tonihei 2023-07-26 09:43:03 +01:00 committed by Rohit Singh
parent b7d7027424
commit f766936140

View File

@ -15,6 +15,7 @@
*/
package androidx.media3.exoplayer.video;
import static androidx.media3.common.util.Util.msToUs;
import static androidx.media3.exoplayer.DecoderReuseEvaluation.DISCARD_REASON_DRM_SESSION_CHANGED;
import static androidx.media3.exoplayer.DecoderReuseEvaluation.DISCARD_REASON_REUSE_NOT_IMPLEMENTED;
import static androidx.media3.exoplayer.DecoderReuseEvaluation.REUSE_RESULT_NO;
@ -38,7 +39,6 @@ import androidx.media3.common.util.Log;
import androidx.media3.common.util.TimedValueQueue;
import androidx.media3.common.util.TraceUtil;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
import androidx.media3.decoder.CryptoConfig;
import androidx.media3.decoder.Decoder;
import androidx.media3.decoder.DecoderException;
@ -307,7 +307,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
protected void onStarted() {
droppedFrames = 0;
droppedFrameAccumulationStartTimeMs = SystemClock.elapsedRealtime();
lastRenderTimeUs = SystemClock.elapsedRealtime() * 1000;
lastRenderTimeUs = msToUs(SystemClock.elapsedRealtime());
}
@Override
@ -580,7 +580,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
frameMetadataListener.onVideoFrameAboutToBeRendered(
presentationTimeUs, getClock().nanoTime(), outputFormat, /* mediaFormat= */ null);
}
lastRenderTimeUs = Util.msToUs(SystemClock.elapsedRealtime() * 1000);
lastRenderTimeUs = msToUs(SystemClock.elapsedRealtime());
int bufferMode = outputBuffer.mode;
boolean renderSurface = bufferMode == C.VIDEO_OUTPUT_MODE_SURFACE_YUV && outputSurface != null;
boolean renderYuv = bufferMode == C.VIDEO_OUTPUT_MODE_YUV && outputBufferRenderer != null;
@ -854,7 +854,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
outputFormat = format;
}
long elapsedRealtimeNowUs = SystemClock.elapsedRealtime() * 1000;
long elapsedRealtimeNowUs = msToUs(SystemClock.elapsedRealtime());
long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs;
boolean isStarted = getState() == STATE_STARTED;
boolean shouldRenderFirstFrame =