comparison mpegaudiodec.c @ 4468:5455cb5a759c libavcodec

fix decoding of takethat.mp3
author michael
date Sat, 03 Feb 2007 12:42:12 +0000
parents aabfa0a58cb0
children a2e82396193c
comparison
equal deleted inserted replaced
4467:a9f64d2a2e69 4468:5455cb5a759c
1745 g->sb_hybrid[pos] = v; 1745 g->sb_hybrid[pos] = v;
1746 } 1746 }
1747 s_index+=4; 1747 s_index+=4;
1748 } 1748 }
1749 /* skip extension bits */ 1749 /* skip extension bits */
1750 bits_left = end_pos - get_bits_count(&s->gb); 1750 bits_left = end_pos2 - get_bits_count(&s->gb);
1751 //av_log(NULL, AV_LOG_ERROR, "left:%d buf:%p\n", bits_left, s->in_gb.buffer); 1751 //av_log(NULL, AV_LOG_ERROR, "left:%d buf:%p\n", bits_left, s->in_gb.buffer);
1752 if (bits_left < 0 || bits_left > 500) { 1752 if (bits_left < 0/* || bits_left > 500*/) {
1753 av_log(NULL, AV_LOG_ERROR, "bits_left=%d\n", bits_left); 1753 av_log(NULL, AV_LOG_ERROR, "bits_left=%d\n", bits_left);
1754 s_index=0; 1754 s_index=0;
1755 }else if(bits_left > 0 && s->error_resilience >= FF_ER_AGGRESSIVE){ 1755 }else if(bits_left > 0 && s->error_resilience >= FF_ER_AGGRESSIVE){
1756 av_log(NULL, AV_LOG_ERROR, "bits_left=%d\n", bits_left); 1756 av_log(NULL, AV_LOG_ERROR, "bits_left=%d\n", bits_left);
1757 s_index=0; 1757 s_index=0;
1758 } 1758 }
1759 memset(&g->sb_hybrid[s_index], 0, sizeof(*g->sb_hybrid)*(576 - s_index)); 1759 memset(&g->sb_hybrid[s_index], 0, sizeof(*g->sb_hybrid)*(576 - s_index));
1760 skip_bits_long(&s->gb, bits_left); 1760 skip_bits_long(&s->gb, bits_left);
1761
1762 i= get_bits_count(&s->gb);
1763 if(s->in_gb.buffer && i >= s->gb.size_in_bits){
1764 s->gb= s->in_gb;
1765 s->in_gb.buffer=NULL;
1766 assert((get_bits_count(&s->gb) & 7) == 0);
1767 skip_bits_long(&s->gb, i - end_pos);
1768 }
1761 1769
1762 return 0; 1770 return 0;
1763 } 1771 }
1764 1772
1765 /* Reorder short blocks from bitstream order to interleaved order. It 1773 /* Reorder short blocks from bitstream order to interleaved order. It