From 8febc4102a93eb063361f61eecfe24e6573c2c48 Mon Sep 17 00:00:00 2001 From: Carlos Rafael Giani Date: Sun, 5 Feb 2023 18:05:15 +0100 Subject: [PATCH] audiosink: Add support for DSD data Code is partially based on the DSD of Robert Tiemann : https://gitlab.freedesktop.org/rtiemann/gstreamer/-/tree/dsd Part-of: --- .../gst-libs/gst/audio/gstaudiosink.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiosink.c b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiosink.c index d7b26f1d9d..c29cd81fb6 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiosink.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiosink.c @@ -55,6 +55,7 @@ #include #include +#include #include "gstaudiosink.h" #include "gstaudioutilsprivate.h" @@ -416,12 +417,18 @@ gst_audio_sink_ring_buffer_acquire (GstAudioRingBuffer * buf, buf->memory = g_malloc (buf->size); - if (buf->spec.type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW) { - gst_audio_format_info_fill_silence (buf->spec.info.finfo, buf->memory, - buf->size); - } else { - /* FIXME, non-raw formats get 0 as the empty sample */ - memset (buf->memory, 0, buf->size); + switch (buf->spec.type) { + case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: + gst_audio_format_info_fill_silence (buf->spec.info.finfo, buf->memory, + buf->size); + break; + case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD: + memset (buf->memory, GST_DSD_SILENCE_PATTERN_BYTE, buf->size); + break; + default: + /* FIXME, non-raw formats get 0 as the empty sample */ + memset (buf->memory, 0, buf->size); + break; }