From 191c2d38eaf23ad023611e600d637d834d8961d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 7 Jul 2010 08:37:12 +0200 Subject: [PATCH] wildmidi: Add support for wildmidi 0.2.3 Fixes bug #623722. --- configure.ac | 7 ++++++- ext/timidity/gstwildmidi.c | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d2d0adc55f..f135f81982 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 91d5b5d774..3c2d0e1826 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: