Commit 22f59a8c authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/huffyuv: add GBRP support

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 49a59124
...@@ -364,6 +364,9 @@ static av_cold int decode_init(AVCodecContext *avctx) ...@@ -364,6 +364,9 @@ static av_cold int decode_init(AVCodecContext *avctx)
&s->chroma_v_shift); &s->chroma_v_shift);
} else { } else {
switch ( (s->chroma<<10) | (s->yuv<<9) | (s->alpha<<8) | ((s->bps-1)<<4) | s->chroma_h_shift | (s->chroma_v_shift<<2)) { switch ( (s->chroma<<10) | (s->yuv<<9) | (s->alpha<<8) | ((s->bps-1)<<4) | s->chroma_h_shift | (s->chroma_v_shift<<2)) {
case 0x470:
avctx->pix_fmt = AV_PIX_FMT_GBRP;
break;
case 0x670: case 0x670:
avctx->pix_fmt = AV_PIX_FMT_YUV444P; avctx->pix_fmt = AV_PIX_FMT_YUV444P;
break; break;
......
...@@ -186,6 +186,7 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -186,6 +186,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
case AV_PIX_FMT_YUV410P: case AV_PIX_FMT_YUV410P:
case AV_PIX_FMT_YUV411P: case AV_PIX_FMT_YUV411P:
case AV_PIX_FMT_YUV440P: case AV_PIX_FMT_YUV440P:
case AV_PIX_FMT_GBRP:
s->version = 3; s->version = 3;
break; break;
case AV_PIX_FMT_RGB32: case AV_PIX_FMT_RGB32:
...@@ -200,7 +201,7 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -200,7 +201,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
} }
avctx->bits_per_coded_sample = s->bitstream_bpp; avctx->bits_per_coded_sample = s->bitstream_bpp;
s->decorrelate = s->bitstream_bpp >= 24 && !s->yuv; s->decorrelate = s->bitstream_bpp >= 24 && !s->yuv && avctx->pix_fmt != AV_PIX_FMT_GBRP;
s->predictor = avctx->prediction_method; s->predictor = avctx->prediction_method;
s->interlaced = avctx->flags&CODEC_FLAG_INTERLACED_ME ? 1 : 0; s->interlaced = avctx->flags&CODEC_FLAG_INTERLACED_ME ? 1 : 0;
if (avctx->context_model == 1) { if (avctx->context_model == 1) {
...@@ -720,7 +721,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, ...@@ -720,7 +721,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
} }
encode_bgra_bitstream(s, width, 3); encode_bgra_bitstream(s, width, 3);
} }
} else if (s->yuv) { } else if (s->version > 2) {
int plane; int plane;
for (plane = 0; plane < 1 + 2*s->chroma + s->alpha; plane++) { for (plane = 0; plane < 1 + 2*s->chroma + s->alpha; plane++) {
int left, y; int left, y;
...@@ -856,6 +857,7 @@ AVCodec ff_ffvhuff_encoder = { ...@@ -856,6 +857,7 @@ AVCodec ff_ffvhuff_encoder = {
.pix_fmts = (const enum AVPixelFormat[]){ .pix_fmts = (const enum AVPixelFormat[]){
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV411P,
AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV440P,
AV_PIX_FMT_GBRP,
AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB24,
AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment