亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pa_win_ds.c

?? 一個開源的sip源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
                deviceInfo->defaultLowInputLatency = 0.;    /** @todo IMPLEMENT ME */                deviceInfo->defaultLowOutputLatency = 0.;   /** @todo IMPLEMENT ME */                deviceInfo->defaultHighInputLatency = 0.;   /** @todo IMPLEMENT ME */                deviceInfo->defaultHighOutputLatency = 0.;  /** @todo IMPLEMENT ME *//*  constants from a WINE patch by Francois Gouget, see:    http://www.winehq.com/hypermail/wine-patches/2003/01/0290.html    ---    Date: Fri, 14 May 2004 10:38:12 +0200 (CEST)    From: Francois Gouget <fgouget@ ... .fr>    To: Ross Bencina <rbencina@ ... .au>    Subject: Re: Permission to use wine 48/96 wave patch in BSD licensed library    [snip]    I give you permission to use the patch below under the BSD license.    http://www.winehq.com/hypermail/wine-patches/2003/01/0290.html    [snip]*/#ifndef WAVE_FORMAT_48M08#define WAVE_FORMAT_48M08      0x00001000    /* 48     kHz, Mono,   8-bit  */#define WAVE_FORMAT_48S08      0x00002000    /* 48     kHz, Stereo, 8-bit  */#define WAVE_FORMAT_48M16      0x00004000    /* 48     kHz, Mono,   16-bit */#define WAVE_FORMAT_48S16      0x00008000    /* 48     kHz, Stereo, 16-bit */#define WAVE_FORMAT_96M08      0x00010000    /* 96     kHz, Mono,   8-bit  */#define WAVE_FORMAT_96S08      0x00020000    /* 96     kHz, Stereo, 8-bit  */#define WAVE_FORMAT_96M16      0x00040000    /* 96     kHz, Mono,   16-bit */#define WAVE_FORMAT_96S16      0x00080000    /* 96     kHz, Stereo, 16-bit */#endif                /* defaultSampleRate */                if( caps.dwChannels == 2 )                {                    if( caps.dwFormats & WAVE_FORMAT_4S16 )                        deviceInfo->defaultSampleRate = 44100.0;                    else if( caps.dwFormats & WAVE_FORMAT_48S16 )                        deviceInfo->defaultSampleRate = 48000.0;                    else if( caps.dwFormats & WAVE_FORMAT_2S16 )                        deviceInfo->defaultSampleRate = 22050.0;                    else if( caps.dwFormats & WAVE_FORMAT_1S16 )                        deviceInfo->defaultSampleRate = 11025.0;                    else if( caps.dwFormats & WAVE_FORMAT_96S16 )                        deviceInfo->defaultSampleRate = 96000.0;                    else                        deviceInfo->defaultSampleRate = 0.;                }                else if( caps.dwChannels == 1 )                {                    if( caps.dwFormats & WAVE_FORMAT_4M16 )                        deviceInfo->defaultSampleRate = 44100.0;                    else if( caps.dwFormats & WAVE_FORMAT_48M16 )                        deviceInfo->defaultSampleRate = 48000.0;                    else if( caps.dwFormats & WAVE_FORMAT_2M16 )                        deviceInfo->defaultSampleRate = 22050.0;                    else if( caps.dwFormats & WAVE_FORMAT_1M16 )                        deviceInfo->defaultSampleRate = 11025.0;                    else if( caps.dwFormats & WAVE_FORMAT_96M16 )                        deviceInfo->defaultSampleRate = 96000.0;                    else                        deviceInfo->defaultSampleRate = 0.;                }                else deviceInfo->defaultSampleRate = 0.;            }        }                IDirectSoundCapture_Release( lpDirectSoundCapture );    }    if( deviceOK )    {        deviceInfo->name = name;        if( lpGUID == NULL )            hostApi->info.defaultInputDevice = hostApi->info.deviceCount;        hostApi->info.deviceCount++;    }    return result;}/***********************************************************************************/PaError PaWinDs_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ){    PaError result = paNoError;    int i, deviceCount;    PaWinDsHostApiRepresentation *winDsHostApi;    DSDeviceNameAndGUIDVector inputNamesAndGUIDs, outputNamesAndGUIDs;    PaDeviceInfo *deviceInfoArray;    HRESULT hr = CoInitialize(NULL);        /** @todo: should uninitialize too */    if( FAILED(hr) ){        return paUnanticipatedHostError;    }                /* initialise guid vectors so they can be safely deleted on error */    inputNamesAndGUIDs.items = NULL;    outputNamesAndGUIDs.items = NULL;    PaWinDs_InitializeDSoundEntryPoints();    winDsHostApi = (PaWinDsHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaWinDsHostApiRepresentation) );    if( !winDsHostApi )    {        result = paInsufficientMemory;        goto error;    }    winDsHostApi->allocations = PaUtil_CreateAllocationGroup();    if( !winDsHostApi->allocations )    {        result = paInsufficientMemory;        goto error;    }    *hostApi = &winDsHostApi->inheritedHostApiRep;    (*hostApi)->info.structVersion = 1;    (*hostApi)->info.type = paDirectSound;    (*hostApi)->info.name = "Windows DirectSound";        (*hostApi)->info.deviceCount = 0;    (*hostApi)->info.defaultInputDevice = paNoDevice;    (*hostApi)->info.defaultOutputDevice = paNoDevice;    /* DSound - enumerate devices to count them and to gather their GUIDs */    result = InitializeDSDeviceNameAndGUIDVector( &inputNamesAndGUIDs, winDsHostApi->allocations );    if( result != paNoError )        goto error;    result = InitializeDSDeviceNameAndGUIDVector( &outputNamesAndGUIDs, winDsHostApi->allocations );    if( result != paNoError )        goto error;    paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerate( (LPDSENUMCALLBACK)CollectGUIDsProc, (void *)&inputNamesAndGUIDs );    paWinDsDSoundEntryPoints.DirectSoundEnumerate( (LPDSENUMCALLBACK)CollectGUIDsProc, (void *)&outputNamesAndGUIDs );    if( inputNamesAndGUIDs.enumerationError != paNoError )    {        result = inputNamesAndGUIDs.enumerationError;        goto error;    }    if( outputNamesAndGUIDs.enumerationError != paNoError )    {        result = outputNamesAndGUIDs.enumerationError;        goto error;    }    deviceCount = inputNamesAndGUIDs.count + outputNamesAndGUIDs.count;    if( deviceCount > 0 )    {        /* allocate array for pointers to PaDeviceInfo structs */        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(                winDsHostApi->allocations, sizeof(PaDeviceInfo*) * deviceCount );        if( !(*hostApi)->deviceInfos )        {            result = paInsufficientMemory;            goto error;        }        /* allocate all PaDeviceInfo structs in a contiguous block */        deviceInfoArray = (PaDeviceInfo*)PaUtil_GroupAllocateMemory(                winDsHostApi->allocations, sizeof(PaDeviceInfo) * deviceCount );        if( !deviceInfoArray )        {            result = paInsufficientMemory;            goto error;        }        /* allocate all DSound specific info structs in a contiguous block */        winDsHostApi->winDsDeviceInfos = (PaWinDsDeviceInfo*)PaUtil_GroupAllocateMemory(                winDsHostApi->allocations, sizeof(PaWinDsDeviceInfo) * deviceCount );        if( !winDsHostApi->winDsDeviceInfos )        {            result = paInsufficientMemory;            goto error;        }        for( i=0; i < deviceCount; ++i )        {            PaDeviceInfo *deviceInfo = &deviceInfoArray[i];            deviceInfo->structVersion = 2;            deviceInfo->hostApi = hostApiIndex;            deviceInfo->name = 0;            (*hostApi)->deviceInfos[i] = deviceInfo;        }        for( i=0; i< inputNamesAndGUIDs.count; ++i )        {            result = AddInputDeviceInfoFromDirectSoundCapture( winDsHostApi,                    inputNamesAndGUIDs.items[i].name,                    inputNamesAndGUIDs.items[i].lpGUID );            if( result != paNoError )                goto error;        }        for( i=0; i< outputNamesAndGUIDs.count; ++i )        {            result = AddOutputDeviceInfoFromDirectSound( winDsHostApi,                    outputNamesAndGUIDs.items[i].name,                    outputNamesAndGUIDs.items[i].lpGUID );            if( result != paNoError )                goto error;        }    }        result = TerminateDSDeviceNameAndGUIDVector( &inputNamesAndGUIDs );    if( result != paNoError )        goto error;    result = TerminateDSDeviceNameAndGUIDVector( &outputNamesAndGUIDs );    if( result != paNoError )        goto error;        (*hostApi)->Terminate = Terminate;    (*hostApi)->OpenStream = OpenStream;    (*hostApi)->IsFormatSupported = IsFormatSupported;    PaUtil_InitializeStreamInterface( &winDsHostApi->callbackStreamInterface, CloseStream, StartStream,                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,                                      GetStreamTime, GetStreamCpuLoad,                                      PaUtil_DummyRead, PaUtil_DummyWrite,                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );    PaUtil_InitializeStreamInterface( &winDsHostApi->blockingStreamInterface, CloseStream, StartStream,                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,                                      GetStreamTime, PaUtil_DummyGetCpuLoad,                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );    return result;error:    if( winDsHostApi )    {        if( winDsHostApi->allocations )        {            PaUtil_FreeAllAllocations( winDsHostApi->allocations );            PaUtil_DestroyAllocationGroup( winDsHostApi->allocations );        }                        PaUtil_FreeMemory( winDsHostApi );    }    TerminateDSDeviceNameAndGUIDVector( &inputNamesAndGUIDs );    TerminateDSDeviceNameAndGUIDVector( &outputNamesAndGUIDs );    return result;}/***********************************************************************************/static void Terminate( struct PaUtilHostApiRepresentation *hostApi ){    PaWinDsHostApiRepresentation *winDsHostApi = (PaWinDsHostApiRepresentation*)hostApi;    /*        IMPLEMENT ME:            - clean up any resources not handled by the allocation group    */    if( winDsHostApi->allocations )    {        PaUtil_FreeAllAllocations( winDsHostApi->allocations );        PaUtil_DestroyAllocationGroup( winDsHostApi->allocations );    }    PaUtil_FreeMemory( winDsHostApi );    PaWinDs_TerminateDSoundEntryPoints();    CoUninitialize();}/* Set minimal latency based on whether NT or Win95. * NT has higher latency. */static int PaWinDS_GetMinSystemLatency( void ){    int minLatencyMsec;    /* Set minimal latency based on whether NT or other OS.     * NT has higher latency.     */    OSVERSIONINFO osvi;	osvi.dwOSVersionInfoSize = sizeof( osvi );	GetVersionEx( &osvi );    DBUG(("PA - PlatformId = 0x%x\n", osvi.dwPlatformId ));    DBUG(("PA - MajorVersion = 0x%x\n", osvi.dwMajorVersion ));    DBUG(("PA - MinorVersion = 0x%x\n", osvi.dwMinorVersion ));    /* Check for NT */	if( (osvi.dwMajorVersion == 4) && (osvi.dwPlatformId == 2) )	{		minLatencyMsec = PA_WIN_NT_LATENCY;	}	else if(osvi.dwMajorVersion >= 5)	{		minLatencyMsec = PA_WIN_WDM_LATENCY;	}	else	{		minLatencyMsec = PA_WIN_9X_LATENCY;	}    return minLatencyMsec;}/***********************************************************************************/static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,                                  const PaStreamParameters *inputParameters,                                  const PaStreamParameters *outputParameters,                                  double sampleRate ){    int inputChannelCount, outputChannelCount;    PaSampleFormat inputSampleFormat, outputSampleFormat;        if( inputParameters )    {        inputChannelCount = inputParameters->channelCount;        inputSampleFormat = inputParameters->sampleFormat;        /* unless alternate device specification is supported, reject the use of            paUseHostApiSpecificDeviceSpecification */        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )            return paInvalidDevice;        /* check that input device can support inputChannelCount */        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )            return paInvalidChannelCount;        /* validate inputStreamInfo */        if( inputParameters->hostApiSpecificStreamInfo )            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美欧美欧美| 免费国产亚洲视频| 欧美a一区二区| 欧美日韩亚洲另类| 亚洲黄色av一区| 欧美中文字幕亚洲一区二区va在线| 日韩高清不卡一区| 欧美美女视频在线观看| 精品久久久久久久久久久久久久久 | 日本vs亚洲vs韩国一区三区二区 | 色婷婷av一区二区| 裸体健美xxxx欧美裸体表演| 欧美人体做爰大胆视频| 国产精品网站在线观看| 亚洲少妇中出一区| 中文字幕在线观看一区二区| 国产精品传媒在线| 成人国产视频在线观看| 91影视在线播放| 国产成人免费视频网站高清观看视频| 成人国产视频在线观看| 欧美日本韩国一区二区三区视频| 一本大道久久a久久综合婷婷| 成人午夜又粗又硬又大| 欧美在线视频日韩| 久草热8精品视频在线观看| 国产99久久久精品| caoporn国产一区二区| 91精品一区二区三区在线观看| 亚洲日本韩国一区| 欧美猛男男办公室激情| 久久精品国产99国产精品| 国产偷国产偷亚洲高清人白洁| 欧美大片在线观看一区二区| 久久午夜国产精品| 色婷婷综合五月| 韩国视频一区二区| 国产日韩欧美综合一区| 色吧成人激情小说| 视频一区二区三区中文字幕| 国产99精品国产| 日韩精品一区二区在线观看| 国产在线看一区| 精品国产免费一区二区三区四区 | 国产精品丝袜黑色高跟| 成人国产电影网| 视频在线观看国产精品| 欧美一区二区在线看| 日日夜夜免费精品视频| 欧美性大战久久| 看电影不卡的网站| 91女厕偷拍女厕偷拍高清| 国产精品一品二品| 美女精品一区二区| 亚洲一区成人在线| 亚洲精品成a人| 麻豆久久久久久久| 国产毛片精品视频| 亚洲欧美日韩在线不卡| 91在线观看地址| 麻豆国产精品777777在线| 日本一区二区三区国色天香| 日韩精品中文字幕一区| 精品少妇一区二区三区| 欧美日韩激情一区| 亚欧色一区w666天堂| 成人黄色777网| 亚洲天天做日日做天天谢日日欢| 成人久久视频在线观看| 亚洲欧美国产三级| 在线视频观看一区| 免费久久精品视频| 欧美一区2区视频在线观看| 国产剧情一区二区| 中文字幕一区在线观看视频| 高清在线不卡av| 一区二区三区精品视频在线| 91福利在线观看| 日本不卡视频在线观看| 日韩午夜激情视频| 国产aⅴ综合色| 自拍偷拍亚洲欧美日韩| 色综合久久久久| 免费不卡在线观看| 日本一区二区免费在线| 欧美在线不卡一区| 欧美日韩国产区一| 亚洲午夜免费视频| 色综合久久久久久久久久久| 91欧美一区二区| 欧美午夜理伦三级在线观看| 日韩免费看的电影| 欧美精品久久久久久久久老牛影院 | 欧美日韩国产综合草草| 欧美精品高清视频| 色综合色狠狠综合色| 亚洲国产精品麻豆| 国产无一区二区| 欧美丝袜第三区| 成人免费视频视频在线观看免费| 亚洲国产一区二区三区青草影视| 一本一道综合狠狠老| 国内精品自线一区二区三区视频| 一区二区中文字幕在线| 日韩免费看网站| 日韩视频在线一区二区| 色八戒一区二区三区| 懂色av噜噜一区二区三区av| 人禽交欧美网站| 亚洲激情欧美激情| 国产欧美精品一区二区色综合朱莉 | 久久99这里只有精品| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩一卡二卡三卡| 国产老肥熟一区二区三区| 免费高清在线视频一区·| 一二三四区精品视频| 日韩精品专区在线影院观看 | 午夜精品福利视频网站| 亚洲视频狠狠干| 国产精品毛片久久久久久久| 久久久久久影视| 欧美高清精品3d| 欧美日韩亚洲另类| 欧美日韩一二三区| 欧美亚洲动漫精品| 国产·精品毛片| 不卡影院免费观看| 国产宾馆实践打屁股91| 日韩有码一区二区三区| 亚洲成人免费av| 日韩高清一区二区| 亚洲一区二区3| 中文字幕制服丝袜成人av| 国产精品视频在线看| 日韩一区二区在线免费观看| 色狠狠一区二区| 欧美色图在线观看| 欧美揉bbbbb揉bbbbb| 粉嫩久久99精品久久久久久夜| 国产精品中文有码| 99久久国产免费看| 一本色道综合亚洲| 91免费精品国自产拍在线不卡| av不卡免费在线观看| 91精品国产91久久综合桃花| 在线免费亚洲电影| 精品国产乱码久久久久久夜甘婷婷| 日韩欧美在线综合网| 久久久久国产精品厨房| 久久免费电影网| 成人免费小视频| 亚洲成人资源网| 久久精品国产在热久久| 成人国产在线观看| 色天使久久综合网天天| 欧美丰满嫩嫩电影| 久久婷婷成人综合色| 国产精品天干天干在线综合| 亚洲欧美日韩在线| 亚洲国产日日夜夜| 成人黄动漫网站免费app| 欧美日韩一区在线观看| wwwwxxxxx欧美| 亚洲免费看黄网站| 久久99国产精品免费| 成人激情免费电影网址| 欧美高清hd18日本| 国产精品嫩草影院av蜜臀| 亚洲国产aⅴ成人精品无吗| 午夜精品久久久久久久久| 国产精品一区二区在线观看网站| 成人国产在线观看| 欧美一区二区福利在线| 最新热久久免费视频| 日韩av电影天堂| av成人老司机| 中文字幕巨乱亚洲| 欧美aaaaaa午夜精品| 91视频一区二区三区| 精品蜜桃在线看| 中文字幕亚洲一区二区av在线| 国产一区二区三区精品视频| 欧美色电影在线| 国产精品天美传媒| 精品中文字幕一区二区小辣椒| 在线看一区二区| 亚洲国产成人va在线观看天堂| 国产一区二区三区四区在线观看| 91久久人澡人人添人人爽欧美 | 成人精品国产一区二区4080| 国产激情精品久久久第一区二区| 91在线视频播放| 337p日本欧洲亚洲大胆色噜噜| 一区二区三区在线观看欧美| 国产不卡在线视频| 欧美一级在线视频| 一区二区三区视频在线观看| 99久久99久久精品国产片果冻| 久久天天做天天爱综合色|