Browse Source

fixing missaligned memory accesses in fill_rectangle()

Originally committed as revision 3901 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 21 years ago
parent
commit
bd9ea6a462
1 changed files with 5 additions and 4 deletions
  1. +5
    -4
      libavcodec/h264.c

+ 5
- 4
libavcodec/h264.c View File

@@ -182,14 +182,14 @@ typedef struct H264Context{
* 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 @@ typedef struct H264Context{
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 @@ static inline void fill_rectangle(void *vp, int w, int h, int stride, uint32_t v
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)=


Loading…
Cancel
Save