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

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

?? pa_mac.c

?? Audacity是一款用於錄音和編輯聲音的、免費(fèi)的開(kāi)放源碼軟體。它可以執(zhí)行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業(yè)系統(tǒng)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    int32  framesPerHostBuffer;    int32  numHostBuffers;        minFramesPerHostBuffer = pahsc->pahsc_MinFramesPerHostBuffer;    minFramesPerHostBuffer = (minFramesPerHostBuffer + 7) & ~7;    DBUG(("PaHost_CalcNumHostBuffers: minFramesPerHostBuffer = %d\n", minFramesPerHostBuffer ));        /* Determine number of user buffers based on minimum latency. */	/* PLB20020417 I used to call Pa_GetMinNumBuffers() which doesn't take into account the	**    variable minFramesPerHostBuffer. Now I call PaMac_GetMinNumBuffers() which will	**    gove lower latency when virtual memory is turned off. */    /* minNumBuffers = Pa_GetMinNumBuffers( past->past_FramesPerUserBuffer, past->past_SampleRate ); WRONG */    minNumBuffers = PaMac_GetMinNumBuffers( minFramesPerHostBuffer, past->past_FramesPerUserBuffer, past->past_SampleRate );        past->past_NumUserBuffers = ( minNumBuffers > past->past_NumUserBuffers ) ? minNumBuffers : past->past_NumUserBuffers;    DBUG(("PaHost_CalcNumHostBuffers: min past_NumUserBuffers = %d\n", past->past_NumUserBuffers ));    minTotalFrames = past->past_NumUserBuffers * past->past_FramesPerUserBuffer;        /* We cannot make the buffers too small because they may not get serviced quickly enough. */    if( (int32) past->past_FramesPerUserBuffer < minFramesPerHostBuffer )    {        userBuffersPerHostBuffer =            (minFramesPerHostBuffer + past->past_FramesPerUserBuffer - 1) /            past->past_FramesPerUserBuffer;    }    else    {        userBuffersPerHostBuffer = 1;    }    framesPerHostBuffer = past->past_FramesPerUserBuffer * userBuffersPerHostBuffer;        /* Calculate number of host buffers needed. Round up to cover minTotalFrames. */    numHostBuffers = (minTotalFrames + framesPerHostBuffer - 1) / framesPerHostBuffer;    /* Make sure we have enough host buffers. */    if( numHostBuffers < PA_MIN_NUM_HOST_BUFFERS)    {        numHostBuffers = PA_MIN_NUM_HOST_BUFFERS;    }    else    {        /* If we have too many host buffers, try to put more user buffers in a host buffer. */        while(numHostBuffers > PA_MAX_NUM_HOST_BUFFERS)        {            userBuffersPerHostBuffer += 1;            framesPerHostBuffer = past->past_FramesPerUserBuffer * userBuffersPerHostBuffer;            numHostBuffers = (minTotalFrames + framesPerHostBuffer - 1) / framesPerHostBuffer;        }    }    pahsc->pahsc_UserBuffersPerHostBuffer = userBuffersPerHostBuffer;    pahsc->pahsc_FramesPerHostBuffer = framesPerHostBuffer;    pahsc->pahsc_NumHostBuffers = numHostBuffers;    DBUG(("PaHost_CalcNumHostBuffers: pahsc_UserBuffersPerHostBuffer = %d\n", pahsc->pahsc_UserBuffersPerHostBuffer ));    DBUG(("PaHost_CalcNumHostBuffers: pahsc_NumHostBuffers = %d\n", pahsc->pahsc_NumHostBuffers ));    DBUG(("PaHost_CalcNumHostBuffers: pahsc_FramesPerHostBuffer = %d\n", pahsc->pahsc_FramesPerHostBuffer ));    DBUG(("PaHost_CalcNumHostBuffers: past_NumUserBuffers = %d\n", past->past_NumUserBuffers ));}/*******************************************************************/PaError PaHost_OpenStream( internalPortAudioStream   *past ){    OSErr             err;    PaError             result = paHostError;    PaHostSoundControl *pahsc;    int                 i;    /* Allocate and initialize host data. */    pahsc = (PaHostSoundControl *) PaHost_AllocateFastMemory(sizeof(PaHostSoundControl));    if( pahsc == NULL )    {        return paInsufficientMemory;    }    past->past_DeviceData = (void *) pahsc;    /* If recording, and virtual memory is turned on, then use bigger buffers to prevent glitches. */    if( (past->past_NumInputChannels > 0)  && Mac_IsVirtualMemoryOn() )    {        pahsc->pahsc_MinFramesPerHostBuffer = MAC_VIRTUAL_FRAMES_PER_BUFFER;    }    else    {        pahsc->pahsc_MinFramesPerHostBuffer = MAC_PHYSICAL_FRAMES_PER_BUFFER;    }    PaHost_CalcNumHostBuffers( past );        /* Setup constants for CPU load measurement. */    pahsc->pahsc_InverseMicrosPerHostBuffer = past->past_SampleRate / (1000000.0 * 	pahsc->pahsc_FramesPerHostBuffer);    /* ------------------ OUTPUT */    if( past->past_NumOutputChannels > 0 )    {        /* Create sound channel to which we can send commands. */        pahsc->pahsc_Channel = 0L;        err = SndNewChannel(&pahsc->pahsc_Channel, sampledSynth, 0, nil); /* FIXME - use kUseOptionalOutputDevice if not default. */        if(err != 0)        {            ERR_RPT(("Error in PaHost_OpenStream: SndNewChannel returned 0x%x\n", err ));            goto error;        }        /* Install our callback function pointer straight into the sound channel structure */        /* Use new CARBON name for callback procedure. */#if TARGET_API_MAC_CARBON        pahsc->pahsc_OutputCompletionProc = NewSndCallBackUPP(PaMac_OutputCompletionProc);#else        pahsc->pahsc_OutputCompletionProc = NewSndCallBackProc(PaMac_OutputCompletionProc);#endif        pahsc->pahsc_Channel->callBack = pahsc->pahsc_OutputCompletionProc;        pahsc->pahsc_BytesPerOutputHostBuffer = pahsc->pahsc_FramesPerHostBuffer * past->past_NumOutputChannels * sizeof(int16);        for (i = 0; i<pahsc->pahsc_NumHostBuffers; i++)        {            char *buf = (char *)PaHost_AllocateFastMemory(pahsc->pahsc_BytesPerOutputHostBuffer);            if (buf == NULL)            {                ERR_RPT(("Error in PaHost_OpenStream: could not allocate output buffer. Size = \n", pahsc->pahsc_BytesPerOutputHostBuffer ));                goto memerror;            }            PaMac_InitSoundHeader( past, &pahsc->pahsc_SoundHeaders[i] );            pahsc->pahsc_SoundHeaders[i].samplePtr = buf;            pahsc->pahsc_SoundHeaders[i].numFrames = (unsigned long) pahsc->pahsc_FramesPerHostBuffer;        }    }#ifdef SUPPORT_AUDIO_CAPTURE    /* ------------------ INPUT */    /* Use double buffer scheme that matches output. */    if( past->past_NumInputChannels > 0 )    {        int16   tempS;        long    tempL;        Fixed   tempF;        long    mRefNum;        Str255 namePString;#if TARGET_API_MAC_CARBON        pahsc->pahsc_InputCompletionProc = NewSICompletionUPP((SICompletionProcPtr)PaMac_InputCompletionProc);#else        pahsc->pahsc_InputCompletionProc = NewSICompletionProc((ProcPtr)PaMac_InputCompletionProc);#endif        pahsc->pahsc_BytesPerInputHostBuffer = pahsc->pahsc_FramesPerHostBuffer * past->past_NumInputChannels * sizeof(int16);        for (i = 0; i<pahsc->pahsc_NumHostBuffers; i++)        {            char *buf = (char *) PaHost_AllocateFastMemory(pahsc->pahsc_BytesPerInputHostBuffer);            if ( buf == NULL )            {                ERR_RPT(("PaHost_OpenStream: could not allocate input  buffer. Size = \n", pahsc->pahsc_BytesPerInputHostBuffer ));                goto memerror;            }            pahsc->pahsc_InputMultiBuffer.buffers[i] = buf;        }        pahsc->pahsc_InputMultiBuffer.numBuffers = pahsc->pahsc_NumHostBuffers;        // err = SPBOpenDevice( (const unsigned char *) &noname, siWritePermission, &mRefNum);        CToPString((char *)sDevices[past->past_InputDeviceID].pad_Info.name, namePString);        err = SPBOpenDevice(namePString, siWritePermission, &mRefNum);        if (err) goto error;        pahsc->pahsc_InputRefNum = mRefNum;        DBUG(("PaHost_OpenStream: mRefNum = %d\n", mRefNum ));        /* Set input device characteristics. */        tempS = 1;        err = SPBSetDeviceInfo(mRefNum, siContinuous, (Ptr) &tempS);        if (err)        {            ERR_RPT(("Error in PaHost_OpenStream: SPBSetDeviceInfo siContinuous returned %d\n", err ));            goto error;        }        tempL = 0x03;        err = SPBSetDeviceInfo(mRefNum, siActiveChannels, (Ptr) &tempL);        if (err)        {            DBUG(("PaHost_OpenStream: setting siActiveChannels returned 0x%x. Error ignored.\n", err ));        }        /* PLB20010908 - Use requested number of input channels. Thanks Dominic Mazzoni. */        tempS = past->past_NumInputChannels;        err = SPBSetDeviceInfo(mRefNum, siNumberChannels, (Ptr) &tempS);        if (err)        {            ERR_RPT(("Error in PaHost_OpenStream: SPBSetDeviceInfo siNumberChannels returned %d\n", err ));            goto error;        }        tempF = ((unsigned long)past->past_SampleRate) << 16;        err = SPBSetDeviceInfo(mRefNum, siSampleRate, (Ptr) &tempF);        if (err)        {            ERR_RPT(("Error in PaHost_OpenStream: SPBSetDeviceInfo siSampleRate returned %d\n", err ));            goto error;        }        /* Setup record-parameter block */        pahsc->pahsc_InputParams.inRefNum          = mRefNum;        pahsc->pahsc_InputParams.milliseconds      = 0;   // not used        pahsc->pahsc_InputParams.completionRoutine = pahsc->pahsc_InputCompletionProc;        pahsc->pahsc_InputParams.interruptRoutine  = 0;        pahsc->pahsc_InputParams.userLong          = (long) past;        pahsc->pahsc_InputParams.unused1           = 0;    }#endif /* SUPPORT_AUDIO_CAPTURE */    DBUG(("PaHost_OpenStream: complete.\n"));    return paNoError;error:    PaHost_CloseStream( past );    ERR_RPT(("PaHost_OpenStream: sPaHostError =  0x%x.\n", err ));    sPaHostError = err;    return paHostError;memerror:    PaHost_CloseStream( past );    return paInsufficientMemory;}/************************************************************************* Called by Pa_CloseStream().** May be called during error recovery or cleanup code** so protect against NULL pointers.*/PaError PaHost_CloseStream( internalPortAudioStream   *past ){    PaError result = paNoError;    OSErr   err = 0;    int     i;    PaHostSoundControl *pahsc;    DBUG(("PaHost_CloseStream( 0x%x )\n", past ));    if( past == NULL ) return paBadStreamPtr;    pahsc = (PaHostSoundControl *) past->past_DeviceData;    if( pahsc == NULL ) return paNoError;    if( past->past_NumOutputChannels > 0 )    {        /* TRUE means flush now instead of waiting for quietCmd to be processed. */        if( pahsc->pahsc_Channel != NULL ) SndDisposeChannel(pahsc->pahsc_Channel, TRUE);        {            for (i = 0; i<pahsc->pahsc_NumHostBuffers; i++)            {                Ptr p = (Ptr) pahsc->pahsc_SoundHeaders[i].samplePtr;                if( p != NULL ) PaHost_FreeFastMemory( p, pahsc->pahsc_BytesPerOutputHostBuffer );            }        }    }    if( past->past_NumInputChannels > 0 )    {        if( pahsc->pahsc_InputRefNum )        {            err = SPBCloseDevice(pahsc->pahsc_InputRefNum);            pahsc->pahsc_InputRefNum = 0;            if( err )            {                sPaHostError = err;                result = paHostError;            }        }        {            for (i = 0; i<pahsc->pahsc_InputMultiBuffer.numBuffers; i++)            {                Ptr p = (Ptr) pahsc->pahsc_InputMultiBuffer.buffers[i];                if( p != NULL ) PaHost_FreeFastMemory( p, pahsc->pahsc_BytesPerInputHostBuffer );            }        }    }    past->past_DeviceData = NULL;    PaHost_FreeFastMemory( pahsc, sizeof(PaHostSoundControl) );    DBUG(("PaHost_CloseStream: complete.\n", past ));    return result;}/*************************************************************************/int Pa_GetMinNumBuffers( int framesPerUserBuffer, double sampleRate ){/* We use the MAC_VIRTUAL_FRAMES_PER_BUFFER because we might be recording.** This routine doesn't have enough information to determine the best value** and is being depracated. */    return PaMac_GetMinNumBuffers( MAC_VIRTUAL_FRAMES_PER_BUFFER, framesPerUserBuffer, sampleRate );}/*************************************************************************/static int PaMac_GetMinNumBuffers( int minFramesPerHostBuffer, int framesPerUserBuffer, double sampleRate ){    int minUserPerHost = ( minFramesPerHostBuffer + framesPerUserBuffer - 1) / framesPerUserBuffer;    int numBufs = PA_MIN_NUM_HOST_BUFFERS * minUserPerHost;    if( numBufs < PA_MIN_NUM_HOST_BUFFERS ) numBufs = PA_MIN_NUM_HOST_BUFFERS;    (void) sampleRate;    return numBufs;}/*************************************************************************/void Pa_Sleep( int32 msec ){    EventRecord   event;    int32 sleepTime, endTime;    /* Convert to ticks. Round up so we sleep a MINIMUM of msec time. */    sleepTime = ((msec * 60) + 999) / 1000;    if( sleepTime < 1 ) sleepTime = 1;    endTime = TickCount() + sleepTime;    do    {        DBUGX(("Sleep for %d ticks.\n", sleepTime ));        /* Use WaitNextEvent() to sleep without getting events. */        /* PLB20010907 - Pass unused event to WaitNextEvent instead of NULL to prevent         * Mac OSX crash. Thanks Dominic Mazzoni. */        WaitNextEvent( 0, &event, sleepTime, NULL );        sleepTime = endTime - TickCount();    }    while( sleepTime > 0 );}/*************************************************************************/int32 Pa_GetHostError( void ){    int32 err = sPaHostError;    sPaHostError = 0;    return err;}/************************************************************************* * Allocate memory that can be accessed in real-time. * This may need to be held in physical memory so that it is not * paged to virtual memory. * This call MUST be balanced with a call to PaHost_FreeFastMemory(). */void *PaHost_AllocateFastMemory( long numBytes ){    void *addr = NewPtrClear( numBytes );    if( (addr == NULL) || (MemError () != 0) ) return NULL;#if (TARGET_API_MAC_CARBON == 0)    if( HoldMemory( addr, numBytes ) != noErr )    {        DisposePtr( (Ptr) addr );

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆成人av在线| 亚洲欧美一区二区三区极速播放 | 色香蕉成人二区免费| 亚洲成人av一区二区三区| 久久亚洲一区二区三区四区| 在线观看www91| 国产成人一级电影| 蜜桃av一区二区三区| 一区二区三区四区中文字幕| 国产欧美日韩另类一区| 日韩欧美色电影| 欧美视频第二页| 成人黄色在线网站| 另类调教123区| 亚洲大片在线观看| 亚洲天堂网中文字| 中文字幕免费在线观看视频一区| 日韩欧美美女一区二区三区| 欧美性色综合网| 色久优优欧美色久优优| 丁香亚洲综合激情啪啪综合| 精品写真视频在线观看| 日本在线播放一区二区三区| 亚洲一区日韩精品中文字幕| 中文字幕制服丝袜一区二区三区| 久久亚洲精华国产精华液 | 国产成人自拍高清视频在线免费播放| 亚洲成av人**亚洲成av**| 亚洲天堂av一区| 亚洲婷婷综合色高清在线| 中文子幕无线码一区tr| 国产网站一区二区三区| 精品国产凹凸成av人网站| 欧美成人伊人久久综合网| 日韩一区二区在线观看视频| 欧美美女一区二区在线观看| 亚洲男女一区二区三区| 亚洲视频每日更新| 亚洲欧美日韩综合aⅴ视频| 亚洲人成伊人成综合网小说| 亚洲三级在线免费| 亚洲综合偷拍欧美一区色| 一区二区三区欧美亚洲| 亚洲国产精品一区二区www| 亚洲在线视频免费观看| 天堂av在线一区| 蜜桃传媒麻豆第一区在线观看| 久久国产免费看| 国产成人自拍网| 99久久国产综合精品色伊| 色婷婷一区二区三区四区| 欧美吞精做爰啪啪高潮| 在线播放91灌醉迷j高跟美女| 91精品久久久久久久99蜜桃| 日韩欧美成人激情| 国产午夜亚洲精品羞羞网站| 国产精品久久毛片av大全日韩| 亚洲视频中文字幕| 亚洲高清中文字幕| 狂野欧美性猛交blacked| 国产乱一区二区| av电影天堂一区二区在线 | 欧美xxxx老人做受| 国产拍揄自揄精品视频麻豆| 中文字幕在线视频一区| 亚洲一区二区三区影院| 麻豆精品在线播放| 成人在线综合网站| 在线国产电影不卡| 欧美成人猛片aaaaaaa| 日本一区二区三级电影在线观看| 国产成人av自拍| 欧美中文字幕一区| 26uuu国产电影一区二区| 亚洲欧洲精品天堂一级| 天使萌一区二区三区免费观看| 国产中文一区二区三区| 91麻豆精东视频| 欧美成人vr18sexvr| 一区在线观看免费| 蜜臀av一区二区在线免费观看| 国产91精品精华液一区二区三区| 91高清在线观看| 精品久久五月天| 亚洲精品高清在线观看| 国内外精品视频| 欧美午夜寂寞影院| 久久九九国产精品| 午夜视频在线观看一区| 丰满白嫩尤物一区二区| 7777精品伊人久久久大香线蕉完整版 | 爽爽淫人综合网网站| 国产精品一区免费视频| 在线欧美日韩精品| 久久精品人人做人人爽人人| 亚洲国产毛片aaaaa无费看| 国产成人在线免费观看| 91.com在线观看| 国产精品久久国产精麻豆99网站| 日韩高清不卡一区二区| 97se狠狠狠综合亚洲狠狠| 精品国产乱码久久久久久蜜臀| 亚洲精选免费视频| 国产激情精品久久久第一区二区 | 久久婷婷国产综合精品青草| 亚洲在线观看免费视频| 成人黄色免费短视频| 日韩一区二区在线观看| 一区二区三区久久| 成人av网站大全| 国产欧美日韩中文久久| 美女性感视频久久| 欧美日韩情趣电影| 亚洲精品国产品国语在线app| 成人性生交大片免费看中文 | 极品美女销魂一区二区三区| 欧美日韩一区二区三区四区五区 | 岛国精品在线播放| 欧美精品一区二区蜜臀亚洲| 日韩专区中文字幕一区二区| 91成人国产精品| 亚洲女爱视频在线| 91在线看国产| 国产精品视频一二三| 国产成人av电影在线| 26uuu精品一区二区三区四区在线| 日韩成人av影视| 91精品国产乱码久久蜜臀| 亚洲成人免费视频| 欧美人伦禁忌dvd放荡欲情| 亚洲综合av网| 欧美色视频在线观看| 亚洲第一av色| 在线播放国产精品二区一二区四区| 午夜一区二区三区视频| 欧美日韩国产高清一区二区| 亚洲一区二区三区三| 欧美性猛交xxxxxx富婆| 亚洲成在人线免费| 欧美日韩激情一区二区三区| 午夜日韩在线观看| 91精品国产综合久久久久久久 | 日韩电影一区二区三区四区| 欧美日韩中文字幕精品| 无吗不卡中文字幕| 日韩一区二区精品在线观看| 青青草国产成人99久久| 精品99999| 国产91对白在线观看九色| 亚洲国产成人在线| 91理论电影在线观看| 亚洲第一二三四区| 日韩女优av电影| 高清成人在线观看| 亚洲日本在线视频观看| 欧美日韩一区精品| 麻豆91在线看| 国产精品久久久久影院老司| 91女人视频在线观看| 午夜久久久久久久久| 日韩免费看的电影| 成人一级视频在线观看| 一区二区视频在线看| 欧美日韩免费一区二区三区视频| 麻豆视频一区二区| 中文av一区特黄| 欧美日精品一区视频| 黄色精品一二区| 亚洲人成在线观看一区二区| 欧美二区三区91| 国产传媒日韩欧美成人| 亚洲一区二区三区视频在线| 精品欧美一区二区三区精品久久 | 亚州成人在线电影| 精品国产一二三区| 91麻豆免费视频| 久久成人免费网站| 亚洲天堂免费看| 日韩精品影音先锋| 一本色道久久综合亚洲精品按摩| 午夜视频在线观看一区二区| 久久久久亚洲蜜桃| 欧洲日韩一区二区三区| 激情欧美日韩一区二区| 亚洲精品久久久蜜桃| 亚洲精品在线观看视频| 欧洲激情一区二区| 国产精品一区在线| 日韩成人午夜电影| 中文字幕一区在线观看视频| 欧美日韩在线播放三区四区| 国产成人福利片| 蜜桃视频在线一区| 一区二区三区四区高清精品免费观看| 欧美大片在线观看一区二区| 日本久久电影网| 粉嫩av一区二区三区粉嫩| 天天操天天综合网| 亚洲乱码日产精品bd| 久久久精品影视|