Quoting Ronald S. Bultje (2016-02-25 20:51:44)
> Hi,
> 
> On Thu, Feb 25, 2016 at 2:40 PM, Anton Khirnov <[email protected]> wrote:
> 
> > Quoting Ronald S. Bultje (2016-02-25 19:48:10)
> > > Hi,
> > >
> > > given I'm writing a BSF right now...
> > >
> > > On Thu, Feb 25, 2016 at 10:05 AM, Anton Khirnov <[email protected]>
> > wrote:
> > >
> > > > +    int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
> > > >
> > >
> > > How do we skip packets? Like, say we have a BSF that merges two packets
> > > together into one, how does that work? Maybe it should return a packet
> > like
> > > avcodec_decode_video2() and return whether it's got a output packet in a
> > > separate parameter.
> > >
> > > I understand how splitting send/receive allows this in the API side, but
> > > the internal vfuncs don't expose this bit of functionality yet.
> >
> > Look at the actual conversion patches. The filter callback calls
> > ff_bsf_get_packet() to get input packets from an internal FIFO and
> > may or may not put some output to pkt.
> 
> 
> What if the BSF splits the packet in two?
> 
> (I'm basically describing VP9 superframe packing/unpacking here. This is
> not theoretical.)

You cache your input packet in the private context and just output the
other part in the next filter() call (without requesting any new input).
It should work for completely arbitrary input:output patterns.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to