[vlc-commits] packetizer: a52: add EAC3 header defines

Francois Cartegnie git at videolan.org
Fri Dec 21 16:13:29 CET 2018


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Dec 21 15:16:44 2018 +0100| [50209309f66f55d568c01a975e05914b8250ff5e] | committer: Francois Cartegnie

packetizer: a52: add EAC3 header defines

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=50209309f66f55d568c01a975e05914b8250ff5e
---

 modules/demux/mpeg/es.c  | 16 ++++++++--------
 modules/packetizer/a52.c | 10 +++++-----
 modules/packetizer/a52.h | 10 ++++++----
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/modules/demux/mpeg/es.c b/modules/demux/mpeg/es.c
index 3f81712969..731049bf14 100644
--- a/modules/demux/mpeg/es.c
+++ b/modules/demux/mpeg/es.c
@@ -1127,16 +1127,16 @@ static int AacInit( demux_t *p_demux )
 static int A52CheckSync( const uint8_t *p_peek, bool *p_big_endian, unsigned *pi_samples, bool b_eac3 )
 {
     vlc_a52_header_t header;
-    uint8_t p_tmp[VLC_A52_HEADER_SIZE];
+    uint8_t p_tmp[VLC_A52_MIN_HEADER_SIZE];
 
     *p_big_endian =  p_peek[0] == 0x0b && p_peek[1] == 0x77;
     if( !*p_big_endian )
     {
-        swab( p_peek, p_tmp, VLC_A52_HEADER_SIZE );
+        swab( p_peek, p_tmp, VLC_A52_MIN_HEADER_SIZE );
         p_peek = p_tmp;
     }
 
-    if( vlc_a52_header_Parse( &header, p_peek, VLC_A52_HEADER_SIZE ) )
+    if( vlc_a52_header_Parse( &header, p_peek, VLC_A52_MIN_HEADER_SIZE ) )
         return VLC_EGENERIC;
 
     if( !header.b_eac3 != !b_eac3 )
@@ -1157,8 +1157,8 @@ static int EA52Probe( demux_t *p_demux, uint64_t *pi_offset )
     const uint16_t rgi_twocc[] = { WAVE_FORMAT_PCM, WAVE_FORMAT_A52, WAVE_FORMAT_UNKNOWN };
 
     return GenericProbe( p_demux, pi_offset, ppsz_name, EA52CheckSyncProbe,
-                         VLC_A52_HEADER_SIZE,
-                         1920 + VLC_A52_HEADER_SIZE + 1,
+                         VLC_A52_MIN_HEADER_SIZE,
+                         1920 + VLC_A52_MIN_HEADER_SIZE + 1,
                          WAV_EXTRA_PROBE_SIZE,
                          true, rgi_twocc, GenericFormatCheck );
 }
@@ -1175,8 +1175,8 @@ static int A52Probe( demux_t *p_demux, uint64_t *pi_offset )
     const uint16_t rgi_twocc[] = { WAVE_FORMAT_PCM, WAVE_FORMAT_A52, WAVE_FORMAT_UNKNOWN };
 
     return GenericProbe( p_demux, pi_offset, ppsz_name, A52CheckSyncProbe,
-                         VLC_A52_HEADER_SIZE,
-                         1920 + VLC_A52_HEADER_SIZE + 1,
+                         VLC_A52_MIN_HEADER_SIZE,
+                         1920 + VLC_A52_MIN_HEADER_SIZE + 1,
                          WAV_EXTRA_PROBE_SIZE,
                          true, rgi_twocc, GenericFormatCheck );
 }
@@ -1191,7 +1191,7 @@ static int A52Init( demux_t *p_demux )
     const uint8_t *p_peek;
 
     /* peek the begining */
-    if( vlc_stream_Peek( p_demux->s, &p_peek, VLC_A52_HEADER_SIZE ) >= VLC_A52_HEADER_SIZE )
+    if( vlc_stream_Peek( p_demux->s, &p_peek, VLC_A52_MIN_HEADER_SIZE ) >= VLC_A52_MIN_HEADER_SIZE )
     {
         A52CheckSync( p_peek, &p_sys->b_big_endian, NULL, true );
     }
diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c
index c8209f3966..fb8ab6a7f5 100644
--- a/modules/packetizer/a52.c
+++ b/modules/packetizer/a52.c
@@ -138,7 +138,7 @@ static block_t *GetOutBuffer( decoder_t *p_dec )
 static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
 {
     decoder_sys_t *p_sys = p_dec->p_sys;
-    uint8_t p_header[VLC_A52_HEADER_SIZE];
+    uint8_t p_header[VLC_A52_MIN_HEADER_SIZE];
     block_t *p_out_buffer;
 
     block_t *p_block = pp_block ? *pp_block : NULL;
@@ -195,7 +195,7 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
         case STATE_HEADER:
             /* Get A/52 frame header (VLC_A52_HEADER_SIZE bytes) */
             if( block_PeekBytes( &p_sys->bytestream, p_header,
-                                 VLC_A52_HEADER_SIZE ) != VLC_SUCCESS )
+                                 VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
             {
                 /* Need more data */
                 return NULL;
@@ -203,7 +203,7 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
 
             /* Check if frame is valid and get frame info */
             if( vlc_a52_header_Parse( &p_sys->frame, p_header,
-                                      VLC_A52_HEADER_SIZE ) != VLC_SUCCESS )
+                                      VLC_A52_MIN_HEADER_SIZE ) != VLC_SUCCESS )
             {
                 msg_Dbg( p_dec, "emulated sync word" );
                 block_SkipByte( &p_sys->bytestream );
@@ -228,7 +228,7 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
         case STATE_NEXT_SYNC:
             /* Check if next expected frame contains the sync word */
             if( block_PeekOffsetBytes( &p_sys->bytestream, p_sys->i_input_size,
-                                       p_header, VLC_A52_HEADER_SIZE )
+                                       p_header, VLC_A52_MIN_HEADER_SIZE )
                                        != VLC_SUCCESS )
             {
                 if( p_block == NULL ) /* drain */
@@ -257,7 +257,7 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
             }
 
             vlc_a52_header_t a52;
-            if( !vlc_a52_header_Parse( &a52, p_header, VLC_A52_HEADER_SIZE )
+            if( !vlc_a52_header_Parse( &a52, p_header, VLC_A52_MIN_HEADER_SIZE )
              && a52.b_eac3 && a52.bs.eac3.strmtyp == EAC3_STRMTYP_DEPENDENT )
                 p_sys->i_input_size += a52.i_size;
 
diff --git a/modules/packetizer/a52.h b/modules/packetizer/a52.h
index d9d6911225..e29b56b1e2 100644
--- a/modules/packetizer/a52.h
+++ b/modules/packetizer/a52.h
@@ -33,7 +33,9 @@
 /**
  * Minimum AC3 header size that vlc_a52_header_Parse needs.
  */
-#define VLC_A52_HEADER_SIZE (8)
+#define VLC_A52_MIN_HEADER_SIZE  (8)
+#define VLC_A52_EAC3_BSI_SIZE    ((532 + 7)/8)
+#define VLC_A52_EAC3_HEADER_SIZE (VLC_A52_EAC3_BSI_SIZE + 2)
 
 /**
  * AC3 header information.
@@ -130,7 +132,7 @@ static inline int vlc_a52_header_ParseAc3( vlc_a52_header_t *p_header,
 {
     if( vlc_a52_ParseAc3BitstreamInfo( &p_header->bs,
                                        &p_buf[4], /* start code + CRC */
-                                       VLC_A52_HEADER_SIZE - 4 ) != VLC_SUCCESS )
+                                       VLC_A52_MIN_HEADER_SIZE - 4 ) != VLC_SUCCESS )
         return VLC_EGENERIC;
 
     /* cf. Table 5.18 Frame Size Code Table */
@@ -249,7 +251,7 @@ static inline int vlc_a52_header_ParseEac3( vlc_a52_header_t *p_header,
 {
     if( vlc_a52_ParseEac3BitstreamInfo( &p_header->bs,
                                         &p_buf[2], /* start code */
-                                        VLC_A52_HEADER_SIZE - 2 ) != VLC_SUCCESS )
+                                        VLC_A52_MIN_HEADER_SIZE - 2 ) != VLC_SUCCESS )
         return VLC_EGENERIC;
 
     const struct vlc_a52_bitstream_info *bs = &p_header->bs;
@@ -306,7 +308,7 @@ static inline int vlc_a52_header_Parse( vlc_a52_header_t *p_header,
         48000, 44100, 32000
     };
 
-    if( i_buffer < VLC_A52_HEADER_SIZE )
+    if( i_buffer < VLC_A52_MIN_HEADER_SIZE )
         return VLC_EGENERIC;
 
     /* Check synword */



More information about the vlc-commits mailing list