mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-29 10:52:20 +00:00
svq1: Drop a bunch of useless parentheses
This commit is contained in:
parent
41e46a5fba
commit
63a46c6101
@ -105,56 +105,56 @@ static const uint8_t string_table[256] = {
|
||||
/* add child nodes */ \
|
||||
list[n++] = list[i]; \
|
||||
list[n++] = list[i] + \
|
||||
(((level & 1) ? pitch : 1) << ((level / 2) + 1)); \
|
||||
(((level & 1) ? pitch : 1) << (level / 2 + 1)); \
|
||||
}
|
||||
|
||||
#define SVQ1_ADD_CODEBOOK() \
|
||||
/* add codebook entries to vector */ \
|
||||
for (j = 0; j < stages; j++) { \
|
||||
n3 = codebook[entries[j]] ^ 0x80808080; \
|
||||
n1 += ((n3 & 0xFF00FF00) >> 8); \
|
||||
n2 += (n3 & 0x00FF00FF); \
|
||||
n1 += (n3 & 0xFF00FF00) >> 8; \
|
||||
n2 += n3 & 0x00FF00FF; \
|
||||
} \
|
||||
\
|
||||
/* clip to [0..255] */ \
|
||||
if (n1 & 0xFF00FF00) { \
|
||||
n3 = (((n1 >> 15) & 0x00010001) | 0x01000100) - 0x00010001; \
|
||||
n3 = (n1 >> 15 & 0x00010001 | 0x01000100) - 0x00010001; \
|
||||
n1 += 0x7F007F00; \
|
||||
n1 |= (((~n1 >> 15) & 0x00010001) | 0x01000100) - 0x00010001; \
|
||||
n1 &= (n3 & 0x00FF00FF); \
|
||||
n1 |= (~n1 >> 15 & 0x00010001 | 0x01000100) - 0x00010001; \
|
||||
n1 &= n3 & 0x00FF00FF; \
|
||||
} \
|
||||
\
|
||||
if (n2 & 0xFF00FF00) { \
|
||||
n3 = (((n2 >> 15) & 0x00010001) | 0x01000100) - 0x00010001; \
|
||||
n3 = (n2 >> 15 & 0x00010001 | 0x01000100) - 0x00010001; \
|
||||
n2 += 0x7F007F00; \
|
||||
n2 |= (((~n2 >> 15) & 0x00010001) | 0x01000100) - 0x00010001; \
|
||||
n2 &= (n3 & 0x00FF00FF); \
|
||||
n2 |= (~n2 >> 15 & 0x00010001 | 0x01000100) - 0x00010001; \
|
||||
n2 &= n3 & 0x00FF00FF; \
|
||||
}
|
||||
|
||||
#define SVQ1_DO_CODEBOOK_INTRA() \
|
||||
for (y = 0; y < height; y++) { \
|
||||
for (x = 0; x < (width / 4); x++, codebook++) { \
|
||||
for (x = 0; x < width / 4; x++, codebook++) { \
|
||||
n1 = n4; \
|
||||
n2 = n4; \
|
||||
SVQ1_ADD_CODEBOOK() \
|
||||
/* store result */ \
|
||||
dst[x] = (n1 << 8) | n2; \
|
||||
dst[x] = n1 << 8 | n2; \
|
||||
} \
|
||||
dst += (pitch / 4); \
|
||||
dst += pitch / 4; \
|
||||
}
|
||||
|
||||
#define SVQ1_DO_CODEBOOK_NONINTRA() \
|
||||
for (y = 0; y < height; y++) { \
|
||||
for (x = 0; x < (width / 4); x++, codebook++) { \
|
||||
for (x = 0; x < width / 4; x++, codebook++) { \
|
||||
n3 = dst[x]; \
|
||||
/* add mean value to vector */ \
|
||||
n1 = n4 + ((n3 & 0xFF00FF00) >> 8); \
|
||||
n2 = n4 + (n3 & 0x00FF00FF); \
|
||||
SVQ1_ADD_CODEBOOK() \
|
||||
/* store result */ \
|
||||
dst[x] = (n1 << 8) | n2; \
|
||||
dst[x] = n1 << 8 | n2; \
|
||||
} \
|
||||
dst += (pitch / 4); \
|
||||
dst += pitch / 4; \
|
||||
}
|
||||
|
||||
#define SVQ1_CALC_CODEBOOK_ENTRIES(cbook) \
|
||||
@ -166,8 +166,8 @@ static const uint8_t string_table[256] = {
|
||||
entries[j] = (((bit_cache >> (4 * (stages - j - 1))) & 0xF) + \
|
||||
16 * j) << (level + 1); \
|
||||
} \
|
||||
mean -= (stages * 128); \
|
||||
n4 = ((mean + (mean >> 31)) << 16) | (mean & 0xFFFF);
|
||||
mean -= stages * 128; \
|
||||
n4 = mean + (mean >> 31) << 16 | (mean & 0xFFFF);
|
||||
|
||||
static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels,
|
||||
int pitch)
|
||||
@ -203,7 +203,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels,
|
||||
continue; /* skip vector */
|
||||
}
|
||||
|
||||
if ((stages > 0) && (level >= 4)) {
|
||||
if (stages > 0 && level >= 4) {
|
||||
av_dlog(NULL,
|
||||
"Error (svq1_decode_block_intra): invalid vector: stages=%i level=%i\n",
|
||||
stages, level);
|
||||
@ -329,8 +329,8 @@ static int svq1_motion_inter_block(MpegEncContext *s, GetBitContext *bitbuf,
|
||||
pmv[1] =
|
||||
pmv[2] = pmv[0];
|
||||
} else {
|
||||
pmv[1] = &motion[(x / 8) + 2];
|
||||
pmv[2] = &motion[(x / 8) + 4];
|
||||
pmv[1] = &motion[x / 8 + 2];
|
||||
pmv[2] = &motion[x / 8 + 4];
|
||||
}
|
||||
|
||||
result = svq1_decode_motion_vector(bitbuf, &mv, pmv);
|
||||
@ -338,12 +338,12 @@ static int svq1_motion_inter_block(MpegEncContext *s, GetBitContext *bitbuf,
|
||||
if (result != 0)
|
||||
return result;
|
||||
|
||||
motion[0].x =
|
||||
motion[(x / 8) + 2].x =
|
||||
motion[(x / 8) + 3].x = mv.x;
|
||||
motion[0].y =
|
||||
motion[(x / 8) + 2].y =
|
||||
motion[(x / 8) + 3].y = mv.y;
|
||||
motion[0].x =
|
||||
motion[x / 8 + 2].x =
|
||||
motion[x / 8 + 3].x = mv.x;
|
||||
motion[0].y =
|
||||
motion[x / 8 + 2].y =
|
||||
motion[x / 8 + 3].y = mv.y;
|
||||
|
||||
if (y + (mv.y >> 1) < 0)
|
||||
mv.y = 0;
|
||||
@ -353,7 +353,7 @@ static int svq1_motion_inter_block(MpegEncContext *s, GetBitContext *bitbuf,
|
||||
src = &previous[(x + (mv.x >> 1)) + (y + (mv.y >> 1)) * pitch];
|
||||
dst = current;
|
||||
|
||||
s->dsp.put_pixels_tab[0][((mv.y & 1) << 1) | (mv.x & 1)](dst, src, pitch, 16);
|
||||
s->dsp.put_pixels_tab[0][(mv.y & 1) << 1 | (mv.x & 1)](dst, src, pitch, 16);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -452,12 +452,12 @@ static int svq1_decode_delta_block(MpegEncContext *s, GetBitContext *bitbuf,
|
||||
|
||||
/* reset motion vectors */
|
||||
if (block_type == SVQ1_BLOCK_SKIP || block_type == SVQ1_BLOCK_INTRA) {
|
||||
motion[0].x =
|
||||
motion[0].y =
|
||||
motion[(x / 8) + 2].x =
|
||||
motion[(x / 8) + 2].y =
|
||||
motion[(x / 8) + 3].x =
|
||||
motion[(x / 8) + 3].y = 0;
|
||||
motion[0].x =
|
||||
motion[0].y =
|
||||
motion[x / 8 + 2].x =
|
||||
motion[x / 8 + 2].y =
|
||||
motion[x / 8 + 3].x =
|
||||
motion[x / 8 + 3].y = 0;
|
||||
}
|
||||
|
||||
switch (block_type) {
|
||||
@ -725,8 +725,8 @@ static av_cold int svq1_decode_init(AVCodecContext *avctx)
|
||||
ff_MPV_decode_defaults(s);
|
||||
|
||||
s->avctx = avctx;
|
||||
s->width = (avctx->width + 3) & ~3;
|
||||
s->height = (avctx->height + 3) & ~3;
|
||||
s->width = avctx->width + 3 & ~3;
|
||||
s->height = avctx->height + 3 & ~3;
|
||||
s->codec_id = avctx->codec->id;
|
||||
avctx->pix_fmt = AV_PIX_FMT_YUV410P;
|
||||
/* Not true, but DP frames and these behave like unidirectional B-frames. */
|
||||
|
@ -119,8 +119,8 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref,
|
||||
int count, y, x, i, j, split, best_mean, best_score, best_count;
|
||||
int best_vector[6];
|
||||
int block_sum[7] = { 0, 0, 0, 0, 0, 0 };
|
||||
int w = 2 << ((level + 2) >> 1);
|
||||
int h = 2 << ((level + 1) >> 1);
|
||||
int w = 2 << (level + 2 >> 1);
|
||||
int h = 2 << (level + 1 >> 1);
|
||||
int size = w * h;
|
||||
int16_t block[7][256];
|
||||
const int8_t *codebook_sum, *codebook;
|
||||
@ -158,8 +158,8 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref,
|
||||
}
|
||||
|
||||
best_count = 0;
|
||||
best_score -= (int)(((unsigned)block_sum[0] * block_sum[0]) >> (level + 3));
|
||||
best_mean = (block_sum[0] + (size >> 1)) >> (level + 3);
|
||||
best_score -= (int)((unsigned)block_sum[0] * block_sum[0] >> (level + 3));
|
||||
best_mean = block_sum[0] + (size >> 1) >> (level + 3);
|
||||
|
||||
if (level < 4) {
|
||||
for (count = 1; count < 7; count++) {
|
||||
@ -175,9 +175,9 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref,
|
||||
vector = codebook + stage * size * 16 + i * size;
|
||||
sqr = s->dsp.ssd_int8_vs_int16(vector, block[stage], size);
|
||||
diff = block_sum[stage] - sum;
|
||||
score = sqr - ((diff * (int64_t)diff) >> (level + 3)); // FIXME: 64bit slooow
|
||||
score = sqr - (diff * (int64_t)diff >> (level + 3)); // FIXME: 64bit slooow
|
||||
if (score < best_vector_score) {
|
||||
int mean = (diff + (size >> 1)) >> (level + 3);
|
||||
int mean = diff + (size >> 1) >> (level + 3);
|
||||
assert(mean > -300 && mean < 300);
|
||||
mean = av_clip(mean, intra ? 0 : -256, 255);
|
||||
best_vector_score = score;
|
||||
@ -207,7 +207,7 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref,
|
||||
split = 0;
|
||||
if (best_score > threshold && level) {
|
||||
int score = 0;
|
||||
int offset = (level & 1) ? stride * h / 2 : w / 2;
|
||||
int offset = level & 1 ? stride * h / 2 : w / 2;
|
||||
PutBitContext backup[6];
|
||||
|
||||
for (i = level - 1; i >= 0; i--)
|
||||
@ -230,7 +230,7 @@ static int encode_block(SVQ1Context *s, uint8_t *src, uint8_t *ref,
|
||||
put_bits(&s->reorder_pb[level], 1, split);
|
||||
|
||||
if (!split) {
|
||||
assert((best_mean >= 0 && best_mean < 256) || !intra);
|
||||
assert(best_mean >= 0 && best_mean < 256 || !intra);
|
||||
assert(best_mean >= -256 && best_mean < 256);
|
||||
assert(best_count >= 0 && best_count < 7);
|
||||
assert(level < 4 || best_count == 0);
|
||||
@ -303,11 +303,11 @@ static int svq1_encode_plane(SVQ1Context *s, int plane,
|
||||
// s->m.out_format = FMT_H263;
|
||||
// s->m.unrestricted_mv = 1;
|
||||
s->m.lambda = s->picture.quality;
|
||||
s->m.qscale = (s->m.lambda * 139 +
|
||||
FF_LAMBDA_SCALE * 64) >>
|
||||
(FF_LAMBDA_SHIFT + 7);
|
||||
s->m.lambda2 = (s->m.lambda * s->m.lambda +
|
||||
FF_LAMBDA_SCALE / 2) >>
|
||||
s->m.qscale = s->m.lambda * 139 +
|
||||
FF_LAMBDA_SCALE * 64 >>
|
||||
FF_LAMBDA_SHIFT + 7;
|
||||
s->m.lambda2 = s->m.lambda * s->m.lambda +
|
||||
FF_LAMBDA_SCALE / 2 >>
|
||||
FF_LAMBDA_SHIFT;
|
||||
|
||||
if (!s->motion_val8[plane]) {
|
||||
|
Loading…
Reference in New Issue
Block a user