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

mpeg12: Detect MXF essence stuff at the end of frames

Fixes some of the issues with segment.mov

See: 0226 15:16 Joseph Artsimov (2.1K) [FFmpeg-devel] Two problems with MPEG2 decoder
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-02-26 18:55:44 +01:00
parent e4eedb983d
commit 997a36238f

View File

@ -1821,6 +1821,15 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
&& s->intra_dc_precision == 2 && s->q_scale_type == 1 && s->alternate_scan == 0 && s->intra_dc_precision == 2 && s->q_scale_type == 1 && s->alternate_scan == 0
&& s->progressive_frame == 0 /* vbv_delay == 0xBBB || 0xE10*/; && s->progressive_frame == 0 /* vbv_delay == 0xBBB || 0xE10*/;
if (left >= 32 && !is_d10) {
GetBitContext gb = s->gb;
align_get_bits(&gb);
if (show_bits(&gb, 24) == 0x060E2B) {
av_log(avctx, AV_LOG_DEBUG, "Invalid MXF data found in video stream\n");
is_d10 = 1;
}
}
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->err_recognition & (AV_EF_BITSTREAM | AV_EF_AGGRESSIVE)) && left > 8)) { || ((avctx->err_recognition & (AV_EF_BITSTREAM | AV_EF_AGGRESSIVE)) && 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)));