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); | |||
if (!ret) | |||
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; | |||
} | |||
} | |||
@@ -1357,7 +1357,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size, | |||
if (s->frame_size > buf_size) { | |||
av_log(avctx, AV_LOG_ERROR, "incomplete frame\n"); | |||
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 */ | |||
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"); | |||
@@ -393,7 +393,7 @@ static av_cold int read_specific_config(ALSDecContext *ctx) | |||
if (get_bits_left(&gb) < 32) | |||
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 = 0xFFFFFFFF; | |||
ctx->crc_org = ~get_bits_long(&gb, 32); | |||
@@ -1476,7 +1476,7 @@ static int decode_frame(AVCodecContext *avctx, | |||
} | |||
// 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; | |||
if (ctx->avctx->bits_per_raw_sample == 24) { | |||
@@ -1710,7 +1710,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
// allocate crc buffer | |||
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->cur_frame_length * | |||
avctx->channels * | |||
@@ -136,7 +136,7 @@ static int h261_decode_gob_header(H261Context *h){ | |||
if(s->qscale==0) { | |||
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; | |||
} | |||
@@ -724,7 +724,7 @@ intrax8_decoded: | |||
av_log(avctx, AV_LOG_DEBUG, "%"PRId64"\n", rdtsc()-time); | |||
#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 = { | |||
@@ -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_generate_sliding_window_mmcos(h); | |||
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; | |||
/* 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 | |||
@@ -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 && | |||
s->avctx->error_recognition >= FF_ER_EXPLODE) | |||
(s->avctx->err_recognition & AV_EF_EXPLODE)) | |||
return AVERROR_INVALIDDATA; | |||
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_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){ | |||
@@ -82,7 +82,7 @@ read_header: | |||
init_get_bits(&s->gb, buf_ptr+dqt_offs, (buf_end - (buf_ptr+dqt_offs))*8); | |||
s->start_code = DQT; | |||
if (ff_mjpeg_decode_dqt(s) < 0 && | |||
avctx->error_recognition >= FF_ER_EXPLODE) | |||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||
return AVERROR_INVALIDDATA; | |||
} | |||
@@ -116,7 +116,7 @@ read_header: | |||
s->mjpb_skiptosod = (sod_offs - sos_offs - show_bits(&s->gb, 16)); | |||
s->start_code = SOS; | |||
if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | |||
avctx->error_recognition >= FF_ER_EXPLODE) | |||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||
return AVERROR_INVALIDDATA; | |||
} | |||
@@ -1531,7 +1531,7 @@ eoi_parser: | |||
break; | |||
} | |||
if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 && | |||
avctx->error_recognition >= FF_ER_EXPLODE) | |||
(avctx->err_recognition & AV_EF_EXPLODE)) | |||
return AVERROR_INVALIDDATA; | |||
/* buggy avid puts EOI every 10-20th frame */ | |||
/* 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) { | |||
s->full_pel[0] = get_bits1(&s->gb); | |||
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; | |||
s->mpeg_f_code[0][0] = 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) { | |||
s->full_pel[1] = get_bits1(&s->gb); | |||
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; | |||
s->mpeg_f_code[1][0] = 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*/; | |||
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))); | |||
return -1; | |||
} 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", | |||
//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 (c->error_recognition >= FF_ER_EXPLODE) | |||
if (c->err_recognition & AV_EF_EXPLODE) | |||
return ret; | |||
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); | |||
@@ -1964,7 +1964,7 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx, | |||
s->aspect_ratio_info = get_bits(&s->gb, 4); | |||
if (s->aspect_ratio_info == 0) { | |||
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; | |||
} | |||
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) { | |||
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; | |||
} | |||
@@ -2296,7 +2296,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
s->sync=1; | |||
} else { | |||
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; | |||
} | |||
break; | |||
@@ -2326,7 +2326,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
last_code = PICTURE_START_CODE; | |||
} else { | |||
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; | |||
} | |||
break; | |||
@@ -2339,7 +2339,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
mpeg_decode_sequence_extension(s); | |||
} else { | |||
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; | |||
} | |||
break; | |||
@@ -2357,7 +2357,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
mpeg_decode_picture_coding_extension(s); | |||
} else { | |||
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; | |||
} | |||
break; | |||
@@ -2373,7 +2373,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
s->sync=1; | |||
} else { | |||
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; | |||
} | |||
break; | |||
@@ -2420,7 +2420,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
if (!s2->pict_type) { | |||
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; | |||
break; | |||
} | |||
@@ -2460,7 +2460,7 @@ static int decode_chunks(AVCodecContext *avctx, | |||
emms_c(); | |||
if (ret < 0) { | |||
if (avctx->error_recognition >= FF_ER_EXPLODE) | |||
if (avctx->err_recognition & AV_EF_EXPLODE) | |||
return ret; | |||
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); | |||
@@ -79,7 +79,7 @@ typedef struct MPADecodeContext { | |||
#endif | |||
int adu_mode; ///< 0 for standard mp3, 1 for adu formatted mp3 | |||
int dither_state; | |||
int error_recognition; | |||
int err_recognition; | |||
AVCodecContext* avctx; | |||
MPADSPContext mpadsp; | |||
} MPADecodeContext; | |||
@@ -280,7 +280,7 @@ static av_cold int decode_init(AVCodecContext * avctx) | |||
ff_mpadsp_init(&s->mpadsp); | |||
avctx->sample_fmt= OUT_FMT; | |||
s->error_recognition= avctx->error_recognition; | |||
s->err_recognition = avctx->err_recognition; | |||
if (!init && !avctx->parse_only) { | |||
int offset; | |||
@@ -1104,7 +1104,7 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, | |||
s_index -= 4; | |||
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); | |||
if(s->error_recognition >= FF_ER_COMPLIANT) | |||
if(s->err_recognition & AV_EF_BITSTREAM) | |||
s_index=0; | |||
break; | |||
} | |||
@@ -1134,10 +1134,10 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, | |||
/* skip extension bits */ | |||
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); | |||
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); | |||
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); | |||
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); | |||
if (ret < 0 && avctx->error_recognition >= FF_ER_EXPLODE) | |||
if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) | |||
return ret; | |||
} else { | |||
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; | |||
} | |||