[FFmpeg-cvslog] avcodec/av1_frame_merge_bsf: Passthrough pos in case of no timestamps

Andreas Rheinhardt git at videolan.org
Mon Aug 23 08:29:04 EEST 2021


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sun Aug 22 07:55:34 2021 +0200| [5a3385d49a765a9cf6d55ecc0826e48d2bf082de] | committer: Andreas Rheinhardt

avcodec/av1_frame_merge_bsf: Passthrough pos in case of no timestamps

This is needed by the AV1-Annex B and AV1-OBU demuxers.

Reviewed-by: James Almer <jamrial at gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5a3385d49a765a9cf6d55ecc0826e48d2bf082de
---

 libavcodec/av1_frame_merge_bsf.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/libavcodec/av1_frame_merge_bsf.c b/libavcodec/av1_frame_merge_bsf.c
index fce5bdb67e..19b9cd01a8 100644
--- a/libavcodec/av1_frame_merge_bsf.c
+++ b/libavcodec/av1_frame_merge_bsf.c
@@ -103,10 +103,15 @@ eof:
         err = AVERROR(EAGAIN);
     }
 
-    // Buffer packets with timestamps. There should be at most one per TU, be it split or not.
-    if (!buffer_pkt->data && in->pts != AV_NOPTS_VALUE)
+    /* Buffer packets with timestamps (there should be at most one per TU)
+     * or any packet if buffer_pkt is empty. The latter is needed to
+     * passthrough positions in case there are no timestamps like with
+     * the raw OBU demuxer. */
+    if (!buffer_pkt->data ||
+        in->pts != AV_NOPTS_VALUE && buffer_pkt->pts == AV_NOPTS_VALUE) {
+        av_packet_unref(buffer_pkt);
         av_packet_move_ref(buffer_pkt, in);
-    else
+    } else
         av_packet_unref(in);
 
     ff_cbs_fragment_reset(&ctx->frag[ctx->idx]);



More information about the ffmpeg-cvslog mailing list