comparison bitstream.c @ 9158:0d5eed0f1b45 libavcodec

Fix unaligned access in ff_copy_bits()
author mru
date Mon, 09 Mar 2009 23:27:38 +0000
parents e9d9d946f213
children 18dffa8f2382
comparison
equal deleted inserted replaced
9157:33477a19f89e 9158:0d5eed0f1b45
81 int i; 81 int i;
82 82
83 if(length==0) return; 83 if(length==0) return;
84 84
85 if(CONFIG_SMALL || words < 16 || put_bits_count(pb)&7){ 85 if(CONFIG_SMALL || words < 16 || put_bits_count(pb)&7){
86 for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i])); 86 for(i=0; i<words; i++) put_bits(pb, 16, AV_RB16(&srcw[i]));
87 }else{ 87 }else{
88 for(i=0; put_bits_count(pb)&31; i++) 88 for(i=0; put_bits_count(pb)&31; i++)
89 put_bits(pb, 8, src[i]); 89 put_bits(pb, 8, src[i]);
90 flush_put_bits(pb); 90 flush_put_bits(pb);
91 memcpy(pbBufPtr(pb), src+i, 2*words-i); 91 memcpy(pbBufPtr(pb), src+i, 2*words-i);
92 skip_put_bytes(pb, 2*words-i); 92 skip_put_bytes(pb, 2*words-i);
93 } 93 }
94 94
95 put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits)); 95 put_bits(pb, bits, AV_RB16(&srcw[words])>>(16-bits));
96 } 96 }
97 97
98 /* VLC decoding */ 98 /* VLC decoding */
99 99
100 //#define DEBUG_VLC 100 //#define DEBUG_VLC