[g3dvl] move dummy quantification into xvmc state tracker

This commit is contained in:
Christian König 2011-06-07 21:13:59 +02:00
parent b4fa7db656
commit f1bf7d3dbf
3 changed files with 18 additions and 17 deletions

View File

@ -312,28 +312,16 @@ vl_mpeg12_buffer_begin_frame(struct pipe_video_decode_buffer *buffer)
vl_mpg12_bs_set_buffers(&buf->bs, ycbcr_stream, buf->texels, mv_stream);
} else {
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
};
for (i = 0; i < VL_MAX_PLANES; ++i) {
for (i = 0; i < VL_MAX_PLANES; ++i)
vl_zscan_set_layout(&buf->zscan[i], dec->zscan_linear);
vl_zscan_upload_quant(&buf->zscan[i], dummy_quant, dummy_quant);
}
}
}
static void
vl_mpeg12_buffer_set_quant_matrix(struct pipe_video_decode_buffer *buffer,
uint8_t intra_matrix[64],
uint8_t non_intra_matrix[64])
const uint8_t intra_matrix[64],
const uint8_t non_intra_matrix[64])
{
struct vl_mpeg12_buffer *buf = (struct vl_mpeg12_buffer*)buffer;
unsigned i;

View File

@ -183,8 +183,8 @@ struct pipe_video_decode_buffer
* set the quantification matrixes
*/
void (*set_quant_matrix)(struct pipe_video_decode_buffer *decbuf,
uint8_t intra_matrix[64],
uint8_t non_intra_matrix[64]);
const uint8_t intra_matrix[64],
const uint8_t non_intra_matrix[64]);
/**
* get the pointer where to put the ycbcr blocks of a component

View File

@ -291,6 +291,17 @@ unmap_and_flush_surface(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_video_context *vpipe;
XvMCSurfacePrivate *surface_priv;
@ -312,6 +323,8 @@ Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surfac
return BadAlloc;
surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder);
surface_priv->decode_buffer->set_quant_matrix(surface_priv->decode_buffer, dummy_quant, dummy_quant);
surface_priv->mv_stride = surface_priv->decode_buffer->get_mv_stream_stride(surface_priv->decode_buffer);
surface_priv->video_buffer = vpipe->create_buffer(vpipe, PIPE_FORMAT_NV12,
context_priv->decoder->chroma_format,