summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2010-07-07 08:37:12 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2010-07-07 08:37:12 +0200
commit191c2d38eaf23ad023611e600d637d834d8961d8 (patch)
tree31b254473402605ab9bcf0ef412d186e96205d9c
parent0c38d700ca0303ede4a55acb660e437c6e925179 (diff)
wildmidi: Add support for wildmidi 0.2.3
Fixes bug #623722.
-rw-r--r--configure.ac7
-rw-r--r--ext/timidity/gstwildmidi.c24
2 files changed, 30 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index d2d0adc55..f135f8198 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1263,7 +1263,12 @@ AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
dnl *** wildmidi ***
translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
- AC_CHECK_HEADER([wildmidi_lib.h],HAVE_WILDMIDI=yes, HAVE_WILDMIDI=no)
+ AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
+ WildMidi_Init, ,
+ wildmidi_lib.h,
+ WILDMIDI_LIBS="-lWildMidi")
+ AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
+
if test "x$HAVE_WILDMIDI" = "xyes"; then
WILDMIDI_CFLAGS=
WILDMIDI_LIBS=-lWildMidi
diff --git a/ext/timidity/gstwildmidi.c b/ext/timidity/gstwildmidi.c
index 91d5b5d77..3c2d0e182 100644
--- a/ext/timidity/gstwildmidi.c
+++ b/ext/timidity/gstwildmidi.c
@@ -489,11 +489,16 @@ gst_wildmidi_do_seek (GstWildmidi * wildmidi, GstEvent * event)
sample = segment->last_stop;
GST_OBJECT_LOCK (wildmidi);
+#ifdef HAVE_WILDMIDI_0_2_2
if (accurate) {
WildMidi_SampledSeek (wildmidi->song, &sample);
} else {
WildMidi_FastSeek (wildmidi->song, &sample);
}
+#else
+ WildMidi_FastSeek (wildmidi->song, &sample);
+#endif
+
GST_OBJECT_UNLOCK (wildmidi);
segment->start = segment->time = segment->last_stop = sample;
@@ -669,12 +674,21 @@ gst_wildmidi_parse_song (GstWildmidi * wildmidi)
if (!wildmidi->song)
goto open_failed;
+#ifdef HAVE_WILDMIDI_0_2_2
WildMidi_LoadSamples (wildmidi->song);
+#endif
+#ifdef HAVE_WILDMIDI_0_2_2
WildMidi_SetOption (wildmidi->song, WM_MO_LINEAR_VOLUME,
wildmidi->linear_volume);
WildMidi_SetOption (wildmidi->song, WM_MO_EXPENSIVE_INTERPOLATION,
wildmidi->high_quality);
+#else
+ WildMidi_SetOption (wildmidi->song, WM_MO_LOG_VOLUME,
+ !wildmidi->linear_volume);
+ WildMidi_SetOption (wildmidi->song, WM_MO_ENHANCED_RESAMPLING,
+ wildmidi->high_quality);
+#endif
info = WildMidi_GetInfo (wildmidi->song);
GST_OBJECT_UNLOCK (wildmidi);
@@ -901,16 +915,26 @@ gst_wildmidi_set_property (GObject * object, guint prop_id,
GST_OBJECT_LOCK (object);
wildmidi->linear_volume = g_value_get_boolean (value);
if (wildmidi->song)
+#ifdef HAVE_WILDMIDI_0_2_2
WildMidi_SetOption (wildmidi->song, WM_MO_LINEAR_VOLUME,
wildmidi->linear_volume);
+#else
+ WildMidi_SetOption (wildmidi->song, WM_MO_LOG_VOLUME,
+ !wildmidi->linear_volume);
+#endif
GST_OBJECT_UNLOCK (object);
break;
case ARG_HIGH_QUALITY:
GST_OBJECT_LOCK (object);
wildmidi->high_quality = g_value_get_boolean (value);
if (wildmidi->song)
+#ifdef HAVE_WILDMIDI_0_2_2
WildMidi_SetOption (wildmidi->song, WM_MO_EXPENSIVE_INTERPOLATION,
wildmidi->high_quality);
+#else
+ WildMidi_SetOption (wildmidi->song, WM_MO_ENHANCED_RESAMPLING,
+ wildmidi->high_quality);
+#endif
GST_OBJECT_UNLOCK (object);
break;
default: