[FFmpeg-cvslog] r19822 - trunk/libavcodec/wmaprodec.c

faust3 subversion
Fri Sep 11 17:59:27 CEST 2009


Author: faust3
Date: Fri Sep 11 17:59:27 2009
New Revision: 19822

Log:
reinit get_bits for every decode_packet call

Modified:
   trunk/libavcodec/wmaprodec.c

Modified: trunk/libavcodec/wmaprodec.c
==============================================================================
--- trunk/libavcodec/wmaprodec.c	Fri Sep 11 08:25:36 2009	(r19821)
+++ trunk/libavcodec/wmaprodec.c	Fri Sep 11 17:59:27 2009	(r19822)
@@ -190,6 +190,7 @@ typedef struct WMAProDecodeCtx {
 
     /* packet decode state */
     GetBitContext    pgb;                           ///< bitstream reader context for the packet
+    uint8_t          packet_offset;                 ///< frame offset in the packet
     uint8_t          packet_sequence_number;        ///< current packet number
     int              num_saved_bits;                ///< saved number of bits
     int              frame_offset;                  ///< frame offset in the bit reservoir
@@ -1502,6 +1503,9 @@ static int decode_packet(AVCodecContext 
 
     } else {
         int frame_size;
+        s->buf_bit_size = avpkt->size << 3;
+        init_get_bits(gb, avpkt->data, s->buf_bit_size);
+        skip_bits(gb, s->packet_offset);
         if (remaining_bits(s, gb) > s->log2_frame_size &&
             (frame_size = show_bits(gb, s->log2_frame_size)) &&
             frame_size <= remaining_bits(s, gb)) {
@@ -1519,8 +1523,9 @@ static int decode_packet(AVCodecContext 
     }
 
     *data_size = (int8_t *)s->samples - (int8_t *)data;
+    s->packet_offset = get_bits_count(gb) & 7;
 
-    return (!s->packet_done && !s->packet_loss)?0: avctx->block_align;
+    return get_bits_count(gb) >> 3;
 }
 
 /**



More information about the ffmpeg-cvslog mailing list