Tshawb xyuas lub cav Mediastreamer2 VoIP. Ntu 2

Cov ntaub ntawv ntawm tsab xov xwm yog muab los ntawm kuv zen channel.

Tshawb xyuas lub cav Mediastreamer2 VoIP. Ntu 2

Tsim ib lub Tone Generator

Hauv yav dhau los Tshooj Peb tau teeb tsa lub tsev qiv ntawv xov xwm streamer, cov cuab yeej txhim kho thiab sim lawv txoj haujlwm los ntawm kev tsim daim ntawv thov mus sib hais.

Niaj hnub no peb yuav tsim ib daim ntawv thov uas tuaj yeem tsim lub suab nrov ntawm daim npav suab. Yuav kom daws tau qhov teeb meem no peb yuav tsum txuas cov ntxaij lim dej rau hauv lub suab generator Circuit Court hauv qab no:

Tshawb xyuas lub cav Mediastreamer2 VoIP. Ntu 2

Peb nyeem daim duab ntawm sab laug mus rau sab xis, qhov no yog cov kev taw qhia uas peb cov ntaub ntawv ntws txav. Cov xub kuj hint rau qhov no. Rectangles qhia cov ntxaij lim dej uas txheej txheem thaiv cov ntaub ntawv thiab tso tawm qhov tshwm sim. Hauv daim duab plaub, nws lub luag haujlwm tau qhia thiab hom lim tau qhia hauv cov ntawv loj hauv qab no. Cov xub txuas cov duab plaub yog cov ntaub ntawv kab uas cov ntaub ntawv xa tawm los ntawm lim mus rau lim. Feem ntau, ib lub lim tuaj yeem muaj ntau yam khoom siv thiab cov khoom tawm.

Nws tag nrho pib nrog lub moos qhov chaw, uas teev cov tempo ntawm cov ntaub ntawv yog xam nyob rau hauv cov lim. Raws li nws lub voj voog moos, txhua lub lim dej ua tiav tag nrho cov ntaub ntawv thaiv uas nyob ntawm nws cov tswv yim. Thiab muab cov blocks nrog cov txiaj ntsig tawm mus rau hauv kab. Ua ntej, lub lim ze tshaj plaws ntawm lub moos ua haujlwm suav nrog, tom qab ntawd cov ntxaij lim dej txuas nrog nws cov khoom tawm (yuav muaj ntau qhov tso tawm), thiab lwm yam. Tom qab qhov kawg lim hauv cov saw hlau ua tiav, kev ua tiav nres kom txog thaum lub moos tshiab tuaj txog. Beats, los ntawm lub neej ntawd, ua raws li lub sijhawm ntawm 10 milliseconds.

Cia peb rov qab mus rau peb daim duab. Lub voj voog moos tuaj txog ntawm cov tswv yim ntawm qhov chaw ntsiag to; qhov no yog lub lim dej, uas yog tibneeg hu tauj coob tsim cov ntaub ntawv thaiv uas muaj xoom ntawm nws cov zis rau txhua lub voj voog. Yog tias peb xav txog qhov thaiv no yog qhov thaiv ntawm cov qauv suab, ces qhov no tsis muaj dab tsi ntau tshaj li qhov ntsiag to. Thaum xub thawj siab ib muag, nws zoo nkaus li coj txawv txawv los tsim cov ntaub ntawv thaiv nrog kev ntsiag to - tom qab tag nrho, nws tsis tuaj yeem hnov, tab sis cov blocks no tsim nyog rau kev ua haujlwm ntawm lub tshuab hluav taws xob lub suab. Lub tshuab hluav taws xob siv cov blocks no zoo li ib daim ntawv dawb paug, sau cov qauv suab rau hauv lawv. Nyob rau hauv nws lub xeev ib txwm, lub tshuab hluav taws xob raug muab tua thiab tsuas yog xa tawm cov tswv yim thaiv rau cov zis. Yog li ntawd, blocks ntawm silence dhau unchanged los ntawm tag nrho cov circuits ntawm sab laug mus rau sab xis, xaus rau hauv daim card suab. Uas ntsiag to siv cov blocks los ntawm cov kab txuas nrog nws cov tswv yim.

Tab sis txhua yam hloov pauv yog tias lub tshuab hluav taws xob tau txais cov lus txib kom ua suab nrov, nws pib tsim cov qauv suab thiab hloov lawv nrog cov qauv hauv cov khoom nkag thiab tso cov blocks hloov ntawm cov zis. Daim npav suab pib ua suab nrov. Hauv qab no yog ib qho program uas siv cov txheej txheem ua haujlwm tau piav qhia saum toj no:

