|
|
|
@@ -2175,6 +2175,10 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) |
|
|
|
{ |
|
|
|
skip_bits(gb, 5); /* keyframe frequency force */ |
|
|
|
avctx->pix_fmt = theora_pix_fmts[get_bits(gb, 2)]; |
|
|
|
if (avctx->pix_fmt == AV_PIX_FMT_NONE) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Invalid pixel format\n"); |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
skip_bits(gb, 3); /* reserved */ |
|
|
|
} |
|
|
|
|
|
|
|
@@ -2349,7 +2353,8 @@ static av_cold int theora_decode_init(AVCodecContext *avctx) |
|
|
|
switch(ptype) |
|
|
|
{ |
|
|
|
case 0x80: |
|
|
|
theora_decode_header(avctx, &gb); |
|
|
|
if (theora_decode_header(avctx, &gb) < 0) |
|
|
|
return -1; |
|
|
|
break; |
|
|
|
case 0x81: |
|
|
|
// FIXME: is this needed? it breaks sometimes |
|
|
|
|