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

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

?? pa_mac_core_old.c

?? mediastreamer2是開源的網絡傳輸媒體流的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,                                  const PaStreamParameters *inputParameters,                                  const PaStreamParameters *outputParameters,                                  double sampleRate ){    PaMacCoreHostApiRepresentation *macCoreHostApi = (PaMacCoreHostApiRepresentation*)hostApi;    PaDeviceInfo *deviceInfo;        PaError result = paNoError;    if (inputParameters) {        deviceInfo = macCoreHostApi->inheritedHostApiRep.deviceInfos[inputParameters->device];        if (inputParameters->channelCount > deviceInfo->maxInputChannels)            result = paInvalidChannelCount;        else if (CheckFormat(macCoreHostApi->macCoreDeviceIds[inputParameters->device], inputParameters, sampleRate, 1) != kAudioHardwareNoError) {            result = paInvalidSampleRate;        }    }    if (outputParameters && result == paNoError) {        deviceInfo = macCoreHostApi->inheritedHostApiRep.deviceInfos[outputParameters->device];        if (outputParameters->channelCount > deviceInfo->maxOutputChannels)            result = paInvalidChannelCount;        else if (CheckFormat(macCoreHostApi->macCoreDeviceIds[outputParameters->device], outputParameters, sampleRate, 0) != kAudioHardwareNoError) {            result = paInvalidSampleRate;        }    }    return result;}static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,                           PaStream** s,                           const PaStreamParameters *inputParameters,                           const PaStreamParameters *outputParameters,                           double sampleRate,                           unsigned long framesPerBuffer,                           PaStreamFlags streamFlags,                           PaStreamCallback *streamCallback,                           void *userData ){    PaError err = paNoError;    PaMacCoreHostApiRepresentation *macCoreHostApi = (PaMacCoreHostApiRepresentation *)hostApi;    PaMacCoreStream *stream = PaUtil_AllocateMemory(sizeof(PaMacCoreStream));    stream->isActive = 0;    stream->isStopped = 1;    stream->inputDevice = kAudioDeviceUnknown;    stream->outputDevice = kAudioDeviceUnknown;        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,                                           ( (streamCallback)                                             ? &macCoreHostApi->callbackStreamInterface                                             : &macCoreHostApi->blockingStreamInterface ),                                           streamCallback, userData );    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );        *s = (PaStream*)stream;    PaMacClientData *clientData = PaUtil_AllocateMemory(sizeof(PaMacClientData));    clientData->stream = stream;    clientData->callback = streamCallback;    clientData->userData = userData;    clientData->inputBuffer = 0;    clientData->outputBuffer = 0;    clientData->ditherGenerator = PaUtil_AllocateMemory(sizeof(PaUtilTriangularDitherGenerator));    PaUtil_InitializeTriangularDitherState(clientData->ditherGenerator);        if (inputParameters != NULL) {        stream->inputDevice = macCoreHostApi->macCoreDeviceIds[inputParameters->device];        clientData->inputConverter = PaUtil_SelectConverter(paFloat32, inputParameters->sampleFormat, streamFlags);        clientData->inputBuffer = PaUtil_AllocateMemory(Pa_GetSampleSize(inputParameters->sampleFormat) * framesPerBuffer * inputParameters->channelCount);        clientData->inputChannelCount = inputParameters->channelCount;        clientData->inputSampleFormat = inputParameters->sampleFormat;        err = SetUpUnidirectionalStream(stream->inputDevice, sampleRate, framesPerBuffer, 1);    }        if (err == paNoError && outputParameters != NULL) {        stream->outputDevice = macCoreHostApi->macCoreDeviceIds[outputParameters->device];        clientData->outputConverter = PaUtil_SelectConverter(outputParameters->sampleFormat, paFloat32, streamFlags);        clientData->outputBuffer = PaUtil_AllocateMemory(Pa_GetSampleSize(outputParameters->sampleFormat) * framesPerBuffer * outputParameters->channelCount);        clientData->outputChannelCount = outputParameters->channelCount;        clientData->outputSampleFormat = outputParameters->sampleFormat;        err = SetUpUnidirectionalStream(stream->outputDevice, sampleRate, framesPerBuffer, 0);    }    if (inputParameters == NULL || outputParameters == NULL || stream->inputDevice == stream->outputDevice) {        AudioDeviceID device = (inputParameters == NULL) ? stream->outputDevice : stream->inputDevice;        AudioDeviceAddIOProc(device, AudioIOProc, clientData);    }    else {        // using different devices for input and output        AudioDeviceAddIOProc(stream->inputDevice, AudioInputProc, clientData);        AudioDeviceAddIOProc(stream->outputDevice, AudioOutputProc, clientData);    }        return err;}// Note: When CloseStream() is called, the multi-api layer ensures that the stream has already been stopped or aborted.static PaError CloseStream( PaStream* s ){    PaError err = paNoError;    PaMacCoreStream *stream = (PaMacCoreStream*)s;    PaUtil_ResetCpuLoadMeasurer( &stream->cpuLoadMeasurer );    if (stream->inputDevice != kAudioDeviceUnknown) {        if (stream->outputDevice == kAudioDeviceUnknown || stream->outputDevice == stream->inputDevice) {            err = conv_err(AudioDeviceRemoveIOProc(stream->inputDevice, AudioIOProc));        }        else {            err = conv_err(AudioDeviceRemoveIOProc(stream->inputDevice, AudioInputProc));            err = conv_err(AudioDeviceRemoveIOProc(stream->outputDevice, AudioOutputProc));        }    }    else {        err = conv_err(AudioDeviceRemoveIOProc(stream->outputDevice, AudioIOProc));    }        return err;}static PaError StartStream( PaStream *s ){    PaError err = paNoError;    PaMacCoreStream *stream = (PaMacCoreStream*)s;    if (stream->inputDevice != kAudioDeviceUnknown) {        if (stream->outputDevice == kAudioDeviceUnknown || stream->outputDevice == stream->inputDevice) {            err = conv_err(AudioDeviceStart(stream->inputDevice, AudioIOProc));        }        else {            err = conv_err(AudioDeviceStart(stream->inputDevice, AudioInputProc));            err = conv_err(AudioDeviceStart(stream->outputDevice, AudioOutputProc));        }    }    else {        err = conv_err(AudioDeviceStart(stream->outputDevice, AudioIOProc));    }        stream->isActive = 1;    stream->isStopped = 0;    return err;}static PaError AbortStream( PaStream *s ){    PaError err = paNoError;    PaMacCoreStream *stream = (PaMacCoreStream*)s;        if (stream->inputDevice != kAudioDeviceUnknown) {        if (stream->outputDevice == kAudioDeviceUnknown || stream->outputDevice == stream->inputDevice) {            err = conv_err(AudioDeviceStop(stream->inputDevice, AudioIOProc));        }        else {            err = conv_err(AudioDeviceStop(stream->inputDevice, AudioInputProc));            err = conv_err(AudioDeviceStop(stream->outputDevice, AudioOutputProc));        }    }    else {        err = conv_err(AudioDeviceStop(stream->outputDevice, AudioIOProc));    }        stream->isActive = 0;    stream->isStopped = 1;    return err;}    static PaError StopStream( PaStream *s ){    // TODO: this should be nicer than abort    return AbortStream(s);}static PaError IsStreamStopped( PaStream *s ){    PaMacCoreStream *stream = (PaMacCoreStream*)s;        return stream->isStopped;}static PaError IsStreamActive( PaStream *s ){    PaMacCoreStream *stream = (PaMacCoreStream*)s;    return stream->isActive;}static PaTime GetStreamTime( PaStream *s ){    OSStatus err;    PaTime result;    PaMacCoreStream *stream = (PaMacCoreStream*)s;    AudioTimeStamp *timeStamp = PaUtil_AllocateMemory(sizeof(AudioTimeStamp));    if (stream->inputDevice != kAudioDeviceUnknown) {        err = AudioDeviceGetCurrentTime(stream->inputDevice, timeStamp);    }    else {        err = AudioDeviceGetCurrentTime(stream->outputDevice, timeStamp);    }        result = err ? 0 : timeStamp->mSampleTime;    PaUtil_FreeMemory(timeStamp);    return result;}static double GetStreamCpuLoad( PaStream* s ){    PaMacCoreStream *stream = (PaMacCoreStream*)s;        return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );}// As separate stream interfaces are used for blocking and callback streams, the following functions can be guaranteed to only be called for blocking streams.static PaError ReadStream( PaStream* s,                           void *buffer,                           unsigned long frames ){    return paInternalError;}static PaError WriteStream( PaStream* s,                            const void *buffer,                            unsigned long frames ){    return paInternalError;}static signed long GetStreamReadAvailable( PaStream* s ){    return paInternalError;}static signed long GetStreamWriteAvailable( PaStream* s ){    return paInternalError;}// HostAPI-specific initialization functionPaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex ){    PaError result = paNoError;    PaMacCoreHostApiRepresentation *macCoreHostApi = (PaMacCoreHostApiRepresentation *)PaUtil_AllocateMemory( sizeof(PaMacCoreHostApiRepresentation) );    if( !macCoreHostApi )    {        result = paInsufficientMemory;        goto error;    }        macCoreHostApi->allocations = PaUtil_CreateAllocationGroup();    if( !macCoreHostApi->allocations )    {        result = paInsufficientMemory;        goto error;    }        *hostApi = &macCoreHostApi->inheritedHostApiRep;    (*hostApi)->info.structVersion = 1;    (*hostApi)->info.type = paCoreAudio;    (*hostApi)->info.name = "CoreAudio";    result = InitializeDeviceInfos(macCoreHostApi, hostApiIndex);    if (result != paNoError) {        goto error;    }        // Set up the proper callbacks to this HostApi's functions    (*hostApi)->Terminate = Terminate;    (*hostApi)->OpenStream = OpenStream;    (*hostApi)->IsFormatSupported = IsFormatSupported;        PaUtil_InitializeStreamInterface( &macCoreHostApi->callbackStreamInterface, CloseStream, StartStream,                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,                                      GetStreamTime, GetStreamCpuLoad,                                      PaUtil_DummyRead, PaUtil_DummyWrite,                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );        PaUtil_InitializeStreamInterface( &macCoreHostApi->blockingStreamInterface, CloseStream, StartStream,                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,                                      GetStreamTime, PaUtil_DummyGetCpuLoad,                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );        return result;    error:        if( macCoreHostApi ) {            CleanUp(macCoreHostApi);        }        return result;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜碰碰视频| 欧美网站大全在线观看| 色综合一个色综合亚洲| 欧美精品1区2区| 国产拍揄自揄精品视频麻豆| 亚洲成av人片一区二区| 99久久精品情趣| 久久久91精品国产一区二区精品| 亚洲国产精品麻豆| 91麻豆6部合集magnet| 久久97超碰国产精品超碰| 久久国产精品99精品国产| 日本福利一区二区| 国产精品久久久久影院| 精品一区二区三区在线播放| 精品视频色一区| 亚洲精品免费一二三区| 丁香婷婷综合色啪| 日韩欧美自拍偷拍| 美腿丝袜亚洲色图| 日韩一区二区麻豆国产| 人人爽香蕉精品| 欧美日韩不卡一区| 午夜激情一区二区三区| 欧美日韩一本到| 一区二区激情小说| 在线国产电影不卡| 亚洲激情图片小说视频| 色婷婷av一区二区三区软件| 亚洲人成影院在线观看| 久久99国产精品麻豆| 欧美日韩在线播| 婷婷成人激情在线网| 欧美日韩国产片| 日韩国产欧美三级| 欧美喷水一区二区| 蜜桃视频一区二区三区在线观看| 欧美精品久久99| 奇米影视7777精品一区二区| 欧美一级片在线看| 韩国一区二区在线观看| 日韩欧美国产wwwww| 精品一区二区免费在线观看| 日韩精品在线看片z| 国产综合一区二区| 国产欧美1区2区3区| 91亚洲男人天堂| 亚洲综合一区二区三区| 欧美三级日韩在线| 九一九一国产精品| 国产欧美一区二区精品性色超碰| 国产成人激情av| 亚洲欧美激情一区二区| 欧美日韩亚洲国产综合| 老司机精品视频线观看86| 久久久久综合网| 成人国产一区二区三区精品| 亚洲最新在线观看| 欧美成人官网二区| 99久久精品一区| 久久久www免费人成精品| 精品欧美一区二区三区精品久久| 麻豆精品精品国产自在97香蕉| 精品国产在天天线2019| 成人精品免费看| 香蕉加勒比综合久久| 精品久久99ma| 色综合久久久久| 蜜臀久久久久久久| 亚洲天堂a在线| 欧美一区二区视频免费观看| 成人免费毛片高清视频| 日韩福利电影在线| 国产精品久久午夜| 91精品综合久久久久久| 99久久婷婷国产| 精品在线播放午夜| 亚洲线精品一区二区三区八戒| 精品欧美乱码久久久久久| 色综合久久综合网97色综合 | 欧美日韩高清一区二区三区| 久久不见久久见中文字幕免费| 亚洲人123区| 国产视频一区不卡| 91精品国产综合久久福利软件 | 成人黄色电影在线| 美女mm1313爽爽久久久蜜臀| 中文字幕亚洲电影| 久久色.com| 日韩一级片网站| 欧美无人高清视频在线观看| 成人福利视频网站| 国产在线播放一区| 麻豆精品视频在线观看免费| 一区二区三区日韩精品| 国产精品免费丝袜| 精品美女被调教视频大全网站| 91成人在线精品| 不卡的av网站| eeuss鲁一区二区三区| 精品午夜久久福利影院| 日韩经典一区二区| 性做久久久久久免费观看欧美| 亚洲精品日日夜夜| 最新久久zyz资源站| 国产欧美一区二区精品性| 日韩一区和二区| 日韩一区二区电影网| 在线成人av网站| 欧美日韩1234| 制服丝袜一区二区三区| 欧美高清激情brazzers| 欧美日韩亚洲综合一区二区三区| 91福利小视频| 欧美欧美午夜aⅴ在线观看| 欧美性大战久久久久久久 | 久久人人爽人人爽| 欧美精品一区二区三区蜜臀 | 狠狠色丁香久久婷婷综合丁香| 黄色精品一二区| 奇米影视在线99精品| 免费三级欧美电影| 日韩av一级片| 久久99国产精品成人| 激情综合网最新| 成人免费观看视频| 99精品视频在线播放观看| 91免费在线看| 欧美日韩在线三级| 日韩三级视频在线看| 久久久久久久久久看片| 国产精品久久久久婷婷| 一区二区三区在线播放| 日韩精品一二三| 国产麻豆精品theporn| jizzjizzjizz欧美| 欧美日韩三级一区| 精品久久久久久久久久久久久久久| 亚洲精品一区二区精华| 国产精品久久综合| 亚洲一区二区高清| 麻豆一区二区三| 成人小视频免费观看| 色噜噜狠狠成人中文综合| 亚洲婷婷在线视频| 国产精品久久夜| 亚洲综合小说图片| 精品写真视频在线观看| 成人网在线播放| 欧美日韩电影在线| 国产日韩一级二级三级| 亚洲影院久久精品| 久久精品国产精品亚洲综合| a在线播放不卡| 日韩一区二区三区在线观看| 国产精品日韩成人| 日韩中文字幕av电影| 成人福利电影精品一区二区在线观看| 欧美三级电影网| 国产亚洲精久久久久久| 日韩在线卡一卡二| jvid福利写真一区二区三区| 日韩欧美高清在线| 亚洲成在人线在线播放| 99热国产精品| 精品成人在线观看| 亚洲一区二区欧美日韩| 风流少妇一区二区| 制服丝袜亚洲色图| 一区二区久久久久| 99久久久免费精品国产一区二区| 欧美xxxx老人做受| 亚洲国产你懂的| 国产剧情一区二区| 懂色中文一区二区在线播放| 欧美午夜理伦三级在线观看| 久久久久久久综合日本| 亚洲国产三级在线| 91在线免费播放| 国产人成一区二区三区影院| 免费在线观看不卡| 欧美日韩国产一级二级| 亚洲欧洲无码一区二区三区| 国产麻豆成人传媒免费观看| 9191成人精品久久| 亚洲大片在线观看| 91福利国产成人精品照片| 《视频一区视频二区| 成人天堂资源www在线| 久久久久久电影| 精品一区二区三区日韩| 日韩精品中文字幕一区二区三区| 亚洲一区精品在线| 一本久久综合亚洲鲁鲁五月天 | 亚洲成在线观看| 欧美日韩另类国产亚洲欧美一级| 亚洲另类在线制服丝袜| 91丨porny丨户外露出| 亚洲欧洲av色图| 97精品电影院|