[vlc-commits] mediacodec: Fix invalid timestamp after a preroll
Thomas Guillem
git at videolan.org
Mon Mar 30 17:23:51 CEST 2015
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Mon Mar 30 17:05:07 2015 +0200| [7491a5ff41b9f7bc1629902a9ff02e0f7c468480] | committer: Jean-Baptiste Kempf
mediacodec: Fix invalid timestamp after a preroll
Call timestamp_FifoGet before releasing Output Buffers.
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7491a5ff41b9f7bc1629902a9ff02e0f7c468480
---
modules/codec/omxil/android_mediacodec.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/modules/codec/omxil/android_mediacodec.c b/modules/codec/omxil/android_mediacodec.c
index 798bec4..be2e196 100644
--- a/modules/codec/omxil/android_mediacodec.c
+++ b/modules/codec/omxil/android_mediacodec.c
@@ -860,6 +860,12 @@ static int GetOutput(decoder_t *p_dec, JNIEnv *env, picture_t *p_pic, jlong time
if (index >= 0) {
int64_t i_buffer_pts;
+ /* If the oldest input block had no PTS, the timestamp of the frame
+ * returned by MediaCodec might be wrong so we overwrite it with the
+ * corresponding dts. Call FifoGet first in order to avoid a gap if
+ * buffers are released due to an invalid format or a preroll */
+ int64_t forced_ts = timestamp_FifoGet(p_sys->timestamp_fifo);
+
if (!p_sys->pixel_format || !p_pic) {
msg_Warn(p_dec, "Buffers returned before output format is set, dropping frame");
return ReleaseOutputBuffer(p_dec, env, index, false);
@@ -869,10 +875,6 @@ static int GetOutput(decoder_t *p_dec, JNIEnv *env, picture_t *p_pic, jlong time
if (i_buffer_pts <= p_sys->i_preroll_end)
return ReleaseOutputBuffer(p_dec, env, index, false);
- /* If the oldest input block had no PTS, the timestamp
- * of the frame returned by MediaCodec might be wrong
- * so we overwrite it with the corresponding dts. */
- int64_t forced_ts = timestamp_FifoGet(p_sys->timestamp_fifo);
if (forced_ts == VLC_TS_INVALID)
p_pic->date = i_buffer_pts;
else
More information about the vlc-commits
mailing list