zoukankan      html  css  js  c++  java
  • DirectSound学习笔记(2):创建设备对象

    创建设备对象

    创建设备对象最简单的方式是使用 DirectSoundCreate8 函数。函数的第一个参数指定了与对象关联的设备的GUID。你能够通过枚举设备获取这个GUID,也可以传递以下GUID中的一个来指定一个默认设备。
    GUID 定义
    描述
    DSDEVID_DefaultPlayback
    默认系统音频设备。你也可以传入一个空指针来指定这个设备。默认设备是枚举到的“主要DirectSound 驱动”。
    DSDEVID_DefaultVoicePlayback
    默认声音通信设备。通常,这是一个辅助设备,如USB耳麦。
    如果没有列出任何设备,那么DirectSoundCreate8 的调用将会失败。
    如果在VXD 驱动下没有任何声音设备,或者声音设备正处于一个使用标准Win32波形音频函数的应用程序的控制下,函数则返回错误。你必须为这种调用失败做好准备,使你的应用程序能以无声的状态继续运行,或者提示用户关闭正在使用声音设备的应用程序。
    以下代码为默认设备创建了一个对象,并获得了IDirectSound8 接口:
    LPDIRECTSOUND8 lpds; 
    HRESULT hr 
    = DirectSoundCreate8(NULL, &lpds, NULL));
    注意:DirectSoundCreate8 不要求调用CoInitialize 或CoInitializeEx。如果你的应用程序使用DMOs,它必须在创建任何对象前显式初始化COM。

    如果你的应用程序采集声音,同时播放它们,你可以通过DirectSoundFullDuplexCreate8方便地创建播放和采集设备,以及播放和采集缓冲区。
    你也可以使用标准COM函数创建设备对象,如:
    1. 在你的应用程序开始的时候调用CoInitializeEx 来初始化COM。
    HRESULT hr = CoInitializeEx(NULL, 0);
    if (FAILED(hr))
    {
      ErrorHandler(hr);  
    // Add error-handling here.
    }
    2. 使用CocreateInstance IDirectSound8::Initialize方法创建设备对象,而不是DirectSoundCreate8 函数。
    LPDIRECTSOUND8 lpds; 
    hr 
    = CoCreateInstance(&CLSID_DirectSound8,
              NULL, 
              CLSCTX_INPROC_SERVER,
              IID_IDirectSound8,
              (LPVOID
    *&lpds);
    if (FAILED(hr))
    {
      ErrorHandler(hr);  
    // Add error-handling here.
    }
    CLSID_DirectSound8 DirectSound 驱动对象类的类标识符,IID_IDirectSound8 是接口标识符。Lpds 参数返回接口指针。
    3. 调用IDirectSound8::Initialize 方法关联设备和对象。这个方法与DirectSoundCreate8 使用的设备GUID参数相同。
    hr = lpds->Initialize(NULL);
    if (FAILED(hr))
    {
      ErrorHandler(hr);  
    // Add error-handling here.
    }
    4. 在你关闭应用程序之前,调用CoUninitialize 函数关闭COM库,如:
    CoUninitialize();
  • 相关阅读:
    Iphone开发-NSdata 与 NSString,Byte数组,UIImage 的相互转换
    Iphone访问WCF服务 之 ASIHTTPRequest
    TP6 实现上传文件
    页面自适应纯CSS,使用rem单位
    jQuery解决高度统一问题
    dedecms Ajax异步获取文章列表
    手机端页面自适应解决方案—rem布局
    mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
    修改PHP 上传文件大小限制
    WampServer下修改和重置MySQL密码
  • 原文地址:https://www.cnblogs.com/top5/p/1635040.html
Copyright © 2011-2022 走看看