Mercurial > libavcodec.hg
comparison h264.c @ 3001:b52d8ee430f6 libavcodec
fix some potential arithmetic overflows in pred_direct_motion() and
ff_h264_weight_WxH_mmx2().
author | lorenm |
---|---|
date | Fri, 30 Dec 2005 23:47:41 +0000 |
parents | bfabfdf9ce55 |
children | 68d252a8ecd2 |
comparison
equal
deleted
inserted
replaced
3000:b333953b7e6f | 3001:b52d8ee430f6 |
---|---|
1284 *mb_type &= ~MB_TYPE_P0L0; | 1284 *mb_type &= ~MB_TYPE_P0L0; |
1285 sub_mb_type &= ~MB_TYPE_P0L0; | 1285 sub_mb_type &= ~MB_TYPE_P0L0; |
1286 } | 1286 } |
1287 | 1287 |
1288 if(IS_16X16(*mb_type)){ | 1288 if(IS_16X16(*mb_type)){ |
1289 fill_rectangle(&h->ref_cache[0][scan8[0]], 4, 4, 8, ref[0], 1); | 1289 fill_rectangle(&h->ref_cache[0][scan8[0]], 4, 4, 8, (uint8_t)ref[0], 1); |
1290 fill_rectangle(&h->ref_cache[1][scan8[0]], 4, 4, 8, ref[1], 1); | 1290 fill_rectangle(&h->ref_cache[1][scan8[0]], 4, 4, 8, (uint8_t)ref[1], 1); |
1291 if(!IS_INTRA(mb_type_col) | 1291 if(!IS_INTRA(mb_type_col) |
1292 && ( (l1ref0[0] == 0 && ABS(l1mv0[0][0]) <= 1 && ABS(l1mv0[0][1]) <= 1) | 1292 && ( (l1ref0[0] == 0 && ABS(l1mv0[0][0]) <= 1 && ABS(l1mv0[0][1]) <= 1) |
1293 || (l1ref0[0] < 0 && l1ref1[0] == 0 && ABS(l1mv1[0][0]) <= 1 && ABS(l1mv1[0][1]) <= 1 | 1293 || (l1ref0[0] < 0 && l1ref1[0] == 0 && ABS(l1mv1[0][0]) <= 1 && ABS(l1mv1[0][1]) <= 1 |
1294 && (h->x264_build>33 || !h->x264_build)))){ | 1294 && (h->x264_build>33 || !h->x264_build)))){ |
1295 if(ref[0] > 0) | 1295 if(ref[0] > 0) |
1313 continue; | 1313 continue; |
1314 h->sub_mb_type[i8] = sub_mb_type; | 1314 h->sub_mb_type[i8] = sub_mb_type; |
1315 | 1315 |
1316 fill_rectangle(&h->mv_cache[0][scan8[i8*4]], 2, 2, 8, pack16to32(mv[0][0],mv[0][1]), 4); | 1316 fill_rectangle(&h->mv_cache[0][scan8[i8*4]], 2, 2, 8, pack16to32(mv[0][0],mv[0][1]), 4); |
1317 fill_rectangle(&h->mv_cache[1][scan8[i8*4]], 2, 2, 8, pack16to32(mv[1][0],mv[1][1]), 4); | 1317 fill_rectangle(&h->mv_cache[1][scan8[i8*4]], 2, 2, 8, pack16to32(mv[1][0],mv[1][1]), 4); |
1318 fill_rectangle(&h->ref_cache[0][scan8[i8*4]], 2, 2, 8, ref[0], 1); | 1318 fill_rectangle(&h->ref_cache[0][scan8[i8*4]], 2, 2, 8, (uint8_t)ref[0], 1); |
1319 fill_rectangle(&h->ref_cache[1][scan8[i8*4]], 2, 2, 8, ref[1], 1); | 1319 fill_rectangle(&h->ref_cache[1][scan8[i8*4]], 2, 2, 8, (uint8_t)ref[1], 1); |
1320 | 1320 |
1321 /* col_zero_flag */ | 1321 /* col_zero_flag */ |
1322 if(!IS_INTRA(mb_type_col) && ( l1ref0[x8 + y8*h->b8_stride] == 0 | 1322 if(!IS_INTRA(mb_type_col) && ( l1ref0[x8 + y8*h->b8_stride] == 0 |
1323 || (l1ref0[x8 + y8*h->b8_stride] < 0 && l1ref1[x8 + y8*h->b8_stride] == 0 | 1323 || (l1ref0[x8 + y8*h->b8_stride] < 0 && l1ref1[x8 + y8*h->b8_stride] == 0 |
1324 && (h->x264_build>33 || !h->x264_build)))){ | 1324 && (h->x264_build>33 || !h->x264_build)))){ |