Commit 60554a75 authored by michaelni's avatar michaelni

bigendian fix


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@1887 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 6778f96a
...@@ -297,6 +297,14 @@ static VLC run7_vlc; ...@@ -297,6 +297,14 @@ static VLC run7_vlc;
static void svq3_luma_dc_dequant_idct_c(DCTELEM *block, int qp); static void svq3_luma_dc_dequant_idct_c(DCTELEM *block, int qp);
static void svq3_add_idct_c(uint8_t *dst, DCTELEM *block, int stride, int qp, int dc); static void svq3_add_idct_c(uint8_t *dst, DCTELEM *block, int stride, int qp, int dc);
static inline uint32_t pack16to32(int a, int b){
#ifdef WORDS_BIGENDIAN
return (b&0xFFFF) + (a<<16);
#else
return (a&0xFFFF) + (b<<16);
#endif
}
/** /**
* fill a rectangle. * fill a rectangle.
* @param h height of the recatangle, should be a constant * @param h height of the recatangle, should be a constant
...@@ -3226,7 +3234,7 @@ static int decode_mb(H264Context *h){ ...@@ -3226,7 +3234,7 @@ static int decode_mb(H264Context *h){
fill_caches(h, mb_type); //FIXME check what is needed and what not ... fill_caches(h, mb_type); //FIXME check what is needed and what not ...
pred_pskip_motion(h, &mx, &my); pred_pskip_motion(h, &mx, &my);
fill_rectangle(&h->ref_cache[0][scan8[0]], 4, 4, 8, 0, 1); fill_rectangle(&h->ref_cache[0][scan8[0]], 4, 4, 8, 0, 1);
fill_rectangle( h->mv_cache[0][scan8[0]], 4, 4, 8, (mx&0xFFFF)+(my<<16), 4); fill_rectangle( h->mv_cache[0][scan8[0]], 4, 4, 8, pack16to32(mx,my), 4);
write_back_motion(h, mb_type); write_back_motion(h, mb_type);
s->current_picture.mb_type[mb_xy]= mb_type; //FIXME SKIP type s->current_picture.mb_type[mb_xy]= mb_type; //FIXME SKIP type
...@@ -3456,7 +3464,7 @@ decode_intra_mb: ...@@ -3456,7 +3464,7 @@ decode_intra_mb:
my += get_se_golomb(&s->gb); my += get_se_golomb(&s->gb);
tprintf("final mv:%d %d\n", mx, my); tprintf("final mv:%d %d\n", mx, my);
fill_rectangle(h->mv_cache[list][ scan8[0] ], 4, 4, 8, (mx&0xFFFF) + (my<<16), 4); fill_rectangle(h->mv_cache[list][ scan8[0] ], 4, 4, 8, pack16to32(mx,my), 4);
} }
} }
} }
...@@ -3479,7 +3487,7 @@ decode_intra_mb: ...@@ -3479,7 +3487,7 @@ decode_intra_mb:
my += get_se_golomb(&s->gb); my += get_se_golomb(&s->gb);
tprintf("final mv:%d %d\n", mx, my); tprintf("final mv:%d %d\n", mx, my);
fill_rectangle(h->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, (mx&0xFFFF) + (my<<16), 4); fill_rectangle(h->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack16to32(mx,my), 4);
} }
} }
} }
...@@ -3503,7 +3511,7 @@ decode_intra_mb: ...@@ -3503,7 +3511,7 @@ decode_intra_mb:
my += get_se_golomb(&s->gb); my += get_se_golomb(&s->gb);
tprintf("final mv:%d %d\n", mx, my); tprintf("final mv:%d %d\n", mx, my);
fill_rectangle(h->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, (mx&0xFFFF) + (my<<16), 4); fill_rectangle(h->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack16to32(mx,my), 4);
} }
} }
} }
......
...@@ -438,7 +438,7 @@ static int svq3_decode_mb (H264Context *h, unsigned int mb_type) { ...@@ -438,7 +438,7 @@ static int svq3_decode_mb (H264Context *h, unsigned int mb_type) {
} }
/* update mv_cache */ /* update mv_cache */
fill_rectangle(h->mv_cache[0][scan8[k]], part_width>>2, part_height>>2, 8, (mx&0xFFFF)+(my<<16), 4); fill_rectangle(h->mv_cache[0][scan8[k]], part_width>>2, part_height>>2, 8, pack16to32(mx,my), 4);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment