CC: libav-stable@libav.org
Bug-Id: CID 1194387 / CID 1194389 / CID 1194393 / CID 1206638
... | ... |
@@ -30,6 +30,7 @@ |
30 | 30 |
#include "golomb.h" |
31 | 31 |
#include "h264chroma.h" |
32 | 32 |
#include "idctdsp.h" |
33 |
+#include "internal.h" |
|
33 | 34 |
#include "mathops.h" |
34 | 35 |
#include "qpeldsp.h" |
35 | 36 |
#include "cavs.h" |
... | ... |
@@ -529,8 +530,8 @@ static inline void scale_mv(AVSContext *h, int *d_x, int *d_y, |
529 | 529 |
{ |
530 | 530 |
int den = h->scale_den[src->ref]; |
531 | 531 |
|
532 |
- *d_x = (src->x * distp * den + 256 + (src->x >> 31)) >> 9; |
|
533 |
- *d_y = (src->y * distp * den + 256 + (src->y >> 31)) >> 9; |
|
532 |
+ *d_x = (src->x * distp * den + 256 + FF_SIGNBIT(src->x)) >> 9; |
|
533 |
+ *d_y = (src->y * distp * den + 256 + FF_SIGNBIT(src->y)) >> 9; |
|
534 | 534 |
} |
535 | 535 |
|
536 | 536 |
static inline void mv_pred_median(AVSContext *h, |
... | ... |
@@ -473,7 +473,7 @@ static inline void mv_pred_direct(AVSContext *h, cavs_vector *pmv_fw, |
473 | 473 |
{ |
474 | 474 |
cavs_vector *pmv_bw = pmv_fw + MV_BWD_OFFS; |
475 | 475 |
int den = h->direct_den[col_mv->ref]; |
476 |
- int m = col_mv->x >> 31; |
|
476 |
+ int m = FF_SIGNBIT(col_mv->x); |
|
477 | 477 |
|
478 | 478 |
pmv_fw->dist = h->dist[1]; |
479 | 479 |
pmv_bw->dist = h->dist[0]; |
... | ... |
@@ -482,7 +482,7 @@ static inline void mv_pred_direct(AVSContext *h, cavs_vector *pmv_fw, |
482 | 482 |
/* scale the co-located motion vector according to its temporal span */ |
483 | 483 |
pmv_fw->x = (((den + (den * col_mv->x * pmv_fw->dist ^ m) - m - 1) >> 14) ^ m) - m; |
484 | 484 |
pmv_bw->x = m - (((den + (den * col_mv->x * pmv_bw->dist ^ m) - m - 1) >> 14) ^ m); |
485 |
- m = col_mv->y >> 31; |
|
485 |
+ m = FF_SIGNBIT(col_mv->y); |
|
486 | 486 |
pmv_fw->y = (((den + (den * col_mv->y * pmv_fw->dist ^ m) - m - 1) >> 14) ^ m) - m; |
487 | 487 |
pmv_bw->y = m - (((den + (den * col_mv->y * pmv_bw->dist ^ m) - m - 1) >> 14) ^ m); |
488 | 488 |
} |
... | ... |
@@ -108,7 +108,7 @@ static int dnxhd_10bit_dct_quantize(MpegEncContext *ctx, int16_t *block, |
108 | 108 |
|
109 | 109 |
for (i = 1; i < 64; ++i) { |
110 | 110 |
int j = scantable[i]; |
111 |
- int sign = block[j] >> 31; |
|
111 |
+ int sign = FF_SIGNBIT(block[j]); |
|
112 | 112 |
int level = (block[j] ^ sign) - sign; |
113 | 113 |
level = level * qmat[j] >> DNX10BIT_QMAT_SHIFT; |
114 | 114 |
block[j] = (level ^ sign) - sign; |
... | ... |
@@ -1883,8 +1883,8 @@ void inter_predict(VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], |
1883 | 1883 |
mb->bmv[2 * y * 4 + 2 * x + 1].y + |
1884 | 1884 |
mb->bmv[(2 * y + 1) * 4 + 2 * x ].y + |
1885 | 1885 |
mb->bmv[(2 * y + 1) * 4 + 2 * x + 1].y; |
1886 |
- uvmv.x = (uvmv.x + 2 + (uvmv.x >> (INT_BIT - 1))) >> 2; |
|
1887 |
- uvmv.y = (uvmv.y + 2 + (uvmv.y >> (INT_BIT - 1))) >> 2; |
|
1886 |
+ uvmv.x = (uvmv.x + 2 + FF_SIGNBIT(uvmv.x)) >> 2; |
|
1887 |
+ uvmv.y = (uvmv.y + 2 + FF_SIGNBIT(uvmv.y)) >> 2; |
|
1888 | 1888 |
if (s->profile == 3) { |
1889 | 1889 |
uvmv.x &= ~7; |
1890 | 1890 |
uvmv.y &= ~7; |