# HG changeset patch # User michael # Date 1107051410 0 # Node ID 805431763e84746539838ecc6b9933abbb62afc0 # Parent 06aafb585f69afcad68dac9ad367478b0e421be9 fixing missaligned memory accesses in fill_rectangle() diff -r 06aafb585f69 -r 805431763e84 h264.c --- a/h264.c Sat Jan 29 23:59:32 2005 +0000 +++ b/h264.c Sun Jan 30 02:16:50 2005 +0000 @@ -182,14 +182,14 @@ * non zero coeff count cache. * is 64 if not available. */ - uint8_t non_zero_count_cache[6*8]; + uint8_t non_zero_count_cache[6*8] __align8; uint8_t (*non_zero_count)[16]; /** * Motion vector cache. */ - int16_t mv_cache[2][5*8][2]; - int8_t ref_cache[2][5*8]; + int16_t mv_cache[2][5*8][2] __align8; + int8_t ref_cache[2][5*8] __align8; #define LIST_NOT_USED -1 //FIXME rename? #define PART_NOT_AVAILABLE -2 @@ -318,7 +318,7 @@ uint8_t *chroma_pred_mode_table; int last_qscale_diff; int16_t (*mvd_table[2])[2]; - int16_t mvd_cache[2][5*8][2]; + int16_t mvd_cache[2][5*8][2] __align8; uint8_t *direct_table; uint8_t direct_cache[5*8]; @@ -358,6 +358,7 @@ w *= size; stride *= size; + assert((((int)vp)&(FFMIN(w, STRIDE_ALIGN)-1)) == 0); //FIXME check what gcc generates for 64 bit on x86 and possible write a 32 bit ver of it if(w==2 && h==2){ *(uint16_t*)(p + 0)=