summaryrefslogtreecommitdiffstats
path: root/ext/jpeg
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-05-05 16:24:16 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-05-05 16:24:16 +0200
commit46061880390812e229a8a86d5fbbc0cb545d0d36 (patch)
tree1a1283255f39a09c986c84fd350b2b766e888ef1 /ext/jpeg
parent356e863c9cf61a6a4554bf238da8f8ae2cb95bc7 (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.c23
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] =