summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>2017-08-15 12:24:12 -0500
committerArun Raghavan <arun@arunraghavan.net>2018-05-04 22:40:19 +0530
commitea05b348aefe0ff6a8f28011150dcddb1c026863 (patch)
treea1f67bf7e1d6796427915bef50455865e96d0b06
parentf1f7196a5754596ad2eccb51044a0b7f70707cb9 (diff)
downloadpulseaudio-ea05b348aefe0ff6a8f28011150dcddb1c026863.tar.gz
format: Add support for Dolby TrueHD and DTS-HD HBR passthrough
Add definitions and fixups for channel count Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
-rw-r--r--src/pulse/format.c2
-rw-r--r--src/pulse/format.h8
-rw-r--r--src/pulsecore/core-format.c6
3 files changed, 15 insertions, 1 deletions
diff --git a/src/pulse/format.c b/src/pulse/format.c
index 8474978d5..07b4420e7 100644
--- a/src/pulse/format.c
+++ b/src/pulse/format.c
@@ -47,6 +47,8 @@ static const char* const _encoding_str_table[]= {
[PA_ENCODING_MPEG_IEC61937] = "mpeg-iec61937",
[PA_ENCODING_DTS_IEC61937] = "dts-iec61937",
[PA_ENCODING_MPEG2_AAC_IEC61937] = "mpeg2-aac-iec61937",
+ [PA_ENCODING_TRUEHD_IEC61937] = "truehd-iec61937",
+ [PA_ENCODING_DTSHD_IEC61937] = "dtshd-iec61937",
[PA_ENCODING_ANY] = "any",
};
diff --git a/src/pulse/format.h b/src/pulse/format.h
index 2143bb514..584032fb6 100644
--- a/src/pulse/format.h
+++ b/src/pulse/format.h
@@ -56,6 +56,12 @@ typedef enum pa_encoding {
PA_ENCODING_MPEG2_AAC_IEC61937,
/**< MPEG-2 AAC data encapsulated in IEC 61937 header/padding. \since 4.0 */
+ PA_ENCODING_TRUEHD_IEC61937,
+ /**< Dolby TrueHD data encapsulated in IEC 61937 header/padding. \since 13.0 */
+
+ PA_ENCODING_DTSHD_IEC61937,
+ /**< DTS-HD Master Audio encapsulated in IEC 61937 header/padding. \since 13.0 */
+
PA_ENCODING_MAX,
/**< Valid encoding types must be less than this value */
@@ -71,6 +77,8 @@ typedef enum pa_encoding {
#define PA_ENCODING_MPEG_IEC61937 PA_ENCODING_MPEG_IEC61937
#define PA_ENCODING_DTS_IEC61937 PA_ENCODING_DTS_IEC61937
#define PA_ENCODING_MPEG2_AAC_IEC61937 PA_ENCODING_MPEG2_AAC_IEC61937
+#define PA_ENCODING_TRUEHD_IEC61937 PA_ENCODING_TRUEHD_IEC61937
+#define PA_ENCODING_DTSHD_IEC61937 PA_ENCODING_DTSHD_IEC61937
#define PA_ENCODING_MAX PA_ENCODING_MAX
#define PA_ENCODING_INVALID PA_ENCODING_INVALID
/** \endcond */
diff --git a/src/pulsecore/core-format.c b/src/pulsecore/core-format.c
index 9d3c8d601..c3db2678a 100644
--- a/src/pulsecore/core-format.c
+++ b/src/pulsecore/core-format.c
@@ -226,7 +226,11 @@ int pa_format_info_to_sample_spec_fake(const pa_format_info *f, pa_sample_spec *
* formats, this function should return a non-zero values for these. */
ss->format = PA_SAMPLE_S16LE;
- ss->channels = 2;
+ if ((f->encoding == PA_ENCODING_TRUEHD_IEC61937) ||
+ (f->encoding == PA_ENCODING_DTSHD_IEC61937))
+ ss->channels = 8;
+ else
+ ss->channels = 2;
if (map)
pa_channel_map_init_stereo(map);