> -----Original Message----- > From: libav-devel [mailto:[email protected]] On Behalf Of Luca > Barbato > Sent: Wednesday, January 24, 2018 6:36 PM > To: [email protected] > Subject: Re: [libav-devel] [PATCH V2] lavc/qsv: skip the packet if decoding > failure. > > On 24/01/2018 03:14, Ruiling Song wrote: > > From: "Ruiling, Song" <[email protected]> > > > > MediaSDK may fail to decode some frame, just skip it. > > Otherwise, it will keep decoding the failure packet repeatedly > > without processing any packet afterwards. > > > > Signed-off-by: Ruiling Song <[email protected]> > > --- > > libavcodec/qsvdec_h2645.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/libavcodec/qsvdec_h2645.c b/libavcodec/qsvdec_h2645.c > > index 83880dc..78a7b61 100644 > > --- a/libavcodec/qsvdec_h2645.c > > +++ b/libavcodec/qsvdec_h2645.c > > @@ -153,8 +153,12 @@ static int qsv_decode_frame(AVCodecContext *avctx, > void *data, > > } > > > > ret = ff_qsv_process_data(avctx, &s->qsv, frame, got_frame, &s- > >buffer_pkt); > > - if (ret < 0) > > + if (ret < 0){ > > + /* Drop buffer_pkt when failed to decode the packet. Otherwise, > > + the decoder will keep decoding the failure packet. */ > > + av_packet_unref(&s->buffer_pkt); > > return ret; > > + } > > > > s->buffer_pkt.size -= ret; > > s->buffer_pkt.data += ret; > > > > Looks better, do you have a specific test sample? Sorry I don't have the original clip to hit the issue. But I tried to decode fate-suite/h264/attachment631-small.mp4 (The video stream has some broken frames) QSV keeps trying to decode one broken frame. With this patch, qsv could move on to process all the frames. Even with this patch, MediaSDK still fails to decode out any frame in that stream, which I think the issue comes from MediaSDK itself.
Thanks! Ruiling > > lu > _______________________________________________ > libav-devel mailing list > [email protected] > https://lists.libav.org/mailman/listinfo/libav-devel _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
