mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-20 05:16:38 +00:00
avcodec/exr: fix crash caused by merge
Various header informations need to be reset when decoding next frame. Regression since:95582b5c
Fixes ticket #4597. Signed-off-by: Paul B Mahol <onemda@gmail.com> (cherry picked from commita03b69478b
)
This commit is contained in:
parent
ff02eeafd8
commit
1a4cb3b29c
@ -1011,6 +1011,22 @@ static int decode_header(EXRContext *s)
|
|||||||
int current_channel_offset = 0;
|
int current_channel_offset = 0;
|
||||||
int magic_number, version, flags, i;
|
int magic_number, version, flags, i;
|
||||||
|
|
||||||
|
s->xmin = ~0;
|
||||||
|
s->xmax = ~0;
|
||||||
|
s->ymin = ~0;
|
||||||
|
s->ymax = ~0;
|
||||||
|
s->xdelta = ~0;
|
||||||
|
s->ydelta = ~0;
|
||||||
|
s->channel_offsets[0] = -1;
|
||||||
|
s->channel_offsets[1] = -1;
|
||||||
|
s->channel_offsets[2] = -1;
|
||||||
|
s->channel_offsets[3] = -1;
|
||||||
|
s->pixel_type = EXR_UNKNOWN;
|
||||||
|
s->compression = EXR_UNKN;
|
||||||
|
s->nb_channels = 0;
|
||||||
|
s->w = 0;
|
||||||
|
s->h = 0;
|
||||||
|
|
||||||
if (bytestream2_get_bytes_left(&s->gb) < 10) {
|
if (bytestream2_get_bytes_left(&s->gb) < 10) {
|
||||||
av_log(s->avctx, AV_LOG_ERROR, "Header too short to parse.\n");
|
av_log(s->avctx, AV_LOG_ERROR, "Header too short to parse.\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
@ -1351,21 +1367,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
float one_gamma = 1.0f / s->gamma;
|
float one_gamma = 1.0f / s->gamma;
|
||||||
|
|
||||||
s->avctx = avctx;
|
s->avctx = avctx;
|
||||||
s->xmin = ~0;
|
|
||||||
s->xmax = ~0;
|
|
||||||
s->ymin = ~0;
|
|
||||||
s->ymax = ~0;
|
|
||||||
s->xdelta = ~0;
|
|
||||||
s->ydelta = ~0;
|
|
||||||
s->channel_offsets[0] = -1;
|
|
||||||
s->channel_offsets[1] = -1;
|
|
||||||
s->channel_offsets[2] = -1;
|
|
||||||
s->channel_offsets[3] = -1;
|
|
||||||
s->pixel_type = EXR_UNKNOWN;
|
|
||||||
s->compression = EXR_UNKN;
|
|
||||||
s->nb_channels = 0;
|
|
||||||
s->w = 0;
|
|
||||||
s->h = 0;
|
|
||||||
|
|
||||||
if ( one_gamma > 0.9999f && one_gamma < 1.0001f ) {
|
if ( one_gamma > 0.9999f && one_gamma < 1.0001f ) {
|
||||||
for ( i = 0; i < 65536; ++i ) {
|
for ( i = 0; i < 65536; ++i ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user