changeset 7012:4156c54aedba libavcodec

get substreamid from ac3 parser
author jbr
date Sat, 07 Jun 2008 22:29:11 +0000
parents 77f607fb4e8b
children d07912ff7dcd
files ac3.h ac3_parser.c ac3dec.c
diffstat 3 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ac3.h	Sat Jun 07 22:29:03 2008 +0000
+++ b/ac3.h	Sat Jun 07 22:29:11 2008 +0000
@@ -85,6 +85,7 @@
     uint8_t channel_mode;
     uint8_t lfe_on;
     uint8_t frame_type;
+    int substreamid;                        ///< substream identification
     int center_mix_level;                   ///< Center mix level index
     int surround_mix_level;                 ///< Surround mix level index
     uint16_t channel_map;
--- a/ac3_parser.c	Sat Jun 07 22:29:03 2008 +0000
+++ b/ac3_parser.c	Sat Jun 07 22:29:11 2008 +0000
@@ -99,6 +99,7 @@
         hdr->channels = ff_ac3_channels_tab[hdr->channel_mode] + hdr->lfe_on;
         hdr->frame_size = ff_ac3_frame_size_tab[frame_size_code][hdr->sr_code] * 2;
         hdr->frame_type = EAC3_FRAME_TYPE_AC3_CONVERT; //EAC3_FRAME_TYPE_INDEPENDENT;
+        hdr->substreamid = 0;
     } else {
         /* Enhanced AC-3 */
         hdr->crc1 = 0;
@@ -106,7 +107,7 @@
         if(hdr->frame_type == EAC3_FRAME_TYPE_RESERVED)
             return AC3_PARSE_ERROR_FRAME_TYPE;
 
-        skip_bits(gbc, 3); // skip substream id
+        hdr->substreamid = get_bits(gbc, 3);
 
         hdr->frame_size = (get_bits(gbc, 11) + 1) << 1;
         if(hdr->frame_size < AC3_HEADER_SIZE)
--- a/ac3dec.c	Sat Jun 07 22:29:03 2008 +0000
+++ b/ac3dec.c	Sat Jun 07 22:29:11 2008 +0000
@@ -134,6 +134,7 @@
 
     int sample_rate;                        ///< sample frequency, in Hz
     int bit_rate;                           ///< stream bit rate, in bits-per-second
+    int substreamid;                        ///< substream identification
     int frame_size;                         ///< current frame size, in bytes
 
     int channels;                           ///< number of total channels
@@ -326,6 +327,7 @@
     s->center_mix_level             = hdr.center_mix_level;
     s->surround_mix_level           = hdr.surround_mix_level;
     s->num_blocks                   = hdr.num_blocks;
+    s->substreamid                  = hdr.substreamid;
 
     if(s->lfe_on) {
         s->start_freq[s->lfe_ch] = 0;