# HG changeset patch # User michael # Date 1241180245 0 # Node ID 54f2b18af7369bb2bcf12a27b2e144c8d34c738c # Parent c7420bfe4da07db9a4f42d828592d60e7bc7b7db Factorize quantization matrix loading code out. diff -r c7420bfe4da0 -r 54f2b18af736 mpeg12.c --- a/mpeg12.c Thu Apr 30 21:34:56 2009 +0000 +++ b/mpeg12.c Fri May 01 12:17:25 2009 +0000 @@ -1470,42 +1470,31 @@ ); } +static int load_matrix(MpegEncContext *s, uint16_t matrix0[64], uint16_t matrix1[64], int intra){ + int i; + + for(i=0; i<64; i++) { + int j = s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; + int v = get_bits(&s->gb, 8); + if(v==0){ + av_log(s->avctx, AV_LOG_ERROR, "matrix damaged\n"); + return -1; + } + matrix0[j] = v; + if(matrix1) + matrix1[j] = v; + } + return 0; +} + static void mpeg_decode_quant_matrix_extension(MpegEncContext *s) { - int i, v, j; - dprintf(s->avctx, "matrix extension\n"); - if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->intra_matrix[j] = v; - s->chroma_intra_matrix[j] = v; - } - } - if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->inter_matrix[j] = v; - s->chroma_inter_matrix[j] = v; - } - } - if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->chroma_intra_matrix[j] = v; - } - } - if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - j= s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->chroma_inter_matrix[j] = v; - } - } + if(get_bits1(&s->gb)) load_matrix(s, s->chroma_intra_matrix, s->intra_matrix, 1); + if(get_bits1(&s->gb)) load_matrix(s, s->chroma_inter_matrix, s->inter_matrix, 0); + if(get_bits1(&s->gb)) load_matrix(s, s->chroma_intra_matrix, NULL , 1); + if(get_bits1(&s->gb)) load_matrix(s, s->chroma_inter_matrix, NULL , 0); } static void mpeg_decode_picture_coding_extension(Mpeg1Context *s1) @@ -2008,22 +1997,7 @@ /* get matrix */ if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - if(v==0){ - av_log(s->avctx, AV_LOG_ERROR, "intra matrix damaged\n"); - return -1; - } - j = s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->intra_matrix[j] = v; - s->chroma_intra_matrix[j] = v; - } -#ifdef DEBUG - dprintf(s->avctx, "intra matrix present\n"); - for(i=0;i<64;i++) - dprintf(s->avctx, " %d", s->intra_matrix[s->dsp.idct_permutation[i]]); - dprintf(s->avctx, "\n"); -#endif + load_matrix(s, s->chroma_intra_matrix, s->intra_matrix, 1); } else { for(i=0;i<64;i++) { j = s->dsp.idct_permutation[i]; @@ -2033,22 +2007,7 @@ } } if (get_bits1(&s->gb)) { - for(i=0;i<64;i++) { - v = get_bits(&s->gb, 8); - if(v==0){ - av_log(s->avctx, AV_LOG_ERROR, "inter matrix damaged\n"); - return -1; - } - j = s->dsp.idct_permutation[ ff_zigzag_direct[i] ]; - s->inter_matrix[j] = v; - s->chroma_inter_matrix[j] = v; - } -#ifdef DEBUG - dprintf(s->avctx, "non-intra matrix present\n"); - for(i=0;i<64;i++) - dprintf(s->avctx, " %d", s->inter_matrix[s->dsp.idct_permutation[i]]); - dprintf(s->avctx, "\n"); -#endif + load_matrix(s, s->chroma_inter_matrix, s->inter_matrix, 0); } else { for(i=0;i<64;i++) { int j= s->dsp.idct_permutation[i];