[g3dvl] move dummy quantification into xvmc state tracker
This commit is contained in:
parent
b4fa7db656
commit
f1bf7d3dbf
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue