summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNicola Murino <nicola.murino@gmail.com>2017-07-17 10:04:02 +0200
committerTim-Philipp Müller <tim@centricular.com>2017-07-24 10:03:42 +0100
commitab3b289bf2575de9f87146c7aa6effe3ff9d272b (patch)
tree2715ee6dc7b03a18cb5e636af1f54155df793f63 /ext
parent4bcec1b190d0919b512065b53a74ccc95015b015 (diff)
jpegenc: declare quality property changeable in PLAYING state
https://bugzilla.gnome.org/show_bug.cgi?id=785012
Diffstat (limited to 'ext')
-rw-r--r--ext/jpeg/gstjpegenc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c
index 67ae6dc76..9d8a59812 100644
--- a/ext/jpeg/gstjpegenc.c
+++ b/ext/jpeg/gstjpegenc.c
@@ -134,7 +134,8 @@ gst_jpegenc_class_init (GstJpegEncClass * klass)
g_object_class_install_property (gobject_class, PROP_QUALITY,
g_param_spec_int ("quality", "Quality", "Quality of encoding",
0, 100, JPEG_DEFAULT_QUALITY,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ GST_PARAM_MUTABLE_PLAYING));
#ifdef ENABLE_SMOOTHING
/* disabled, since it doesn't seem to work */
@@ -474,9 +475,13 @@ gst_jpegenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame)
#if JPEG_LIB_VERSION >= 70
jpegenc->cinfo.do_fancy_downsampling = FALSE;
#endif
+
+ GST_OBJECT_LOCK (jpegenc);
jpegenc->cinfo.smoothing_factor = jpegenc->smoothing;
jpegenc->cinfo.dct_method = jpegenc->idct_method;
jpeg_set_quality (&jpegenc->cinfo, jpegenc->quality, TRUE);
+ GST_OBJECT_UNLOCK (jpegenc);
+
jpeg_start_compress (&jpegenc->cinfo, TRUE);
GST_LOG_OBJECT (jpegenc, "compressing");