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

View File

@ -183,8 +183,8 @@ struct pipe_video_decode_buffer
* set the quantification matrixes * set the quantification matrixes
*/ */
void (*set_quant_matrix)(struct pipe_video_decode_buffer *decbuf, void (*set_quant_matrix)(struct pipe_video_decode_buffer *decbuf,
uint8_t intra_matrix[64], const uint8_t intra_matrix[64],
uint8_t non_intra_matrix[64]); const uint8_t non_intra_matrix[64]);
/** /**
* get the pointer where to put the ycbcr blocks of a component * 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 PUBLIC
Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surface) 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; XvMCContextPrivate *context_priv;
struct pipe_video_context *vpipe; struct pipe_video_context *vpipe;
XvMCSurfacePrivate *surface_priv; XvMCSurfacePrivate *surface_priv;
@ -312,6 +323,8 @@ Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surfac
return BadAlloc; return BadAlloc;
surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder); 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->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, surface_priv->video_buffer = vpipe->create_buffer(vpipe, PIPE_FORMAT_NV12,
context_priv->decoder->chroma_format, context_priv->decoder->chroma_format,