Signed-off-by: Anton Khirnov <anton@khirnov.net>tags/n0.9
@@ -594,7 +594,7 @@ static av_cold int aac_decode_init(AVCodecContext *avctx) | |||||
int ret = set_default_channel_config(avctx, new_che_pos, ac->m4ac.chan_config); | int ret = set_default_channel_config(avctx, new_che_pos, ac->m4ac.chan_config); | ||||
if (!ret) | if (!ret) | ||||
output_configure(ac, ac->che_pos, new_che_pos, ac->m4ac.chan_config, OC_GLOBAL_HDR); | output_configure(ac, ac->che_pos, new_che_pos, ac->m4ac.chan_config, OC_GLOBAL_HDR); | ||||
else if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
else if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
} | } | ||||
@@ -1357,7 +1357,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size, | |||||
if (s->frame_size > buf_size) { | if (s->frame_size > buf_size) { | ||||
av_log(avctx, AV_LOG_ERROR, "incomplete frame\n"); | av_log(avctx, AV_LOG_ERROR, "incomplete frame\n"); | ||||
err = AAC_AC3_PARSE_ERROR_FRAME_SIZE; | err = AAC_AC3_PARSE_ERROR_FRAME_SIZE; | ||||
} else if (avctx->error_recognition >= FF_ER_CAREFUL) { | |||||
} else if (avctx->err_recognition & AV_EF_CRCCHECK) { | |||||
/* check for crc mismatch */ | /* check for crc mismatch */ | ||||
if (av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, &buf[2], s->frame_size-2)) { | if (av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, &buf[2], s->frame_size-2)) { | ||||
av_log(avctx, AV_LOG_ERROR, "frame CRC mismatch\n"); | av_log(avctx, AV_LOG_ERROR, "frame CRC mismatch\n"); | ||||
@@ -393,7 +393,7 @@ static av_cold int read_specific_config(ALSDecContext *ctx) | |||||
if (get_bits_left(&gb) < 32) | if (get_bits_left(&gb) < 32) | ||||
return -1; | return -1; | ||||
if (avctx->error_recognition >= FF_ER_CAREFUL) { | |||||
if (avctx->err_recognition & AV_EF_CRCCHECK) { | |||||
ctx->crc_table = av_crc_get_table(AV_CRC_32_IEEE_LE); | ctx->crc_table = av_crc_get_table(AV_CRC_32_IEEE_LE); | ||||
ctx->crc = 0xFFFFFFFF; | ctx->crc = 0xFFFFFFFF; | ||||
ctx->crc_org = ~get_bits_long(&gb, 32); | ctx->crc_org = ~get_bits_long(&gb, 32); | ||||
@@ -1476,7 +1476,7 @@ static int decode_frame(AVCodecContext *avctx, | |||||
} | } | ||||
// update CRC | // update CRC | ||||
if (sconf->crc_enabled && avctx->error_recognition >= FF_ER_CAREFUL) { | |||||
if (sconf->crc_enabled && (avctx->err_recognition & AV_EF_CRCCHECK)) { | |||||
int swap = HAVE_BIGENDIAN != sconf->msb_first; | int swap = HAVE_BIGENDIAN != sconf->msb_first; | ||||
if (ctx->avctx->bits_per_raw_sample == 24) { | if (ctx->avctx->bits_per_raw_sample == 24) { | ||||
@@ -1710,7 +1710,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||||
// allocate crc buffer | // allocate crc buffer | ||||
if (HAVE_BIGENDIAN != sconf->msb_first && sconf->crc_enabled && | if (HAVE_BIGENDIAN != sconf->msb_first && sconf->crc_enabled && | ||||
avctx->error_recognition >= FF_ER_CAREFUL) { | |||||
(avctx->err_recognition & AV_EF_CRCCHECK)) { | |||||
ctx->crc_buffer = av_malloc(sizeof(*ctx->crc_buffer) * | ctx->crc_buffer = av_malloc(sizeof(*ctx->crc_buffer) * | ||||
ctx->cur_frame_length * | ctx->cur_frame_length * | ||||
avctx->channels * | avctx->channels * | ||||
@@ -136,7 +136,7 @@ static int h261_decode_gob_header(H261Context *h){ | |||||
if(s->qscale==0) { | if(s->qscale==0) { | ||||
av_log(s->avctx, AV_LOG_ERROR, "qscale has forbidden 0 value\n"); | av_log(s->avctx, AV_LOG_ERROR, "qscale has forbidden 0 value\n"); | ||||
if (s->avctx->error_recognition >= FF_ER_COMPLIANT) | |||||
if (s->avctx->err_recognition & AV_EF_BITSTREAM) | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -724,7 +724,7 @@ intrax8_decoded: | |||||
av_log(avctx, AV_LOG_DEBUG, "%"PRId64"\n", rdtsc()-time); | av_log(avctx, AV_LOG_DEBUG, "%"PRId64"\n", rdtsc()-time); | ||||
#endif | #endif | ||||
return (ret && avctx->error_recognition >= FF_ER_EXPLODE)?ret:get_consumed_bytes(s, buf_size); | |||||
return (ret && (avctx->err_recognition & AV_EF_EXPLODE))?ret:get_consumed_bytes(s, buf_size); | |||||
} | } | ||||
AVCodec ff_h263_decoder = { | AVCodec ff_h263_decoder = { | ||||
@@ -2827,7 +2827,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ | |||||
ff_thread_report_progress((AVFrame*)s->current_picture_ptr, INT_MAX, 1); | ff_thread_report_progress((AVFrame*)s->current_picture_ptr, INT_MAX, 1); | ||||
ff_generate_sliding_window_mmcos(h); | ff_generate_sliding_window_mmcos(h); | ||||
if (ff_h264_execute_ref_pic_marking(h, h->mmco, h->mmco_index) < 0 && | if (ff_h264_execute_ref_pic_marking(h, h->mmco, h->mmco_index) < 0 && | ||||
s->avctx->error_recognition >= FF_ER_EXPLODE) | |||||
(s->avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
/* Error concealment: if a ref is missing, copy the previous ref in its place. | /* Error concealment: if a ref is missing, copy the previous ref in its place. | ||||
* FIXME: avoiding a memcpy would be nice, but ref handling makes many assumptions | * FIXME: avoiding a memcpy would be nice, but ref handling makes many assumptions | ||||
@@ -3005,7 +3005,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ | |||||
} | } | ||||
if(h->nal_ref_idc && ff_h264_decode_ref_pic_marking(h0, &s->gb) < 0 && | if(h->nal_ref_idc && ff_h264_decode_ref_pic_marking(h0, &s->gb) < 0 && | ||||
s->avctx->error_recognition >= FF_ER_EXPLODE) | |||||
(s->avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
if(FRAME_MBAFF){ | if(FRAME_MBAFF){ | ||||
@@ -655,7 +655,7 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count){ | |||||
print_short_term(h); | print_short_term(h); | ||||
print_long_term(h); | print_long_term(h); | ||||
return h->s.avctx->error_recognition >= FF_ER_EXPLODE ? err : 0; | |||||
return (h->s.avctx->err_recognition & AV_EF_EXPLODE) ? err : 0; | |||||
} | } | ||||
int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb){ | int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb){ | ||||
@@ -82,7 +82,7 @@ read_header: | |||||
init_get_bits(&s->gb, buf_ptr+dqt_offs, (buf_end - (buf_ptr+dqt_offs))*8); | init_get_bits(&s->gb, buf_ptr+dqt_offs, (buf_end - (buf_ptr+dqt_offs))*8); | ||||
s->start_code = DQT; | s->start_code = DQT; | ||||
if (ff_mjpeg_decode_dqt(s) < 0 && | if (ff_mjpeg_decode_dqt(s) < 0 && | ||||
avctx->error_recognition >= FF_ER_EXPLODE) | |||||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
@@ -116,7 +116,7 @@ read_header: | |||||
s->mjpb_skiptosod = (sod_offs - sos_offs - show_bits(&s->gb, 16)); | s->mjpb_skiptosod = (sod_offs - sos_offs - show_bits(&s->gb, 16)); | ||||
s->start_code = SOS; | s->start_code = SOS; | ||||
if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | ||||
avctx->error_recognition >= FF_ER_EXPLODE) | |||||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
@@ -1531,7 +1531,7 @@ eoi_parser: | |||||
break; | break; | ||||
} | } | ||||
if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | ||||
avctx->error_recognition >= FF_ER_EXPLODE) | |||||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
/* buggy avid puts EOI every 10-20th frame */ | /* buggy avid puts EOI every 10-20th frame */ | ||||
/* if restart period is over process EOI */ | /* if restart period is over process EOI */ | ||||
@@ -1342,7 +1342,7 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, | |||||
if (s->pict_type == AV_PICTURE_TYPE_P || s->pict_type == AV_PICTURE_TYPE_B) { | if (s->pict_type == AV_PICTURE_TYPE_P || s->pict_type == AV_PICTURE_TYPE_B) { | ||||
s->full_pel[0] = get_bits1(&s->gb); | s->full_pel[0] = get_bits1(&s->gb); | ||||
f_code = get_bits(&s->gb, 3); | f_code = get_bits(&s->gb, 3); | ||||
if (f_code == 0 && avctx->error_recognition >= FF_ER_COMPLIANT) | |||||
if (f_code == 0 && (avctx->err_recognition & AV_EF_BITSTREAM)) | |||||
return -1; | return -1; | ||||
s->mpeg_f_code[0][0] = f_code; | s->mpeg_f_code[0][0] = f_code; | ||||
s->mpeg_f_code[0][1] = f_code; | s->mpeg_f_code[0][1] = f_code; | ||||
@@ -1350,7 +1350,7 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, | |||||
if (s->pict_type == AV_PICTURE_TYPE_B) { | if (s->pict_type == AV_PICTURE_TYPE_B) { | ||||
s->full_pel[1] = get_bits1(&s->gb); | s->full_pel[1] = get_bits1(&s->gb); | ||||
f_code = get_bits(&s->gb, 3); | f_code = get_bits(&s->gb, 3); | ||||
if (f_code == 0 && avctx->error_recognition >= FF_ER_COMPLIANT) | |||||
if (f_code == 0 && (avctx->err_recognition & AV_EF_BITSTREAM)) | |||||
return -1; | return -1; | ||||
s->mpeg_f_code[1][0] = f_code; | s->mpeg_f_code[1][0] = f_code; | ||||
s->mpeg_f_code[1][1] = f_code; | s->mpeg_f_code[1][1] = f_code; | ||||
@@ -1784,7 +1784,7 @@ static int mpeg_decode_slice(Mpeg1Context *s1, int mb_y, | |||||
&& s->progressive_frame == 0 /* vbv_delay == 0xBBB || 0xE10*/; | && s->progressive_frame == 0 /* vbv_delay == 0xBBB || 0xE10*/; | ||||
if (left < 0 || (left && show_bits(&s->gb, FFMIN(left, 23)) && !is_d10) | if (left < 0 || (left && show_bits(&s->gb, FFMIN(left, 23)) && !is_d10) | ||||
|| (avctx->error_recognition >= FF_ER_AGGRESSIVE && left > 8)) { | |||||
|| ((avctx->err_recognition & AV_EF_BUFFER) && left > 8)) { | |||||
av_log(avctx, AV_LOG_ERROR, "end mismatch left=%d %0X\n", left, show_bits(&s->gb, FFMIN(left, 23))); | av_log(avctx, AV_LOG_ERROR, "end mismatch left=%d %0X\n", left, show_bits(&s->gb, FFMIN(left, 23))); | ||||
return -1; | return -1; | ||||
} else | } else | ||||
@@ -1876,7 +1876,7 @@ static int slice_decode_thread(AVCodecContext *c, void *arg) | |||||
//av_log(c, AV_LOG_DEBUG, "ret:%d resync:%d/%d mb:%d/%d ts:%d/%d ec:%d\n", | //av_log(c, AV_LOG_DEBUG, "ret:%d resync:%d/%d mb:%d/%d ts:%d/%d ec:%d\n", | ||||
//ret, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, s->start_mb_y, s->end_mb_y, s->error_count); | //ret, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, s->start_mb_y, s->end_mb_y, s->error_count); | ||||
if (ret < 0) { | if (ret < 0) { | ||||
if (c->error_recognition >= FF_ER_EXPLODE) | |||||
if (c->err_recognition & AV_EF_EXPLODE) | |||||
return ret; | return ret; | ||||
if (s->resync_mb_x >= 0 && s->resync_mb_y >= 0) | if (s->resync_mb_x >= 0 && s->resync_mb_y >= 0) | ||||
ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, AC_ERROR | DC_ERROR | MV_ERROR); | ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, AC_ERROR | DC_ERROR | MV_ERROR); | ||||
@@ -1964,7 +1964,7 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx, | |||||
s->aspect_ratio_info = get_bits(&s->gb, 4); | s->aspect_ratio_info = get_bits(&s->gb, 4); | ||||
if (s->aspect_ratio_info == 0) { | if (s->aspect_ratio_info == 0) { | ||||
av_log(avctx, AV_LOG_ERROR, "aspect ratio has forbidden 0 value\n"); | av_log(avctx, AV_LOG_ERROR, "aspect ratio has forbidden 0 value\n"); | ||||
if (avctx->error_recognition >= FF_ER_COMPLIANT) | |||||
if (avctx->err_recognition & AV_EF_BITSTREAM) | |||||
return -1; | return -1; | ||||
} | } | ||||
s->frame_rate_index = get_bits(&s->gb, 4); | s->frame_rate_index = get_bits(&s->gb, 4); | ||||
@@ -2238,7 +2238,7 @@ static int mpeg_decode_frame(AVCodecContext *avctx, | |||||
if (avctx->extradata && !avctx->frame_number) { | if (avctx->extradata && !avctx->frame_number) { | ||||
int ret = decode_chunks(avctx, picture, data_size, avctx->extradata, avctx->extradata_size); | int ret = decode_chunks(avctx, picture, data_size, avctx->extradata, avctx->extradata_size); | ||||
if (ret < 0 && avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return ret; | return ret; | ||||
} | } | ||||
@@ -2296,7 +2296,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
s->sync=1; | s->sync=1; | ||||
} else { | } else { | ||||
av_log(avctx, AV_LOG_ERROR, "ignoring SEQ_START_CODE after %X\n", last_code); | av_log(avctx, AV_LOG_ERROR, "ignoring SEQ_START_CODE after %X\n", last_code); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
break; | break; | ||||
@@ -2326,7 +2326,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
last_code = PICTURE_START_CODE; | last_code = PICTURE_START_CODE; | ||||
} else { | } else { | ||||
av_log(avctx, AV_LOG_ERROR, "ignoring pic after %X\n", last_code); | av_log(avctx, AV_LOG_ERROR, "ignoring pic after %X\n", last_code); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
break; | break; | ||||
@@ -2339,7 +2339,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
mpeg_decode_sequence_extension(s); | mpeg_decode_sequence_extension(s); | ||||
} else { | } else { | ||||
av_log(avctx, AV_LOG_ERROR, "ignoring seq ext after %X\n", last_code); | av_log(avctx, AV_LOG_ERROR, "ignoring seq ext after %X\n", last_code); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
break; | break; | ||||
@@ -2357,7 +2357,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
mpeg_decode_picture_coding_extension(s); | mpeg_decode_picture_coding_extension(s); | ||||
} else { | } else { | ||||
av_log(avctx, AV_LOG_ERROR, "ignoring pic cod ext after %X\n", last_code); | av_log(avctx, AV_LOG_ERROR, "ignoring pic cod ext after %X\n", last_code); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
break; | break; | ||||
@@ -2373,7 +2373,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
s->sync=1; | s->sync=1; | ||||
} else { | } else { | ||||
av_log(avctx, AV_LOG_ERROR, "ignoring GOP_START_CODE after %X\n", last_code); | av_log(avctx, AV_LOG_ERROR, "ignoring GOP_START_CODE after %X\n", last_code); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
} | } | ||||
break; | break; | ||||
@@ -2420,7 +2420,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
if (!s2->pict_type) { | if (!s2->pict_type) { | ||||
av_log(avctx, AV_LOG_ERROR, "Missing picture start code\n"); | av_log(avctx, AV_LOG_ERROR, "Missing picture start code\n"); | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
break; | break; | ||||
} | } | ||||
@@ -2460,7 +2460,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
emms_c(); | emms_c(); | ||||
if (ret < 0) { | if (ret < 0) { | ||||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||||
return ret; | return ret; | ||||
if (s2->resync_mb_x >= 0 && s2->resync_mb_y >= 0) | if (s2->resync_mb_x >= 0 && s2->resync_mb_y >= 0) | ||||
ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x, s2->mb_y, AC_ERROR | DC_ERROR | MV_ERROR); | ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x, s2->mb_y, AC_ERROR | DC_ERROR | MV_ERROR); | ||||
@@ -79,7 +79,7 @@ typedef struct MPADecodeContext { | |||||
#endif | #endif | ||||
int adu_mode; ///< 0 for standard mp3, 1 for adu formatted mp3 | int adu_mode; ///< 0 for standard mp3, 1 for adu formatted mp3 | ||||
int dither_state; | int dither_state; | ||||
int error_recognition; | |||||
int err_recognition; | |||||
AVCodecContext* avctx; | AVCodecContext* avctx; | ||||
MPADSPContext mpadsp; | MPADSPContext mpadsp; | ||||
} MPADecodeContext; | } MPADecodeContext; | ||||
@@ -280,7 +280,7 @@ static av_cold int decode_init(AVCodecContext * avctx) | |||||
ff_mpadsp_init(&s->mpadsp); | ff_mpadsp_init(&s->mpadsp); | ||||
avctx->sample_fmt= OUT_FMT; | avctx->sample_fmt= OUT_FMT; | ||||
s->error_recognition= avctx->error_recognition; | |||||
s->err_recognition = avctx->err_recognition; | |||||
if (!init && !avctx->parse_only) { | if (!init && !avctx->parse_only) { | ||||
int offset; | int offset; | ||||
@@ -1104,7 +1104,7 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, | |||||
s_index -= 4; | s_index -= 4; | ||||
skip_bits_long(&s->gb, last_pos - pos); | skip_bits_long(&s->gb, last_pos - pos); | ||||
av_log(s->avctx, AV_LOG_INFO, "overread, skip %d enddists: %d %d\n", last_pos - pos, end_pos-pos, end_pos2-pos); | av_log(s->avctx, AV_LOG_INFO, "overread, skip %d enddists: %d %d\n", last_pos - pos, end_pos-pos, end_pos2-pos); | ||||
if(s->error_recognition >= FF_ER_COMPLIANT) | |||||
if(s->err_recognition & AV_EF_BITSTREAM) | |||||
s_index=0; | s_index=0; | ||||
break; | break; | ||||
} | } | ||||
@@ -1134,10 +1134,10 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, | |||||
/* skip extension bits */ | /* skip extension bits */ | ||||
bits_left = end_pos2 - get_bits_count(&s->gb); | bits_left = end_pos2 - get_bits_count(&s->gb); | ||||
//av_log(NULL, AV_LOG_ERROR, "left:%d buf:%p\n", bits_left, s->in_gb.buffer); | //av_log(NULL, AV_LOG_ERROR, "left:%d buf:%p\n", bits_left, s->in_gb.buffer); | ||||
if (bits_left < 0 && s->error_recognition >= FF_ER_COMPLIANT) { | |||||
if (bits_left < 0 && (s->err_recognition & AV_EF_BITSTREAM)) { | |||||
av_log(s->avctx, AV_LOG_ERROR, "bits_left=%d\n", bits_left); | av_log(s->avctx, AV_LOG_ERROR, "bits_left=%d\n", bits_left); | ||||
s_index=0; | s_index=0; | ||||
}else if(bits_left > 0 && s->error_recognition >= FF_ER_AGGRESSIVE){ | |||||
}else if(bits_left > 0 && (s->err_recognition & AV_EF_BUFFER)){ | |||||
av_log(s->avctx, AV_LOG_ERROR, "bits_left=%d\n", bits_left); | av_log(s->avctx, AV_LOG_ERROR, "bits_left=%d\n", bits_left); | ||||
s_index=0; | s_index=0; | ||||
} | } | ||||
@@ -274,11 +274,11 @@ static int mxpeg_decode_frame(AVCodecContext *avctx, | |||||
} | } | ||||
ret = ff_mjpeg_decode_sos(jpg, s->mxm_bitmask, reference_ptr); | ret = ff_mjpeg_decode_sos(jpg, s->mxm_bitmask, reference_ptr); | ||||
if (ret < 0 && avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return ret; | return ret; | ||||
} else { | } else { | ||||
ret = ff_mjpeg_decode_sos(jpg, NULL, NULL); | ret = ff_mjpeg_decode_sos(jpg, NULL, NULL); | ||||
if (ret < 0 && avctx->error_recognition >= FF_ER_EXPLODE) | |||||
if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) | |||||
return ret; | return ret; | ||||
} | } | ||||