文章资料取自我的禅宗频道。

创建一个音调发生器
在上一篇文章中,我们安装了媒体流媒体库,开发工具,并通过构建试用应用程序测试了它们的功能。
今天,我们将创建一个可以在声卡上穿透声卡的应用程序。为了解决这个问题,我们需要将滤波器连接到如下所示的声音发生器电路:

, . . , . . , , , . , .
, , . , . — . , ( ) . , , , . , , 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
启动程序后,您会在计算机动态中听到由两个音调组成的短声音信号。
我们建立并启动了第一个声音电路。我们看到了如何创建过滤器实例,如何连接以及如何调用其方法。对于第一个成功感到高兴的是,我们仍然需要注意以下事实:程序在终止之前不会释放分配的内存。在下一篇文章中,我们将学习如何自己清理。