summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <[email protected]>2010-11-09 20:01:58 +0100
committerChristian König <[email protected]>2010-11-09 20:01:58 +0100
commit5182416f030af71bd2fa4b00edffc268cec0e050 (patch)
treeee59804a3c72d17f132c7dc381c83bddd3d6caed
parent725a5e15cfc7ffc1c5d940b01b9b010ed726a4eb (diff)
[g3dvl] start handling motion_vertical_field_select
-rw-r--r--src/gallium/include/pipe/p_video_state.h1
-rw-r--r--src/gallium/state_trackers/xorg/xvmc/surface.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h
index 5eb96352139..e5e85e3deb3 100644
--- a/src/gallium/include/pipe/p_video_state.h
+++ b/src/gallium/include/pipe/p_video_state.h
@@ -89,6 +89,7 @@ struct pipe_mpeg12_macroblock
enum pipe_mpeg12_motion_type mo_type;
enum pipe_mpeg12_dct_type dct_type;
signed pmv[2][2][2];
+ bool mvfs[2][2];
unsigned cbp;
short *blocks;
};
diff --git a/src/gallium/state_trackers/xorg/xvmc/surface.c b/src/gallium/state_trackers/xorg/xvmc/surface.c
index 9709f2b2373..0a236e26429 100644
--- a/src/gallium/state_trackers/xorg/xvmc/surface.c
+++ b/src/gallium/state_trackers/xorg/xvmc/surface.c
@@ -181,6 +181,11 @@ MacroBlocksToPipe(struct pipe_screen *screen,
for (l = 0; l < 2; ++l)
pipe_macroblocks->pmv[j][k][l] = xvmc_mb->PMV[j][k][l];
+ pipe_macroblocks->mvfs[0][0] = xvmc_mb->motion_vertical_field_select & XVMC_SELECT_FIRST_FORWARD;
+ pipe_macroblocks->mvfs[0][1] = xvmc_mb->motion_vertical_field_select & XVMC_SELECT_FIRST_BACKWARD;
+ pipe_macroblocks->mvfs[1][0] = xvmc_mb->motion_vertical_field_select & XVMC_SELECT_SECOND_FORWARD;
+ pipe_macroblocks->mvfs[1][1] = xvmc_mb->motion_vertical_field_select & XVMC_SELECT_SECOND_BACKWARD;
+
pipe_macroblocks->cbp = xvmc_mb->coded_block_pattern;
pipe_macroblocks->blocks = xvmc_blocks->blocks + xvmc_mb->index * BLOCK_SIZE_SAMPLES;