diff options
| author | Stefan Kost <ensonic@users.sourceforge.net> | 2006-08-24 19:00:22 +0000 | 
|---|---|---|
| committer | Stefan Kost <ensonic@users.sourceforge.net> | 2006-08-24 19:00:22 +0000 | 
| commit | 2019f527f701018622083cdbba4b12b4f53875de (patch) | |
| tree | ef2c1c9cfdd7f5b4d8a82bc0533ce3d922fdb0f6 | |
| parent | 6bc998156fc5ba5503837a908f6595fbb92824c3 (diff) | |
Make also the pan-property float (saves scaling and yields better resolution)
Original commit message from CVS:
* gst/audiofxgood/audiopanorama.c: (gst_audio_panorama_class_init),
(gst_audio_panorama_set_property),
(gst_audio_panorama_get_property),
(gst_audio_panorama_transform_m2s_int),
(gst_audio_panorama_transform_s2s_int),
(gst_audio_panorama_transform_m2s_float),
(gst_audio_panorama_transform_s2s_float):
* gst/audiofxgood/audiopanorama.h:
* tests/check/elements/audiopanorama.c: (GST_START_TEST):
Make also the pan-property float (saves scaling and yields better
resolution)
| -rw-r--r-- | ChangeLog | 14 | ||||
| -rw-r--r-- | gst/audiofx/audiopanorama.c | 36 | ||||
| -rw-r--r-- | gst/audiofx/audiopanorama.h | 2 | ||||
| -rw-r--r-- | gst/audiofxgood/audiopanorama.c | 36 | ||||
| -rw-r--r-- | gst/audiofxgood/audiopanorama.h | 2 | ||||
| -rw-r--r-- | tests/check/elements/audiopanorama.c | 8 | 
6 files changed, 54 insertions, 44 deletions
@@ -1,5 +1,19 @@  2006-08-24  Stefan Kost  <ensonic@users.sf.net> +	* gst/audiofxgood/audiopanorama.c: (gst_audio_panorama_class_init), +	(gst_audio_panorama_set_property), +	(gst_audio_panorama_get_property), +	(gst_audio_panorama_transform_m2s_int), +	(gst_audio_panorama_transform_s2s_int), +	(gst_audio_panorama_transform_m2s_float), +	(gst_audio_panorama_transform_s2s_float): +	* gst/audiofxgood/audiopanorama.h: +	* tests/check/elements/audiopanorama.c: (GST_START_TEST): +          Make also the pan-property float (saves scaling and yields better +          resolution) + +2006-08-24  Stefan Kost  <ensonic@users.sf.net> +  	* gst/audiofxgood/audiopanorama.c: (gst_audio_panorama_set_caps),  	(gst_audio_panorama_transform_m2s_float),  	(gst_audio_panorama_transform_s2s_float): diff --git a/gst/audiofx/audiopanorama.c b/gst/audiofx/audiopanorama.c index 1ef3dec4..6b9cd8c4 100644 --- a/gst/audiofx/audiopanorama.c +++ b/gst/audiofx/audiopanorama.c @@ -73,8 +73,7 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",      GST_STATIC_CAPS ("audio/x-raw-float, "          "rate = (int) [ 1, MAX ], "          "channels = (int) [ 1, 2 ], " -        "endianness = (int) BYTE_ORDER, " -        "width = (int) 32, " "signed = (boolean) true; " +        "endianness = (int) BYTE_ORDER, " "width = (int) 32; "          "audio/x-raw-int, "          "rate = (int) [ 1, MAX ], "          "channels = (int) [ 1, 2 ], " @@ -88,8 +87,7 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",      GST_STATIC_CAPS ("audio/x-raw-float, "          "rate = (int) [ 1, MAX ], "          "channels = (int) 2, " -        "endianness = (int) BYTE_ORDER, " -        "width = (int) 32, " "signed = (boolean) true; " +        "endianness = (int) BYTE_ORDER, " "width = (int) 32; "          "audio/x-raw-int, "          "rate = (int) [ 1, MAX ], "          "channels = (int) 2, " @@ -151,9 +149,9 @@ gst_audio_panorama_class_init (GstAudioPanoramaClass * klass)    gobject_class->get_property = gst_audio_panorama_get_property;    g_object_class_install_property (gobject_class, PROP_PANORAMA, -      g_param_spec_int ("panorama", "Panorama", -          "Position in stereo panorama (-100 left -> 100 right)", -100, 100, 0, -          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE)); +      g_param_spec_float ("panorama", "Panorama", +          "Position in stereo panorama (-1.0 left -> 1.0 right)", -1.0, 1.0, +          0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));    GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =        GST_DEBUG_FUNCPTR (gst_audio_panorama_get_unit_size); @@ -180,7 +178,7 @@ gst_audio_panorama_set_property (GObject * object, guint prop_id,    switch (prop_id) {      case PROP_PANORAMA: -      filter->panorama = g_value_get_int (value); +      filter->panorama = g_value_get_float (value);        break;      default:        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -196,7 +194,7 @@ gst_audio_panorama_get_property (GObject * object, guint prop_id,    switch (prop_id) {      case PROP_PANORAMA: -      g_value_set_int (value, filter->panorama); +      g_value_set_float (value, filter->panorama);        break;      default:        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -310,13 +308,13 @@ gst_audio_panorama_transform_m2s_int (GstAudioPanorama * filter, gint16 * idata,    glong lval, rval;    gdouble rpan, lpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * lpan:  1.0  0.5  0.0       * rpan:  0.0  0.5  1.0     *     * FIXME: we should use -3db (1/sqtr(2)) for 50:50     */ -  rpan = (gdouble) (filter->panorama + 100) / 200.0; +  rpan = (gdouble) (filter->panorama + 1.0) / 2.0;    lpan = 1.0 - rpan;    for (i = 0; i < num_samples; i++) { @@ -339,19 +337,19 @@ gst_audio_panorama_transform_s2s_int (GstAudioPanorama * filter, gint16 * idata,    gdouble lival, rival;    gdouble lrpan, llpan, rrpan, rlpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * llpan: 1.0  1.0  0.0     * lrpan: 1.0  0.0  0.0     * rrpan: 0.0  1.0  1.0     * rlpan: 0.0  0.0  1.0     */    if (filter->panorama > 0) { -    rlpan = (gdouble) filter->panorama / 100.0; +    rlpan = (gdouble) filter->panorama;      llpan = 1.0 - rlpan;      lrpan = 0.0;      rrpan = 1.0;    } else { -    rrpan = (gdouble) (100 + filter->panorama) / 100.0; +    rrpan = (gdouble) (1.0 + filter->panorama);      lrpan = 1.0 - rrpan;      rlpan = 0.0;      llpan = 1.0; @@ -377,13 +375,13 @@ gst_audio_panorama_transform_m2s_float (GstAudioPanorama * filter,    gfloat val;    gdouble rpan, lpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * lpan:  1.0  0.5  0.0       * rpan:  0.0  0.5  1.0     *     * FIXME: we should use -3db (1/sqtr(2)) for 50:50     */ -  rpan = (gdouble) (filter->panorama + 100) / 200.0; +  rpan = (gdouble) (filter->panorama + 1.0) / 2.0;    lpan = 1.0 - rpan;    for (i = 0; i < num_samples; i++) { @@ -402,19 +400,19 @@ gst_audio_panorama_transform_s2s_float (GstAudioPanorama * filter,    gfloat lival, rival;    gdouble lrpan, llpan, rrpan, rlpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * llpan: 1.0  1.0  0.0     * lrpan: 1.0  0.0  0.0     * rrpan: 0.0  1.0  1.0     * rlpan: 0.0  0.0  1.0     */    if (filter->panorama > 0) { -    rlpan = (gdouble) filter->panorama / 100.0; +    rlpan = (gdouble) filter->panorama;      llpan = 1.0 - rlpan;      lrpan = 0.0;      rrpan = 1.0;    } else { -    rrpan = (gdouble) (100 + filter->panorama) / 100.0; +    rrpan = (gdouble) (1.0 + filter->panorama);      lrpan = 1.0 - rrpan;      rlpan = 0.0;      llpan = 1.0; diff --git a/gst/audiofx/audiopanorama.h b/gst/audiofx/audiopanorama.h index 7434c750..623e9a68 100644 --- a/gst/audiofx/audiopanorama.h +++ b/gst/audiofx/audiopanorama.h @@ -41,7 +41,7 @@ typedef void (*GstAudioPanoramaProcessFunc)(GstAudioPanorama*, guint8*, guint8*,  struct _GstAudioPanorama {    GstBaseTransform element; -  gint panorama; +  gfloat panorama;    /* < private > */    GstAudioPanoramaProcessFunc process; diff --git a/gst/audiofxgood/audiopanorama.c b/gst/audiofxgood/audiopanorama.c index 1ef3dec4..6b9cd8c4 100644 --- a/gst/audiofxgood/audiopanorama.c +++ b/gst/audiofxgood/audiopanorama.c @@ -73,8 +73,7 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",      GST_STATIC_CAPS ("audio/x-raw-float, "          "rate = (int) [ 1, MAX ], "          "channels = (int) [ 1, 2 ], " -        "endianness = (int) BYTE_ORDER, " -        "width = (int) 32, " "signed = (boolean) true; " +        "endianness = (int) BYTE_ORDER, " "width = (int) 32; "          "audio/x-raw-int, "          "rate = (int) [ 1, MAX ], "          "channels = (int) [ 1, 2 ], " @@ -88,8 +87,7 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",      GST_STATIC_CAPS ("audio/x-raw-float, "          "rate = (int) [ 1, MAX ], "          "channels = (int) 2, " -        "endianness = (int) BYTE_ORDER, " -        "width = (int) 32, " "signed = (boolean) true; " +        "endianness = (int) BYTE_ORDER, " "width = (int) 32; "          "audio/x-raw-int, "          "rate = (int) [ 1, MAX ], "          "channels = (int) 2, " @@ -151,9 +149,9 @@ gst_audio_panorama_class_init (GstAudioPanoramaClass * klass)    gobject_class->get_property = gst_audio_panorama_get_property;    g_object_class_install_property (gobject_class, PROP_PANORAMA, -      g_param_spec_int ("panorama", "Panorama", -          "Position in stereo panorama (-100 left -> 100 right)", -100, 100, 0, -          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE)); +      g_param_spec_float ("panorama", "Panorama", +          "Position in stereo panorama (-1.0 left -> 1.0 right)", -1.0, 1.0, +          0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));    GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =        GST_DEBUG_FUNCPTR (gst_audio_panorama_get_unit_size); @@ -180,7 +178,7 @@ gst_audio_panorama_set_property (GObject * object, guint prop_id,    switch (prop_id) {      case PROP_PANORAMA: -      filter->panorama = g_value_get_int (value); +      filter->panorama = g_value_get_float (value);        break;      default:        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -196,7 +194,7 @@ gst_audio_panorama_get_property (GObject * object, guint prop_id,    switch (prop_id) {      case PROP_PANORAMA: -      g_value_set_int (value, filter->panorama); +      g_value_set_float (value, filter->panorama);        break;      default:        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -310,13 +308,13 @@ gst_audio_panorama_transform_m2s_int (GstAudioPanorama * filter, gint16 * idata,    glong lval, rval;    gdouble rpan, lpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * lpan:  1.0  0.5  0.0       * rpan:  0.0  0.5  1.0     *     * FIXME: we should use -3db (1/sqtr(2)) for 50:50     */ -  rpan = (gdouble) (filter->panorama + 100) / 200.0; +  rpan = (gdouble) (filter->panorama + 1.0) / 2.0;    lpan = 1.0 - rpan;    for (i = 0; i < num_samples; i++) { @@ -339,19 +337,19 @@ gst_audio_panorama_transform_s2s_int (GstAudioPanorama * filter, gint16 * idata,    gdouble lival, rival;    gdouble lrpan, llpan, rrpan, rlpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * llpan: 1.0  1.0  0.0     * lrpan: 1.0  0.0  0.0     * rrpan: 0.0  1.0  1.0     * rlpan: 0.0  0.0  1.0     */    if (filter->panorama > 0) { -    rlpan = (gdouble) filter->panorama / 100.0; +    rlpan = (gdouble) filter->panorama;      llpan = 1.0 - rlpan;      lrpan = 0.0;      rrpan = 1.0;    } else { -    rrpan = (gdouble) (100 + filter->panorama) / 100.0; +    rrpan = (gdouble) (1.0 + filter->panorama);      lrpan = 1.0 - rrpan;      rlpan = 0.0;      llpan = 1.0; @@ -377,13 +375,13 @@ gst_audio_panorama_transform_m2s_float (GstAudioPanorama * filter,    gfloat val;    gdouble rpan, lpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * lpan:  1.0  0.5  0.0       * rpan:  0.0  0.5  1.0     *     * FIXME: we should use -3db (1/sqtr(2)) for 50:50     */ -  rpan = (gdouble) (filter->panorama + 100) / 200.0; +  rpan = (gdouble) (filter->panorama + 1.0) / 2.0;    lpan = 1.0 - rpan;    for (i = 0; i < num_samples; i++) { @@ -402,19 +400,19 @@ gst_audio_panorama_transform_s2s_float (GstAudioPanorama * filter,    gfloat lival, rival;    gdouble lrpan, llpan, rrpan, rlpan; -  /* pan:  -100   0   100 +  /* pan:  -1.0  0.0  1.0     * llpan: 1.0  1.0  0.0     * lrpan: 1.0  0.0  0.0     * rrpan: 0.0  1.0  1.0     * rlpan: 0.0  0.0  1.0     */    if (filter->panorama > 0) { -    rlpan = (gdouble) filter->panorama / 100.0; +    rlpan = (gdouble) filter->panorama;      llpan = 1.0 - rlpan;      lrpan = 0.0;      rrpan = 1.0;    } else { -    rrpan = (gdouble) (100 + filter->panorama) / 100.0; +    rrpan = (gdouble) (1.0 + filter->panorama);      lrpan = 1.0 - rrpan;      rlpan = 0.0;      llpan = 1.0; diff --git a/gst/audiofxgood/audiopanorama.h b/gst/audiofxgood/audiopanorama.h index 7434c750..623e9a68 100644 --- a/gst/audiofxgood/audiopanorama.h +++ b/gst/audiofxgood/audiopanorama.h @@ -41,7 +41,7 @@ typedef void (*GstAudioPanoramaProcessFunc)(GstAudioPanorama*, guint8*, guint8*,  struct _GstAudioPanorama {    GstBaseTransform element; -  gint panorama; +  gfloat panorama;    /* < private > */    GstAudioPanoramaProcessFunc process; diff --git a/tests/check/elements/audiopanorama.c b/tests/check/elements/audiopanorama.c index 666add9e..42feeefc 100644 --- a/tests/check/elements/audiopanorama.c +++ b/tests/check/elements/audiopanorama.c @@ -181,7 +181,7 @@ GST_START_TEST (test_mono_left)    gint16 *res;    panorama = setup_panorama_m (); -  g_object_set (G_OBJECT (panorama), "panorama", -100, NULL); +  g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL);    fail_unless (gst_element_set_state (panorama,            GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,        "could not set to playing"); @@ -221,7 +221,7 @@ GST_START_TEST (test_mono_right)    gint16 *res;    panorama = setup_panorama_m (); -  g_object_set (G_OBJECT (panorama), "panorama", 100, NULL); +  g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL);    fail_unless (gst_element_set_state (panorama,            GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,        "could not set to playing"); @@ -301,7 +301,7 @@ GST_START_TEST (test_stereo_left)    gint16 *res;    panorama = setup_panorama_s (); -  g_object_set (G_OBJECT (panorama), "panorama", -100, NULL); +  g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL);    fail_unless (gst_element_set_state (panorama,            GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,        "could not set to playing"); @@ -341,7 +341,7 @@ GST_START_TEST (test_stereo_right)    gint16 *res;    panorama = setup_panorama_s (); -  g_object_set (G_OBJECT (panorama), "panorama", 100, NULL); +  g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL);    fail_unless (gst_element_set_state (panorama,            GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,        "could not set to playing");  | 
