@ -35,13 +35,13 @@ static int dts_probe(AVProbeData *p)
uint32_t state = - 1 ;
int markers [ 4 * 16 ] = { 0 } ;
int exss_markers = 0 , exss_nextpos = 0 ;
int sum , max , pos , i ;
int sum , max , pos , ret , i ;
int64_t diff = 0 ;
uint8_t hdr [ 12 + AV_INPUT_BUFFER_PADDING_SIZE ] = { 0 } ;
uint8_t hdr [ DCA_CORE_FRAME_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE ] = { 0 } ;
for ( pos = FFMIN ( 4096 , p - > buf_size ) ; pos < p - > buf_size - 2 ; pos + = 2 ) {
int marker , sample_blocks , sample_rate , sr_cod e, framesize ;
int lfe , wide_hdr , hdr_size ;
int marker , wide_hdr , hdr_siz e, framesize ;
DCACoreFrameHeader h ;
GetBitContext gb ;
bufp = buf = p - > buf + pos ;
@ -98,36 +98,15 @@ static int dts_probe(AVProbeData *p)
else
continue ;
if ( avpriv_dca_convert_bitstream ( buf - 2 , 12 , hdr , 12 ) < 0 )
if ( ( ret = avpriv_dca_convert_bitstream ( buf - 2 , DCA_CORE_FRAME_HEADER_SIZE ,
hdr , DCA_CORE_FRAME_HEADER_SIZE ) ) < 0 )
continue ;
init_get_bits ( & gb , hdr , 96 ) ;
skip_bits_long ( & gb , 39 ) ;
sample_blocks = get_bits ( & gb , 7 ) + 1 ;
if ( sample_blocks < 8 )
if ( init_get_bits8 ( & gb , hdr , ret ) < 0 )
continue ;
framesize = get_bits ( & gb , 14 ) + 1 ;
if ( framesize < 95 )
continue ;
skip_bits ( & gb , 6 ) ;
sr_code = get_bits ( & gb , 4 ) ;
sample_rate = avpriv_dca_sample_rates [ sr_code ] ;
if ( sample_rate = = 0 )
continue ;
get_bits ( & gb , 5 ) ;
if ( get_bits ( & gb , 1 ) )
continue ;
skip_bits_long ( & gb , 9 ) ;
lfe = get_bits ( & gb , 2 ) ;
if ( lfe > 2 )
if ( avpriv_dca_parse_core_frame_header ( & gb , & h ) < 0 )
continue ;
marker + = 4 * sr_code ;
marker + = 4 * h . sr_code ;
markers [ marker ] + + ;
}