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

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

?? pa_mac.c

?? Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
?? C
?? 第 1 頁 / 共 5 頁
字號:
    if( err < 0 ) return err;    else return paNoError;}/************************************************************************* PaMac_ScanOutputDevices() queries the properties of all output devices.*/static PaError PaMac_ScanOutputDevices( void ){    PaError       err;    Component     identifier=0;    ComponentDescription criteria = { kSoundOutputDeviceType, 0, 0, 0, 0 };    long       numComponents, i;    /* Search the system linked list for output components  */    numComponents = CountComponents (&criteria);    identifier = 0;    sDefaultOutputDeviceID = sNumDevices; /* FIXME - query somehow */    for (i = 0; i < numComponents; i++)    {        /* passing nil returns first matching component. */        identifier = FindNextComponent( identifier, &criteria);        sDevices[sNumDevices].pad_Identifier = identifier;        /* Set up for default OUTPUT devices. */        err = PaMac_QueryOutputDeviceInfo( identifier, &sDevices[sNumDevices] );        if( err < 0 ) return err;        else  sNumDevices++;    }    return paNoError;}/************************************************************************* PaMac_ScanInputDevices() queries the properties of all input devices.*/static PaError PaMac_ScanInputDevices( void ){    Str255     deviceName;    int        count;    Handle     iconHandle;    PaError    err;    OSErr      oserr;    count = 1;    sDefaultInputDeviceID = sNumDevices; /* FIXME - query somehow */ /* PLB20010415 - was setting sDefaultOutputDeviceID */    while(true)    {        /* Thanks Chris Rolfe and Alberto Ricci for this trick. */        oserr = SPBGetIndexedDevice(count++, deviceName, &iconHandle);        DBUG(("PaMac_ScanInputDevices: SPBGetIndexedDevice returned %d\n", oserr ));#if 1        /* PLB20010415 - was giving error for anything other than siBadSoundInDevice, but some Macs may return other errors! */        if(oserr != noErr) break; /* Some type of error is expected when count > devices */#else        if(oserr == siBadSoundInDevice)        {  /* it's expected when count > devices */            oserr = noErr;            break;        }        if(oserr != noErr)        {            ERR_RPT(("ERROR: SPBGetIndexedDevice(%d,,) returned %d\n", count-1, oserr ));            sPaHostError = oserr;            return paHostError;        }#endif        DisposeHandle(iconHandle);   /* Don't need the icon */        err = PaMac_QueryInputDeviceInfo( deviceName, &sDevices[sNumDevices] );        DBUG(("PaMac_ScanInputDevices: PaMac_QueryInputDeviceInfo returned %d\n", err ));        if( err < 0 ) return err;        else if( err == 1 ) sNumDevices++;    }    return paNoError;}/* Sample rate info returned by using siSampleRateAvailable selector in SPBGetDeviceInfo() *//* Thanks to Chris Rolfe for help with this query. */#pragma options align=mac68ktypedef  struct{    int16                   numRates;    UnsignedFixed           (**rates)[]; /* Handle created by SPBGetDeviceInfo */}SRateInfo;#pragma options align=reset/*************************************************************************** PaMac_QueryOutputDeviceInfo()** Query information about a named output device.** Clears contents of ipad and writes info based on queries.** Return one if OK,**        zero if device cannot be used,**        or negative error.*/static PaError PaMac_QueryOutputDeviceInfo( Component identifier, internalPortAudioDevice *ipad ){    int     len;    OSErr   err;    PaDeviceInfo *dev =  &ipad->pad_Info;    SRateInfo srinfo = {0};    int     numRates;    ComponentDescription tempD;    Handle nameH=nil, infoH=nil, iconH=nil;    memset( ipad, 0, sizeof(internalPortAudioDevice) );    dev->structVersion = 1;    dev->maxInputChannels = 0;    dev->maxOutputChannels = 2;    dev->nativeSampleFormats = paInt16; /* FIXME - query to see if 24 or 32 bit data can be handled. */    /* Get sample rates supported. */    err = GetSoundOutputInfo(identifier, siSampleRateAvailable, (Ptr) &srinfo);    if(err != noErr)    {        ERR_RPT(("Error in PaMac_QueryOutputDeviceInfo: GetSoundOutputInfo siSampleRateAvailable returned %d\n", err ));        goto error;    }    numRates = srinfo.numRates;    DBUG(("PaMac_QueryOutputDeviceInfo: srinfo.numRates = %d\n", srinfo.numRates ));    if( numRates == 0 )    {        dev->numSampleRates = -1;        numRates = 2;    }    else    {        dev->numSampleRates = numRates;    }    dev->sampleRates = PaMac_GetSampleRatesFromHandle( numRates, (Handle) srinfo.rates );    if(dev->sampleRates == NULL)    {    	DBUG(("PaMac_QueryOutputDeviceInfo: PaMac_GetSampleRatesFromHandle alloc failed.\n"));    	return paInsufficientMemory;    }        /* SPBGetDeviceInfo created the handle, but it's OUR job to release it. */    DisposeHandle((Handle) srinfo.rates);    /* Device name */    /*  we pass an existing handle for the component name;     we don't care about the info (type, subtype, etc.) or icon, so set them to nil */	DBUG(("PaMac_QueryOutputDeviceInfo: get component name.\n"));    infoH = nil;    iconH = nil;    nameH = NewHandle(0);    if(nameH == nil) return paInsufficientMemory;    err = GetComponentInfo(identifier, &tempD, nameH, infoH, iconH);    if (err)    {        ERR_RPT(("Error in PaMac_QueryOutputDeviceInfo: GetComponentInfo returned %d\n", err ));        goto error;    }    /* Cast as uchar* so that we get a proper pascal string length. */	len = ((unsigned char *)(*nameH))[0] + 1;  /* PLB20020612 - fix allocation error on Mac 8600 */	DBUG(("PaMac_QueryOutputDeviceInfo: new len = %d\n", len ));    dev->name = (char *) malloc(len);  /* MEM_010 */    if( dev->name == NULL )    {        DisposeHandle(nameH);        return paInsufficientMemory;    }    else    {        PToCString((unsigned char *)(*nameH), (char *) dev->name);        DisposeHandle(nameH);    }    DBUG(("PaMac_QueryOutputDeviceInfo: dev->name = %s\n", dev->name ));    return paNoError;error:    sPaHostError = err;    return paHostError;}/*************************************************************************** PaMac_QueryInputDeviceInfo()** Query information about a named input device.** Clears contents of ipad and writes info based on queries.** Return one if OK,**        zero if device cannot be used,**        or negative error.*/static PaError PaMac_QueryInputDeviceInfo( Str255 deviceName, internalPortAudioDevice *ipad ){    PaError result = paNoError;    int     len;    OSErr   err;    long    mRefNum = 0;    long    tempL;    int16   tempS;    Fixed   tempF;    PaDeviceInfo *dev =  &ipad->pad_Info;    SRateInfo srinfo = {0};    int     numRates;    memset( ipad, 0, sizeof(internalPortAudioDevice) );    dev->maxOutputChannels = 0;    /* Open device based on name. If device is in use, it may not be able to open in write mode. */    err = SPBOpenDevice( deviceName, siWritePermission, &mRefNum);    if (err)    {        /* If device is in use, it may not be able to open in write mode so try read mode. */        err = SPBOpenDevice( deviceName, siReadPermission, &mRefNum);        if (err)        {            ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBOpenDevice returned %d\n", err ));            sPaHostError = err;            return paHostError;        }    }    /* Define macros for printing out device info. */#define PrintDeviceInfo(selector,var) \    err = SPBGetDeviceInfo(mRefNum, selector, (Ptr) &var); \    if (err) { \        DBUG(("query %s failed\n", #selector )); \    }\    else { \        DBUG(("query %s = 0x%x\n", #selector, var )); \    }    PrintDeviceInfo( siContinuous, tempS );    PrintDeviceInfo( siAsync, tempS );    PrintDeviceInfo( siNumberChannels, tempS );    PrintDeviceInfo( siSampleSize, tempS );    PrintDeviceInfo( siSampleRate, tempF );    PrintDeviceInfo( siChannelAvailable, tempS );    PrintDeviceInfo( siActiveChannels, tempL );    PrintDeviceInfo( siDeviceBufferInfo, tempL );    err = SPBGetDeviceInfo(mRefNum, siActiveChannels, (Ptr) &tempL);    if (err == 0) DBUG(("%s = 0x%x\n", "siActiveChannels", tempL ));    /* Can we use this device? */    err = SPBGetDeviceInfo(mRefNum, siAsync, (Ptr) &tempS);    if (err)    {        ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBGetDeviceInfo siAsync returned %d\n", err ));        goto error;    }    if( tempS == 0 ) goto useless; /* Does not support async recording so forget about it. */    err = SPBGetDeviceInfo(mRefNum, siChannelAvailable, (Ptr) &tempS);    if (err)    {        ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBGetDeviceInfo siChannelAvailable returned %d\n", err ));        goto error;    }    dev->maxInputChannels = tempS;    /* Get sample rates supported. */    err = SPBGetDeviceInfo(mRefNum, siSampleRateAvailable, (Ptr) &srinfo);    if (err)    {        ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBGetDeviceInfo siSampleRateAvailable returned %d\n", err ));        goto error;    }    numRates = srinfo.numRates;    DBUG(("numRates = 0x%x\n", numRates ));    if( numRates == 0 )    {        dev->numSampleRates = -1;        numRates = 2;    }    else    {        dev->numSampleRates = numRates;    }    dev->sampleRates = PaMac_GetSampleRatesFromHandle( numRates, (Handle) srinfo.rates );    /* SPBGetDeviceInfo created the handle, but it's OUR job to release it. */    DisposeHandle((Handle) srinfo.rates);    /* Get size of device buffer. */    err = SPBGetDeviceInfo(mRefNum, siDeviceBufferInfo, (Ptr) &tempL);    if (err)    {        ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBGetDeviceInfo siDeviceBufferInfo returned %d\n", err ));        goto error;    }    ipad->pad_DeviceBufferSize = tempL;    DBUG(("siDeviceBufferInfo = %d\n", tempL ));    /* Set format based on sample size. */    err = SPBGetDeviceInfo(mRefNum, siSampleSize, (Ptr) &tempS);    if (err)    {        ERR_RPT(("Error in PaMac_QueryInputDeviceInfo: SPBGetDeviceInfo siSampleSize returned %d\n", err ));        goto error;    }    switch( tempS )    {    case 0x0020:        dev->nativeSampleFormats = paInt32;  /* FIXME - warning, code probably won't support this! */        break;    case 0x0010:    default: /* FIXME - What about other formats? */        dev->nativeSampleFormats = paInt16;        break;    }    DBUG(("nativeSampleFormats = %d\n", dev->nativeSampleFormats ));    /* Device name */    len = deviceName[0] + 1;  /* Get length of Pascal string */    dev->name = (char *) malloc(len);  /* MEM_010 */    if( dev->name == NULL )    {        result = paInsufficientMemory;        goto cleanup;    }    PToCString(deviceName, (char *) dev->name);    DBUG(("deviceName = %s\n", dev->name ));    result = (PaError) 1;    /* All done so close up device. */cleanup:    if( mRefNum )  SPBCloseDevice(mRefNum);    return result;error:    if( mRefNum )  SPBCloseDevice(mRefNum);    sPaHostError = err;    return paHostError;useless:    if( mRefNum )  SPBCloseDevice(mRefNum);    return (PaError) 0;}/*************************************************************************** Allocate a double array and fill it with listed sample rates.*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜成人在线视频| 久久久久久久综合日本| 国产成人丝袜美腿| 蜜臀av一区二区| 亚洲午夜三级在线| 五月婷婷激情综合| 天天综合网 天天综合色| 首页亚洲欧美制服丝腿| 三级欧美在线一区| 美女一区二区久久| 精品亚洲porn| 国产成人免费视| 成人av免费在线| 色综合婷婷久久| 欧美日韩一区二区在线观看| 欧美精品日韩一本| 欧美大片顶级少妇| 国产精品美女久久久久久久| 日韩伦理电影网| 亚洲成人自拍偷拍| 久久国产精品99久久人人澡| 国产美女一区二区三区| av在线不卡电影| 欧美日韩国产区一| 久久日一线二线三线suv| 中文字幕不卡在线播放| 亚洲男帅同性gay1069| 午夜精品国产更新| 国产精品资源站在线| 一本久道久久综合中文字幕| 欧美色图天堂网| 精品盗摄一区二区三区| 亚洲图片欧美激情| 蜜臀国产一区二区三区在线播放 | 99麻豆久久久国产精品免费| 在线国产亚洲欧美| 日韩精品中文字幕在线不卡尤物| 国产欧美精品一区| 午夜久久久久久电影| 福利91精品一区二区三区| 91成人国产精品| 久久一区二区视频| 亚洲精品国产成人久久av盗摄| 日本va欧美va精品| 色欧美片视频在线观看 | 久草在线在线精品观看| 成人av免费在线播放| 日韩一区二区免费在线电影| 日韩毛片视频在线看| 黑人精品欧美一区二区蜜桃 | 亚洲一区二区在线视频| 激情久久久久久久久久久久久久久久| 91小视频在线| 久久夜色精品国产噜噜av| 亚洲成年人网站在线观看| 国产高清亚洲一区| 日韩亚洲电影在线| 亚洲国产另类精品专区| 91视视频在线直接观看在线看网页在线看 | 一区二区三区四区在线免费观看| 精品影视av免费| 欧美一区二区日韩| 亚洲第一狼人社区| 91国产免费观看| 亚洲色图欧美激情| 9i看片成人免费高清| 国产精品久久久久久久久免费桃花| 免费高清成人在线| 91精品国产福利| 日韩在线播放一区二区| 欧美日韩一区二区欧美激情| 夜夜嗨av一区二区三区网页| 91亚洲精品久久久蜜桃| 亚洲欧洲一区二区在线播放| 福利91精品一区二区三区| 国产日韩欧美麻豆| 国产成a人无v码亚洲福利| 久久精品亚洲麻豆av一区二区 | 国产精品视频免费| 国产电影精品久久禁18| 国产喷白浆一区二区三区| 国产精品一级片| 国产日韩欧美精品综合| 成人激情午夜影院| 亚洲三级久久久| 91国偷自产一区二区三区观看| 亚洲视频免费观看| 欧洲精品中文字幕| 三级在线观看一区二区| 精品国产一区a| 粉嫩13p一区二区三区| 国产精品丝袜黑色高跟| 一本到三区不卡视频| 亚洲成人精品一区| 欧美变态凌虐bdsm| 粉嫩av亚洲一区二区图片| 亚洲柠檬福利资源导航| 欧美日韩国产免费| 国产一区二区三区综合| 国产精品久久久久永久免费观看 | 欧美日韩一级大片网址| 日韩精品欧美成人高清一区二区| 日韩久久久精品| www..com久久爱| 婷婷综合在线观看| 久久精品一区二区| 在线观看欧美精品| 激情图片小说一区| 亚洲制服丝袜在线| 欧美精品一区二区三区视频| 成人av网站在线观看免费| 亚洲观看高清完整版在线观看| 日韩一区二区影院| 成人一区二区视频| 午夜视频一区二区| 国产精品伦一区| 69精品人人人人| av综合在线播放| 日本欧美一区二区| ...xxx性欧美| 久久这里只有精品视频网| 色婷婷狠狠综合| 国产成人av网站| 日韩av电影天堂| 一区二区在线看| 久久久国产午夜精品| 欧美喷潮久久久xxxxx| 成人av片在线观看| 国产一区二区在线观看视频| 亚洲国产另类av| 日韩毛片一二三区| 国产精品色呦呦| 日韩精品最新网址| 51午夜精品国产| 欧美自拍丝袜亚洲| 国产成人鲁色资源国产91色综| 亚洲大片免费看| 亚洲精品午夜久久久| 国产精品久久久久婷婷二区次| 精品国产污污免费网站入口| 欧美日韩成人高清| 欧美午夜视频网站| 色婷婷av一区二区三区gif| 波多野结衣精品在线| 成人涩涩免费视频| 丁香另类激情小说| 国产99精品国产| 国产精品夜夜嗨| 国产一区视频导航| 国产精品影音先锋| 国产精品香蕉一区二区三区| 精品一区二区三区的国产在线播放| 亚洲不卡在线观看| 亚洲电影在线免费观看| 亚洲一区二区三区四区五区黄| 一区二区三区在线观看欧美| 亚洲欧美日韩小说| 亚洲一区二区在线免费看| 亚洲一区二区三区四区在线免费观看| 亚洲精品视频一区| 一区二区三区四区不卡在线 | 91影视在线播放| 国产精品亚洲第一区在线暖暖韩国| 国产精品综合网| 国产成人自拍网| 成人高清视频在线观看| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 亚洲一区二区三区四区在线免费观看 | 日韩一级黄色片| 日韩欧美在线一区二区三区| 精品福利一区二区三区免费视频| 欧美mv和日韩mv的网站| 久久久久久久久久美女| 精品不卡在线视频| 高清不卡一区二区| 欧美美女一区二区| 欧美xxxxxxxx| 国产日韩欧美精品电影三级在线| 国产精品毛片久久久久久| 亚洲一区免费视频| 久久av资源网| www.日韩在线| 欧美精品v国产精品v日韩精品| 精品999久久久| 中文字幕亚洲不卡| 日韩电影在线一区二区| 国产一区二区日韩精品| 色综合久久88色综合天天 | 91麻豆精品国产无毒不卡在线观看| 日韩精品一区二区三区视频播放 | 91网页版在线| 欧美一区二区三区性视频| 国产色一区二区| 午夜欧美大尺度福利影院在线看| 国产专区综合网| 在线观看日韩av先锋影音电影院| 欧美精品一区二区三区高清aⅴ| 成人欧美一区二区三区小说 | 93久久精品日日躁夜夜躁欧美| 欧美日韩一区二区欧美激情 |