diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-07-07 08:37:12 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-07-07 08:37:12 +0200 |
commit | 191c2d38eaf23ad023611e600d637d834d8961d8 (patch) | |
tree | 31b254473402605ab9bcf0ef412d186e96205d9c | |
parent | 0c38d700ca0303ede4a55acb660e437c6e925179 (diff) |
wildmidi: Add support for wildmidi 0.2.3
Fixes bug #623722.
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | ext/timidity/gstwildmidi.c | 24 |
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: |