Lines Matching refs:mb
104 nouveau_vpe_mb_dct_blocks(struct nouveau_decoder *dec, const struct pipe_mpeg12_macroblock *mb)
107 unsigned cbp = mb->coded_block_pattern;
108 short *db = mb->blocks;
122 } else if (mb->macroblock_type & PIPE_MPEG12_MB_TYPE_INTRA) {
129 nouveau_vpe_mb_data_blocks(struct nouveau_decoder *dec, const struct pipe_mpeg12_macroblock *mb)
132 unsigned cbp = mb->coded_block_pattern;
133 short *db = mb->blocks;
139 } else if (mb->macroblock_type & PIPE_MPEG12_MB_TYPE_INTRA) {
148 const struct pipe_mpeg12_macroblock *mb,
152 bool intra = mb->macroblock_type & PIPE_MPEG12_MB_TYPE_INTRA;
153 unsigned x = mb->x * 16;
154 unsigned y = luma ? mb->y * 16 : mb->y * 8;
160 if (!(mb->x & 1))
165 cbp = mb->coded_block_pattern;
169 if (luma && mb->macroblock_modes.bits.dct_type == PIPE_MPEG12_DCT_TYPE_FIELD)
272 const struct pipe_mpeg12_macroblock *mb,
278 int y, y2, x = mb->x * 16;
280 y = mb->y * (frame ? 16 : 32);
282 y = mb->y * (frame ? 8 : 16);
288 forward = mb->macroblock_type & PIPE_MPEG12_MB_TYPE_MOTION_FORWARD;
289 backward = mb->macroblock_type & PIPE_MPEG12_MB_TYPE_MOTION_BACKWARD;
293 switch (mb->macroblock_modes.bits.frame_motion_type) {
300 x, y, mb->PMV[0][0], dec->past, true);
302 x, y2, mb->PMV[0][0], dec->past, false);
306 x, y, mb->PMV[1][0], dec->future, true);
308 x, y2, mb->PMV[1][1], dec->future, false);
315 switch (mb->macroblock_modes.bits.field_motion_type) {
325 x, y, mb->PMV[0][0], dec->past, true);
329 x, y, mb->PMV[0][1], dec->future, true);
345 x, y, mb->PMV[0][0], dec->past, true);
348 x, y, mb->PMV[0][1], dec->future, true);
357 mb->motion_vertical_field_select & PIPE_MPEG12_FS_FIRST_FORWARD,
358 x, y, mb->PMV[0][0], dec->past, true);
360 mb->motion_vertical_field_select & PIPE_MPEG12_FS_SECOND_FORWARD,
361 x, y2, mb->PMV[1][0], dec->past, false);
365 mb->motion_vertical_field_select & PIPE_MPEG12_FS_FIRST_BACKWARD,
366 x, y, mb->PMV[0][1], dec->future, true);
368 mb->motion_vertical_field_select & PIPE_MPEG12_FS_SECOND_BACKWARD,
369 x, y2, mb->PMV[1][1], dec->future, false);
419 const struct pipe_mpeg12_macroblock *mb;
438 mb = (const struct pipe_mpeg12_macroblock *)pipe_mb;
439 for (i = 0; i < num_macroblocks; ++i, mb++) {
440 if (mb->macroblock_type & PIPE_MPEG12_MB_TYPE_INTRA) {
441 nouveau_vpe_mb_dct_header(dec, mb, true);
442 nouveau_vpe_mb_dct_header(dec, mb, false);
444 nouveau_vpe_mb_mv_header(dec, mb, true);
445 nouveau_vpe_mb_dct_header(dec, mb, true);
447 nouveau_vpe_mb_mv_header(dec, mb, false);
448 nouveau_vpe_mb_dct_header(dec, mb, false);
451 nouveau_vpe_mb_dct_blocks(dec, mb);
453 nouveau_vpe_mb_data_blocks(dec, mb);