ืืืืืจ ืฉื ืืืืืจ ืืงืื ืืื ื
ืืฆืืจืช ืืืืื ืฆืืืืื
ืืงืืื
ืืืื ื ืืฆืืจ ืืคืืืงืฆืื ืฉืืืืื ืืืคืืง ืืืช ืฆืืื ืืืจืืืก ืงืื. ืืื ืืคืชืืจ ืืขืื ืื ืขืืื ื ืืืืจ ืืช ืืืกื ื ืื ืืืขืื ืืืืื ืืงืื ืืืืฆื ืืืื:
ืื ื ืงืืจืืื ืืช ืืืืืืจืื ืืฉืืื ืืืืื, ืื ืืืืืื ืฉืืืื ื ืข ืืจืืืช ืื ืชืื ืื ืฉืื ื. ืื ืืืฆืื ืืจืืืื ืขื ืื. ืืืื ืื ืืฆืืื ืื ืืกื ื ืื ืฉืืขืืืื ืืืืงืื ืฉื ื ืชืื ืื ืืืืฆืืืื ืืช ืืชืืฆืื. ืืชืื ืืืืื ืืฆืืื ืชืคืงืืื ืืกืื ืืืกื ื ืืฆืืื ืืืืชืืืช ืืืืืืช ืืืฉ ืืชืืช. ืืืฆืื ืืืืืจืื ืืช ืืืืื ืื ืื ืชืืจื ื ืชืื ืื ืืจืื ืืืขืืจืื ืืืืงืื ืฉื ื ืชืื ืื ืืืกื ื ืืืกื ื. ืืืืคื ืืืื, ืืืกื ื ืืืืืืช ืืืืืช ืื ืืกืืช ืืืฆืืืืช ืจืืืช.
ืืื ืืชืืื ืืืงืืจ ืืฉืขืื, ืฉืงืืืข ืืช ืืงืฆื ืฉืื ืืืืฉืืื ื ืชืื ืื ืืืกื ื ืื. ืืคื ืืืืืจ ืืฉืขืื ืฉืื, ืื ืืกื ื ืืขืื ืืช ืื ืืืืงื ืื ืชืื ืื ืฉื ืืฆืืื ืืงืื ืฉืื. ืืืื ืืก ืืืืงืื ืขื ืืชืืฆืื ืืชืืจ. ืจืืฉืืช, ืืืกื ื ืืงืจืื ืืืงืืจ ืืฉืขืื ืืืฆืข ืืืฉืืืื, ืืืืจ ืืื ืืืกื ื ืื ืืืืืืจืื ืืืฆืืืืช ืฉืื (ืืืืืืช ืืืืืช ืืฆืืืืช ืจืืืช) ืืื ืืืื. ืืืืจ ืฉืืืกื ื ืืืืจืื ืืฉืจืฉืจืช ืืกืืื ืืช ืืขืืืื, ืืืืฆืืข ืืคืกืืง ืขื ืฉืืืืข ืฉืขืื ืืืฉ. ืคืขืืืืช, ืืืจืืจืช ืืืื, ืขืืงืืืช ืืืจ ืืจืืื ืฉื 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
ืืืืจ ืืคืขืืช ืืชืืื ืืช, ืชืฉืืข ืืืช ืงืื ืงืฆืจ ืืืืจืื ืืฉื ื ืฆืืืืื ืืจืืงืื ืืืืฉื.
ืื ืื ื ืืืฉืงื ื ืืช ืืขืื ืืกืืื ื ืืจืืฉืื ืฉืื ื. ืจืืื ื ืืื ืืืฆืจืื ืืืคืขื ืกืื ืื, ืืื ืืืืจืื ืืืชื ืืืื ืงืืจืืื ืืฉืืืืช ืฉืืื. ืืืจืืช ืฉืื ืื ื ืืจืืฆืื ืืืืฆืืื ืืจืืฉืื ืืช ืฉืื ื, ืื ืื ื ืขืืืื ืฆืจืืืื ืืฉืื ืื ืืขืืืื ืฉืืชืืื ืืช ืฉืื ื ืื ืืฉืืจืจืช ืืช ืืืืืจืื ืฉืืืงืฆื ืืคื ื ืืืฆืืื. ืืื
ืืงืืจ: www.habr.com