From a591dc3b7245457916ee0e83f4ca842b871bc96f Mon Sep 17 00:00:00 2001 From: Gwenole Beauchesne Date: Fri, 6 Jan 2012 16:44:09 +0100 Subject: [PATCH] mpeg2: fix quantisation matrix construction. --- gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c | 45 +++++++--------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c b/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c index 580ad9e71d..d2963b9579 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c @@ -242,43 +242,24 @@ ensure_quant_matrix(GstVaapiDecoderMpeg2 *decoder, GstVaapiPicture *picture) } iq_matrix->load_intra_quantiser_matrix = intra_quant_matrix != NULL; - if (intra_quant_matrix) { - iq_matrix->load_intra_quantiser_matrix = 1; + if (intra_quant_matrix) copy_quant_matrix(iq_matrix->intra_quantiser_matrix, intra_quant_matrix); - } - iq_matrix->load_intra_quantiser_matrix = 1; - copy_quant_matrix(iq_matrix->intra_quantiser_matrix, - priv->seq_hdr.intra_quantizer_matrix); + iq_matrix->load_non_intra_quantiser_matrix = non_intra_quant_matrix != NULL; + if (non_intra_quant_matrix) + copy_quant_matrix(iq_matrix->non_intra_quantiser_matrix, + non_intra_quant_matrix); - iq_matrix->load_non_intra_quantiser_matrix = 1; - copy_quant_matrix(iq_matrix->non_intra_quantiser_matrix, - priv->seq_hdr.non_intra_quantizer_matrix); + iq_matrix->load_chroma_intra_quantiser_matrix = chroma_intra_quant_matrix != NULL; + if (chroma_intra_quant_matrix) + copy_quant_matrix(iq_matrix->chroma_intra_quantiser_matrix, + chroma_intra_quant_matrix); - iq_matrix->load_chroma_intra_quantiser_matrix = 0; - iq_matrix->load_chroma_non_intra_quantiser_matrix = 0; - if (priv->has_quant_matrix_ext) { - if (priv->quant_matrix_ext.load_intra_quantiser_matrix) - copy_quant_matrix(iq_matrix->intra_quantiser_matrix, - priv->quant_matrix_ext.intra_quantiser_matrix); - - if (priv->quant_matrix_ext.load_non_intra_quantiser_matrix) - copy_quant_matrix(iq_matrix->non_intra_quantiser_matrix, - priv->quant_matrix_ext.non_intra_quantiser_matrix); - - if (priv->quant_matrix_ext.load_chroma_intra_quantiser_matrix) { - iq_matrix->load_chroma_intra_quantiser_matrix = 1; - copy_quant_matrix(iq_matrix->chroma_intra_quantiser_matrix, - priv->quant_matrix_ext.chroma_intra_quantiser_matrix); - } - - if (priv->quant_matrix_ext.load_chroma_non_intra_quantiser_matrix) { - iq_matrix->load_chroma_non_intra_quantiser_matrix = 1; - copy_quant_matrix(iq_matrix->chroma_non_intra_quantiser_matrix, - priv->quant_matrix_ext.chroma_non_intra_quantiser_matrix); - } - } + iq_matrix->load_chroma_non_intra_quantiser_matrix = chroma_non_intra_quant_matrix != NULL; + if (chroma_non_intra_quant_matrix) + copy_quant_matrix(iq_matrix->chroma_non_intra_quantiser_matrix, + chroma_non_intra_quant_matrix); return GST_VAAPI_DECODER_STATUS_SUCCESS; }