Merge commit 'c6303f8d70c25dd6c6e6486c78bf99c9924e2b6b'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 24 Dec 2012 14:42:52 +0000 (15:42 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 24 Dec 2012 14:48:02 +0000 (15:48 +0100)
* commit 'c6303f8d70c25dd6c6e6486c78bf99c9924e2b6b':
  yop: simplify/sanitize the decoding loop
  c93: set palette_has_changed.
  bmp: cosmetics, reformat
  hlsenc: Don't duplicate a string constant

Conflicts:
libavcodec/bmp.c
tests/ref/fate/yop

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/bmp.c
libavcodec/c93.c
libavcodec/yop.c
tests/ref/fate/yop

@@@ -94,9 -94,8 +95,9 @@@ static int bmp_decode_frame(AVCodecCont
          return -1;
      }
  
-     switch(ihsize){
+     switch (ihsize) {
 -    case  40: // windib v3
 +    case  40: // windib
 +    case  56: // windib v3
      case  64: // OS/2 v2
      case 108: // windib v4
      case 124: // windib v5
          rgb[0] = bytestream_get_le32(&buf);
          rgb[1] = bytestream_get_le32(&buf);
          rgb[2] = bytestream_get_le32(&buf);
 +        alpha = bytestream_get_le32(&buf);
      }
  
-     avctx->width = width;
-     avctx->height = height > 0? height: -height;
+     avctx->width  = width;
+     avctx->height = height > 0 ? height : -height;
  
      avctx->pix_fmt = AV_PIX_FMT_NONE;
  
-     switch(depth){
+     switch (depth) {
      case 32:
-         if(comp == BMP_BITFIELDS){
+         if (comp == BMP_BITFIELDS) {
 -            rgb[0] = (rgb[0] >> 15) & 3;
 -            rgb[1] = (rgb[1] >> 15) & 3;
 -            rgb[2] = (rgb[2] >> 15) & 3;
 -
 -            if (rgb[0] + rgb[1] + rgb[2] != 3 ||
 -                rgb[0] == rgb[1] || rgb[0] == rgb[2] || rgb[1] == rgb[2]) {
 -                break;
 +            if (rgb[0] == 0xFF000000 && rgb[1] == 0x00FF0000 && rgb[2] == 0x0000FF00)
 +                avctx->pix_fmt = alpha ? AV_PIX_FMT_ABGR : AV_PIX_FMT_0BGR;
 +            else if (rgb[0] == 0x00FF0000 && rgb[1] == 0x0000FF00 && rgb[2] == 0x000000FF)
 +                avctx->pix_fmt = alpha ? AV_PIX_FMT_BGRA : AV_PIX_FMT_BGR0;
 +            else if (rgb[0] == 0x0000FF00 && rgb[1] == 0x00FF0000 && rgb[2] == 0xFF000000)
 +                avctx->pix_fmt = alpha ? AV_PIX_FMT_ARGB : AV_PIX_FMT_0RGB;
 +            else if (rgb[0] == 0x000000FF && rgb[1] == 0x0000FF00 && rgb[2] == 0x00FF0000)
 +                avctx->pix_fmt = alpha ? AV_PIX_FMT_RGBA : AV_PIX_FMT_RGB0;
 +            else {
 +                av_log(avctx, AV_LOG_ERROR, "Unknown bitfields %0X %0X %0X\n", rgb[0], rgb[1], rgb[2]);
 +                return AVERROR(EINVAL);
              }
          } else {
 -            rgb[0] = 2;
 -            rgb[1] = 1;
 -            rgb[2] = 0;
 +            avctx->pix_fmt = AV_PIX_FMT_BGRA;
          }
 -
 -        avctx->pix_fmt = AV_PIX_FMT_BGR24;
          break;
      case 24:
          avctx->pix_fmt = AV_PIX_FMT_BGR24;
      dsize = buf_size - hsize;
  
      /* Line size in file multiple of 4 */
 -    n = ((avctx->width * depth) / 8 + 3) & ~3;
 +    n = ((avctx->width * depth + 31) / 8) & ~3;
  
-     if(n * avctx->height > dsize && comp != BMP_RLE4 && comp != BMP_RLE8){
+     if (n * avctx->height > dsize && comp != BMP_RLE4 && comp != BMP_RLE8) {
          av_log(avctx, AV_LOG_ERROR, "not enough data (%d < %d)\n",
                 dsize, n * avctx->height);
          return -1;
              }
          }
          buf = buf0 + 14 + ihsize; //palette location
-         if((hsize-ihsize-14) < (colors << 2)){ // OS/2 bitmap, 3 bytes per palette entry
-             for(i = 0; i < colors; i++)
+         // OS/2 bitmap, 3 bytes per palette entry
+         if ((hsize-ihsize-14) < (colors << 2)) {
+             for (i = 0; i < colors; i++)
 -                ((uint32_t*)p->data[1])[i] = bytestream_get_le24(&buf);
 +                ((uint32_t*)p->data[1])[i] = (0xFFU<<24) | bytestream_get_le24(&buf);
-         }else{
-             for(i = 0; i < colors; i++)
+         } else {
+             for (i = 0; i < colors; i++)
 -                ((uint32_t*)p->data[1])[i] = bytestream_get_le32(&buf);
 +                ((uint32_t*)p->data[1])[i] = 0xFFU << 24 | bytestream_get_le32(&buf);
          }
          buf = buf0 + hsize;
      }
              break;
          case 8:
          case 24:
-             for(i = 0; i < avctx->height; i++){
 +        case 32:
+             for (i = 0; i < avctx->height; i++) {
                  memcpy(ptr, buf, n);
                  buf += n;
                  ptr += linesize;
@@@ -235,8 -231,9 +235,9 @@@ static int decode_frame(AVCodecContext 
      if (b & C93_HAS_PALETTE) {
          uint32_t *palette = (uint32_t *) newpic->data[1];
          for (i = 0; i < 256; i++) {
 -            palette[i] = bytestream2_get_be24(&gb);
 +            palette[i] = 0xFFU << 24 | bytestream2_get_be24(&gb);
          }
+         newpic->palette_has_changed = 1;
      } else {
          if (oldpic->data[1])
              memcpy(newpic->data[1], oldpic->data[1], 256 * 4);
Simple merge
@@@ -1,8 -1,7 +1,7 @@@
  #tb 0: 1/12
 -0,          0,          0,        1,   302760, 0x78939253
 -0,          1,          1,        1,   302760, 0x534f5253
 -0,          2,          2,        1,   302760, 0xe991aa82
 -0,          3,          3,        1,   302760, 0xc34b20bd
 -0,          4,          4,        1,   302760, 0x461d29a1
 -0,          5,          5,        1,   302760, 0x45abca02
 +0,          0,          0,        1,   302760, 0xf24dfa37
 +0,          1,          1,        1,   302760, 0xcedcbb6c
 +0,          2,          2,        1,   302760, 0x8c2d19a2
 +0,          3,          3,        1,   302760, 0xe0fc92da
 +0,          4,          4,        1,   302760, 0xd7699bb4
 +0,          5,          5,        1,   302760, 0x26e93266
- 0,          6,          6,        1,   302760, 0x4cddb216