[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