Commit 3a085c6a authored by Paul B Mahol's avatar Paul B Mahol Committed by Michael Niedermayer

huffyuv: do not decode/encode yuv colorspace with odd width

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent ba02069a
...@@ -551,6 +551,11 @@ s->bgr32=1; ...@@ -551,6 +551,11 @@ s->bgr32=1;
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if ((avctx->pix_fmt == PIX_FMT_YUV422P || avctx->pix_fmt == PIX_FMT_YUV420P) && avctx->width & 1) {
av_log(avctx, AV_LOG_ERROR, "width must be even for this colorspace\n");
return AVERROR_INVALIDDATA;
}
alloc_temp(s); alloc_temp(s);
// av_log(NULL, AV_LOG_DEBUG, "pred:%d bpp:%d hbpp:%d il:%d\n", s->predictor, s->bitstream_bpp, avctx->bits_per_coded_sample, s->interlaced); // av_log(NULL, AV_LOG_DEBUG, "pred:%d bpp:%d hbpp:%d il:%d\n", s->predictor, s->bitstream_bpp, avctx->bits_per_coded_sample, s->interlaced);
...@@ -620,10 +625,12 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -620,10 +625,12 @@ static av_cold int encode_init(AVCodecContext *avctx)
switch(avctx->pix_fmt){ switch(avctx->pix_fmt){
case PIX_FMT_YUV420P: case PIX_FMT_YUV420P:
s->bitstream_bpp= 12;
break;
case PIX_FMT_YUV422P: case PIX_FMT_YUV422P:
s->bitstream_bpp= 16; if (s->width & 1) {
av_log(avctx, AV_LOG_ERROR, "width must be even for this colorspace\n");
return AVERROR(EINVAL);
}
s->bitstream_bpp = avctx->pix_fmt == PIX_FMT_YUV420P ? 12 : 16;
break; break;
case PIX_FMT_RGB32: case PIX_FMT_RGB32:
s->bitstream_bpp= 32; s->bitstream_bpp= 32;
......
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