Le mer. 9 avr. 2025 à 20:12, Michael Niedermayer
<mich...@niedermayer.cc> a écrit :
>
> On Fri, Apr 04, 2025 at 04:14:44PM -0500, Romain Beauxis wrote:
> > ---
> >  libavcodec/decode.c | 130 ++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 130 insertions(+)
> >
> > diff --git a/libavcodec/decode.c b/libavcodec/decode.c
> > index fca0c7ff58..39d054bdea 100644
> > --- a/libavcodec/decode.c
> > +++ b/libavcodec/decode.c
> [...]
> > @@ -702,6 +809,8 @@ int attribute_align_arg 
> > avcodec_send_packet(AVCodecContext *avctx, const AVPacke
> >  {
> >      AVCodecInternal *avci = avctx->internal;
> >      DecodeContext     *dc = decode_ctx(avci);
> > +    const uint8_t *side_metadata;
> > +    size_t size;
> >      int ret;
> >
> >      if (!avcodec_is_open(avctx) || !av_codec_is_decoder(avctx->codec))
> > @@ -719,6 +828,14 @@ int attribute_align_arg 
> > avcodec_send_packet(AVCodecContext *avctx, const AVPacke
> >          ret = av_packet_ref(avci->buffer_pkt, avpkt);
> >          if (ret < 0)
> >              return ret;
> > +
> > +        side_metadata = av_packet_get_side_data(avpkt, 
> > AV_PKT_DATA_METADATA_UPDATE, &size);
>
>
> > +        if (avpkt->pts != AV_NOPTS_VALUE && side_metadata) {
> > +            ret = insert_pending_metadata(&dc->pending_metadata, 
> > avpkt->pts,
> > +                                          side_metadata, size);
> > +            if (ret < 0)
> > +                return ret;
>
> Is the tree needed and a FIFO not enough ?

I believe so.

There could be scenarios where the DTS are submitted out of order and
we'd still want the metadata to be attached to the frame it was
intended for.

In fact, I did this change after you suggested such a scenario:

>> Can you describe a scenario that you're thinking about?

> The users feeds several packets into a multi threaded decoder
> and then depending on the threads and luck sooner or later
> one frame comes out.
>
> Passing some data in a way that disregards this, feels wrong
> Hypothetically there also could be a 2nd AV_PKT_DATA_METADATA_UPDATE
> going in before the frame corresponding to the first comes out
> but i may be missing something

Source: https://ffmpeg.org/pipermail/ffmpeg-devel/2025-March/340948.html

> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Its not that you shouldnt use gotos but rather that you should write
> readable code and code with gotos often but not always is less readable
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to