From 7341cc401bd27a07022228e96c37742c1c11ab6b Mon Sep 17 00:00:00 2001 From: Carlos Rafael Giani Date: Wed, 18 Jan 2023 15:33:02 +0100 Subject: [PATCH] pw-cat: Add support for AC3, EAC3, TrueHD, DTS, MPEG-H --- src/tools/pw-cat.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index 4e7e6954a..dab36b69b 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -412,6 +412,42 @@ static int av_codec_params_to_audio_info(struct data *data, AVCodecParameters *c info->info.amr.channels = data->channels; info->info.amr.band_mode = SPA_AUDIO_AMR_BAND_MODE_WB; break; + case AV_CODEC_ID_AC3: + info->media_subtype = SPA_MEDIA_SUBTYPE_ac3; + info->info.ac3.rate = data->rate; + info->info.ac3.channels = data->channels; + break; + case AV_CODEC_ID_EAC3: + info->media_subtype = SPA_MEDIA_SUBTYPE_eac3; + info->info.eac3.rate = data->rate; + info->info.eac3.channels = data->channels; + break; + case AV_CODEC_ID_TRUEHD: + info->media_subtype = SPA_MEDIA_SUBTYPE_truehd; + info->info.truehd.rate = data->rate; + info->info.truehd.channels = data->channels; + break; + case AV_CODEC_ID_DTS: + info->media_subtype = SPA_MEDIA_SUBTYPE_dts; + info->info.dts.rate = data->rate; + info->info.dts.channels = data->channels; + switch (codec_params->profile) { + case FF_PROFILE_DTS_HD_MA: + info->info.dts.ext_type = SPA_AUDIO_DTS_EXT_HD_MA; + break; + case FF_PROFILE_DTS_HD_HRA: + info->info.dts.ext_type = SPA_AUDIO_DTS_EXT_HD_HRA; + break; + default: + info->info.dts.ext_type = SPA_AUDIO_DTS_EXT_NONE; + break; + } + break; + case AV_CODEC_ID_MPEGH_3D_AUDIO: + info->media_subtype = SPA_MEDIA_SUBTYPE_mpegh; + info->info.mpegh.rate = data->rate; + info->info.mpegh.channels = data->channels; + break; default: fprintf(stderr, "Unsupported encoded media subtype\n"); return -EINVAL;