aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/mpegvideo.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-08-22 22:18:08 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-08-22 22:18:08 +0000
commitd6eb3c500aeab8ae9f138f8eb70d045ac47100ee (patch)
tree1c3e18cdbf6b7b644fd64ac29bac67cf6c25d84d /libavcodec/mpegvideo.c
parentc3bf0288c9bc119e41818fc4b94290d54c4bc5cb (diff)
downloadffmpeg-d6eb3c500aeab8ae9f138f8eb70d045ac47100ee.tar.gz
custom quant matrix encoding support
Originally committed as revision 2135 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r--libavcodec/mpegvideo.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index b84875f43e..f9d994509a 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -167,6 +167,18 @@ void ff_init_scantable(uint8_t *permutation, ScanTable *st, const uint8_t *src_s
}
}
+void ff_write_quant_matrix(PutBitContext *pb, int16_t *matrix){
+ int i;
+
+ if(matrix){
+ put_bits(pb, 1, 1);
+ for(i=0;i<64;i++) {
+ put_bits(pb, 8, matrix[ ff_zigzag_direct[i] ]);
+ }
+ }else
+ put_bits(pb, 1, 0);
+}
+
/* init common dct for both encoder and decoder */
int DCT_common_init(MpegEncContext *s)
{
@@ -812,6 +824,10 @@ int MPV_encode_init(AVCodecContext *avctx)
s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i];
s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i];
}
+ if(s->avctx->intra_matrix)
+ s->intra_matrix[j] = s->avctx->intra_matrix[i];
+ if(s->avctx->inter_matrix)
+ s->inter_matrix[j] = s->avctx->inter_matrix[i];
}
/* precompute matrix */