/* Π€Π°ΠΉΠ» mstest2.c */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
int main()
{
    ms_init();

    /* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экзСмпляры Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ². */
    MSFilter  *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
    MSFilter  *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
    MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
    MSFilter  *snd_card_write = ms_snd_card_create_writer(card_playback);

    /* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚ΠΈΠΊΠ΅Ρ€. */
    MSTicker *ticker = ms_ticker_new();

    /* БоСдиняСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. */
    ms_filter_link(voidsource, 0, dtmfgen, 0);
    ms_filter_link(dtmfgen, 0, snd_card_write, 0);

   /* ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ источник Ρ‚Π°ΠΊΡ‚ΠΎΠ². */
   ms_ticker_attach(ticker, voidsource);

   /* Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. */
   char key='1';
   ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY, (void*)&key);

   /* Π”Π°Π΅ΠΌ, врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ.*/
   ms_sleep(2);   
}

Tom qab pib qhov media streamer, peb cov lim tau tsim: voidsource, dtmfgen, snd_card_write. Lub moos tau tsim.

Tom qab ntawd koj yuav tsum tau txuas cov ntxaij lim dej raws li peb lub voj voog, thiab lub moos yuav tsum tau txuas nrog qhov kawg, txij li tom qab qhov no Circuit Court yuav pib ua haujlwm tam sim. Yog tias koj txuas lub moos mus rau lub voj voog tsis tiav, nws yuav tshwm sim tias cov xov xwm streamer tsoo yog tias nws pom tsawg kawg ib lub lim hauv cov saw hlau nrog txhua qhov kev nkag los yog tag nrho cov khoom tawm "dai hauv huab cua" (tsis txuas).

Kev sib txuas cov ntxaij lim dej yog ua tiav siv cov haujlwm

ms_filter_link(src, src_out, dst, dst_in)

qhov twg thawj qhov kev sib cav yog tus taw tes rau qhov lim dej, qhov kev sib cav thib ob yog tus naj npawb tso zis (nco ntsoov tias cov khoom siv thiab cov khoom tawm raug suav txij li xoom). Qhov kev sib cav thib peb yog tus taw tes rau lub receiver lim, plaub yog tus receiver input tooj.

Tag nrho cov ntxaij lim dej tau txuas nrog thiab lub moos qhov txuas txuas kawg (tom qab no peb tsuas yog hu nws tias ticker). Tom qab ntawd peb lub suab hluav taws xob pib ua haujlwm, tab sis tsis muaj dab tsi tuaj yeem hnov ​​​​hauv lub computer hais lus tsis tau - lub tshuab hluav taws xob lub suab raug kaw thiab tsuas yog dhau los ntawm cov ntaub ntawv tawm tswv yim nrog kev ntsiag to. Txhawm rau pib tsim lub suab nrov, koj yuav tsum tau khiav cov txheej txheem lim generator.

Peb yuav tsim ob lub suab nrov (DTMF) teeb liab sib raug rau nias lub pob "1" ntawm lub xov tooj. Txhawm rau ua qhov no, peb siv lub luag haujlwm ms_filter_call_method() Peb hu rau MS_DTMF_GEN_PLAY txoj kev, hla nws raws li kev sib cav ib tus taw tes rau cov cai uas lub teeb liab playback yuav tsum sib haum.

Txhua yam uas tseem tshuav yog los sau qhov program:

$ gcc mstest2.c -o mstest2 `pkg-config mediastreamer --libs --cflags`

Thiab khiav:

$ ./mstest2

Tom qab pib qhov kev pab cuam, koj yuav hnov ​​​​ib lub suab luv luv uas muaj ob lub suab hauv lub computer hais lus.

Peb tau tsim thiab tso tawm peb lub suab thawj zaug. Peb pom yuav ua li cas los tsim cov lim dej, yuav ua li cas txuas lawv thiab hu lawv li cas. Thaum peb zoo siab nrog peb qhov kev vam meej thawj zaug, peb tseem yuav tsum tau ua tib zoo saib xyuas qhov tseeb tias peb qhov kev pab cuam tsis pub dawb lub cim xeeb ua ntej tawm mus. Nyob rau hauv lub tom ntej no Tshooj peb yuav kawm kom huv huv tom qab peb tus kheej.

Tau qhov twg los: www.hab.com

Ntxiv ib saib