[vlc-commits] packetizer/mlp: use a52 parser in SyncInfoDolby
Thomas Guillem
git at videolan.org
Fri Sep 23 18:02:19 CEST 2016
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Fri Sep 23 16:36:21 2016 +0200| [1562d0be2e31be301a111113e36906f567953233] | committer: Thomas Guillem
packetizer/mlp: use a52 parser in SyncInfoDolby
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1562d0be2e31be301a111113e36906f567953233
---
modules/packetizer/mlp.c | 63 ++++--------------------------------------------
1 file changed, 5 insertions(+), 58 deletions(-)
diff --git a/modules/packetizer/mlp.c b/modules/packetizer/mlp.c
index c58d66b..956cbe3 100644
--- a/modules/packetizer/mlp.c
+++ b/modules/packetizer/mlp.c
@@ -36,6 +36,7 @@
#include <assert.h>
#include "packetizer_helper.h"
+#include "a52.h"
/*****************************************************************************
* Module descriptor
@@ -240,69 +241,15 @@ static int SyncInfo( const uint8_t *p_hdr, bool *pb_mlp, mlp_header_t *p_mlp )
}
/**
- * It returns the size of an AC3 frame (or 0 if invalid)
- */
-static int GetAc3Size( const uint8_t *p_buf )
-{
- static const int pi_rate[] = { 32, 40, 48, 56, 64, 80, 96, 112,
- 128, 160, 192, 224, 256, 320, 384, 448,
- 512, 576, 640 };
- /* */
- const int i_frmsizecod = p_buf[4] & 63;
- if( i_frmsizecod >= 38 )
- return 0;
-
- const int bitrate = pi_rate[i_frmsizecod >> 1];
-
- switch( p_buf[4] & 0xc0 )
- {
- case 0:
- return 4 * bitrate;
- case 0x40:
- return 2 * (320 * bitrate / 147 + (i_frmsizecod & 1));
- case 0x80:
- return 6 * bitrate;
- default:
- return 0;
- }
-}
-
-/**
- * It return the size of a EAC3 frame (or 0 if invalid)
- */
-static int GetEac3Size( const uint8_t *p_buf )
-{
- int i_frame_size;
- int i_bytes;
-
- i_frame_size = ( ( p_buf[2] << 8 ) | p_buf[3] ) & 0x7ff;
- if( i_frame_size < 2 )
- return 0;
- i_bytes = 2 * ( i_frame_size + 1 );
-
- return i_bytes;
-}
-
-/**
* It returns the size of an AC3/EAC3 frame (or 0 if invalid)
*/
static int SyncInfoDolby( const uint8_t *p_buf )
{
- int bsid;
-
- /* Check synword */
- if( p_buf[0] != 0x0b || p_buf[1] != 0x77 )
- return 0;
-
- /* Check bsid */
- bsid = p_buf[5] >> 3;
- if( bsid > 16 )
- return 0;
-
- if( bsid <= 10 )
- return GetAc3Size( p_buf );
+ vlc_a52_header_t a52;
+ if( vlc_a52_header_Parse( &a52, p_buf, MLP_HEADER_SIZE ) == VLC_SUCCESS )
+ return a52.i_size;
else
- return GetEac3Size( p_buf );
+ return 0;
}
static void Flush( decoder_t *p_dec )
More information about the vlc-commits
mailing list