[FFmpeg-devel] [PATCH 3/5] avcodec/av1_frame_merge_bsf: Passthrough pos in case of no timestamps
James Almer
jamrial at gmail.com
Sun Aug 22 17:19:40 EEST 2021
On 8/22/2021 8:29 AM, Andreas Rheinhardt wrote:
> This is needed by the AV1-Annex B and AV1-OBU demuxers.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> 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]);
>
Should be ok.
More information about the ffmpeg-devel
mailing list