上次已經編譯通過了emiplib-1.0.0,下面來學習怎麼使用emiplib。先從裡面的例子開始。
先編譯下最簡單的例子。 example資料夾裡的******chain.cpp
新建乙個vc2008工程,原始檔裡新增 ******chain.cpp,在專案屬性裡設定包含頭檔案目錄,庫檔案目錄,庫檔名
這個例子有用到的標頭檔案:jthread-1.2.1, jrtplib-3.7.1, emiplib-1.0.0 用到的三個庫也是對應的。 暫時沒有用到speex。
編譯時提示找不到unistd.h,這個是linux下的系統標頭檔案,注釋掉便可以了。
輸出結果:
time: 1301639510.000000
chain: ****** chain
iteration: 1
mipmessage type: 1
mipmessage subtype: 2
time: 1301639510.000000
chain: ****** chain
iteration: 2
mipmessage type: 1
mipmessage subtype: 2
time: 1301639511.000000
chain: ****** chain
iteration: 3
mipmessage type: 1
mipmessage subtype: 2
time: 1301639511.000000
chain: ****** chain
iteration: 4
mipmessage type: 1
mipmessage subtype: 2
time: 1301639512.000000
chain: ****** chain
iteration: 5
mipmessage type: 1
mipmessage subtype: 2
time: 1301639512.000000
chain: ****** chain
iteration: 6
mipmessage type: 1
mipmessage subtype: 2
time: 1301639513.000000
chain: ****** chain
iteration: 7
mipmessage type: 1
mipmessage subtype: 2
time: 1301639513.000000
chain: ****** chain
iteration: 8
mipmessage type: 1
mipmessage subtype: 2
time: 1301639514.000000
chain: ****** chain
iteration: 9
mipmessage type: 1
mipmessage subtype: 2
time: 1301639514.000000
chain: ****** chain
iteration: 10
mipmessage type: 1
mipmessage subtype: 2
本文的例子可以在這裡下到:******chain.rar
emiplib的文件 emiplib-1.0.0文件
摘下文件裡面的重點
design philosophy 設計哲學
庫的目標是設計乙個可以用很多小組件通過鏈組合起來實現功能強大的程式;另外,庫也封裝了很多小組件形成特定功能的類,如voip類,給程式設計人員提供簡單的介面。
library core 庫的核心
基層部分
元件 components 元件繼承自 mipcomponent
元件鏈 component chains 鏈繼承自 mipcomponentchain
訊息 messages 訊息繼承自 mipmessage
用法示例
loopchain.setchainstart(&sndin);
loopchain.addconnection(&sndin,&sndout);
loopchain.start();
上面例子鏈loopchain將兩個元件sndin與sndout鏈結起來。當loopchain start時,建立了乙個後台執行緒,此後臺執行緒進行下面的工作
1.a mipsystemmessage with subtype mipsystemmessage_type_waittime開始建立,並被發往鏈loopchain的第乙個元件sndin,在本例中,第乙個元件是音效卡,音效卡接收到這個訊息後,會等待直到採集一定量的聲音樣本數,
2.然後loopchain往鏈的下面傳輸資料,在本例中是傳給sndout,音效卡輸出
3.當所有的訊息已經被分發(distribute)後,mipsystemmessage_type_waittime重新發到鏈的第乙個元件音效卡處,然後開始迴圈。當呼叫loopchain.stop()時,或出現乙個錯誤時,鏈迴圈停止。
就像上面所說的,鏈的計時是鏈的第乙個元件決定的
好了,文件的東西到此已經可以解釋本例子的東西了,下面將例子貼出來吧
******chain.cpp
intmain(void)
例子中的第乙個元件便是timer,miptime(0.5)將它設成每隔0.5秒觸發一次。 miptime::wait(miptime(5.0))等待5s後就stop那個鏈chain,回頭看看上面的輸出,明白了吧。
一 求100以內的素數
我們通過變數i來表示1到100的任意乙個數,那麼判斷i是不是素數即可。素數就是除去1和它自身沒有其它的因數的數。可以通過兩層迴圈來判斷i是不是素數。package basedatatype author administrator 求100以內的素數 public class variate if ...
再談CPU使用率100 的問題
曾經我很討厭那些運維一見到cpu使用率100 的時候就大叫狂跳的樣子,我還曾經說過,如果cpu不是拿來用的,難道是用來閒置的嗎 好像我說的話挺有道理。但是,我錯了 不過這也並不意味著運維是對的,cpu出現100 後他們大叫狂跳大多數是覺得自己攤上事了,而並不是基於責任感為了發現並解決問題 這一點請相...
不使用迴圈,如何建立乙個長度為100的陣列
問題描述 在不使用迴圈的條件下,如何建立乙個長度為100的陣列,並且陣列的每乙個元素是該元素的下標?這是乙個比較經典的前端面試題,也可以當筆試題,咋一看,好像難度不大,實際上考察的知識點還不少,值得寫篇文章來備忘!廢話不多說,直接進入正文!為了理解這道題的意思,我們先用傳統的方法來實現一下 使用fo...