summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorChristian König <[email protected]>2011-08-12 13:29:00 +0200
committerChristian König <[email protected]>2011-08-26 12:10:34 +0200
commit2e62b30826679e9d5e1a783dc19baabec4fc8dfa (patch)
treeacb12f684ea4e1f95937c4c35f5cde4ca4e3f4db /src/gallium/state_trackers
parent835ea8480f656ba4076e30813eb8c85965017266 (diff)
g3dvl: Rework the decoder interface part 5/5
Make setting the quant matrixes a generic interface. Also removes setting the quant matrix from the XvMC interface Signed-off-by: Christian König <[email protected]> Reviewed-by: Younes Manton <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/vdpau/decode.c12
-rw-r--r--src/gallium/state_trackers/xorg/xvmc/surface.c12
2 files changed, 8 insertions, 16 deletions
diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c
index 5ca40f71efe..50d63ea3f73 100644
--- a/src/gallium/state_trackers/vdpau/decode.c
+++ b/src/gallium/state_trackers/vdpau/decode.c
@@ -182,8 +182,8 @@ vlVdpDecoderRenderMpeg12(struct pipe_video_decoder *decoder,
VdpBitstreamBuffer const *bitstream_buffers)
{
struct pipe_mpeg12_picture_desc picture;
+ struct pipe_mpeg12_quant_matrix quant;
struct pipe_video_buffer *ref_frames[2];
- uint8_t intra_quantizer_matrix[64];
unsigned i;
VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Decoding MPEG2\n");
@@ -216,6 +216,7 @@ vlVdpDecoderRenderMpeg12(struct pipe_video_decoder *decoder,
picture.alternate_scan = picture_info->alternate_scan;
picture.intra_vlc_format = picture_info->intra_vlc_format;
picture.concealment_motion_vectors = picture_info->concealment_motion_vectors;
+ picture.intra_dc_precision = picture_info->intra_dc_precision;
picture.f_code[0][0] = picture_info->f_code[0][0] - 1;
picture.f_code[0][1] = picture_info->f_code[0][1] - 1;
picture.f_code[1][0] = picture_info->f_code[1][0] - 1;
@@ -223,9 +224,12 @@ vlVdpDecoderRenderMpeg12(struct pipe_video_decoder *decoder,
decoder->set_picture_parameters(decoder, &picture.base);
- memcpy(intra_quantizer_matrix, picture_info->intra_quantizer_matrix, sizeof(intra_quantizer_matrix));
- intra_quantizer_matrix[0] = 1 << (7 - picture_info->intra_dc_precision);
- decoder->set_quant_matrix(decoder, intra_quantizer_matrix, picture_info->non_intra_quantizer_matrix);
+ memset(&quant, 0, sizeof(quant));
+ quant.base.codec = PIPE_VIDEO_CODEC_MPEG12;
+ quant.intra_matrix = picture_info->intra_quantizer_matrix;
+ quant.non_intra_matrix = picture_info->non_intra_quantizer_matrix;
+
+ decoder->set_quant_matrix(decoder, &quant.base);
decoder->begin_frame(decoder);
diff --git a/src/gallium/state_trackers/xorg/xvmc/surface.c b/src/gallium/state_trackers/xorg/xvmc/surface.c
index fd7d228c996..79bd9c618ce 100644
--- a/src/gallium/state_trackers/xorg/xvmc/surface.c
+++ b/src/gallium/state_trackers/xorg/xvmc/surface.c
@@ -161,17 +161,6 @@ RecursiveEndFrame(XvMCSurfacePrivate *surface)
PUBLIC
Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surface)
{
- static const uint8_t dummy_quant[64] = {
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
- };
-
XvMCContextPrivate *context_priv;
struct pipe_context *pipe;
XvMCSurfacePrivate *surface_priv;
@@ -193,7 +182,6 @@ Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surfac
return BadAlloc;
surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder);
- context_priv->decoder->set_quant_matrix(context_priv->decoder, dummy_quant, dummy_quant);
surface_priv->video_buffer = pipe->create_video_buffer
(
pipe, PIPE_FORMAT_NV12, context_priv->decoder->chroma_format,