aboutsummaryrefslogtreecommitdiff
path: root/src/audio_format.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_format.h')
-rw-r--r--src/audio_format.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/audio_format.h b/src/audio_format.h
index 4f7dbfb1..2c86b70b 100644
--- a/src/audio_format.h
+++ b/src/audio_format.h
@@ -49,6 +49,18 @@ enum sample_format {
* range is -1.0f to +1.0f.
*/
SAMPLE_FORMAT_FLOAT,
+
+ /**
+ * Direct Stream Digital. 1-bit samples; each frame has one
+ * byte (8 samples) per channel.
+ */
+ SAMPLE_FORMAT_DSD,
+
+ /**
+ * Same as #SAMPLE_FORMAT_DSD, but the least significant bit
+ * comes first.
+ */
+ SAMPLE_FORMAT_DSD_LSBFIRST,
};
static const unsigned MAX_CHANNELS = 8;
@@ -175,6 +187,8 @@ audio_valid_sample_format(enum sample_format format)
case SAMPLE_FORMAT_S24_P32:
case SAMPLE_FORMAT_S32:
case SAMPLE_FORMAT_FLOAT:
+ case SAMPLE_FORMAT_DSD:
+ case SAMPLE_FORMAT_DSD_LSBFIRST:
return true;
case SAMPLE_FORMAT_UNDEFINED:
@@ -251,6 +265,11 @@ sample_format_size(enum sample_format format)
case SAMPLE_FORMAT_FLOAT:
return 4;
+ case SAMPLE_FORMAT_DSD:
+ case SAMPLE_FORMAT_DSD_LSBFIRST:
+ /* each frame has 8 samples per channel */
+ return 1;
+
case SAMPLE_FORMAT_UNDEFINED:
return 0;
}