#include "get_bits.h"
#include "golomb.h"
#include "h264chroma.h"
+#include "idctdsp.h"
+#include "internal.h"
#include "mathops.h"
+#include "qpeldsp.h"
#include "cavs.h"
static const uint8_t alpha_tab[64] = {
}
#define SET_PARAMS \
- alpha = alpha_tab[av_clip(qp_avg + h->alpha_offset, 0, 63)]; \
- beta = beta_tab[av_clip(qp_avg + h->beta_offset, 0, 63)]; \
- tc = tc_tab[av_clip(qp_avg + h->alpha_offset, 0, 63)];
+ alpha = alpha_tab[av_clip_uintp2(qp_avg + h->alpha_offset, 6)]; \
+ beta = beta_tab[av_clip_uintp2(qp_avg + h->beta_offset, 6)]; \
+ tc = tc_tab[av_clip_uintp2(qp_avg + h->alpha_offset, 6)];
/**
* in-loop deblocking filter for a single macroblock
* | 6 | 7 |
* 1 3 |
* ---------
- *
*/
void ff_cavs_filter(AVSContext *h, enum cavs_mb mb_type)
{
}
}
-static void intra_pred_vert(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_vert(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int y;
uint64_t a = AV_RN64(&top[1]);
*((uint64_t *)(d + y * stride)) = a;
}
-static void intra_pred_horiz(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_horiz(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int y;
uint64_t a;
}
}
-static void intra_pred_dc_128(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_dc_128(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int y;
uint64_t a = 0x8080808080808080ULL;
*((uint64_t *)(d + y * stride)) = a;
}
-static void intra_pred_plane(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_plane(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y, ia;
int ih = 0;
int iv = 0;
- const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
+ const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
for (x = 0; x < 4; x++) {
ih += (x + 1) * (top[5 + x] - top[3 - x]);
#define LOWPASS(ARRAY, INDEX) \
((ARRAY[(INDEX) - 1] + 2 * ARRAY[(INDEX)] + ARRAY[(INDEX) + 1] + 2) >> 2)
-static void intra_pred_lp(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_lp(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y;
for (y = 0; y < 8; y++)
d[y * stride + x] = (LOWPASS(top, x + 1) + LOWPASS(left, y + 1)) >> 1;
}
-static void intra_pred_down_left(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_down_left(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y;
for (y = 0; y < 8; y++)
d[y * stride + x] = (LOWPASS(top, x + y + 2) + LOWPASS(left, x + y + 2)) >> 1;
}
-static void intra_pred_down_right(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_down_right(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y;
for (y = 0; y < 8; y++)
d[y * stride + x] = LOWPASS(left, y - x);
}
-static void intra_pred_lp_left(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_lp_left(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y;
for (y = 0; y < 8; y++)
d[y * stride + x] = LOWPASS(left, y + 1);
}
-static void intra_pred_lp_top(uint8_t *d, uint8_t *top, uint8_t *left, int stride)
+static void intra_pred_lp_top(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride)
{
int x, y;
for (y = 0; y < 8; y++)
{
int den = h->scale_den[src->ref];
- *d_x = (src->x * distp * den + 256 + (src->x >> 31)) >> 9;
- *d_y = (src->y * distp * den + 256 + (src->y >> 31)) >> 9;
+ *d_x = (src->x * distp * den + 256 + FF_SIGNBIT(src->x)) >> 9;
+ *d_y = (src->y * distp * den + 256 + FF_SIGNBIT(src->y)) >> 9;
}
static inline void mv_pred_median(AVSContext *h,
{
AVSContext *h = avctx->priv_data;
- ff_dsputil_init(&h->dsp, avctx);
+ ff_blockdsp_init(&h->bdsp, avctx);
ff_h264chroma_init(&h->h264chroma, 8);
+ ff_idctdsp_init(&h->idsp, avctx);
ff_videodsp_init(&h->vdsp, 8);
ff_cavsdsp_init(&h->cdsp, avctx);
- ff_init_scantable_permutation(h->dsp.idct_permutation,
+ ff_init_scantable_permutation(h->idsp.idct_permutation,
h->cdsp.idct_perm);
- ff_init_scantable(h->dsp.idct_permutation, &h->scantable, ff_zigzag_direct);
+ ff_init_scantable(h->idsp.idct_permutation, &h->scantable, ff_zigzag_direct);
h->avctx = avctx;
avctx->pix_fmt = AV_PIX_FMT_YUV420P;