1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Merge commit 'da7d839a0d3ec40423a665dc85e0cfaed3f92eb8'

* commit 'da7d839a0d3ec40423a665dc85e0cfaed3f92eb8':
  ffv1dec: check that global parameters do not change in version 0/1

Conflicts:
	libavcodec/ffv1dec.c

See: b05cd1ea7e
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-08-12 17:08:45 +02:00
commit 113229922a

View File

@ -632,31 +632,31 @@ static int read_header(FFV1Context *f)
f->state_transition[i] = get_symbol(c, state, 1) + c->one_state[i]; f->state_transition[i] = get_symbol(c, state, 1) + c->one_state[i];
} }
colorspace = get_symbol(c, state, 0); //YUV cs type colorspace = get_symbol(c, state, 0); //YUV cs type
bits_per_raw_sample = f->version > 0 ? get_symbol(c, state, 0) : f->avctx->bits_per_raw_sample; bits_per_raw_sample = f->version > 0 ? get_symbol(c, state, 0) : f->avctx->bits_per_raw_sample;
chroma_planes = get_rac(c, state); chroma_planes = get_rac(c, state);
chroma_h_shift = get_symbol(c, state, 0); chroma_h_shift = get_symbol(c, state, 0);
chroma_v_shift = get_symbol(c, state, 0); chroma_v_shift = get_symbol(c, state, 0);
transparency = get_rac(c, state); transparency = get_rac(c, state);
if (f->plane_count) { if (f->plane_count) {
if ( colorspace != f->colorspace if (colorspace != f->colorspace ||
|| bits_per_raw_sample != f->avctx->bits_per_raw_sample bits_per_raw_sample != f->avctx->bits_per_raw_sample ||
|| chroma_planes != f->chroma_planes chroma_planes != f->chroma_planes ||
|| chroma_h_shift!= f->chroma_h_shift chroma_h_shift != f->chroma_h_shift ||
|| chroma_v_shift!= f->chroma_v_shift chroma_v_shift != f->chroma_v_shift ||
|| transparency != f->transparency) { transparency != f->transparency) {
av_log(f->avctx, AV_LOG_ERROR, "Invalid change of global parameters\n"); av_log(f->avctx, AV_LOG_ERROR, "Invalid change of global parameters\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
} }
f->colorspace = colorspace; f->colorspace = colorspace;
f->avctx->bits_per_raw_sample = bits_per_raw_sample; f->avctx->bits_per_raw_sample = bits_per_raw_sample;
f->chroma_planes = chroma_planes; f->chroma_planes = chroma_planes;
f->chroma_h_shift = chroma_h_shift; f->chroma_h_shift = chroma_h_shift;
f->chroma_v_shift = chroma_v_shift; f->chroma_v_shift = chroma_v_shift;
f->transparency = transparency; f->transparency = transparency;
f->plane_count = 2 + f->transparency; f->plane_count = 2 + f->transparency;
} }