Lines Matching defs:block
26 * VC-1 and WMV3 block decoding routines
49 // mapping table for internal block representation
93 s->idsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][block_map[i]],
97 s->idsp.put_pixels_clamped(v->block[v->topleft_blk_idx][block_map[i]],
109 s->idsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][block_map[i]],
113 s->idsp.put_pixels_clamped(v->block[v->top_blk_idx][block_map[i]],
132 s->idsp.put_signed_pixels_clamped(v->block[v->left_blk_idx][block_map[i]],
136 s->idsp.put_pixels_clamped(v->block[v->left_blk_idx][block_map[i]],
152 s->idsp.put_signed_pixels_clamped(v->block[v->cur_blk_idx][block_map[i]],
156 s->idsp.put_pixels_clamped(v->block[v->cur_blk_idx][block_map[i]],
336 * @param[in] n block index in the current MB
399 * @param[in] n block index in the current MB
400 * @param a_avail flag indicating top block availability
401 * @param c_avail flag indicating left block availability
572 /** Decode intra block in intra frames - should be faster than decode_intra_block
574 * @param block block to decode
579 static int vc1_decode_i_block(VC1Context *v, int16_t block[64], int n,
617 block[0] = dcdiff * scale;
651 block[zz_table[i++]] = value;
664 block[k << sh] += ac_val[k];
668 ac_val2[k] = block[k << v->left_blk_sh];
669 ac_val2[k + 8] = block[k << v->top_blk_sh];
674 if (block[k]) {
675 block[k] *= scale;
677 block[k] += (block[k] < 0) ? -v->pq : v->pq;
697 block[k << sh] = ac_val[k] * scale;
698 if (!v->pquantizer && block[k << sh])
699 block[k << sh] += (block[k << sh] < 0) ? -v->pq : v->pq;
709 /** Decode intra block in intra frames - should be faster than decode_intra_block
711 * @param block block to decode
717 static int vc1_decode_i_block_adv(VC1Context *v, int16_t block[64], int n,
761 block[0] = dcdiff * scale;
822 block[zz_table[i++]] = value;
842 block[k << sh] += (int)(ac_val[k] * (unsigned)q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
845 block[k << sh] += ac_val[k];
850 ac_val2[k ] = block[k << v->left_blk_sh];
851 ac_val2[k + 8] = block[k << v->top_blk_sh];
856 if (block[k]) {
857 block[k] *= scale;
859 block[k] += (block[k] < 0) ? -quant : quant;
888 block[k << sh] = ac_val2[k] * scale;
889 if (!v->pquantizer && block[k << sh])
890 block[k << sh] += (block[k << sh] < 0) ? -quant : quant;
900 /** Decode intra block in inter frames - more generic version than vc1_decode_i_block
902 * @param block block to decode
905 * @param mquant block quantizer
908 static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n,
925 s->bdsp.clear_block(block);
959 block[0] = dcdiff * s->y_dc_scale;
961 block[0] = dcdiff * s->c_dc_scale;
1004 block[v->zz_8x8[0][i++]] = value;
1008 block[v->zz_8x8[2][i++]] = value;
1010 block[v->zz_8x8[3][i++]] = value;
1012 block[v->zzi_8x8[i++]] = value;
1028 block[k << v->left_blk_sh] += (int)(ac_val[k] * q2 * (unsigned)ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
1031 block[k << v->top_blk_sh] += (int)(ac_val[k + 8] * q2 * (unsigned)ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
1036 block[k << v->left_blk_sh] += ac_val[k];
1039 block[k << v->top_blk_sh] += ac_val[k + 8];
1045 ac_val2[k ] = block[k << v->left_blk_sh];
1046 ac_val2[k + 8] = block[k << v->top_blk_sh];
1051 if (block[k]) {
1052 block[k] *= scale;
1054 block[k] += (block[k] < 0) ? -quant : quant;
1094 block[k << v->left_blk_sh] = ac_val2[k] * scale;
1095 if (!v->pquantizer && block[k << v->left_blk_sh])
1096 block[k << v->left_blk_sh] += (block[k << v->left_blk_sh] < 0) ? -quant : quant;
1100 block[k << v->top_blk_sh] = ac_val2[k + 8] * scale;
1101 if (!v->pquantizer && block[k << v->top_blk_sh])
1102 block[k << v->top_blk_sh] += (block[k << v->top_blk_sh] < 0) ? -quant : quant;
1113 /** Decode P block
1115 static int vc1_decode_p_block(VC1Context *v, int16_t block[64], int n,
1129 s->bdsp.clear_block(block);
1175 block[idx] = value * scale;
1177 block[idx] += (block[idx] < 0) ? -quant : quant;
1181 v->vc1dsp.vc1_inv_trans_8x8_dc(dst, linesize, block);
1183 v->vc1dsp.vc1_inv_trans_8x8(block);
1184 s->idsp.add_pixels_clamped(block, dst, linesize);
1205 block[idx + off] = value * scale;
1207 block[idx + off] += (block[idx + off] < 0) ? -quant : quant;
1211 v->vc1dsp.vc1_inv_trans_4x4_dc(dst + (j & 1) * 4 + (j & 2) * 2 * linesize, linesize, block + off);
1213 v->vc1dsp.vc1_inv_trans_4x4(dst + (j & 1) * 4 + (j & 2) * 2 * linesize, linesize, block + off);
1234 block[idx] = value * scale;
1236 block[idx] += (block[idx] < 0) ? -quant : quant;
1240 v->vc1dsp.vc1_inv_trans_8x4_dc(dst + j * 4 * linesize, linesize, block + off);
1242 v->vc1dsp.vc1_inv_trans_8x4(dst + j * 4 * linesize, linesize, block + off);
1263 block[idx] = value * scale;
1265 block[idx] += (block[idx] < 0) ? -quant : quant;
1269 v->vc1dsp.vc1_inv_trans_4x8_dc(dst + j * 4, linesize, block + off);
1271 v->vc1dsp.vc1_inv_trans_4x8(dst + j*4, linesize, block + off);
1328 /* FIXME Set DC val for inter block ? */
1363 vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant,
1367 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]);
1370 v->block[v->cur_blk_idx][block_map[i]][j] *= 2;
1374 pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb, first_block,
1436 /* test if block is intra and has pred */
1466 vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, is_coded[i], mquant,
1470 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]);
1473 v->block[v->cur_blk_idx][block_map[i]][j] *= 2;
1477 pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb,
1610 vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant,
1614 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]);
1638 /* for all motion vector read MVDATA and motion compensate each block */
1690 pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb,
1778 vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant,
1782 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]);
1827 pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb,
1948 /* interpolated skipped block */
1982 vc1_decode_intra_block(v, s->block[i], i, val, mquant,
1986 v->vc1dsp.vc1_inv_trans_8x8(s->block[i]);
1989 s->block[i][j] *= 2;
1990 s->idsp.put_signed_pixels_clamped(s->block[i],
1995 int pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb,
2061 vc1_decode_intra_block(v, s->block[i], i, val, mquant,
2065 v->vc1dsp.vc1_inv_trans_8x8(s->block[i]);
2068 s->block[i][j] <<= 1;
2070 s->idsp.put_signed_pixels_clamped(s->block[i],
2157 pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb,
2255 vc1_decode_intra_block(v, s->block[i], i, val, mquant,
2259 v->vc1dsp.vc1_inv_trans_8x8(s->block[i]);
2267 s->idsp.put_signed_pixels_clamped(s->block[i],
2343 /* for all motion vector read MVDATA and motion compensate each block */
2456 pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb,
2574 s->bdsp.clear_blocks(v->block[v->cur_blk_idx][0]);
2599 vc1_decode_i_block(v, v->block[v->cur_blk_idx][block_map[k]], k, val, (k < 4) ? v->codingset : v->codingset2);
2603 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[k]]);
2611 v->block[v->cur_blk_idx][block_map[k]][j] *= 2;
2617 v->block[v->cur_blk_idx][block_map[k]][j] = (v->block[v->cur_blk_idx][block_map[k]][j] - 64) * 2;
2709 s->bdsp.clear_blocks(v->block[v->cur_blk_idx][0]);
2756 vc1_decode_i_block_adv(v, v->block[v->cur_blk_idx][block_map[k]], k, val,
2761 v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[k]]);