[FFmpeg-devel] ffprobe: Do not decode zero-sized packets in ffprobe -show_frame

Michael Niedermayer michaelni at gmx.at
Wed Feb 15 04:30:21 CET 2012


On Wed, Feb 15, 2012 at 12:10:49AM +0100, Stefano Sabatini wrote:
> On date Tuesday 2012-02-14 17:26:13 +0100, Petter Ericson encoded:
> > Greetings
> > 
> > Ticket #997 details a segfault in ffprobe that was exposed by the file
> > http://titan.codemill.se/~peteri/120210144737.ts
> > 
> > This patch fixes the segfault. However, the desyncing issue that I
> > mentioned in the ticket still remains (I was sloppy when looking at the
> > output - It is still present in git master). If anyone could advice on what
> > it is that is causing transcoding to result in desynced output, I would be
> > most grateful. 
> > 
> > The patched ffmpeg passes make fate.
> > 
> > Best regards
> > 
> > Petter Ericson
> > 
> 
> > commit e40952af2f5b6eccf24b34926bf09747117affdc
> > Author: Petter Ericson <petter.ericson at codemill.se>
> > Date:   Tue Feb 14 16:59:56 2012 +0100
> > 
> >     ffprobe: Do not avcodec_decode_video2 video packets with size == 0
> > 
> > diff --git a/ffprobe.c b/ffprobe.c
> > index 79f7494..e23ef98 100644
> > --- a/ffprobe.c
> > +++ b/ffprobe.c
> > @@ -1349,6 +1349,8 @@ static av_always_inline int get_decoded_frame(AVFormatContext *fmt_ctx,
> >      *got_frame = 0;
> >      switch (dec_ctx->codec_type) {
> >      case AVMEDIA_TYPE_VIDEO:
> > +        if(pkt->size == 0)
> > +            return ret;
> >          ret = avcodec_decode_video2(dec_ctx, frame, got_frame, pkt);
> >          break;
> 
> Should be fine, alternatively I propose the attached patch which I
> like more.
> -- 
> FFmpeg = Fundamental Frenzy Meaningful Pacific Extravagant Gadget

>  utils.c |    3 +++
>  1 file changed, 3 insertions(+)
> 22035da337e788216178af03b134d1ef38cd98b6  0001-lavc-make-avcodec_decode_video2-immediately-return-0.patch
> From 173f70d8fca9698067e95f5fc31d487fae77d168 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Wed, 15 Feb 2012 00:06:59 +0100
> Subject: [PATCH] lavc: make avcodec_decode_video2() immediately return 0 for
>  pkt with size == 0
> 
> Avoid check in application code, simplify handling generic code.
> 
> In particular, fix crash in ffprobe.c when decoding a packet with size 0,
> trac ticket #997.

why does a size=0 packet cause a crash ?

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

During times of universal deceit, telling the truth becomes a
revolutionary act. -- George Orwell
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120215/0799d099/attachment.asc>


More information about the ffmpeg-devel mailing list