aboutsummaryrefslogtreecommitdiff
path: root/src/CrossFade.hxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-04 10:31:59 +0100
committerMax Kellermann <max@duempel.org>2013-01-04 10:31:59 +0100
commit9a71845700e132b3e3fe5920aac24a5420c5d7b3 (patch)
treeafd196274fedad3bb456be2f0b6b8b25e676492b /src/CrossFade.hxx
parent22f0a1547c86895b4284b5fdc63ab9c82f24a442 (diff)
crossfade: convert to C++
Diffstat (limited to 'src/CrossFade.hxx')
-rw-r--r--src/CrossFade.hxx51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/CrossFade.hxx b/src/CrossFade.hxx
new file mode 100644
index 00000000..1c467075
--- /dev/null
+++ b/src/CrossFade.hxx
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2003-2013 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef MPD_CROSSFADE_HXX
+#define MPD_CROSSFADE_HXX
+
+struct audio_format;
+struct music_chunk;
+
+/**
+ * Calculate how many music pipe chunks should be used for crossfading.
+ *
+ * @param duration the requested crossfade duration
+ * @param total_time total_time the duration of the new song
+ * @param mixramp_db the current mixramp_db setting
+ * @param mixramp_delay the current mixramp_delay setting
+ * @param replay_gain_db the ReplayGain adjustment used for this song
+ * @param replay_gain_prev_db the ReplayGain adjustment used on the last song
+ * @param mixramp_start the next songs mixramp_start tag
+ * @param mixramp_prev_end the last songs mixramp_end setting
+ * @param af the audio format of the new song
+ * @param old_format the audio format of the current song
+ * @param max_chunks the maximum number of chunks
+ * @return the number of chunks for crossfading, or 0 if cross fading
+ * should be disabled for this song change
+ */
+unsigned cross_fade_calc(float duration, float total_time,
+ float mixramp_db, float mixramp_delay,
+ float replay_gain_db, float replay_gain_prev_db,
+ char *mixramp_start, char *mixramp_prev_end,
+ const struct audio_format *af,
+ const struct audio_format *old_format,
+ unsigned max_chunks);
+
+#endif