|
|
@ -131,7 +131,7 @@ static const uint8_t hilbert_offset[16][2] = { |
|
|
|
|
|
|
|
|
|
|
|
typedef struct Vp3DecodeContext { |
|
|
|
typedef struct Vp3DecodeContext { |
|
|
|
AVCodecContext *avctx; |
|
|
|
AVCodecContext *avctx; |
|
|
|
int theora, theora_tables; |
|
|
|
int theora, theora_tables, theora_header; |
|
|
|
int version; |
|
|
|
int version; |
|
|
|
int width, height; |
|
|
|
int width, height; |
|
|
|
int chroma_x_shift, chroma_y_shift; |
|
|
|
int chroma_x_shift, chroma_y_shift; |
|
|
@ -2258,6 +2258,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) |
|
|
|
int ret; |
|
|
|
int ret; |
|
|
|
AVRational fps, aspect; |
|
|
|
AVRational fps, aspect; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s->theora_header = 0; |
|
|
|
s->theora = get_bits_long(gb, 24); |
|
|
|
s->theora = get_bits_long(gb, 24); |
|
|
|
av_log(avctx, AV_LOG_DEBUG, "Theora bitstream version %X\n", s->theora); |
|
|
|
av_log(avctx, AV_LOG_DEBUG, "Theora bitstream version %X\n", s->theora); |
|
|
|
|
|
|
|
|
|
|
@ -2363,6 +2364,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) |
|
|
|
avctx->color_trc = AVCOL_TRC_BT709; |
|
|
|
avctx->color_trc = AVCOL_TRC_BT709; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s->theora_header = 1; |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2371,6 +2373,9 @@ static int theora_decode_tables(AVCodecContext *avctx, GetBitContext *gb) |
|
|
|
Vp3DecodeContext *s = avctx->priv_data; |
|
|
|
Vp3DecodeContext *s = avctx->priv_data; |
|
|
|
int i, n, matrices, inter, plane; |
|
|
|
int i, n, matrices, inter, plane; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!s->theora_header) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
|
|
|
|
if (s->theora >= 0x030200) { |
|
|
|
if (s->theora >= 0x030200) { |
|
|
|
n = get_bits(gb, 3); |
|
|
|
n = get_bits(gb, 3); |
|
|
|
/* loop filter limit values table */ |
|
|
|
/* loop filter limit values table */ |
|
|
|