Su'esu'e le afi Mediastreamer2 VoIP. Vaega 2

O mea o le tusiga e maua mai i laʻu zen alavai.

Su'esu'e le afi Mediastreamer2 VoIP. Vaega 2

Fausiaina o se fa'atupu leo

I le taimi muamua tusiga Na matou fa'apipi'i le faletusi fa'asalalau fa'asalalau, meafaigaluega fa'atupuina ma fa'ata'ita'i a latou galuega e ala i le fausiaina o se talosaga fa'ata'ita'i.

O le asō o le a matou fatuina se talosaga e mafai ona faʻaalia se faʻailoga leo i luga o se kata leo. Ina ia foia lenei faʻafitauli e manaʻomia ona faʻafesoʻotaʻi le filiga i totonu o le afi afi eletise o loʻo faʻaalia i lalo:

Su'esu'e le afi Mediastreamer2 VoIP. Vaega 2

Matou te faitau i le ata mai le agavale i le taumatau, o le itu lea e agai i ai a matou faʻamatalaga. O aū fo'i o lo'o fa'ailoa mai ai lenei mea. Fa'afa'afa'afafa'ailoga e fa'ailoa mai ai filiga e fa'agaioia poloka o fa'amaumauga ma maua ai le taunu'uga. I totonu o le rectangle, o loʻo faʻaalia lona matafaioi ma le ituaiga faamama o loʻo faʻaalia i mataitusi tetele i lalo ifo. O aū e fa'afeso'ota'i fa'afa'afa'afa'afa'i o fa'amaumauga ia e fa'ao'o mai ai poloka o fa'amaumauga mai le faamama i le fa'amama. I se tulaga lautele, o se faamama e mafai ona i ai le tele o mea e fai ma mea e fai.

E amata uma lava i le puna o le uati, lea e faʻatulaga ai le taimi e faʻatatau ai faʻamaumauga i totonu o filiga. E tusa ai ma lona taamilosaga uati, e fa'agasolo uma poloka fa'amaumauga o lo'o iai i totonu. Ma tu'u poloka ma le i'uga i fafo i le laina. Muamua, o le faamama e sili ona latalata i le puna o le uati e faia ai faʻatusatusaga, ona faʻafesoʻotaʻi lea o filiga i ana gaioiga (e mafai ona tele gaioiga), ma isi. A mae'a ona fa'agaoioi le fa'amama mulimuli i le filifili, e tu le fa'atinoga se'ia o'o mai se uati fou. Pa'u, pe a le mafai, mulimuli i le va o le 10 miliseconds.

Tatou toe foi i la tatou ata. O le taamilosaga o le uati e oʻo mai i le faʻaogaina o le puna le leoa; o se faamama lea, o loʻo pisi i le fausiaina o se poloka o faʻamaumauga o loʻo i ai zeros i lona gaioiga mo taʻamilosaga taʻitasi uati. Afai tatou te manatu o lenei poloka o se poloka o faʻataʻitaʻiga leo, o lona uiga e leai se mea e sili atu nai lo le filemu. I le tepa muamua, e foliga mai e ese le faʻatupuina o poloka faʻamatalaga ma le leoa - pe a uma, e le mafai ona faʻalogoina, ae o nei poloka e manaʻomia mo le faʻaogaina o le faʻamalo leo. E fa'aogaina e le afi ia poloka pei o se pepa avanoa, e pu'eina fa'ata'ita'iga leo i totonu. I lona tulaga masani, e tape le afi afi ma na'o le lafo atu o poloka fa'aoga i le gaosiga. O le mea lea, o poloka o le lemu e pasi atu e le suia i le taamilosaga atoa mai le agavale i le taumatau, ma faaiʻu i le kata leo. Lea e ave lemu poloka mai le laina e fesoʻotaʻi ma lona faʻaoga.

Ae e suia mea uma pe a tuʻuina atu i le afi se faʻatonuga e taʻalo le leo, e amata ona faʻatupuina faʻataʻitaʻiga leo ma suia i latou i faʻataʻitaʻiga i totonu o poloka faʻaoga ma tuʻu poloka suiga i le gaioiga. Ua amata ona taina le leo le kata leo. Lalo o se polokalame o loʻo faʻatinoina le polokalame galuega o loʻo faʻamatalaina i luga:

/* Файл 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);   
}

A mae'a ona amataina le fa'asalalauga fa'asalalau, e tolu filiga e faia: voidsource, dtmfgen, snd_card_write. Ua faia se puna uati.

Ona e manaʻomia lea ona faʻafesoʻotaʻi le filiga e tusa ai ma la matou matagaluega, ma e tatau ona faʻafesoʻotaʻi le puna o le uati mulimuli, talu ai a maeʻa lenei mea o le a amata loa ona galue le matagaluega. Afai e te fa'afeso'ota'i se puna o le uati i se ta'amilosaga e le'i mae'a, e mafai ona pa'u le alalaupapa fa'asalalau pe a iloa e le itiiti ifo ma le tasi le faamama i totonu o le filifili ma mea uma e fa'aoga po'o mea uma na faia e "tautau i le ea" (e le feso'ota'i).

Fa'afeso'ota'i filiga e fa'aaoga le galuega

ms_filter_link(src, src_out, dst, dst_in)

pe a fai o le finauga muamua o se faasinoala i le faamama puna, o le finauga lona lua o le numera o mea e maua mai (ia matau o mea e fai ma galuega faatino e faanumera amata mai le zero). O le finauga lona tolu o se faasinoala i le faamama o le tagata e taliaina, o le lona fa o le numera o le mea e maua ai.

E feso'ota'i uma filiga ma o le puna o le uati e feso'ota'i mulimuli (o le a ta'ua mulimuli ane o se ticker). A maeʻa ona amata galue le matou leo ​​leo, ae leai se mea e mafai ona faʻalogoina i le komipiuta komipiuta - ua tape le leo generator ma na o le pasi atu i totonu o poloka faʻamaumauga ma le leoa. Ina ia amata fatuina se leo, e te manaʻomia le faʻaogaina o le auala faamama afi.

O le a matou faia se faʻailoga lua-leo (DTMF) e fetaui ma le oomiina o le "1" faʻamau i luga o le telefoni. Ina ia faia lenei mea, matou te faʻaaogaina le galuega ms_filter_call_method() Matou te taʻua le MS_DTMF_GEN_PLAY metotia, pasia e fai ma finauga o se faʻasino i le code e tatau ona fetaui ma le faʻailoga toe faʻafoʻi.

Pau lava le mea o loʻo totoe o le tuʻufaʻatasia o le polokalama:

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

Ma tamoe:

$ ./mstest2

A uma ona amata le polokalame, o le ae faalogoina se faailo leo puupuu e aofia ai leo e lua i le komipiuta komipiuta.

Na matou fausia ma fa'alauiloa la matou li'o leo muamua. Na matou vaʻai pe faʻafefea ona fai faʻataʻitaʻiga faamama, faʻafefea ona faʻafesoʻotaʻi ma pe faʻafefea ona valaʻau a latou metotia. E ui ina matou fiafia i lo matou manuia muamua, e manaʻomia lava ona matou gauai atu i le mea moni e le faʻasaʻolotoina e le matou polokalame le manatua na tuʻuina atu aʻo leʻi alu ese. I le isi tusiga o le a tatou aoao e faamama i tatou lava.

puna: www.habr.com

Faaopoopo i ai se faamatalaga