Beispiel #1
0
void vp8_inverse_transform_mby(const vp8_idct_rtcd_vtable_t *rtcd, MACROBLOCKD *x)
{
    int i;

    // do 2nd order transform on the dc block
    IDCT_INVOKE(rtcd, iwalsh16)(x->block[24].dqcoeff, x->block[24].diff);

    recon_dcblock(x);

    for (i = 0; i < 16; i++)
    {
        vp8_inverse_transform_b(rtcd, &x->block[i], 32);
    }

}
Beispiel #2
0
void vp8_inverse_transform_mby(const vp8_idct_rtcd_vtable_t *rtcd, MACROBLOCKD *x)
{
    int i;

    if(x->mode_info_context->mbmi.mode != SPLITMV)
    {
        /* do 2nd order transform on the dc block */
        IDCT_INVOKE(rtcd, iwalsh16)(x->block[24].dqcoeff, x->block[24].diff);

        recon_dcblock(x);
    }

    for (i = 0; i < 16; i++)
    {
        vp8_inverse_transform_b(rtcd, &x->block[i], 16);
    }

}
Beispiel #3
0
void vp9_inverse_transform_mby_4x4(MACROBLOCKD *xd) {
  int i;
  BLOCKD *blockd = xd->block;
  int has_2nd_order = get_2nd_order_usage(xd);

  if (has_2nd_order) {
    /* do 2nd order transform on the dc block */
    vp9_short_inv_walsh4x4(blockd[24].dqcoeff, blockd[24].diff);
    recon_dcblock(xd);
  }

  for (i = 0; i < 16; i++) {
    TX_TYPE tx_type = get_tx_type_4x4(xd, &xd->block[i]);
    if (tx_type != DCT_DCT) {
      vp9_ihtllm(xd->block[i].dqcoeff, xd->block[i].diff, 32,
                   tx_type, 4, xd->block[i].eob);
    } else {
      vp9_inverse_transform_b_4x4(xd, i, 32);
    }
  }
}
Beispiel #4
0
void vp8_inverse_transform_mb(const vp8_idct_rtcd_vtable_t *rtcd, MACROBLOCKD *x)
{
    int i;

    if (x->mbmi.mode != B_PRED && x->mbmi.mode != SPLITMV)
    {
        // do 2nd order transform on the dc block

        IDCT_INVOKE(rtcd, iwalsh16)(&x->block[24].dqcoeff[0], x->block[24].diff);
        recon_dcblock(x);
    }

    for (i = 0; i < 16; i++)
    {
        vp8_inverse_transform_b(rtcd, &x->block[i], 32);
    }


    for (i = 16; i < 24; i++)
    {
        vp8_inverse_transform_b(rtcd, &x->block[i], 16);
    }

}