예제 #1
0
void vp8_subtract_mbuv(short *diff, unsigned char *usrc, unsigned char *vsrc,
                         int src_stride, unsigned char *upred,
                         unsigned char *vpred, int pred_stride) {
  short *udiff = diff + 256;
  short *vdiff = diff + 320;

  vpx_subtract_block(8, 8, udiff, 8, usrc, src_stride, upred, pred_stride);
  vpx_subtract_block(8, 8, vdiff, 8, vsrc, src_stride, vpred, pred_stride);
}
예제 #2
0
void vp8_subtract_b(BLOCK *be, BLOCKD *bd, int pitch) {
  unsigned char *src_ptr = (*(be->base_src) + be->src);
  short *diff_ptr = be->src_diff;
  unsigned char *pred_ptr = bd->predictor;
  int src_stride = be->src_stride;

  vpx_subtract_block(4, 4, diff_ptr, pitch, src_ptr, src_stride,
                     pred_ptr, pitch);
}
예제 #3
0
void vp9_subtract_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane) {
    struct macroblock_plane *const p = &x->plane[plane];
    const struct macroblockd_plane *const pd = &x->e_mbd.plane[plane];
    const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
    const int bw = 4 * num_4x4_blocks_wide_lookup[plane_bsize];
    const int bh = 4 * num_4x4_blocks_high_lookup[plane_bsize];

#if CONFIG_VP9_HIGHBITDEPTH
    if (x->e_mbd.cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
        vpx_highbd_subtract_block(bh, bw, p->src_diff, bw, p->src.buf,
                                  p->src.stride, pd->dst.buf, pd->dst.stride,
                                  x->e_mbd.bd);
        return;
    }
#endif  // CONFIG_VP9_HIGHBITDEPTH
    vpx_subtract_block(bh, bw, p->src_diff, bw, p->src.buf, p->src.stride,
                       pd->dst.buf, pd->dst.stride);
}
예제 #4
0
void vp8_subtract_mby(short *diff, unsigned char *src, int src_stride,
                      unsigned char *pred, int pred_stride) {
  vpx_subtract_block(16, 16, diff, 16, src, src_stride, pred, pred_stride);
}