From 46061880390812e229a8a86d5fbbc0cb545d0d36 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 5 May 2009 16:24:16 +0200 Subject: jpegenc: set colorspace before _set_defaults() The libjpeg api says that we need to set the colorspace before we call _set_defaults(). Indeed, if we don't do that we end up with some very freaky non-standard quant table and huffman table indexes. --- ext/jpeg/gstjpegenc.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'ext/jpeg') diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c index 5edb11f1..69e5927f 100644 --- a/ext/jpeg/gstjpegenc.c +++ b/ext/jpeg/gstjpegenc.c @@ -360,11 +360,6 @@ gst_jpegenc_resync (GstJpegEnc * jpegenc) GST_DEBUG_OBJECT (jpegenc, "width %d, height %d", width, height); - jpeg_set_defaults (&jpegenc->cinfo); - jpegenc->cinfo.dct_method = JDCT_FASTEST; - /*jpegenc->cinfo.dct_method = JDCT_DEFAULT; */ - /*jpegenc->cinfo.smoothing_factor = jpegenc->smoothing; */ - jpeg_set_quality (&jpegenc->cinfo, jpegenc->quality, TRUE); #if 0 switch (jpegenc->format) { @@ -376,16 +371,18 @@ gst_jpegenc_resync (GstJpegEnc * jpegenc) break; case GST_COLORSPACE_YUV420P: #endif + GST_DEBUG_OBJECT (jpegenc, "setting format to YUV420P"); + jpegenc->bufsize = I420_SIZE (jpegenc->width, jpegenc->height); - jpegenc->cinfo.raw_data_in = TRUE; jpegenc->cinfo.in_color_space = JCS_YCbCr; - GST_DEBUG_OBJECT (jpegenc, "setting format to YUV420P"); - jpegenc->cinfo.comp_info[0].h_samp_factor = 2; - jpegenc->cinfo.comp_info[0].v_samp_factor = 2; - jpegenc->cinfo.comp_info[1].h_samp_factor = 1; - jpegenc->cinfo.comp_info[1].v_samp_factor = 1; - jpegenc->cinfo.comp_info[2].h_samp_factor = 1; - jpegenc->cinfo.comp_info[2].v_samp_factor = 1; + + jpeg_set_defaults (&jpegenc->cinfo); + jpeg_set_quality (&jpegenc->cinfo, jpegenc->quality, TRUE); + + jpegenc->cinfo.raw_data_in = TRUE; + jpegenc->cinfo.dct_method = JDCT_FASTEST; + /*jpegenc->cinfo.dct_method = JDCT_DEFAULT; */ + /*jpegenc->cinfo.smoothing_factor = jpegenc->smoothing; */ if (height != -1) { jpegenc->line[0] = -- cgit