From d605329f833ac323a41ca34ee4428d6bef69b1b1 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Wed, 11 Nov 2009 07:59:22 +0100
Subject: decoder/flac: moved code to flac_pcm.c

---
 Makefile.am                |   2 +
 src/decoder/_flac_common.c |  82 +-----------------------------------
 src/decoder/flac_pcm.c     | 101 +++++++++++++++++++++++++++++++++++++++++++++
 src/decoder/flac_pcm.h     |  31 ++++++++++++++
 4 files changed, 135 insertions(+), 81 deletions(-)
 create mode 100644 src/decoder/flac_pcm.c
 create mode 100644 src/decoder/flac_pcm.h

diff --git a/Makefile.am b/Makefile.am
index 08ac44780..8aa5b572e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -84,6 +84,7 @@ mpd_headers = \
 	src/decoder_list.h \
 	src/decoder_print.h \
 	src/decoder/flac_metadata.h \
+	src/decoder/flac_pcm.h \
 	src/decoder/_flac_common.h \
 	src/decoder/_ogg_common.h \
 	src/input_plugin.h \
@@ -442,6 +443,7 @@ endif
 if HAVE_FLAC_COMMON
 DECODER_SRC += \
 	src/decoder/flac_metadata.c \
+	src/decoder/flac_pcm.c \
 	src/decoder/_flac_common.c
 endif
 
diff --git a/src/decoder/_flac_common.c b/src/decoder/_flac_common.c
index ec326762b..2ccd2e536 100644
--- a/src/decoder/_flac_common.c
+++ b/src/decoder/_flac_common.c
@@ -23,6 +23,7 @@
 
 #include "_flac_common.h"
 #include "flac_metadata.h"
+#include "flac_pcm.h"
 
 #include <glib.h>
 
@@ -102,87 +103,6 @@ void flac_error_common_cb(const char *plugin,
 	}
 }
 
-static void flac_convert_stereo16(int16_t *dest,
-				  const FLAC__int32 * const buf[],
-				  unsigned int position, unsigned int end)
-{
-	for (; position < end; ++position) {
-		*dest++ = buf[0][position];
-		*dest++ = buf[1][position];
-	}
-}
-
-static void
-flac_convert_16(int16_t *dest,
-		unsigned int num_channels,
-		const FLAC__int32 * const buf[],
-		unsigned int position, unsigned int end)
-{
-	unsigned int c_chan;
-
-	for (; position < end; ++position)
-		for (c_chan = 0; c_chan < num_channels; c_chan++)
-			*dest++ = buf[c_chan][position];
-}
-
-/**
- * Note: this function also handles 24 bit files!
- */
-static void
-flac_convert_32(int32_t *dest,
-		unsigned int num_channels,
-		const FLAC__int32 * const buf[],
-		unsigned int position, unsigned int end)
-{
-	unsigned int c_chan;
-
-	for (; position < end; ++position)
-		for (c_chan = 0; c_chan < num_channels; c_chan++)
-			*dest++ = buf[c_chan][position];
-}
-
-static void
-flac_convert_8(int8_t *dest,
-	       unsigned int num_channels,
-	       const FLAC__int32 * const buf[],
-	       unsigned int position, unsigned int end)
-{
-	unsigned int c_chan;
-
-	for (; position < end; ++position)
-		for (c_chan = 0; c_chan < num_channels; c_chan++)
-			*dest++ = buf[c_chan][position];
-}
-
-static void
-flac_convert(void *dest,
-	     unsigned int num_channels, unsigned sample_format,
-	     const FLAC__int32 *const buf[],
-	     unsigned int position, unsigned int end)
-{
-	switch (sample_format) {
-	case 16:
-		if (num_channels == 2)
-			flac_convert_stereo16((int16_t*)dest, buf,
-					      position, end);
-		else
-			flac_convert_16((int16_t*)dest, num_channels, buf,
-					position, end);
-		break;
-
-	case 24:
-	case 32:
-		flac_convert_32((int32_t*)dest, num_channels, buf,
-				position, end);
-		break;
-
-	case 8:
-		flac_convert_8((int8_t*)dest, num_channels, buf,
-			       position, end);
-		break;
-	}
-}
-
 FLAC__StreamDecoderWriteStatus
 flac_common_write(struct flac_data *data, const FLAC__Frame * frame,
 		  const FLAC__int32 *const buf[])
diff --git a/src/decoder/flac_pcm.c b/src/decoder/flac_pcm.c
new file mode 100644
index 000000000..d37ef54e2
--- /dev/null
+++ b/src/decoder/flac_pcm.c
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2003-2009 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.
+ */
+
+#include "flac_pcm.h"
+
+static void flac_convert_stereo16(int16_t *dest,
+				  const FLAC__int32 * const buf[],
+				  unsigned int position, unsigned int end)
+{
+	for (; position < end; ++position) {
+		*dest++ = buf[0][position];
+		*dest++ = buf[1][position];
+	}
+}
+
+static void
+flac_convert_16(int16_t *dest,
+		unsigned int num_channels,
+		const FLAC__int32 * const buf[],
+		unsigned int position, unsigned int end)
+{
+	unsigned int c_chan;
+
+	for (; position < end; ++position)
+		for (c_chan = 0; c_chan < num_channels; c_chan++)
+			*dest++ = buf[c_chan][position];
+}
+
+/**
+ * Note: this function also handles 24 bit files!
+ */
+static void
+flac_convert_32(int32_t *dest,
+		unsigned int num_channels,
+		const FLAC__int32 * const buf[],
+		unsigned int position, unsigned int end)
+{
+	unsigned int c_chan;
+
+	for (; position < end; ++position)
+		for (c_chan = 0; c_chan < num_channels; c_chan++)
+			*dest++ = buf[c_chan][position];
+}
+
+static void
+flac_convert_8(int8_t *dest,
+	       unsigned int num_channels,
+	       const FLAC__int32 * const buf[],
+	       unsigned int position, unsigned int end)
+{
+	unsigned int c_chan;
+
+	for (; position < end; ++position)
+		for (c_chan = 0; c_chan < num_channels; c_chan++)
+			*dest++ = buf[c_chan][position];
+}
+
+void
+flac_convert(void *dest,
+	     unsigned int num_channels, unsigned sample_format,
+	     const FLAC__int32 *const buf[],
+	     unsigned int position, unsigned int end)
+{
+	switch (sample_format) {
+	case 16:
+		if (num_channels == 2)
+			flac_convert_stereo16((int16_t*)dest, buf,
+					      position, end);
+		else
+			flac_convert_16((int16_t*)dest, num_channels, buf,
+					position, end);
+		break;
+
+	case 24:
+	case 32:
+		flac_convert_32((int32_t*)dest, num_channels, buf,
+				position, end);
+		break;
+
+	case 8:
+		flac_convert_8((int8_t*)dest, num_channels, buf,
+			       position, end);
+		break;
+	}
+}
diff --git a/src/decoder/flac_pcm.h b/src/decoder/flac_pcm.h
new file mode 100644
index 000000000..dca9d6824
--- /dev/null
+++ b/src/decoder/flac_pcm.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2003-2009 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_FLAC_PCM_H
+#define MPD_FLAC_PCM_H
+
+#include <FLAC/ordinals.h>
+
+void
+flac_convert(void *dest,
+	     unsigned int num_channels, unsigned sample_format,
+	     const FLAC__int32 *const buf[],
+	     unsigned int position, unsigned int end);
+
+#endif
-- 
cgit v1.2.3