[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