[SCM] libav/experimental: mlpdec: Check for bits left before each read of End-of-Stream indicator and Substream parity check independently. This allows decoding of streams that have EOS but don't have Substream parity check.
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:25:15 UTC 2013
The following commit has been merged in the experimental branch:
commit eb2cd99c73df74cba8ce0173f9ee2b70313adaa6
Author: Ramiro Polla <ramiro.polla at gmail.com>
Date: Sun Jul 13 14:59:39 2008 +0000
mlpdec: Check for bits left before each read of End-of-Stream indicator and
Substream parity check independently. This allows decoding of streams that
have EOS but don't have Substream parity check.
Originally committed as revision 14206 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
index 14ad478..f4d7313 100644
--- a/libavcodec/mlpdec.c
+++ b/libavcodec/mlpdec.c
@@ -1119,7 +1119,7 @@ static int read_access_unit(AVCodecContext *avctx, void* data, int *data_size,
&& get_bits1(&gb) == 0);
skip_bits(&gb, (-get_bits_count(&gb)) & 15);
- if (substream_data_len[substr] * 8 - get_bits_count(&gb) >= 48 &&
+ if (substream_data_len[substr] * 8 - get_bits_count(&gb) >= 32 &&
(show_bits_long(&gb, 32) == 0xd234d234 ||
show_bits_long(&gb, 20) == 0xd234e)) {
skip_bits(&gb, 18);
@@ -1133,7 +1133,8 @@ static int read_access_unit(AVCodecContext *avctx, void* data, int *data_size,
} else
skip_bits(&gb, 13);
}
- if (substream_parity_present[substr]) {
+ if (substream_data_len[substr] * 8 - get_bits_count(&gb) >= 16 &&
+ substream_parity_present[substr]) {
uint8_t parity, checksum;
parity = calculate_parity(buf, substream_data_len[substr] - 2);
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list