]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/msrledec.c
Rewrite doxy for av_strtod().
[ffmpeg] / libavcodec / msrledec.c
index b49c19e095fb396cf8b436e5e9e02d61f04aff79..7f9adcdce65497413263fbd21124918289af1300 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Micrsoft RLE Decoder
+ * Microsoft RLE decoder
  * Copyright (C) 2008 Konstantin Shishkov
  *
  * This file is part of FFmpeg.
@@ -21,7 +21,7 @@
 
 /**
  * @file libavcodec/msrledec.c
- * MS RLE Decoder based on decoder by Mike Melanson and my own for TSCC
+ * MS RLE decoder based on decoder by Mike Melanson and my own for TSCC
  * For more information about the MS RLE format, visit:
  *   http://www.multimedia.cx/msrle.txt
  */
@@ -134,9 +134,9 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
 {
     uint8_t *output, *output_end;
     const uint8_t* src = data;
-    int p1, p2, line=avctx->height, pos=0, i;
-    uint16_t pix16;
-    uint32_t pix32;
+    int p1, p2, line=avctx->height - 1, pos=0, i;
+    uint16_t av_uninit(pix16);
+    uint32_t av_uninit(pix32);
 
     output = pic->data[0] + (avctx->height - 1) * pic->linesize[0];
     output_end = pic->data[0] + (avctx->height) * pic->linesize[0];
@@ -146,7 +146,7 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
             p2 = *src++;
             if(p2 == 0) { //End-of-line
                 output = pic->data[0] + (--line) * pic->linesize[0];
-                if (line < 0){
+                if (line < 0 && !(src+1 < data + srcsize && AV_RB16(src) == 1)) {
                     av_log(avctx, AV_LOG_ERROR, "Next line is beyond picture bounds\n");
                     return -1;
                 }
@@ -195,7 +195,7 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
                 }
             }
             pos += p2;
-        } else { //Run of pixels
+        } else { //run of pixels
             uint8_t pix[3]; //original pixel
             switch(depth){
             case  8: pix[0] = *src++;
@@ -233,7 +233,7 @@ static int msrle_decode_8_16_24_32(AVCodecContext *avctx, AVPicture *pic, int de
         }
     }
 
-    av_log(avctx, AV_LOG_WARNING, "MS RLE warning: no End-of-picture code\n");
+    av_log(avctx, AV_LOG_WARNING, "MS RLE warning: no end-of-picture code\n");
     return 0;
 }