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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pa_mac_core_old.c

?? mediastreamer2是開源的網(wǎng)絡(luò)傳輸媒體流的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
    // Get channel info    err = GetChannelInfo(deviceInfo, macCoreDeviceId, 1);    err = GetChannelInfo(deviceInfo, macCoreDeviceId, 0);    return err;}static PaError InitializeDeviceInfos( PaMacCoreHostApiRepresentation *macCoreHostApi, PaHostApiIndex hostApiIndex ){    PaError result = paNoError;    PaUtilHostApiRepresentation *hostApi;    PaMacCoreDeviceInfo *deviceInfoArray;    // initialise device counts and default devices under the assumption that there are no devices. These values are incremented below if and when devices are successfully initialized.    hostApi = &macCoreHostApi->inheritedHostApiRep;    hostApi->info.deviceCount = 0;    hostApi->info.defaultInputDevice = paNoDevice;    hostApi->info.defaultOutputDevice = paNoDevice;        UInt32 propsize;    AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &propsize, NULL);    int numDevices = propsize / sizeof(AudioDeviceID);    hostApi->info.deviceCount = numDevices;    if (numDevices > 0) {        hostApi->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(                                            macCoreHostApi->allocations, sizeof(PaDeviceInfo*) * numDevices );        if( !hostApi->deviceInfos )        {            return paInsufficientMemory;        }        // allocate all device info structs in a contiguous block        deviceInfoArray = (PaMacCoreDeviceInfo*)PaUtil_GroupAllocateMemory(                                macCoreHostApi->allocations, sizeof(PaMacCoreDeviceInfo) * numDevices );        if( !deviceInfoArray )        {            return paInsufficientMemory;        }                macCoreHostApi->macCoreDeviceIds = PaUtil_GroupAllocateMemory(macCoreHostApi->allocations, propsize);        AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &propsize, macCoreHostApi->macCoreDeviceIds);        AudioDeviceID defaultInputDevice, defaultOutputDevice;        propsize = sizeof(AudioDeviceID);        AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &propsize, &defaultInputDevice);        AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propsize, &defaultOutputDevice);                UInt32 i;        for (i = 0; i < numDevices; ++i) {            if (macCoreHostApi->macCoreDeviceIds[i] == defaultInputDevice) {                hostApi->info.defaultInputDevice = i;            }            if (macCoreHostApi->macCoreDeviceIds[i] == defaultOutputDevice) {                hostApi->info.defaultOutputDevice = i;            }            InitializeDeviceInfo(&deviceInfoArray[i], macCoreHostApi->macCoreDeviceIds[i], hostApiIndex);            hostApi->deviceInfos[i] = &(deviceInfoArray[i].inheritedDeviceInfo);              }    }    return result;}static OSStatus CheckFormat(AudioDeviceID macCoreDeviceId, const PaStreamParameters *parameters, double sampleRate, int isInput){    UInt32 propSize = sizeof(AudioStreamBasicDescription);    AudioStreamBasicDescription *streamDescription = PaUtil_AllocateMemory(propSize);    streamDescription->mSampleRate = sampleRate;    streamDescription->mFormatID = 0;    streamDescription->mFormatFlags = 0;    streamDescription->mBytesPerPacket = 0;    streamDescription->mFramesPerPacket = 0;    streamDescription->mBytesPerFrame = 0;    streamDescription->mChannelsPerFrame = 0;    streamDescription->mBitsPerChannel = 0;    streamDescription->mReserved = 0;    OSStatus result = AudioDeviceGetProperty(macCoreDeviceId, 0, isInput, kAudioDevicePropertyStreamFormatSupported, &propSize, streamDescription);    PaUtil_FreeMemory(streamDescription);    return result;}static OSStatus CopyInputData(PaMacClientData* destination, const AudioBufferList *source, unsigned long frameCount){    int frameSpacing, channelSpacing;    if (destination->inputSampleFormat & paNonInterleaved) {        frameSpacing = 1;        channelSpacing = destination->inputChannelCount;    }    else {        frameSpacing = destination->inputChannelCount;        channelSpacing = 1;    }        AudioBuffer const *inputBuffer = &source->mBuffers[0];    void *coreAudioBuffer = inputBuffer->mData;    void *portAudioBuffer = destination->inputBuffer;    UInt32 i, streamNumber, streamChannel;    for (i = streamNumber = streamChannel = 0; i < destination->inputChannelCount; ++i, ++streamChannel) {        if (streamChannel >= inputBuffer->mNumberChannels) {            ++streamNumber;            inputBuffer = &source->mBuffers[streamNumber];            coreAudioBuffer = inputBuffer->mData;            streamChannel = 0;        }        destination->inputConverter(portAudioBuffer, frameSpacing, coreAudioBuffer, inputBuffer->mNumberChannels, frameCount, destination->ditherGenerator);        coreAudioBuffer += sizeof(Float32);        portAudioBuffer += Pa_GetSampleSize(destination->inputSampleFormat) * channelSpacing;    }    return noErr;}static OSStatus CopyOutputData(AudioBufferList* destination, PaMacClientData *source, unsigned long frameCount){    int frameSpacing, channelSpacing;    if (source->outputSampleFormat & paNonInterleaved) {        frameSpacing = 1;        channelSpacing = source->outputChannelCount;    }    else {        frameSpacing = source->outputChannelCount;        channelSpacing = 1;    }        AudioBuffer *outputBuffer = &destination->mBuffers[0];    void *coreAudioBuffer = outputBuffer->mData;    void *portAudioBuffer = source->outputBuffer;    UInt32 i, streamNumber, streamChannel;    for (i = streamNumber = streamChannel = 0; i < source->outputChannelCount; ++i, ++streamChannel) {        if (streamChannel >= outputBuffer->mNumberChannels) {            ++streamNumber;            outputBuffer = &destination->mBuffers[streamNumber];            coreAudioBuffer = outputBuffer->mData;            streamChannel = 0;        }        source->outputConverter(coreAudioBuffer, outputBuffer->mNumberChannels, portAudioBuffer, frameSpacing, frameCount, NULL);        coreAudioBuffer += sizeof(Float32);        portAudioBuffer += Pa_GetSampleSize(source->outputSampleFormat) * channelSpacing;    }    return noErr;}static OSStatus AudioIOProc( AudioDeviceID inDevice,                      const AudioTimeStamp* inNow,                      const AudioBufferList* inInputData,                      const AudioTimeStamp* inInputTime,                      AudioBufferList* outOutputData,                       const AudioTimeStamp* inOutputTime,                      void* inClientData){    PaMacClientData *clientData = (PaMacClientData *)inClientData;    PaStreamCallbackTimeInfo *timeInfo = InitializeTimeInfo(inNow, inInputTime, inOutputTime);        PaUtil_BeginCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer );        AudioBuffer *outputBuffer = &outOutputData->mBuffers[0];    unsigned long frameCount = outputBuffer->mDataByteSize / (outputBuffer->mNumberChannels * sizeof(Float32));    if (clientData->inputBuffer) {        CopyInputData(clientData, inInputData, frameCount);    }    PaStreamCallbackResult result = clientData->callback(clientData->inputBuffer, clientData->outputBuffer, frameCount, timeInfo, paNoFlag, clientData->userData);    if (clientData->outputBuffer) {        CopyOutputData(outOutputData, clientData, frameCount);    }    PaUtil_EndCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer, frameCount );        if (result == paComplete || result == paAbort) {        Pa_StopStream(clientData->stream);    }    PaUtil_FreeMemory( timeInfo );    return noErr;}// This is not for input-only streams, this is for streams where the input device is different from the output devicestatic OSStatus AudioInputProc( AudioDeviceID inDevice,                         const AudioTimeStamp* inNow,                         const AudioBufferList* inInputData,                         const AudioTimeStamp* inInputTime,                         AudioBufferList* outOutputData,                          const AudioTimeStamp* inOutputTime,                         void* inClientData){    PaMacClientData *clientData = (PaMacClientData *)inClientData;    PaStreamCallbackTimeInfo *timeInfo = InitializeTimeInfo(inNow, inInputTime, inOutputTime);    PaUtil_BeginCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer );    AudioBuffer const *inputBuffer = &inInputData->mBuffers[0];    unsigned long frameCount = inputBuffer->mDataByteSize / (inputBuffer->mNumberChannels * sizeof(Float32));    CopyInputData(clientData, inInputData, frameCount);    PaStreamCallbackResult result = clientData->callback(clientData->inputBuffer, clientData->outputBuffer, frameCount, timeInfo, paNoFlag, clientData->userData);        PaUtil_EndCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer, frameCount );    if( result == paComplete || result == paAbort )       Pa_StopStream(clientData->stream);    PaUtil_FreeMemory( timeInfo );    return noErr;}// This is not for output-only streams, this is for streams where the input device is different from the output devicestatic OSStatus AudioOutputProc( AudioDeviceID inDevice,                          const AudioTimeStamp* inNow,                          const AudioBufferList* inInputData,                          const AudioTimeStamp* inInputTime,                          AudioBufferList* outOutputData,                           const AudioTimeStamp* inOutputTime,                          void* inClientData){    PaMacClientData *clientData = (PaMacClientData *)inClientData;    //PaStreamCallbackTimeInfo *timeInfo = InitializeTimeInfo(inNow, inInputTime, inOutputTime);    PaUtil_BeginCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer );    AudioBuffer *outputBuffer = &outOutputData->mBuffers[0];    unsigned long frameCount = outputBuffer->mDataByteSize / (outputBuffer->mNumberChannels * sizeof(Float32));    //clientData->callback(NULL, clientData->outputBuffer, frameCount, timeInfo, paNoFlag, clientData->userData);    CopyOutputData(outOutputData, clientData, frameCount);    PaUtil_EndCpuLoadMeasurement( &clientData->stream->cpuLoadMeasurer, frameCount );    return noErr;}static PaError SetSampleRate(AudioDeviceID device, double sampleRate, int isInput){    PaError result = paNoError;        double actualSampleRate;    UInt32 propSize = sizeof(double);    result = conv_err(AudioDeviceSetProperty(device, NULL, 0, isInput, kAudioDevicePropertyNominalSampleRate, propSize, &sampleRate));        result = conv_err(AudioDeviceGetProperty(device, 0, isInput, kAudioDevicePropertyNominalSampleRate, &propSize, &actualSampleRate));        if (result == paNoError && actualSampleRate != sampleRate) {        result = paInvalidSampleRate;    }        return result;    }static PaError SetFramesPerBuffer(AudioDeviceID device, unsigned long framesPerBuffer, int isInput){    PaError result = paNoError;    UInt32 preferredFramesPerBuffer = framesPerBuffer;    //    while (preferredFramesPerBuffer > UINT32_MAX) {    //        preferredFramesPerBuffer /= 2;    //    }        UInt32 actualFramesPerBuffer;    UInt32 propSize = sizeof(UInt32);    result = conv_err(AudioDeviceSetProperty(device, NULL, 0, isInput, kAudioDevicePropertyBufferFrameSize, propSize, &preferredFramesPerBuffer));        result = conv_err(AudioDeviceGetProperty(device, 0, isInput, kAudioDevicePropertyBufferFrameSize, &propSize, &actualFramesPerBuffer));        if (result != paNoError) {        // do nothing    }    else if (actualFramesPerBuffer > framesPerBuffer) {        result = paBufferTooSmall;    }    else if (actualFramesPerBuffer < framesPerBuffer) {        result = paBufferTooBig;    }        return result;    }    static PaError SetUpUnidirectionalStream(AudioDeviceID device, double sampleRate, unsigned long framesPerBuffer, int isInput){    PaError err = paNoError;    err = SetSampleRate(device, sampleRate, isInput);    if( err == paNoError )        err = SetFramesPerBuffer(device, framesPerBuffer, isInput);    return err;}// =====  PortAudio functions  =====#pragma mark PortAudio functions#ifdef __cplusplusextern "C"{#endif // __cplusplus        PaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );    #ifdef __cplusplus}#endif // __cplusplusstatic void Terminate( struct PaUtilHostApiRepresentation *hostApi ){    PaMacCoreHostApiRepresentation *macCoreHostApi = (PaMacCoreHostApiRepresentation*)hostApi;        CleanUp(macCoreHostApi);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线播放国产精品二区一二区四区| 国产日韩欧美高清在线| 国产精品91xxx| 五月婷婷色综合| 一区二区三区不卡视频在线观看| 国产精品卡一卡二| 亚洲一区在线视频观看| 亚洲欧美日韩国产成人精品影院| 亚洲三级在线看| 亚洲午夜一二三区视频| 亚洲一二三四久久| 午夜精品福利一区二区三区蜜桃| 一区二区三区四区不卡视频| 亚洲天堂成人网| 亚洲一区二区三区四区在线免费观看 | 中文字幕日韩精品一区| 国产亚洲欧美日韩在线一区| 国产精品久久三| 国产精品久久久久久久久免费桃花 | 4438x成人网最大色成网站| 欧美精品xxxxbbbb| 日韩欧美一区二区在线视频| 久久久亚洲精华液精华液精华液| 亚洲精品一区二区三区香蕉| 久久精品一区八戒影视| 综合电影一区二区三区 | 亚洲人成在线观看一区二区| 亚洲九九爱视频| 久久er精品视频| 成人国产精品视频| 欧美日本高清视频在线观看| 精品奇米国产一区二区三区| 亚洲色图都市小说| 久久国产欧美日韩精品| 99精品欧美一区二区三区小说| 欧美精品少妇一区二区三区| 国产欧美一区二区在线观看| 亚洲精品免费在线| 国产精品亚洲视频| 欧美日韩中文字幕一区| 久久精品日产第一区二区三区高清版 | 成人午夜电影小说| 欧美久久免费观看| 国产精品福利一区二区三区| 午夜精品一区二区三区三上悠亚| 国产**成人网毛片九色| 日韩欧美在线1卡| 一区二区三区国产精品| 成人精品在线视频观看| 精品人伦一区二区色婷婷| 亚洲午夜电影在线| 99久久精品免费看国产免费软件| 91精品国产欧美一区二区成人| 成人免费小视频| 久久av老司机精品网站导航| 91久久精品国产91性色tv| 7777精品伊人久久久大香线蕉完整版 | 欧美激情在线一区二区三区| 香蕉成人伊视频在线观看| 99视频精品在线| 久久女同性恋中文字幕| 日本成人在线看| 91极品美女在线| 最新国产成人在线观看| 国产999精品久久久久久| 欧美tickling网站挠脚心| 亚洲高清免费一级二级三级| 成人国产视频在线观看| 日本一区二区三区四区| 久草中文综合在线| 日韩一级片在线播放| 首页国产欧美久久| 777a∨成人精品桃花网| 亚洲一区影音先锋| 欧美午夜宅男影院| 亚洲自拍偷拍av| 日本高清不卡aⅴ免费网站| 国产女人18水真多18精品一级做| 久久99精品久久久久| 欧美一级夜夜爽| 丝袜诱惑制服诱惑色一区在线观看| 91福利在线观看| 伊人开心综合网| 色八戒一区二区三区| 一区二区三区在线播| 欧美一a一片一级一片| 亚洲国产日韩在线一区模特| 欧美日韩国产天堂| 蜜臀久久99精品久久久久久9| 91精品国产综合久久福利| 奇米精品一区二区三区四区| 日韩美女一区二区三区| 国产精品1024| 中文字幕一区不卡| 972aa.com艺术欧美| 亚洲一区免费在线观看| 欧美一区二区三区男人的天堂| 蜜桃av一区二区三区| 久久久久久久精| 色妹子一区二区| 日本sm残虐另类| 久久免费午夜影院| 91视视频在线直接观看在线看网页在线看 | 蜜臀久久99精品久久久画质超高清 | 色呦呦国产精品| 日韩极品在线观看| 国产肉丝袜一区二区| 色8久久精品久久久久久蜜| 日韩激情在线观看| 中文字幕成人av| 在线电影一区二区三区| 狠狠色狠狠色综合日日91app| 国产精品无人区| 欧美日韩国产首页在线观看| 国产精品白丝jk白祙喷水网站| 亚洲黄色av一区| 欧美mv日韩mv亚洲| 色综合视频在线观看| 久久99精品久久久久久动态图| 日韩码欧中文字| 精品国产免费一区二区三区四区| bt7086福利一区国产| 久久精品二区亚洲w码| 亚洲图片另类小说| 欧美tk—视频vk| 欧美情侣在线播放| 99麻豆久久久国产精品免费优播| 日本三级韩国三级欧美三级| 亚洲色图一区二区| 国产欧美一区二区三区沐欲| 717成人午夜免费福利电影| 91香蕉视频mp4| 成人小视频在线观看| 免费黄网站欧美| 亚洲午夜激情网站| 综合在线观看色| 欧美精品一区二区三区蜜桃| 在线观看国产91| 波多野结衣精品在线| 国产毛片精品一区| 老司机午夜精品99久久| 亚洲成av人在线观看| 亚洲色图第一区| 欧美国产成人在线| 久久蜜桃一区二区| 日韩精品一区二区三区三区免费 | 国产精品免费人成网站| 久久综合av免费| 精品国产乱码久久久久久久久| 欧美日韩国产首页| 欧美日韩在线精品一区二区三区激情| 成人av免费网站| 成人av在线观| 成人黄色av电影| 国产成+人+日韩+欧美+亚洲| 国产在线乱码一区二区三区| 激情五月激情综合网| 久久国产人妖系列| 国内精品国产成人国产三级粉色| 日韩精品午夜视频| 日韩不卡免费视频| 日本视频中文字幕一区二区三区| 日日夜夜精品视频免费| 青青草成人在线观看| 乱中年女人伦av一区二区| 性做久久久久久免费观看欧美| 亚洲成人你懂的| 亚洲资源在线观看| 五月天欧美精品| 日韩不卡一二三区| 精品一区二区在线视频| 国产成人在线观看| 91网站最新网址| 制服丝袜在线91| 精品国产露脸精彩对白 | 91影视在线播放| 欧美性色欧美a在线播放| 欧美人与禽zozo性伦| 精品国产乱码久久久久久影片| 国产偷v国产偷v亚洲高清| 亚洲天堂网中文字| 图片区小说区区亚洲影院| 久久精品72免费观看| 成人免费视频视频在线观看免费| 99久久免费精品高清特色大片| 欧美高清视频在线高清观看mv色露露十八| 日韩一区二区中文字幕| 国产精品视频一二三区| 亚洲国产精品麻豆| 国产精品18久久久久久久久久久久| 成人免费视频视频在线观看免费| 欧美三区在线视频| 久久久久久亚洲综合| 亚洲精品视频在线看| 狠狠色狠狠色综合| 欧美日韩国产天堂| 国产精品美女久久久久久久网站| 丝袜诱惑亚洲看片| 一本大道综合伊人精品热热| 精品美女在线播放|