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

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

?? oss--跨平臺的音頻接口簡介.htm

?? 介紹聲卡編程的一些資料
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<b>1) 頭文件定義</b><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>/** Standard includes*/#include &lt;ioctl.h&gt;#include &lt;unistd.h&gt;#include &lt;fcntl.h&gt;#include &lt;sys/soundcard.h&gt;/** Mandatory variables.*/#define BUF_SIZE 4096int audio_fd;unsigned char audio_buffer[BUF_SIZE];</code></pre></td></tr></table></p><p><b>2) 打開設備</b><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>if ((audio_fd = open(DEVICE_NAME, open_mode, 0)) == -1) {/* Open of device failed */perror(DEVICE_NAME);exit(1);}</code></pre></td></tr></table></p><p>open_mode有三種選擇:O_RDONLY,O_WRONLY和O_RDWR,分別表示只讀、只寫和讀寫。OSS建議盡量使用只讀或只寫,只有在全雙工的情況下(即錄音和放音同時)才使用讀寫模式。</p><p><span class="atitle3">2. 錄音</span><br /></p><p><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int len;if ((len = read(audio_fd, audio_buffer, count)) == -1) {perror("audio read");exit(1);}</code></pre></td></tr></table></p><p>count為錄音數據的字節個數(建議為2的指數),但不能超過audio_buffer的大小。從讀字節的個數可以精確的測量時間,例如8kHZ 16-bit stereo的速率為8000*2*2=32000bytes/second,這是知道何時停止錄音的唯一方法。</p><p><span class="atitle3">3. 放音</span><br /></p><p>放音實際上和錄音很類似,只不過把read改成write即可,相應的audio_buffer中為音頻數據,count為數據的長度。</p><p>注意,用戶始終要讀/寫一個完整的采樣。例如一個16-bit的立體聲模式下,每個采樣有4個字節,所以應用程序每次必須讀/寫4的倍數個字節。</p><p>另外,由于OSS是一個跨平臺的音頻接口,所以用戶在編程的時候,要考慮到可移植性的問題,其中一個重要的方面是讀/寫時的字節順序。</p><p><span class="atitle3">4. 設置參數</span><br /></p><ul><li><p><b>設置采樣格式</b><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int format;format = AFMT_S16_LE;if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &amp;format) == -1) {/* fatal error */perror("SNDCTL_DSP_SETFMT");exit(1);}if (format != AFMT_S16_LE) {/* 本設備不支持選擇的采樣格式. */}在設置采樣格式之前,可以先測試設備能夠支持那些采樣格式,方法如下:int mask;if (ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &amp;mask) == -1) {/* Handle fatal error ... */}if (mask &amp; AFMT_MPEG) {/* 本設備支持MPEG采樣格式 ... */}</code></pre></td></tr></table></p></li><li><p><b>設置通道數目</b><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int channels = 2; /* 1=mono, 2=stereo */if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &amp;channels) == -1) {/* Fatal error */perror("SNDCTL_DSP_CHANNELS");exit(1);}if (channels != 2){/* 本設備不支持立體聲模式 ... */}</code></pre></td></tr></table></p></li><li><p><b>設置采樣速率</b><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int speed = 11025;if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &amp;speed)==-1) {/* Fatal error */perror("SNDCTL_DSP_SPEED");exit(Error code);}if ( /* 返回的速率(即硬件支持的速率)與需要的速率差別很大... */ ) {/* 本設備不支持需要的速率... */}</code></pre></td></tr></table></p></li></ul><p>音頻設備通過分頻的方法產生需要的采樣時鐘,因此不可能產生所有的頻率。驅動程序會計算出最接近要求的頻率來,用戶程序要檢查返回的速率值,如果誤差較小,可以忽略,但誤差不能太大。</p><p><a name="section3"><span class="atitle2">三、Mixer編程</span></a></p><p>對Mixer的控制,包括調節音量(volume)、選擇錄音音源(microphone,line-in)、查詢mixer的功能和狀態,主要是通過Mixer設備/dev/mixer的ioctl接口。相應的,ioctl接口提供的功能也分為三類:調節音量、查詢mixer的能力、選擇mixer的錄音通道。下面就分別介紹使用的方法:</p><p>下面的mixer_fd是對mixer設備執行open操作返回的文件描述符。</p><ul><li><p>調節音量</p><p>應用程序通過ioctl的SOUND_MIXER_READ和SOUND_MIXER_WIRTE功能號來讀取/設置音量。在OSS中,音量的大小范圍在0-100之間。使用方法如下:</p><p><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int vol;if (ioctl(mixer_fd, SOUND_MIXER_READ(SOUND_MIXER_MIC), &amp;vol) == -1) {/* 訪問了沒有定義的mixer通道... */</code></pre></td></tr></table></p><p>SOUND_MIXER_MIC是通道參數,表示讀microphone通道的音量,結果放置在vol中。如果通道是立體聲,那么vol的最低有效字節為左聲道的音量值,接著的字節為右聲道的音量值,另外的兩個字節不用。如果通道是單聲道,vol中左聲道與右聲道具有相同的值。</p></li><li><p>查詢mixer的能力</p><p><table bgcolor="#CCCCCC" border="1" cellpadding="5" cellspacing="0" width="100%"><tr><td><pre><code>int mask;if (ioctl(mixer_fd, SOUND_MIXER_READ_xxxx, &amp;mask) == -1) {/* Mixer 的沒有此能力... */}</code></pre></td></tr></table></p><p>SOUND_MIXER_READ_xxxx 中的xxxx代表具體要查詢的內容,比如檢查可用的mixer通道用SOUND_MIXER_READ_DEVMASK;檢查可用的錄音設備,用SOUND_MIXER_READ_RECMASK;檢查單聲道/立體聲,用SOUND_MIXER_READ_STEREODEVS;檢查mixer的一般能力,用SOUND_MIXER_READ_CAPS等等。所有通道的查詢的結果都放在mask中,所以要區分出特定通道的狀況,使用mask&amp; (1 &lt;&lt; channel_no)。</p></li><li><p>選擇mixer的錄音通道</p><p>首先可以通過SOUND_MIXER_READ_RECMASK檢查可用的錄音通道,然后通過SOUND_MIXER_WRITE_RECSRC選擇錄音通道。可以隨時通過SOUND_MIXER_READ_RECSRC查詢當前聲卡中已經被選擇的錄音通道。</p><p>OSS建議把mixer的用戶控制功能單獨出來形成一個通用的程序。但前提是,在使用mixer之前,首先通過API的查詢功能檢查聲卡的能力。在linux中,就有一個專門的mixer程序--aumix。</p></li></ul><p><a name="section4"><span class="atitle2">四、結束語</span></a></p><p>前面討論的是OSS中一些最基本的內容,實際上OSS中還有很多高級的特性,比如在音頻編程時十分重要的實時性問題,畫面與聲音的同步問題,這里都沒有介紹。如果讀者對這些特性感興趣的話,可以進一步參考[1]。另外,在[2]中,還可以下載使用OSS接口的樣例程序。</p><!-- CONTENT AREA SIDEBAR--><!-- Adjust to wider width if text is long--><!--<table align="right" border="1" cellpadding="5" cellspacing="0" width="30%"><tr><td background="/developerWorks/cn/i/bg-gold.gif"><b>Sidebar heading</b><br />[Text starts here following break tag] <p>[New paragraph goes here]</p></td></tr></table>--><!-- END CONTENT AREA SIDEBAR--><!-- RESOURCES--><p><a name="resources"><span class="atitle2">參考文獻</span></a></p><p><ul><!-- Comment out list item below if there is no forum for this article--><!-- <li>Participate in the <a href="javascript:void forumWindow()">discussion forum</a> on this article by clicking <b>Discuss</b> at the top or bottom of the article.</li> --><li>Open Sound SystemTM  Programmer's Guide, version 1.11, <a href="http://www.opensound.com">http://www.opensound.com</a></li><li><a href="http://www.opensound.com">http://www.opensound.com</a></li></ul></p><!-- AUTHOR BIOS--><!-- Make author heading singular or plural as needed--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td><a name="author1"><span class="atitle2">關于作者</span></a><br /><p>湯凱,您可以通過 Mail 地址<a href="mailto:tangk73@hotmail.com">tangk73@hotmail.com</a> 與他取得聯系。</p> </td></tr></table><!-- END PAPER BODY--></td><td width="10"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="10" /></td></tr></table><!-- <br clear="all" /><img alt="" border="0" height="10" src="/developerWorks/cn/i/c.gif" width="100" /><br /> --><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr valign="top"><td align="right" width="100%"><a href="#top">到頁首</a></td><td width="5"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="5" /></td></tr><tr valign="top"><td bgcolor="#000000" colspan="2"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr><tr valign="top"><td bgcolor="#FFFFFF" colspan="2"><img alt="" border="0" height="8" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr></table><table border="0" cellpadding="10" cellspacing="0" width="100%"><tr valign="top"><td><form action="/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument" method="POST" name="getURL"><input name="ArticleTitle" type="HIDDEN" value="OSS--跨平臺的音頻接口簡介" /><input type="HIDDEN" name="url" value="" /><script language="javascript">getURL();</script><input name="Zone" type="HIDDEN" value="linux" /><input name="RedirectURL" type="HIDDEN" value="/developerWorks/cn/thankyou/feedback-linux.html" /><a name="rating"><b>您對這篇文章的看法如何?</b></a><table border="0" cellpadding="0" cellspacing="0" width="600"><tr><td colspan="5"><img alt="" border="0" height="8" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr><tr valign="top"><td width="16%"><input name="Rating" type="RADIO" value="5" />真棒!(5)</td><td width="20%"><input name="Rating" type="RADIO" value="4" />好材料 (4)</td><td width="24%"><input name="Rating" type="RADIO" value="3" />一般;尚可 (3)</td><td width="22%"><input name="Rating" type="RADIO" value="2" />需提高 (2)</td><td width="18%"><input name="Rating" type="RADIO" value="1" />太差! (1)</td></tr></table><br /><b>建議?</b><br /><textarea cols="60" name="Comments" rows="5" wrap="virtual"></textarea><br /><br /><input type="SUBMIT" value="提交反饋意見" /></form></td></tr><tr valign="top"><td bgcolor="#FFFFFF"><img alt="" border="0" height="8" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr></table><table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr><td align="right">(c) Copyright IBM Corp. 2001,  (c) Copyright IBM China 2001,  All Right Reserved</td></tr>
<tr valign="top">
<td height="21" class="bbg">&nbsp;&nbsp;<a href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&amp;origin=dwhead" class="mainlink">關于 IBM</a><span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/privacy/index.shtml&amp;origin=dwhead" class="mainlink">隱私條約</a><span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/legal/index.shtml&amp;origin=dwhead" class="mainlink">使用條款</a><span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/contact/index.shtml&amp;origin=dwhead" class="mainlink">聯系 IBM</a></td>
</tr></table>
<script type="text/javascript" language="JavaScript1.2" src="//www.ibm.com/common/stats/stats.js"></script>
<noscript><img src="//stats.www.ibm.com/rc/images/uc.GIF?R=noscript" width="1" height="1" alt="" border="0" /></noscript></body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男男青年gay1069videost| 国产一区二区主播在线| 91丨porny丨国产| 激情伊人五月天久久综合| 日韩精品一区二区三区蜜臀 | 亚洲手机成人高清视频| 91视频国产观看| 亚洲午夜一区二区三区| 欧美一区二区久久| 国产精品一二三四区| 日韩美女视频一区| 欧美一级二级在线观看| 国产精品综合在线视频| 自拍偷在线精品自拍偷无码专区| 在线日韩国产精品| 麻豆久久一区二区| 国产精品久久久久久久岛一牛影视| 色婷婷久久久久swag精品| 日日摸夜夜添夜夜添亚洲女人| 精品国精品自拍自在线| 99精品久久99久久久久| 五月天激情综合网| 国产精品情趣视频| 欧美一区二区三区电影| 成人午夜激情片| 丝袜美腿亚洲色图| 中文字幕日韩一区二区| 3d成人动漫网站| 99久久精品一区| 久久99久久久欧美国产| 亚洲精品水蜜桃| 精品av久久707| 欧美日韩激情一区二区| 成人免费毛片高清视频| 日本成人在线不卡视频| 日韩毛片精品高清免费| 亚洲精品一区二区三区影院| 色妞www精品视频| 理论电影国产精品| 一区二区激情视频| 欧美国产97人人爽人人喊| 4438x亚洲最大成人网| 99综合影院在线| 国产乱色国产精品免费视频| 五月婷婷久久丁香| 亚洲另类中文字| 国产三级久久久| 日韩精品综合一本久道在线视频| 91老师国产黑色丝袜在线| 国内精品嫩模私拍在线| 视频在线观看国产精品| 曰韩精品一区二区| 中文字幕一区二区三区在线播放 | 久久精品水蜜桃av综合天堂| 欧美精品xxxxbbbb| 欧美在线观看一区| 91视频观看视频| 成人综合激情网| 韩国v欧美v日本v亚洲v| 日本高清成人免费播放| 成人免费看的视频| 久久99精品久久久久久动态图 | 91成人国产精品| 成人免费视频视频| 国产99久久久久| 国产精品亚洲一区二区三区妖精 | 美国欧美日韩国产在线播放| 亚洲国产综合人成综合网站| 亚洲欧美日韩中文播放| 亚洲私人黄色宅男| 亚洲色图欧美偷拍| 亚洲欧美另类综合偷拍| 亚洲视频中文字幕| 亚洲人快播电影网| 亚洲精品va在线观看| 亚洲老司机在线| 一区二区视频在线看| 一区二区三区中文在线| 尤物av一区二区| 亚洲.国产.中文慕字在线| 亚洲成人av在线电影| 日韩精品亚洲一区| 久久精品国产99国产| 国产综合久久久久影院| 国产精品综合在线视频| 不卡一区二区在线| 色综合色综合色综合| 在线看一区二区| 7777精品伊人久久久大香线蕉完整版 | 亚洲综合在线免费观看| 亚洲午夜私人影院| 日本v片在线高清不卡在线观看| 日本伊人午夜精品| 国产激情精品久久久第一区二区 | 欧美日韩在线不卡| 91精品国产综合久久蜜臀| 欧美va亚洲va| 国产精品你懂的在线| 一区二区三区四区亚洲| 日韩激情中文字幕| 国产一区二区精品久久99| 成人动漫精品一区二区| 在线观看亚洲一区| 91精品国产综合久久福利软件| 精品av综合导航| 亚洲色图欧美激情| 麻豆成人av在线| av在线不卡电影| 欧美日韩久久不卡| 久久久www成人免费毛片麻豆 | 国产日韩欧美高清在线| 亚洲视频精选在线| 日韩国产高清影视| 丰满亚洲少妇av| 欧美人牲a欧美精品| 久久久精品免费免费| 亚洲电影视频在线| 成人在线一区二区三区| 欧美日韩亚洲不卡| 国产日产欧美精品一区二区三区| 亚洲影视在线观看| 国产成人aaa| 91精品国产综合久久久蜜臀粉嫩 | 国产精品高清亚洲| 看片的网站亚洲| 欧洲亚洲国产日韩| 亚洲国产激情av| 麻豆精品久久精品色综合| 91麻豆免费观看| 久久久久久久久蜜桃| 日韩电影在线一区| 在线观看中文字幕不卡| 国产欧美精品国产国产专区 | 国产大陆a不卡| 91精品综合久久久久久| 亚洲美女一区二区三区| 国产成人av一区二区| 日韩欧美不卡在线观看视频| 亚洲一二三四久久| thepron国产精品| 久久久久久电影| 久久99精品国产91久久来源| 欧美日韩亚洲另类| 一区二区三区免费看视频| 懂色av中文字幕一区二区三区| 日韩视频在线一区二区| 天堂资源在线中文精品| 色狠狠av一区二区三区| 亚洲国产精品精华液2区45| 韩国午夜理伦三级不卡影院| 制服丝袜中文字幕一区| 亚洲成a人片在线观看中文| 91在线免费看| 自拍偷拍国产亚洲| 成人爱爱电影网址| 国产精品成人一区二区三区夜夜夜| 狠狠色丁香婷婷综合久久片| 欧美不卡123| 久久疯狂做爰流白浆xx| 日韩欧美电影一二三| 久国产精品韩国三级视频| 日韩一本二本av| 另类专区欧美蜜桃臀第一页| 欧美一区二区三区系列电影| 视频一区视频二区中文| 7777女厕盗摄久久久| 青青青爽久久午夜综合久久午夜| 欧美丰满一区二区免费视频| 午夜精品成人在线视频| 67194成人在线观看| 日精品一区二区| 日韩一区二区三区四区| 蜜臀av亚洲一区中文字幕| 精品国产伦一区二区三区观看方式 | 香蕉成人伊视频在线观看| 欧美日韩国产不卡| 久久精品国产精品亚洲精品| 欧美精品一区视频| 东方aⅴ免费观看久久av| 中文字幕在线观看一区二区| 色综合久久天天| 视频在线观看国产精品| 欧美成人精品高清在线播放| 国产精品亚洲成人| 成人免费一区二区三区视频 | 久久久久国产精品人| av一区二区不卡| 亚洲gay无套男同| 久久综合狠狠综合久久综合88 | 韩国成人福利片在线播放| 国产欧美日韩精品一区| 色视频成人在线观看免| 蜜臀av国产精品久久久久| 亚洲国产岛国毛片在线| 91国偷自产一区二区三区成为亚洲经典 | 久久 天天综合| 国产精品盗摄一区二区三区| 欧美日本乱大交xxxxx| 国产精品一区二区无线| 亚洲精品第1页|