WASAPI:选择专用输出的波形格式

2024-03-30

我正在尝试使用 WASAPI 打开带有输出设备的独占流。我在选择可接受的格式时遇到了困难,因为似乎没有关于给定设备接受哪些格式的提示。

就我而言,IAudioClient::GetMixFormat(),否则会返回设备的一种默认格式,返回一种不能在独占模式下使用的格式(IAudioClient::IsFormatSupported()回报AUDCLNT_E_UNSUPPORTED_FORMAT)。我不知道从那里该去哪里。波形格式参数的组合数量多得荒唐——我真的必须遍历每一个参数直到某些参数起作用吗?


嗯,我询问了 MSDN 论坛,他们给出了一个很好的答案。

您需要通过以下方式检查设备的默认设备格式IMMDevice::OpenPropertyStore(),随后IPropertyStore::GetValue(), not IAudioClient::GetMixFormat()。以下是检索可接受的 WAVEFORMATEX 结构的代码:

//CoInitialize/Enumerate devices

IPropertyStore* store = nullptr;

hr = device->OpenPropertyStore(STGM_READ, &store);

if (FAILED(hr)) {
    ExitProcess(1);
}

PROPVARIANT prop;

hr = store->GetValue(PKEY_AudioEngine_DeviceFormat, &prop);

if (FAILED(hr)) {
    ExitProcess(2);
}

hr = device->Activate (
    __uuidof(IAudioClient), 
    CLSCTX_ALL,
    NULL,
    (void**)&audioClient
);

device->Release();
device = nullptr;

if (FAILED(hr)) {
    ExitProcess(3);
}

hr = audioClient->IsFormatSupported (
    AUDCLNT_SHAREMODE_EXCLUSIVE,
    (PWAVEFORMATEX)prop.blob.pBlobData,
    NULL
);

if (FAILED(hr)) {
    ExitProcess(4);
}

hr的最终值为S_OK。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WASAPI:选择专用输出的波形格式 的相关文章

  • 在 C# 中转换 VbScript 函数(Right、Len、IsNumeric、CInt)

    同样 我在 VbScript 中得到了以下代码 您能建议一下 C 中的等效代码吗 Function GetNavID Title getNavID UCase Left Title InStr Title 1 End Function 我已
  • 如何从更高级别启动用户级别的 Exe

    我希望一个进程始终在用户级别运行 当它由以管理员级别运行的安装程序 自定义 而不是 msi 启动时 或者当用户登录时 环顾四周 我不确定这是否可能 最简单的方法是有 2 个进程 一种是普通用户 它启动提升 管理进程 然后管理进程可以使用 I
  • C# 锁(mylocker) 不起作用

    我有很多 Web 服务调用 异步 在回调中 我会将结果绘制到 Excel 中 我想同步绘图方法 所以我使用以下内容 但是 从我在 Visual Studio 中追踪到 每次 lock locker 都会成功 并且有许多线程运行clearco
  • 在单个 C# 泛型方法中返回可为 null 和 null?

    C 泛型方法是否可以返回对象类型或 Nullable 类型 例如 如果我有一个安全的索引访问器List我想返回一个值 稍后我可以使用以下任一方法检查该值 null or HasValue 目前我有以下两种方法 static T SafeGe
  • Java检测音频文件(mp3)

    我有这段代码可以读取 mp3 文件 import java io File import java io IOException import javax sound sampled AudioSystem import javax sou
  • MigraDoc 项目符号列表(漏洞)

    在我的解决方案中 我在 PDF 文件中使用项目符号列表 它看起来像这样 Solcellepaneler kr ver hverken autoriseret service eller tidskr vende vedligehold So
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • 使用 C# 和反射打印完整的对象图

    我有一个复杂的对象 class A int Field1 int field2 property ClassB ClassB property classC classC etc etc 我想使用反射打印完整的对象图 有什么好的代码吗 一种
  • 如何正确实现带有 close 方法的处置模式(CA1063)

    框架设计指南 第二版 第 327 页 说 考虑提供方法Close 除了Dispose 如果接近 是该领域的标准术语 这样做时 重要的是使 Close 实现与Dispose并考虑实施IDisposable Dispose方法明确 因此 按照提
  • 如何有效地左填充字节数组

    假设我有一个数组 LogoDataBy byte 0x00000008 0x00000000 0x41 0x00000001 0x42 0x00000002 0x43 0x00000003 0x44 0x00000004 0x31 0x00
  • 用于轻松动态反射的 C# 库

    是否有任何库 例如开源项目等 可以更轻松地使用复杂的反射 例如动态创建对象或类 检查实例等 Thanks 有一个LinFu http www codeproject com KB cs LinFuPart1 aspx可用的库除了反射之外还可
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • C++在子类中调用虚方法

    我有以下课程 class A protected A inner public virtual void doSomething 0 class B public A void doSomething if inner NULL inner
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • vs2010 c++ 通过debug查看指针内容

    我正在使用 Vs2010 c 处理 2D 数组 我从一维指针开始 并使用操作 如下 class CMatrix void clear public int nRows int nCols short MyMat CMatrix CMatri
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 如何在PropertyGrid中自定义绘制GridItem?

    我想以与所有者在 ListView 详细信息 和其他控件中绘制项目类似的方式在 PropertyGrid 中绘制属性值 如果将属性声明为 Color 类型 则其值将使用字符串描述旁边的颜色样本来绘制 如果属性是图像类型 则在字符串描述旁边绘
  • AllowUserToAddRows 不适用于 DataGridView 上的 List<> 数据源

    我有一个DataGridView与DataSource set to List
  • XSD、泛型和 C# 类的困境

    我有以下简单的 XSD 文件
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐

  • LR(0)、LL(0)、LALR(1) 等之间的关系?

    我真的很难理解以下之间的关系 LR 0 LL 0 LALR 1 SLR 1 LR 1 LL 1 我很确定 LALR 1 和 SLR 1 是 LR 1 的子集 但我不知道其他的 它们都是独家的吗 LL 0 是 LL 1 的子集吗 Thanks
  • 阻止应用程序通过 Cocoa API (LittleSnitch API) 访问网络?

    我正在使用 OS X 10 5 我正在寻找一种方法来检测应用程序是否尝试访问互联网 此时 如果应用程序与我将定义的一组规则匹配 我想阻止该应用程序 有的是ipfw我意识到可以使用 Unix 命令来阻止对某些端口的访问 但这会影响所有应用程序
  • Ansible add_host 不起作用,它正在跳过主机

    我正在使用 Ansible 创建一个新的 EC2 实例并尝试在其上安装一些软件包 问题是我正在向主机组添加新主机 但我在另一个游戏中看不到该主机组 当到达 配置 EC2 实例 时 它会显示 PLAY 配置EC2实例 跳过 没有匹配的主机 这
  • Python 中的多行日志记录

    我正在使用 Python 3 3 5 和日志记录模块将信息记录到本地文件 来自不同的线程 在某些情况下 我想输出一些附加信息 但不知道这些信息到底是什么 例如 它可能是一行文本或一个字典 我想做的是在写入日志记录后将此附加信息添加到我的日志
  • 远程 Pushurl 不起作用

    我在我的项目中使用 GIT 现在我想将它与github集成 所以我创建了一个远程 git remote add github https email protected cdn cgi l email protection WouterJ
  • HTML5 Canvas:更改图像颜色

    我有一个图像 灰度形式 我想更改其颜色 特定于用户 由于更改灰度图像的颜色非常困难 因此我提出了一种方法 图像分为两部分 一种是白色图像 其次 具有灰度的半透明图像 现在 我将两个图像放在彼此的顶部 白色图像在下面 灰度图像在上面 这样当我
  • 创建自定义复合按钮栏

    我必须在 Android 中创建一个自定义复合按钮栏控件 如下所示here http www coated com wp content uploads 2009 11 slacker radio android application j
  • Mockito - 没有为其中一个测试用例注入模拟

    我有一个 jsf spring 应用程序并使用mockito对于我的单元测试 我不断得到NullPointerException当我运行我的junit测试在iEmployeeService嘲笑 没有Exception for iSecuri
  • python:numpy 列表到数组和 vstack

    from scipy io wavfile import read filepath glob glob wav rates datas for fp in filepath rate data read fp rates append r
  • Nodejs CSV 数据导出系统供用户使用

    我需要允许用户以 csv 格式导出数据 我用nodejs写了应用程序 用户的导出数据可能非常庞大 所以我想知道如何在nodejs中处理这种情况 我应该使用nodejs的process nexttick还是子进程api 还有什么好的模块可用于
  • 当在静态上下文中使用实例方法时,为什么 javac 会发出“错误:类中的方法无法应用于给定类型”?

    考虑以下 无效 Java 程序 public class Test public static void main String args int ints 1 2 3 4 5 print ints public void print in
  • 更新 iOS 分发证书的正确方法

    我的分发证书以及我的所有配置文件将于 6 月 7 日到期 如何正确续订 我现在应该撤销它并申请新的吗 如果我这样做 我所有的实时应用程序都会被删除吗 您的实时应用程序不会被删除 应用商店中的任何内容都不会发生任何变化 一旦它们正式过期 唯一
  • 如何使用递归对数组的偶数和奇数求和

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要帮助创建一个递归函数 该函数接受数字列表 数组并返回元组或类似格式 a b where a是偶数之和并且b是奇数之和 例如 inpu
  • Java Swing:使用相应的键盘按钮时显示按下的按钮

    我正在使用 Swing 用 Ja va 编写一个程序 并使用包含箭头键的 GUI 方向键与键盘上的方向键相对应 当我按下键盘上的向上箭头键时 我希望 GUI 上的向上箭头键显示为被按下 在我释放箭头键之前 它应该显示它仍在被按下 并且当释放
  • 多条路线使用同一个控制器?

    有没有办法编写以下路由 这样您就不必每次都指定相同的控制器 get jobs gt pages jobs get contact gt pages contact get terms gt pages terms get privacy g
  • 如何从 GitHub Actions 中的重定向输出中删除所有无关输出?

    我有一个使用 Terraform 进行部署的 GitHub Actions 工作流程 当 Terraform 完成后 我想获取 Terraform 输出并将其发送到工作流程中的下一个作业 以便可以提取和使用各个部分 具体来说 我的 Terr
  • 如何让 XML 注释出现在不同的项目 (dll) 中?

  • ClusterManager 重新绘制 Google 地图 v2 实用程序的标记

    我正在发出服务器请求 当我收到服务器的响应时 我正在 UI 线程上执行ClusterManager addItem 但这个项目没有在地图上绘制 只有当我进行缩放更新 时 新添加的项目才开始出现 我也尝试调试渲染器 但是onBeforeClu
  • 从 Android 中的 DatePickerDialog 中删除标题

    我想将 DatePickerDialog 限制为明天的最小值 当我输入下面显示的代码时 限制就起作用了 但是 包含日期的标题文本看起来像标题 我怎样才能解决这个问题 这是我的代码 Calendar tempDate Calendar get
  • WASAPI:选择专用输出的波形格式

    我正在尝试使用 WASAPI 打开带有输出设备的独占流 我在选择可接受的格式时遇到了困难 因为似乎没有关于给定设备接受哪些格式的提示 就我而言 IAudioClient GetMixFormat 否则会返回设备的一种默认格式 返回一种不能在