DSD64 的 WAVEFORMATEX 参数

问题描述 投票:0回答:1

Windows WASAPI 不提供列出音频设备所有支持的音频格式的功能。相反,必须提供具有所需格式参数的

WAVEFORMATEX
结构,并使用 IsFormatSupported 来检查是否支持该特定格式。支持 IEC61937 DST/DSD,但我不知道如何设置格式参数,例如DSD64,它也从不提供最接近的匹配格式。这些参数有什么问题吗?

WAVEFORMATEXTENSIBLE_IEC61937 format;
memset(&format, 0, sizeof(WAVEFORMATEXTENSIBLE_IEC61937));
format.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
format.FormatExt.Format.nChannels = 2;
format.FormatExt.Format.nSamplesPerSec = 44100 * 64;
format.FormatExt.Format.wBitsPerSample = 1;
format.FormatExt.Format.nBlockAlign = format.FormatExt.Format.nChannels * 64;
format.FormatExt.Format.nAvgBytesPerSec = format.FormatExt.Format.nChannels * format.FormatExt.Format.nSamplesPerSec / 8;
format.FormatExt.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE_IEC61937) - sizeof(WAVEFORMATEX);
format.FormatExt.Samples.wValidBitsPerSample = 1;
format.FormatExt.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
format.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DST;
format.dwEncodedSamplesPerSec = 0;
format.dwEncodedChannelCount = 2;
format.dwAverageBytesPerSec = 0;
windows audio wasapi audioformat
1个回答
0
投票

我认为

dwEncodedSamplesPerSec
应该是
44100

IEC-61937 格式文档 说:

dwEncodedSamplesPerSec
dwEncodedChannelCount
dwAverageBytesPerSec
WAVEFORMATEXTENSIBLE_IEC61937
成员描述了解码后音频流的采样率、通道数和比特率(以字节为单位)。

ksmedia.h
,头文件,说了同样的事情,但补充说字节率“可以为零”。

© www.soinside.com 2019 - 2024. All rights reserved.