wildmidi: Add support for wildmidi 0.2.3

Fixes bug #623722.
This commit is contained in:
Sebastian Dröge 2010-07-07 08:37:12 +02:00
parent 0c38d700ca
commit 191c2d38ea
2 changed files with 30 additions and 1 deletions

View file

@ -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

View file

@ -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: