• 大小: 63KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: audio  wasapi  spdif  ac3  dts  

资源简介

在Win7/Win8操作系统下,采用最新UAA架构的Wasapi接口, 实现[缺省音频设备]的[独占输出模式],避免信号音质损失, 缩短信号放送延时,支持SPDIF光纤直接输出AC3和DTS信号;

资源截图

代码片段和文件信息

#ifndef __wasapi_outs_cpp__
#define __wasapi_outs_cpp__
//-----------------------------------------------------------------------------
#include “wasapi_outs.h“
//-----------------------------------------------------------------------------
const GUID CID_MMDeviceEnumerator  = __uuidof(MMDeviceEnumerator);
const GUID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
const GUID IID_IAudioClient        = __uuidof(IAudioClient);
const GUID IID_IAudioRenderClient  = __uuidof(IAudioRenderClient);
//-----------------------------------------------------------------------------
static DWORD __stdcall my_thread(PVOID argp)
{
    wasapi_outs_zone *zone = (wasapi_outs_zone *)argp;

    DWORD  task_number = 0;
    HANDLE task_handle = 0;

    HANDLE hevents[2];

    UINT32 buffer_size = 0;
    PBYTE  buffer_addr = 0;

    hevents[0] = zone->hevent_cancel;
    hevents[1] = zone->hevent_buffer;

    // ready //////////////////////////////////////////////////////////////////
    ResetEvent(zone->hevent_buffer);

    zone->wasapi_client->GetBufferSize(&buffer_size);

    // start //////////////////////////////////////////////////////////////////
    zone->wasapi_render->GetBuffer(buffer_size &buffer_addr);

    zone->callback_func(buffer_addr buffer_size << 2 0);

    zone->wasapi_render->ReleaseBuffer(buffer_size 0);

    task_handle = AvSetMmThreadCharacteristicsW(L“Pro Audio“ &task_number);

    zone->wasapi_client->Start();

    // loops //////////////////////////////////////////////////////////////////
    while(1)
    {
        if(WaitForMultipleobjects(2 hevents FALSE -1) == WAIT_object_0)
            break;

        ResetEvent(zone->hevent_buffer);

        zone->wasapi_render->GetBuffer(buffer_size &buffer_addr);

        zone->callback_func(buffer_addr buffer_size << 2 0);

        zone->wasapi_render->ReleaseBuffer(buffer_size 0);
    };

    // finis //////////////////////////////////////////////////////////////////
    WaitForSingleobject(zone->hevent_buffer -1);

    zone->wasapi_render->GetBuffer(buffer_size &buffer_addr);

    zone->callback_func(buffer_addr buffer_size << 2 1);

    zone->wasapi_render->ReleaseBuffer(buffer_size 0);

    // finis //////////////////////////////////////////////////////////////////
    WaitForSingleobject(zone->hevent_buffer -1);

    zone->wasapi_render->GetBuffer(buffer_size &buffer_addr);

    zone->callback_func(buffer_addr buffer_size << 2 2);

    zone->wasapi_render->ReleaseBuffer(buffer_size 0);

    // clean //////////////////////////////////////////////////////////////////
    zone->wasapi_client->Stop();

    if(task_handle != NULL)
    {
        AvRevertMmThreadCharacteristics(task_handle);
    }

    return 0;
}
//-----------------------------------------------------------------------------
int __stdcall wasapi_outs_create(wasapi_outs_zone **zone)
{
    if(zone != NULL)
    {
        if

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9216  2013-04-13 11:06  module.wasapi_outs.vs8\Release\wasapi_outs.dll

     文件       1928  2013-04-13 11:06  module.wasapi_outs.vs8\Release\wasapi_outs.exp

     文件       3452  2013-04-13 11:06  module.wasapi_outs.vs8\Release\wasapi_outs.lib

     文件     248832  2013-04-13 11:06  module.wasapi_outs.vs8\Release\wasapi_outs.pdb

     文件       9544  2013-04-13 11:25  module.wasapi_outs.vs8\wasapi_outs\wasapi_outs.cpp

     文件        206  2013-04-12 15:46  module.wasapi_outs.vs8\wasapi_outs\wasapi_outs.def

     文件       2229  2013-04-13 10:45  module.wasapi_outs.vs8\wasapi_outs\wasapi_outs.h

     文件       4285  2013-04-12 13:06  module.wasapi_outs.vs8\wasapi_outs\wasapi_outs.vcproj

     文件       1385  2013-04-13 15:13  module.wasapi_outs.vs8\wasapi_outs\wasapi_outs.vcproj.mody-PC.mody.user

     文件        899  2013-04-03 11:19  module.wasapi_outs.vs8\wasapi_outs.sln

    ..A..H.     17408  2013-04-13 15:13  module.wasapi_outs.vs8\wasapi_outs.suo

     目录          0  2013-04-13 11:06  module.wasapi_outs.vs8\Release

     目录          0  2013-04-14 12:52  module.wasapi_outs.vs8\wasapi_outs

     目录          0  2013-04-14 12:52  module.wasapi_outs.vs8

----------- ---------  ---------- -----  ----

               299384                    14


评论

共有 条评论