Mercurial > libavcodec.hg
comparison dca.c @ 12091:c2a1bb63bd30 libavcodec
DCA: *_bits() -> *_bits_long() where needed, half fix for broken bitstream parsing
author | banan |
---|---|
date | Mon, 05 Jul 2010 01:43:47 +0000 |
parents | 6db8c8adf407 |
children | de9e45d04063 |
comparison
equal
deleted
inserted
replaced
12090:82d32c82289d | 12091:c2a1bb63bd30 |
---|---|
1288 | 1288 |
1289 /* record number of core channels incase less than max channels are requested */ | 1289 /* record number of core channels incase less than max channels are requested */ |
1290 num_core_channels = s->prim_channels; | 1290 num_core_channels = s->prim_channels; |
1291 | 1291 |
1292 /* extensions start at 32-bit boundaries into bitstream */ | 1292 /* extensions start at 32-bit boundaries into bitstream */ |
1293 skip_bits(&s->gb, (-get_bits_count(&s->gb)) & 31); | 1293 skip_bits_long(&s->gb, (-get_bits_count(&s->gb)) & 31); |
1294 | 1294 |
1295 while(get_bits_left(&s->gb) >= 32) { | 1295 while(get_bits_left(&s->gb) >= 32) { |
1296 uint32_t bits = get_bits(&s->gb, 32); | 1296 uint32_t bits = get_bits_long(&s->gb, 32); |
1297 | 1297 |
1298 switch(bits) { | 1298 switch(bits) { |
1299 case 0x5a5a5a5a: { | 1299 case 0x5a5a5a5a: { |
1300 int ext_base_ch = s->prim_channels; | 1300 int ext_base_ch = s->prim_channels; |
1301 int ext_amode; | 1301 int ext_amode; |
1326 av_log(avctx, AV_LOG_DEBUG, "FSIZE96 = %d bytes\n", get_bits(&s->gb, 12)+1); | 1326 av_log(avctx, AV_LOG_DEBUG, "FSIZE96 = %d bytes\n", get_bits(&s->gb, 12)+1); |
1327 av_log(avctx, AV_LOG_DEBUG, "REVNO = %d\n", get_bits(&s->gb, 4)); | 1327 av_log(avctx, AV_LOG_DEBUG, "REVNO = %d\n", get_bits(&s->gb, 4)); |
1328 break; | 1328 break; |
1329 } | 1329 } |
1330 | 1330 |
1331 skip_bits(&s->gb, (-get_bits_count(&s->gb)) & 31); | 1331 skip_bits_long(&s->gb, (-get_bits_count(&s->gb)) & 31); |
1332 } | 1332 } |
1333 | 1333 |
1334 channels = s->prim_channels + !!s->lfe; | 1334 channels = s->prim_channels + !!s->lfe; |
1335 | 1335 |
1336 if (s->amode<16) { | 1336 if (s->amode<16) { |