mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
vp9: Parse subsampling and report missing feature
This commit is contained in:
parent
d68c05380c
commit
3f38d4b816
@ -219,7 +219,29 @@ static int decode_frame_header(AVCodecContext *avctx,
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
s->fullrange = get_bits1(&s->gb);
|
||||
// for profile 1, here follows the subsampling bits
|
||||
|
||||
// subsampling bits
|
||||
if (s->profile == 1 || s->profile == 3) {
|
||||
s->sub_x = get_bits1(&s->gb);
|
||||
s->sub_y = get_bits1(&s->gb);
|
||||
if (s->sub_x && s->sub_y) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"4:2:0 color not supported in profile 1 or 3\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
if (get_bits1(&s->gb)) { // reserved bit
|
||||
av_log(avctx, AV_LOG_ERROR, "Reserved bit should be zero\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
} else {
|
||||
s->sub_x = s->sub_y = 1;
|
||||
}
|
||||
if (!s->sub_x || !s->sub_y) {
|
||||
avpriv_report_missing_feature(avctx, "Subsampling %d:%d",
|
||||
s->sub_x, s->sub_y);
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
|
||||
s->refreshrefmask = 0xff;
|
||||
w = get_bits(&s->gb, 16) + 1;
|
||||
h = get_bits(&s->gb, 16) + 1;
|
||||
|
@ -277,6 +277,8 @@ typedef struct VP9Context {
|
||||
uint8_t use_last_frame_mvs;
|
||||
uint8_t errorres;
|
||||
uint8_t colorspace;
|
||||
uint8_t sub_x;
|
||||
uint8_t sub_y;
|
||||
uint8_t fullrange;
|
||||
uint8_t intraonly;
|
||||
uint8_t resetctx;
|
||||
|
Loading…
Reference in New Issue
Block a user