diff options
author | Christian König <[email protected]> | 2011-08-12 13:29:00 +0200 |
---|---|---|
committer | Christian König <[email protected]> | 2011-08-26 12:10:34 +0200 |
commit | 2e62b30826679e9d5e1a783dc19baabec4fc8dfa (patch) | |
tree | acb12f684ea4e1f95937c4c35f5cde4ca4e3f4db /src/gallium/auxiliary/vl | |
parent | 835ea8480f656ba4076e30813eb8c85965017266 (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/auxiliary/vl')
-rw-r--r-- | src/gallium/auxiliary/vl/vl_mpeg12_decoder.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c index 805a2215133..8100f80665a 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c @@ -513,15 +513,16 @@ vl_mpeg12_set_picture_parameters(struct pipe_video_decoder *decoder, static void vl_mpeg12_set_quant_matrix(struct pipe_video_decoder *decoder, - const uint8_t intra_matrix[64], - const uint8_t non_intra_matrix[64]) + const struct pipe_quant_matrix *matrix) { struct vl_mpeg12_decoder *dec = (struct vl_mpeg12_decoder *)decoder; + const struct pipe_mpeg12_quant_matrix *m = (const struct pipe_mpeg12_quant_matrix *)matrix; assert(dec); + assert(matrix->codec == PIPE_VIDEO_CODEC_MPEG12); - memcpy(dec->intra_matrix, intra_matrix, 64); - memcpy(dec->non_intra_matrix, non_intra_matrix, 64); + memcpy(dec->intra_matrix, m->intra_matrix, 64); + memcpy(dec->non_intra_matrix, m->non_intra_matrix, 64); } static void @@ -576,6 +577,9 @@ vl_mpeg12_begin_frame(struct pipe_video_decoder *decoder) buf = dec->current_buffer; assert(buf); + if (dec->base.entrypoint == PIPE_VIDEO_ENTRYPOINT_BITSTREAM) + dec->intra_matrix[0] = 1 << (7 - dec->picture_desc.intra_dc_precision); + for (i = 0; i < VL_MAX_PLANES; ++i) { vl_zscan_upload_quant(&buf->zscan[i], dec->intra_matrix, true); vl_zscan_upload_quant(&buf->zscan[i], dec->non_intra_matrix, false); @@ -1152,6 +1156,9 @@ vl_create_mpeg12_decoder(struct pipe_context *context, if (!init_pipe_state(dec)) goto error_pipe_state; + memset(dec->intra_matrix, 0x10, 64); + memset(dec->non_intra_matrix, 0x10, 64); + return &dec->base; error_pipe_state: |