[FFmpeg-devel] [PATCH 3/4] libavcodec/qsvdec.c: The ff_qsv_decode() now guarantees the consumption of whole packet.

Michael Niedermayer michael at niedermayer.cc
Fri Jul 24 01:52:20 CEST 2015


On Fri, Jul 24, 2015 at 01:48:45AM +0200, Michael Niedermayer wrote:
> On Thu, Jul 23, 2015 at 12:46:47PM +0300, Ivan Uskov wrote:
> > Hello All ,
> > 
> > There is updated version of patch which should be applied without conflicts.
> > Also here couple wrong places have been corrected into ff_qsv_decode().
> > 
> > Tuesday, July 21, 2015, 4:08:47 PM, you wrote:
> > 
> > IU> Hello all,
> > 
> > IU> Actual implementation of ff_qsv_decode() is not reliable, it may
> > IU> return without consumption of 1..3 last bytes of packet which
> > IU> initiates infinitive loop. New implementation guarantees that packet
> > IU> will consumed, now internal fifo uses to join unconsumed previous packet
> > IU> tail with new packet.
> > IU> Please review.
> > IU>   
> > 
> > 
> > 
> > 
> > -- 
> > Best regards,
> >  Ivan                            mailto:ivan.uskov at nablet.com
> 
> >  qsvdec.c |  130 +++++++++++++++++++++++++++++++++++++++++++++++----------------
> >  qsvdec.h |    1 
> >  2 files changed, 100 insertions(+), 31 deletions(-)
> > eb551cc0e8ef21a3557cebb850b5a15ce385e30e  0002-libavcodec-qsvdec.c-The-ff_qsv_decode-now-guarantees.patch
> > From 1b1d3cae1910eb1a4dcea3ddee31a1b2a42292f5 Mon Sep 17 00:00:00 2001
> > From: Ivan Uskov <ivan.uskov at nablet.com>
> > Date: Tue, 21 Jul 2015 08:31:14 -0400
> > Subject: [PATCH 2/2] libavcodec/qsvdec.c: The ff_qsv_decode() now guarantees
> >  the consumption of whole packet.
> > 
> > ---
> >  libavcodec/qsvdec.c | 130 +++++++++++++++++++++++++++++++++++++++-------------
> >  libavcodec/qsvdec.h |   1 +
> >  2 files changed, 100 insertions(+), 31 deletions(-)
> > 
> > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
> > index 4e7a0ac..b81781b 100644
> > --- a/libavcodec/qsvdec.c
> > +++ b/libavcodec/qsvdec.c
> > @@ -126,6 +126,10 @@ int ff_qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt)
> >      if (!q->async_fifo)
> >          return AVERROR(ENOMEM);
> >  
> > +    q->input_fifo = av_fifo_alloc(1024*16);
> > +    if (!q->input_fifo)
> > +        return AVERROR(ENOMEM);
> > +
> >      q->engine_ready = 1;
> >  
> >      return 0;
> > @@ -223,6 +227,31 @@ static QSVFrame *find_frame(QSVContext *q, mfxFrameSurface1 *surf)
> >      return NULL;
> >  }
> >  
> 
> > +static void qsv_fifo_relocate(AVFifoBuffer *f, int bytes_to_free)
> 
> this should be documented, maybe something like
> drains specifiified amount of data and re-locates the remaining to
            ^^^^
specified

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Democracy is the form of government in which you can choose your dictator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150724/9ff589f3/attachment.sig>


More information about the ffmpeg-devel mailing list