summaryrefslogtreecommitdiffstats
path: root/ext/wavpack
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2007-05-21 11:17:21 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2007-05-21 11:17:21 +0000
commit5947345f9a6c4b4face39d2f5b48f3607616dbf6 (patch)
tree63bf6ad1f0035d1a25f9899785fb6c0e23d55427 /ext/wavpack
parent127d233104becbc3924f10f40c92e2ec034b2eac (diff)
ext/wavpack/gstwavpackenc.*: Fixup docs, make the bitrate property an int as it should be and allow to set the differ...
Original commit message from CVS: * ext/wavpack/gstwavpackenc.c: (gst_wavpack_enc_class_init), (gst_wavpack_enc_init), (gst_wavpack_enc_set_wp_config), (gst_wavpack_enc_set_property), (gst_wavpack_enc_get_property): * ext/wavpack/gstwavpackenc.h: Fixup docs, make the bitrate property an int as it should be and allow to set the different extra processing modes instead of only allowing none and the default one.
Diffstat (limited to 'ext/wavpack')
-rw-r--r--ext/wavpack/gstwavpackenc.c67
-rw-r--r--ext/wavpack/gstwavpackenc.h5
2 files changed, 40 insertions, 32 deletions
diff --git a/ext/wavpack/gstwavpackenc.c b/ext/wavpack/gstwavpackenc.c
index beb3fb6b..07bddeb3 100644
--- a/ext/wavpack/gstwavpackenc.c
+++ b/ext/wavpack/gstwavpackenc.c
@@ -31,7 +31,8 @@
* <programlisting>
* gst-launch audiotestsrc num-buffers=500 ! audioconvert ! wavpackenc ! filesink location=sinewave.wv
* </programlisting>
- * This pipeline encodes audio from audiotestsrc into a Wavpack file.
+ * This pipeline encodes audio from audiotestsrc into a Wavpack file. The audioconvert element is needed
+ * as the Wavpack encoder only accepts input with 32 bit width (and every depth between 1 and 32 bits).
* </para>
* <para>
* <programlisting>
@@ -269,18 +270,18 @@ gst_wavpack_enc_class_init (GstWavpackEncClass * klass)
GST_TYPE_WAVPACK_ENC_MODE, GST_WAVPACK_ENC_MODE_DEFAULT,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_BITRATE,
- g_param_spec_double ("bitrate", "Bitrate",
+ g_param_spec_int ("bitrate", "Bitrate",
"Try to encode with this average bitrate (bits/sec). "
- "This enables lossy encoding! A value smaller than 24000.0 disables this.",
- 0.0, 9600000.0, 0.0, G_PARAM_READWRITE));
+ "This enables lossy encoding, values smaller than 24000 disable it again.",
+ 0, 9600000, 0, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_BITSPERSAMPLE,
g_param_spec_double ("bits-per-sample", "Bits per sample",
"Try to encode with this amount of bits per sample. "
- "This enables lossy encoding! A value smaller than 2.0 disables this.",
+ "This enables lossy encoding, values smaller than 2.0 disable it again.",
0.0, 24.0, 0.0, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_CORRECTION_MODE,
- g_param_spec_enum ("correction-mode", "Correction file mode",
- "Use this mode for correction file creation. Only works in lossy mode!",
+ g_param_spec_enum ("correction-mode", "Correction stream mode",
+ "Use this mode for the correction stream. Only works in lossy mode!",
GST_TYPE_WAVPACK_ENC_CORRECTION_MODE, GST_WAVPACK_CORRECTION_MODE_OFF,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_MD5,
@@ -288,8 +289,9 @@ gst_wavpack_enc_class_init (GstWavpackEncClass * klass)
"Store MD5 hash of raw samples within the file.", FALSE,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_EXTRA_PROCESSING,
- g_param_spec_boolean ("extra-processing", "Extra processing",
- "Extra encode processing.", FALSE, G_PARAM_READWRITE));
+ g_param_spec_int ("extra-processing", "Extra processing",
+ "Use better but slower filters for better compression/quality.",
+ 0, 6, 0, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_JOINT_STEREO_MODE,
g_param_spec_enum ("joint-stereo-mode", "Joint-Stereo mode",
"Use this joint-stereo mode.", GST_TYPE_WAVPACK_ENC_JOINT_STEREO_MODE,
@@ -359,10 +361,11 @@ gst_wavpack_enc_init (GstWavpackEnc * enc, GstWavpackEncClass * gclass)
/* set default values of params */
enc->mode = GST_WAVPACK_ENC_MODE_DEFAULT;
- enc->bitrate = 0.0;
+ enc->bitrate = 0;
+ enc->bps = 0.0;
enc->correction_mode = GST_WAVPACK_CORRECTION_MODE_OFF;
enc->md5 = FALSE;
- enc->extra_processing = FALSE;
+ enc->extra_processing = 0;
enc->joint_stereo_mode = GST_WAVPACK_JS_MODE_AUTO;
}
@@ -450,14 +453,13 @@ gst_wavpack_enc_set_wp_config (GstWavpackEnc * enc)
}
/* Bitrate, enables lossy mode */
- if (enc->bitrate >= 2.0) {
+ if (enc->bitrate) {
enc->wp_config->flags |= CONFIG_HYBRID_FLAG;
- if (enc->bitrate >= 24000.0) {
- enc->wp_config->bitrate = enc->bitrate / 1000.0;
- enc->wp_config->flags |= CONFIG_BITRATE_KBPS;
- } else {
- enc->wp_config->bitrate = enc->bitrate;
- }
+ enc->wp_config->flags |= CONFIG_BITRATE_KBPS;
+ enc->wp_config->bitrate = enc->bitrate / 1000.0;
+ } else if (enc->bps) {
+ enc->wp_config->flags |= CONFIG_HYBRID_FLAG;
+ enc->wp_config->bitrate = enc->bps;
}
/* Correction Mode, only in lossy mode */
@@ -505,6 +507,7 @@ gst_wavpack_enc_set_wp_config (GstWavpackEnc * enc)
/* Extra encode processing */
if (enc->extra_processing) {
enc->wp_config->flags |= CONFIG_EXTRA_MODE;
+ enc->wp_config->xmode = enc->extra_processing;
}
/* Joint stereo mode */
@@ -808,12 +811,14 @@ gst_wavpack_enc_set_property (GObject * object, guint prop_id,
enc->mode = g_value_get_enum (value);
break;
case ARG_BITRATE:{
- gdouble val = g_value_get_double (value);
+ gint val = g_value_get_int (value);
- if ((val >= 24000.0) && (val <= 9600000.0)) {
+ if ((val >= 24000) && (val <= 9600000)) {
enc->bitrate = val;
+ enc->bps = 0.0;
} else {
- enc->bitrate = 0.0;
+ enc->bitrate = 0;
+ enc->bps = 0.0;
}
break;
}
@@ -821,9 +826,11 @@ gst_wavpack_enc_set_property (GObject * object, guint prop_id,
gdouble val = g_value_get_double (value);
if ((val >= 2.0) && (val <= 24.0)) {
- enc->bitrate = val;
+ enc->bps = val;
+ enc->bitrate = 0;
} else {
- enc->bitrate = 0.0;
+ enc->bps = 0.0;
+ enc->bitrate = 0;
}
break;
}
@@ -834,7 +841,7 @@ gst_wavpack_enc_set_property (GObject * object, guint prop_id,
enc->md5 = g_value_get_boolean (value);
break;
case ARG_EXTRA_PROCESSING:
- enc->extra_processing = g_value_get_boolean (value);
+ enc->extra_processing = g_value_get_int (value);
break;
case ARG_JOINT_STEREO_MODE:
enc->joint_stereo_mode = g_value_get_enum (value);
@@ -856,15 +863,15 @@ gst_wavpack_enc_get_property (GObject * object, guint prop_id, GValue * value,
g_value_set_enum (value, enc->mode);
break;
case ARG_BITRATE:
- if (enc->bitrate >= 24000.0) {
- g_value_set_double (value, enc->bitrate);
+ if (enc->bps == 0.0) {
+ g_value_set_int (value, enc->bitrate);
} else {
- g_value_set_double (value, 0.0);
+ g_value_set_int (value, 0);
}
break;
case ARG_BITSPERSAMPLE:
- if (enc->bitrate <= 24.0) {
- g_value_set_double (value, enc->bitrate);
+ if (enc->bitrate == 0) {
+ g_value_set_double (value, enc->bps);
} else {
g_value_set_double (value, 0.0);
}
@@ -876,7 +883,7 @@ gst_wavpack_enc_get_property (GObject * object, guint prop_id, GValue * value,
g_value_set_boolean (value, enc->md5);
break;
case ARG_EXTRA_PROCESSING:
- g_value_set_boolean (value, enc->extra_processing);
+ g_value_set_int (value, enc->extra_processing);
break;
case ARG_JOINT_STEREO_MODE:
g_value_set_enum (value, enc->joint_stereo_mode);
diff --git a/ext/wavpack/gstwavpackenc.h b/ext/wavpack/gstwavpackenc.h
index 617a2f64..243e8d7b 100644
--- a/ext/wavpack/gstwavpackenc.h
+++ b/ext/wavpack/gstwavpackenc.h
@@ -70,11 +70,12 @@ struct _GstWavpackEnc
GstWavpackEncWriteID wvc_id;
guint mode;
- gdouble bitrate;
+ guint bitrate;
+ gdouble bps;
guint correction_mode;
gboolean md5;
MD5_CTX *md5_context;
- gboolean extra_processing;
+ guint extra_processing;
guint joint_stereo_mode;
void *first_block;