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:
parent
b7d7027424
commit
f766936140
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package androidx.media3.exoplayer.video;
|
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_DRM_SESSION_CHANGED;
|
||||||
import static androidx.media3.exoplayer.DecoderReuseEvaluation.DISCARD_REASON_REUSE_NOT_IMPLEMENTED;
|
import static androidx.media3.exoplayer.DecoderReuseEvaluation.DISCARD_REASON_REUSE_NOT_IMPLEMENTED;
|
||||||
import static androidx.media3.exoplayer.DecoderReuseEvaluation.REUSE_RESULT_NO;
|
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.TimedValueQueue;
|
||||||
import androidx.media3.common.util.TraceUtil;
|
import androidx.media3.common.util.TraceUtil;
|
||||||
import androidx.media3.common.util.UnstableApi;
|
import androidx.media3.common.util.UnstableApi;
|
||||||
import androidx.media3.common.util.Util;
|
|
||||||
import androidx.media3.decoder.CryptoConfig;
|
import androidx.media3.decoder.CryptoConfig;
|
||||||
import androidx.media3.decoder.Decoder;
|
import androidx.media3.decoder.Decoder;
|
||||||
import androidx.media3.decoder.DecoderException;
|
import androidx.media3.decoder.DecoderException;
|
||||||
@ -307,7 +307,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
|
||||||
@ -580,7 +580,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
|
|||||||
frameMetadataListener.onVideoFrameAboutToBeRendered(
|
frameMetadataListener.onVideoFrameAboutToBeRendered(
|
||||||
presentationTimeUs, getClock().nanoTime(), outputFormat, /* mediaFormat= */ null);
|
presentationTimeUs, getClock().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;
|
||||||
@ -854,7 +854,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 =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user