[FFmpeg-devel] [PATCH]Do not fail for valid PICT files

Carl Eugen Hoyos cehoyos at ag.or.at
Tue May 19 10:33:52 CEST 2015


On Thursday 14 May 2015 01:47:54 pm Michael Niedermayer wrote:
> On Thu, May 14, 2015 at 12:28:13PM +0200, Carl Eugen Hoyos wrote:
> > Hi!
> >
> > Attached patch fixes reading valid pict files with non-zero user data.
> > 
https://developer.apple.com/legacy/library/documentation/mac/QuickDraw/QuickDraw-334.html
> >
> > Please comment, Carl Eugen
> >
> >  qdrw.c |    5 ++---
> >  1 file changed, 2 insertions(+), 3 deletions(-)
> > edf25620818c022655ed281d4e7d614459d56df3  patchqdrw.diff
> > diff --git a/libavcodec/qdrw.c b/libavcodec/qdrw.c
> > index 1c3244b..6ec35c6 100644
> > --- a/libavcodec/qdrw.c
> > +++ b/libavcodec/qdrw.c
> > @@ -124,9 +124,8 @@ static int decode_frame(AVCodecContext *avctx,
> >      int w, h, ret;
> >
> >      bytestream2_init(&gbc, avpkt->data, avpkt->size);
> > -    while (   bytestream2_get_bytes_left(&gbc) >= 552
> > -           && (   !AV_RB16(&avpkt->data[bytestream2_tell(&gbc)+6])
> > -               || !AV_RB16(&avpkt->data[bytestream2_tell(&gbc)+8])))
> > +    if (   bytestream2_get_bytes_left(&gbc) >= 552
> > +           && AV_RB32(&avpkt->data[522]) == 0x001102FF)
>
> This wont work with files that have a different version

New patch attached.

Carl Eugen
-------------- next part --------------
diff --git a/libavcodec/qdrw.c b/libavcodec/qdrw.c
index 0bcf5dc..d88a9f1 100644
--- a/libavcodec/qdrw.c
+++ b/libavcodec/qdrw.c
@@ -153,8 +153,8 @@ static int decode_frame(AVCodecContext *avctx,
 
     bytestream2_init(&gbc, avpkt->data, avpkt->size);
     if (   bytestream2_get_bytes_left(&gbc) >= 552
-           && !check_header(gbc.buffer      , bytestream2_get_bytes_left(&gbc))
-           &&  check_header(gbc.buffer + 512, bytestream2_get_bytes_left(&gbc) - 512)
+        && (   AV_RB32(&avpkt->data[522]) == 0x001102FF
+            || AV_RB16(&avpkt->data[522]) == 0x1101)
        )
         bytestream2_skip(&gbc, 512);
 


More information about the ffmpeg-devel mailing list