[FFmpeg-cvslog] avformat/avidec: ensure that palette does not contain the BottomUp info.

Benoit Fouet git at videolan.org
Mon Sep 22 11:02:34 CEST 2014


ffmpeg | branch: master | Benoit Fouet <benoit.fouet at free.fr> | Mon Sep 22 09:57:37 2014 +0200| [9c843fb1d0810626194a789eb24a2af404f3be2c] | committer: Michael Niedermayer

avformat/avidec: ensure that palette does not contain the BottomUp info.

Considering the palette is located at the end of extradata may be flawed
when the extradata contains the palette followed by the BottomUp field.
When the BottomUp field is present, exclude it from the palette.
Fixes part of ticket #1304

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c843fb1d0810626194a789eb24a2af404f3be2c
---

 libavformat/avidec.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 5b260e2..f7b15b7 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -756,6 +756,10 @@ static int avi_read_header(AVFormatContext *s)
                         pal_size = FFMIN(pal_size, st->codec->extradata_size);
                         pal_src  = st->codec->extradata +
                                    st->codec->extradata_size - pal_size;
+                        /* Exclude the "BottomUp" field from the palette */
+                        if (pal_src - st->codec->extradata >= 9 &&
+                            !memcmp(st->codec->extradata + st->codec->extradata_size - 9, "BottomUp", 9))
+                            pal_src -= 9;
                         for (i = 0; i < pal_size / 4; i++)
                             ast->pal[i] = 0xFFU<<24 | AV_RL32(pal_src+4*i);
                         ast->has_pal = 1;



More information about the ffmpeg-cvslog mailing list