[FFmpeg-cvslog] avformat/img2_alias_pix: rewrite probe function

Michael Niedermayer git at videolan.org
Sat Mar 29 00:49:19 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Mar 29 00:16:43 2014 +0100| [657cee1aef724377710cef26915c09ea50bd5fcd] | committer: Michael Niedermayer

avformat/img2_alias_pix: rewrite probe function

Fixes probetest failure

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

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

 libavformat/img2_alias_pix.c |   30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/libavformat/img2_alias_pix.c b/libavformat/img2_alias_pix.c
index 3d00f84..d88db21 100644
--- a/libavformat/img2_alias_pix.c
+++ b/libavformat/img2_alias_pix.c
@@ -20,23 +20,37 @@
  */
 
 #include "img2.h"
-#include "libavutil/intreadwrite.h"
+#include "libavcodec/bytestream.h"
 
 static int brender_read_probe(AVProbeData *p)
 {
-    int width  = AV_RB16(p->buf);
-    int height = AV_RB16(p->buf+2);
-    int ox     = AV_RB16(p->buf+4);
-    int oy     = AV_RB16(p->buf+6);
-    int bpp    = AV_RB16(p->buf+8);
-    int count  = p->buf[10];
+    const uint8_t *b = p->buf;
+    const uint8_t *end = b + p->buf_size;
+    int width  = bytestream_get_be16(&b);
+    int height = bytestream_get_be16(&b);
+    int ox     = bytestream_get_be16(&b);
+    int oy     = bytestream_get_be16(&b);
+    int bpp    = bytestream_get_be16(&b);
+    int x, y;
 
-    if (!count || !height || count > width)
+    if (!width || !height)
         return 0;
 
     if (bpp != 24 && bpp != 8)
         return 0;
 
+    for (y=0; y<2 && y<height; y++) {
+        for (x=0; x<width; ) {
+            int count = *b++;
+            if (count == 0 || x + count > width)
+                return 0;
+            if (b > end)
+                return AVPROBE_SCORE_MAX / 8;
+            b += bpp / 8;
+            x += count;
+        }
+    }
+
     return AVPROBE_SCORE_EXTENSION + 1;
 }
 



More information about the ffmpeg-cvslog mailing list