diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-05-05 16:24:16 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-05-05 16:24:16 +0200 |
commit | 46061880390812e229a8a86d5fbbc0cb545d0d36 (patch) | |
tree | 1a1283255f39a09c986c84fd350b2b766e888ef1 /ext/jpeg | |
parent | 356e863c9cf61a6a4554bf238da8f8ae2cb95bc7 (diff) |
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.
Diffstat (limited to 'ext/jpeg')
-rw-r--r-- | ext/jpeg/gstjpegenc.c | 23 |
1 files changed, 10 insertions, 13 deletions
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] = |