From e5a28bfd8d07fe5ca5dee1bfb55ce414c8f7e9fc Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 31 Aug 2014 16:12:26 +0200
Subject: output/alsa, pcm: rename "DSD over USB" to "DoP"

The standard has been renamed since the early draft that was
implemented in MPD.
---
 src/pcm/PcmDop.cxx    | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++
 src/pcm/PcmDop.hxx    | 40 +++++++++++++++++++++
 src/pcm/PcmDsdUsb.cxx | 96 ---------------------------------------------------
 src/pcm/PcmDsdUsb.hxx | 41 ----------------------
 src/pcm/PcmExport.cxx | 22 ++++++------
 src/pcm/PcmExport.hxx | 14 ++++----
 6 files changed, 154 insertions(+), 155 deletions(-)
 create mode 100644 src/pcm/PcmDop.cxx
 create mode 100644 src/pcm/PcmDop.hxx
 delete mode 100644 src/pcm/PcmDsdUsb.cxx
 delete mode 100644 src/pcm/PcmDsdUsb.hxx

(limited to 'src/pcm')

diff --git a/src/pcm/PcmDop.cxx b/src/pcm/PcmDop.cxx
new file mode 100644
index 000000000..b2096d9e4
--- /dev/null
+++ b/src/pcm/PcmDop.cxx
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2003-2014 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 "config.h"
+#include "PcmDop.hxx"
+#include "PcmBuffer.hxx"
+#include "AudioFormat.hxx"
+#include "util/ConstBuffer.hxx"
+
+#include <assert.h>
+
+constexpr
+static inline uint32_t
+pcm_two_dsd_to_dop_marker1(uint8_t a, uint8_t b)
+{
+	return 0xff050000 | (a << 8) | b;
+}
+
+constexpr
+static inline uint32_t
+pcm_two_dsd_to_dop_marker2(uint8_t a, uint8_t b)
+{
+	return 0xfffa0000 | (a << 8) | b;
+}
+
+ConstBuffer<uint32_t>
+pcm_dsd_to_dop(PcmBuffer &buffer, unsigned channels,
+	       ConstBuffer<uint8_t> _src)
+{
+	assert(audio_valid_channel_count(channels));
+	assert(!_src.IsNull());
+	assert(_src.size > 0);
+	assert(_src.size % channels == 0);
+
+	const unsigned num_src_samples = _src.size;
+	const unsigned num_src_frames = num_src_samples / channels;
+
+	/* this rounds down and discards the last odd frame; not
+	   elegant, but good enough for now */
+	const unsigned num_frames = num_src_frames / 2;
+	const unsigned num_samples = num_frames * channels;
+
+	uint32_t *const dest0 = (uint32_t *)buffer.GetT<uint32_t>(num_samples),
+		*dest = dest0;
+
+	auto src = _src.data;
+	for (unsigned i = num_frames / 2; i > 0; --i) {
+		for (unsigned c = channels; c > 0; --c) {
+			/* each 24 bit sample has 16 DSD sample bits
+			   plus the magic 0x05 marker */
+
+			*dest++ = pcm_two_dsd_to_dop_marker1(src[0], src[channels]);
+
+			/* seek the source pointer to the next
+			   channel */
+			++src;
+		}
+
+		/* skip the second byte of each channel, because we
+		   have already copied it */
+		src += channels;
+
+		for (unsigned c = channels; c > 0; --c) {
+			/* each 24 bit sample has 16 DSD sample bits
+			   plus the magic 0xfa marker */
+
+			*dest++ = pcm_two_dsd_to_dop_marker2(src[0], src[channels]);
+
+			/* seek the source pointer to the next
+			   channel */
+			++src;
+		}
+
+		/* skip the second byte of each channel, because we
+		   have already copied it */
+		src += channels;
+	}
+
+	return { dest0, num_samples };
+}
diff --git a/src/pcm/PcmDop.hxx b/src/pcm/PcmDop.hxx
new file mode 100644
index 000000000..03161c456
--- /dev/null
+++ b/src/pcm/PcmDop.hxx
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2003-2014 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_PCM_DOP_HXX
+#define MPD_PCM_DOP_HXX
+
+#include "check.h"
+
+#include <stdint.h>
+#include <stddef.h>
+
+class PcmBuffer;
+template<typename T> struct ConstBuffer;
+
+/**
+ * Pack DSD 1 bit samples into (padded) 24 bit PCM samples for
+ * playback over USB, according to the DoP standard:
+ * http://dsd-guide.com/dop-open-standard
+ */
+ConstBuffer<uint32_t>
+pcm_dsd_to_dop(PcmBuffer &buffer, unsigned channels,
+	       ConstBuffer<uint8_t> src);
+
+#endif
diff --git a/src/pcm/PcmDsdUsb.cxx b/src/pcm/PcmDsdUsb.cxx
deleted file mode 100644
index 9b854ad07..000000000
--- a/src/pcm/PcmDsdUsb.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2003-2014 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 "config.h"
-#include "PcmDsdUsb.hxx"
-#include "PcmBuffer.hxx"
-#include "AudioFormat.hxx"
-#include "util/ConstBuffer.hxx"
-
-#include <assert.h>
-
-constexpr
-static inline uint32_t
-pcm_two_dsd_to_usb_marker1(uint8_t a, uint8_t b)
-{
-	return 0xff050000 | (a << 8) | b;
-}
-
-constexpr
-static inline uint32_t
-pcm_two_dsd_to_usb_marker2(uint8_t a, uint8_t b)
-{
-	return 0xfffa0000 | (a << 8) | b;
-}
-
-ConstBuffer<uint32_t>
-pcm_dsd_to_usb(PcmBuffer &buffer, unsigned channels,
-	       ConstBuffer<uint8_t> _src)
-{
-	assert(audio_valid_channel_count(channels));
-	assert(!_src.IsNull());
-	assert(_src.size > 0);
-	assert(_src.size % channels == 0);
-
-	const unsigned num_src_samples = _src.size;
-	const unsigned num_src_frames = num_src_samples / channels;
-
-	/* this rounds down and discards the last odd frame; not
-	   elegant, but good enough for now */
-	const unsigned num_frames = num_src_frames / 2;
-	const unsigned num_samples = num_frames * channels;
-
-	uint32_t *const dest0 = (uint32_t *)buffer.GetT<uint32_t>(num_samples),
-		*dest = dest0;
-
-	auto src = _src.data;
-	for (unsigned i = num_frames / 2; i > 0; --i) {
-		for (unsigned c = channels; c > 0; --c) {
-			/* each 24 bit sample has 16 DSD sample bits
-			   plus the magic 0x05 marker */
-
-			*dest++ = pcm_two_dsd_to_usb_marker1(src[0], src[channels]);
-
-			/* seek the source pointer to the next
-			   channel */
-			++src;
-		}
-
-		/* skip the second byte of each channel, because we
-		   have already copied it */
-		src += channels;
-
-		for (unsigned c = channels; c > 0; --c) {
-			/* each 24 bit sample has 16 DSD sample bits
-			   plus the magic 0xfa marker */
-
-			*dest++ = pcm_two_dsd_to_usb_marker2(src[0], src[channels]);
-
-			/* seek the source pointer to the next
-			   channel */
-			++src;
-		}
-
-		/* skip the second byte of each channel, because we
-		   have already copied it */
-		src += channels;
-	}
-
-	return { dest0, num_samples };
-}
diff --git a/src/pcm/PcmDsdUsb.hxx b/src/pcm/PcmDsdUsb.hxx
deleted file mode 100644
index 5e05c009b..000000000
--- a/src/pcm/PcmDsdUsb.hxx
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2003-2014 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_PCM_DSD_USB_HXX
-#define MPD_PCM_DSD_USB_HXX
-
-#include "check.h"
-
-#include <stdint.h>
-#include <stddef.h>
-
-class PcmBuffer;
-template<typename T> struct ConstBuffer;
-
-/**
- * Pack DSD 1 bit samples into (padded) 24 bit PCM samples for
- * playback over USB, according to the proposed standard by 
- * dCS and others:
- * http://www.sonore.us/DoP_openStandard_1v1.pdf
- */
-ConstBuffer<uint32_t>
-pcm_dsd_to_usb(PcmBuffer &buffer, unsigned channels,
-	       ConstBuffer<uint8_t> src);
-
-#endif
diff --git a/src/pcm/PcmExport.cxx b/src/pcm/PcmExport.cxx
index 5f567f3c6..ef099ba71 100644
--- a/src/pcm/PcmExport.cxx
+++ b/src/pcm/PcmExport.cxx
@@ -19,7 +19,7 @@
 
 #include "config.h"
 #include "PcmExport.hxx"
-#include "PcmDsdUsb.hxx"
+#include "PcmDop.hxx"
 #include "PcmPack.hxx"
 #include "util/ByteReverse.hxx"
 #include "util/ConstBuffer.hxx"
@@ -28,15 +28,15 @@
 
 void
 PcmExport::Open(SampleFormat sample_format, unsigned _channels,
-		bool _dsd_usb, bool _shift8, bool _pack, bool _reverse_endian)
+		bool _dop, bool _shift8, bool _pack, bool _reverse_endian)
 {
 	assert(audio_valid_sample_format(sample_format));
-	assert(!_dsd_usb || audio_valid_channel_count(_channels));
+	assert(!_dop || audio_valid_channel_count(_channels));
 
 	channels = _channels;
-	dsd_usb = _dsd_usb && sample_format == SampleFormat::DSD;
-	if (dsd_usb)
-		/* after the conversion to DSD-over-USB, the DSD
+	dop = _dop && sample_format == SampleFormat::DSD;
+	if (dop)
+		/* after the conversion to DoP, the DSD
 		   samples are stuffed inside fake 24 bit samples */
 		sample_format = SampleFormat::S24_P32;
 
@@ -64,7 +64,7 @@ PcmExport::GetFrameSize(const AudioFormat &audio_format) const
 		/* packed 24 bit samples (3 bytes per sample) */
 		return audio_format.channels * 3;
 
-	if (dsd_usb)
+	if (dop)
 		/* the DSD-over-USB draft says that DSD 1-bit samples
 		   are enclosed within 24 bit samples, and MPD's
 		   representation of 24 bit is padded to 32 bit (4
@@ -77,8 +77,8 @@ PcmExport::GetFrameSize(const AudioFormat &audio_format) const
 ConstBuffer<void>
 PcmExport::Export(ConstBuffer<void> data)
 {
-	if (dsd_usb)
-		data = pcm_dsd_to_usb(dsd_buffer, channels,
+	if (dop)
+		data = pcm_dsd_to_dop(dop_buffer, channels,
 				      ConstBuffer<uint8_t>::FromVoid(data))
 			.ToVoid();
 
@@ -125,8 +125,8 @@ PcmExport::CalcSourceSize(size_t size) const
 		/* 32 bit to 24 bit conversion (4 to 3 bytes) */
 		size = (size / 3) * 4;
 
-	if (dsd_usb)
-		/* DSD over USB doubles the transport size */
+	if (dop)
+		/* DoP doubles the transport size */
 		size /= 2;
 
 	return size;
diff --git a/src/pcm/PcmExport.hxx b/src/pcm/PcmExport.hxx
index 8169dad7b..b99a35835 100644
--- a/src/pcm/PcmExport.hxx
+++ b/src/pcm/PcmExport.hxx
@@ -35,11 +35,11 @@ template<typename T> struct ConstBuffer;
 struct PcmExport {
 	/**
 	 * The buffer is used to convert DSD samples to the
-	 * DSD-over-USB format.
+	 * DoP format.
 	 *
-	 * @see #dsd_usb
+	 * @see #dop
 	 */
-	PcmBuffer dsd_buffer;
+	PcmBuffer dop_buffer;
 
 	/**
 	 * The buffer is used to pack samples, removing padding.
@@ -61,11 +61,11 @@ struct PcmExport {
 	uint8_t channels;
 
 	/**
-	 * Convert DSD to DSD-over-USB?  Input format must be
+	 * Convert DSD to DSD-over-PCM (DoP)?  Input format must be
 	 * SampleFormat::DSD and output format must be
 	 * SampleFormat::S24_P32.
 	 */
-	bool dsd_usb;
+	bool dop;
 
 	/**
 	 * Convert (padded) 24 bit samples to 32 bit by shifting 8
@@ -93,10 +93,10 @@ struct PcmExport {
 	 *
 	 * This function cannot fail.
 	 *
-	 * @param channels the number of channels; ignored unless dsd_usb is set
+	 * @param channels the number of channels; ignored unless dop is set
 	 */
 	void Open(SampleFormat sample_format, unsigned channels,
-		  bool dsd_usb, bool shift8, bool pack, bool reverse_endian);
+		  bool dop, bool shift8, bool pack, bool reverse_endian);
 
 	/**
 	 * Calculate the size of one output frame.
-- 
cgit v1.2.3