ืืขืจ ืืึทืืขืจืืึทื ืคืื ืืขื ืึทืจืืืงื ืืื ืืขื ืืืขื ืคืื ืืืื
ืฉืึทืคึฟื ืึท ืืึธื ืืขื ืขืจืึทืืึธืจ
ืืื ืื ืคืจืืขืจืืืงืข
ืืืึทื ื ืืืจ ืืืขืื ืฉืึทืคึฟื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืึทื ืงืขื ืขื ืืืฉืขื ืขืจืืื ืึท ืืึธื ืกืืื ืึทื ืืืืฃ ืึท ืืขืืื ื ืงืึธืจื. ืฆื ืกืึธืืืืข ืืขื ืคึผืจืึธืืืขื ืืืจ ืืึทืจืคึฟื ืฆื ืคืึทืจืืื ืื ืื ืคืืืืขืจืก ืืื ืื ืืขืืื ื ืืขื ืขืจืึทืืึธืจ ืงืจืืึทื ืืขืืืืื ืืื ืื:
ืืืจ ืืืืขื ืขื ืื ืืืึทืืจืึทืืข ืคืื โโืืื ืงืก ืฆื ืจืขืื, ืืึธืก ืืื ืื ืจืืืืื ื ืืื ืืืึธืก ืืื ืืืขืจ ืืึทืื ืืืืคื ืืืืืขืื. ืื ืึทืจืึธืื ืืืื ืึธื ืฆืืืขืจืขื ืืฉ ืืืืฃ ืืขื. ืจืขืงืืึทื ืืืึทืื ืึธื ืืืืึทืื ืคืืืืขืจืก ืืืึธืก ืคึผืจืึธืฆืขืก ืืืึทืงืก ืคืื ืืึทืื ืืื ืจืขืืืืืึทื ืื ืจืขืืืืืึทื. ืื ืื ืืจืึธืืขืง, ืืืึทื ืจืึธืืข ืืื ืื ืืขืืืืื ืืื ืื ืคืืืืขืจ ืืืคึผ ืืื ืื ืืขืืืืื ืืื ืืืืคึผื ืืืชืืืช ืคึผืื ืงื ืืื ืื. ืื ืึทืจืึธืื ืงืึทื ืขืงืืื ื ืื ืจืขืงืืึทื ืืืึทืื ืืขื ืขื ืืึทืื ืงืืื ืืืจื ืืืึธืก ืืืึทืงืก ืคืื ืืึทืื ืืขื ืขื ืืืืขืจืืขืืขืื ืคืื ืคืืืืขืจ ืฆื ืคืืืืขืจ. ืืื ืึทืืืขืืืื, ืึท ืคืืืืขืจ ืงืขื ืขื ืืึธืื ืคืืืข ืื ืคึผืืฅ ืืื ืึทืืืคึผืืฅ.
ืขืก ืึทืืข ืกืืึทืจืฅ ืืื ืื ืืืืืขืจ ืืงืืจ, ืืืึธืก ืฉืืขืื ืืขื ืืขืืคึผืึธ ืืื ืืืึธืก ืืึทืื ืืขื ืขื ืงืึทืืงืืึทืืืืืื ืืื ืื ืคืืืืขืจืก. ืืืื ืืืื ืืืืืขืจ ืฆืืงื, ืืขืืขืจ ืคืืืืขืจ ืคึผืจืึทืกืขืกืึทื ืึทืืข ืืึทืื ืืืึทืงืก ืืืึธืก ืืขื ืขื ืืื ืืืื ืึทืจืืึทื ืฉืจืืึทื. ืืื ืืืืื ืืืึทืงืก ืืื ืืขืจ ืจืขืืืืืึทื ืืื ืื ืจืื. ืขืจืฉืืขืจ, ืื ืคืืืืขืจ ืงืืึธืืกืึทืกื ืฆื ืื ืืืืืขืจ ืืงืืจ ืคึผืขืจืคืึธืจืื ืืฉืืื ืืช, ืืขืจื ืึธื ืื ืคืืืืขืจืก ืงืึธื ื ืขืงืืขื ืฆื ืืืื ืึทืืืคึผืืฅ (ืขืก ืงืขื ืขื ืืืื ืคืืืข ืึทืืืคึผืืฅ), ืืื ืึทืืื ืืืืฃ. ื ืึธื ืื ืืขืฆืืข ืคืืืืขืจ ืืื ืื ืงืืื ืขื ืืืงื ืคึผืจืึทืกืขืกืื ื, ืืืจืืคืืจืื ื ืกืืึทืคึผืก ืืื ืึท ื ืืึท ืืืืืขืจ ืงืืื. ืืืฅ, ืืืจื ืคืขืืืงืืึทื, ื ืึธืืืืื ืึท ืืขืืึทืืขื ืคืื 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