Kami mempelajari mesin VoIP Mediastreamer2. Bagian 2

Materi artikel diambil dari saluran zen saya .



Buat generator nada


Pada artikel sebelumnya , kami menginstal perpustakaan streamer media, alat pengembangan, dan menguji fungsinya dengan membangun aplikasi percobaan.


Hari ini kita akan membuat aplikasi yang dapat melihat melalui kartu suara pada kartu suara. Untuk mengatasi masalah ini, kita perlu menghubungkan filter ke sirkuit generator suara yang ditunjukkan di bawah ini:


Sirkuit generator suara


, . . , . . , , , . , .


, , . , . — . , ( ) . , , , . , , 10 .


. , , , . , . , — , . , , . , . , , . .


, , . . :


/*  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);   
}

, : voidsource, dtmfgen, snd_card_write. .


, , . , , , " " ( ).



ms_filter_link(src, src_out, dst, dst_in)

-, — ( , ). -, — .


( ). , — . , .


(DTMF) "1". ms_filter_call_method() MS_DTMF_GEN_PLAY, , .


:


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

:


$ ./mstest2

Setelah memulai program, Anda akan mendengar sinyal suara pendek yang terdiri dari dua nada dalam dinamika komputer.


Kami membangun dan meluncurkan sirkuit suara pertama kami. Kami melihat cara membuat instance filter, cara menghubungkan, dan cara memanggil metode mereka. Senang dengan keberhasilan pertama, kita masih perlu memperhatikan fakta bahwa program kita tidak melepaskan memori yang dialokasikan sebelum berakhir. Pada artikel selanjutnya , kita akan belajar cara membersihkan diri kita sendiri.


All Articles