Browse code

avcodec/huffyuv: add GBRP support

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

Michael Niedermayer authored on 2014/01/07 03:47:34
Showing 2 changed files
... ...
@@ -364,6 +364,9 @@ static av_cold int decode_init(AVCodecContext *avctx)
364 364
                                          &s->chroma_v_shift);
365 365
     } else {
366 366
         switch ( (s->chroma<<10) | (s->yuv<<9) | (s->alpha<<8) | ((s->bps-1)<<4) | s->chroma_h_shift | (s->chroma_v_shift<<2)) {
367
+        case 0x470:
368
+            avctx->pix_fmt = AV_PIX_FMT_GBRP;
369
+            break;
367 370
         case 0x670:
368 371
             avctx->pix_fmt = AV_PIX_FMT_YUV444P;
369 372
             break;
... ...
@@ -186,6 +186,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
186 186
     case AV_PIX_FMT_YUV410P:
187 187
     case AV_PIX_FMT_YUV411P:
188 188
     case AV_PIX_FMT_YUV440P:
189
+    case AV_PIX_FMT_GBRP:
189 190
         s->version = 3;
190 191
         break;
191 192
     case AV_PIX_FMT_RGB32:
... ...
@@ -200,7 +201,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
200 200
     }
201 201
 
202 202
     avctx->bits_per_coded_sample = s->bitstream_bpp;
203
-    s->decorrelate = s->bitstream_bpp >= 24 && !s->yuv;
203
+    s->decorrelate = s->bitstream_bpp >= 24 && !s->yuv && avctx->pix_fmt != AV_PIX_FMT_GBRP;
204 204
     s->predictor = avctx->prediction_method;
205 205
     s->interlaced = avctx->flags&CODEC_FLAG_INTERLACED_ME ? 1 : 0;
206 206
     if (avctx->context_model == 1) {
... ...
@@ -720,7 +721,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
720 720
             }
721 721
             encode_bgra_bitstream(s, width, 3);
722 722
         }
723
-    } else if (s->yuv) {
723
+    } else if (s->version > 2) {
724 724
         int plane;
725 725
         for (plane = 0; plane < 1 + 2*s->chroma + s->alpha; plane++) {
726 726
             int left, y;
... ...
@@ -856,6 +857,7 @@ AVCodec ff_ffvhuff_encoder = {
856 856
     .pix_fmts       = (const enum AVPixelFormat[]){
857 857
         AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV411P,
858 858
         AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV440P,
859
+        AV_PIX_FMT_GBRP,
859 860
         AV_PIX_FMT_RGB24,
860 861
         AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE
861 862
     },