مادة المقالة مأخوذة من قناة zen الخاصة بي .

قم بإنشاء مولد نغمات
في المقالة السابقة ، قمنا بتثبيت مكتبة وسائط الوسائط وأدوات التطوير واختبروا أدائها عن طريق إنشاء تطبيق تجريبي.
اليوم سنقوم بإنشاء تطبيق يمكن رؤيته من خلال بطاقة صوت على بطاقة صوت. لحل هذه المشكلة ، نحتاج إلى توصيل المرشحات بدائرة مولد الصوت الموضحة أدناه:

, . . , . . , , , . , .
, , . , . — . , ( ) . , , , . , , 10 .
. , , , . , . , — , . , , . , . , , . .
, , . . :
#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
بعد بدء البرنامج ، ستسمع إشارة صوتية قصيرة تتكون من نغمتين في ديناميكيات الكمبيوتر.
قمنا ببناء وإطلاق دائرتنا الصوتية الأولى. لقد رأينا كيفية إنشاء مثيلات المرشح ، وكيفية الاتصال وكيفية استدعاء طرقها. يسرنا النجاح الأول ، ما زلنا بحاجة إلى الانتباه إلى حقيقة أن برنامجنا لا يحرر الذاكرة المخصصة قبل الإنهاء. في المقالة التالية ، سوف نتعلم كيفية التنظيف بعد أنفسنا.