Merge commit '0e1ad2f591b87e944550c15b54e54f8189743289'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Jan 2014 00:33:42 +0000 (01:33 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Jan 2014 00:33:42 +0000 (01:33 +0100)
* commit '0e1ad2f591b87e944550c15b54e54f8189743289':
  dxtory: add more compressed and uncompressed modes

Conflicts:
libavcodec/dxtory.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/dxtory.c

@@@ -66,7 -136,40 +136,40 @@@ static int dxtory_decode_v1_420(AVCodec
      return 0;
  }
  
 -const uint8_t def_lru[8] = { 0x00, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xFF };
+ static int dxtory_decode_v1_444(AVCodecContext *avctx, AVFrame *pic,
+                                 const uint8_t *src, int src_size)
+ {
+     int h, w;
+     uint8_t *Y, *U, *V;
+     int ret;
+     if (src_size < avctx->width * avctx->height * 3) {
+         av_log(avctx, AV_LOG_ERROR, "packet too small\n");
+         return AVERROR_INVALIDDATA;
+     }
+     avctx->pix_fmt = AV_PIX_FMT_YUV444P;
+     if ((ret = ff_get_buffer(avctx, pic, 0)) < 0)
+         return ret;
+     Y = pic->data[0];
+     U = pic->data[1];
+     V = pic->data[2];
+     for (h = 0; h < avctx->height; h++) {
+         for (w = 0; w < avctx->width; w++) {
+             Y[w] = *src++;
+             U[w] = *src++ ^ 0x80;
+             V[w] = *src++ ^ 0x80;
+         }
+         Y += pic->linesize[0];
+         U += pic->linesize[1];
+         V += pic->linesize[2];
+     }
+     return 0;
+ }
 +static const uint8_t def_lru[8] = { 0x00, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xFF };
  
  static inline uint8_t decode_sym(GetBitContext *gb, uint8_t lru[8])
  {