Mediastreamer2 VoIP เชเชจเซเชœเชฟเชจเชจเซ€ เชถเซ‹เชงเช–เซ‹เชณ. เชญเชพเช— 2

เชฒเซ‡เช–เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชฎเชพเชฐเชพ เชชเชฐเชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เชเซ‡เชจ เชšเซ‡เชจเชฒ.

Mediastreamer2 VoIP เชเชจเซเชœเชฟเชจเชจเซ€ เชถเซ‹เชงเช–เซ‹เชณ. เชญเชพเช— 2

เชŸเซ‹เชจ เชœเชจเชฐเซ‡เชŸเชฐ เชฌเชจเชพเชตเชตเซเช‚

เช…เช—เชพเช‰เชจเชพ เชฎเชพเช‚ เชฒเซ‡เช– เช…เชฎเซ‡ เชฎเซ€เชกเชฟเชฏเชพ เชธเซเชŸเซเชฐเซ€เชฎเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€, เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ‚เชฒเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เชŸเซเชฐเชพเชฏเชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ€เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚ เช›เซ‡.

เช†เชœเซ‡ เช†เชชเชฃเซ‡ เชเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ€เชถเซเช‚ เชœเซ‡ เชธเชพเช‰เชจเซเชก เช•เชพเชฐเซเชก เชชเชฐ เชŸเซ‹เชจ เชธเชฟเช—เซเชจเชฒ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‡. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡เชฒ เชธเชพเช‰เชจเซเชก เชœเชจเชฐเซ‡เชŸเชฐ เชธเชฐเซเช•เชฟเชŸเชฎเชพเช‚ เชซเชฟเชฒเซเชŸเชฐเซเชธเชจเซ‡ เชœเซ‹เชกเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

Mediastreamer2 VoIP เชเชจเซเชœเชฟเชจเชจเซ€ เชถเซ‹เชงเช–เซ‹เชณ. เชญเชพเช— 2

เช†เชชเชฃเซ‡ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎเชจเซ‡ เชกเชพเชฌเซ‡เชฅเซ€ เชœเชฎเชฃเซ‡ เชตเชพเช‚เชšเซ€เช เช›เซ€เช, เช† เชคเซ‡ เชฆเชฟเชถเชพเชฎเชพเช‚ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช†เชชเชฃเซ‹ เชกเซ‡เชŸเชพ เชชเซเชฐเชตเชพเชน เช†เช—เชณ เชตเชงเซ‡ เช›เซ‡. เชคเซ€เชฐ เชชเชฃ เช† เชคเชฐเชซ เชˆเชถเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡. เชฒเช‚เชฌเชšเซ‹เชฐเชธ เชซเชฟเชฒเซเชŸเชฐเซเชธ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชกเซ‡เชŸเชพเชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชฒเช‚เชฌเชšเซ‹เชฐเชธเชจเซ€ เช…เช‚เชฆเชฐ, เชคเซ‡เชจเซ€ เชญเซ‚เชฎเชฟเช•เชพ เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐเชจเซ‹ เชชเซเชฐเช•เชพเชฐ เชซเช•เซเชค เชจเซ€เชšเซ‡ เชฎเซ‹เชŸเชพ เช…เช•เซเชทเชฐเซ‹เชฎเชพเช‚ เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฒเช‚เชฌเชšเซ‹เชฐเชธเชจเซ‡ เชœเซ‹เชกเชคเชพ เชคเซ€เชฐเซ‹ เช เชกเซ‡เชŸเชพ เช•เชคเชพเชฐ เช›เซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เชซเชฟเชฒเซเชŸเชฐเชฅเซ€ เชซเชฟเชฒเซเชŸเชฐ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชซเชฟเชฒเซเชŸเชฐเชฎเชพเช‚ เช˜เชฃเชพ เช‡เชจเชชเซเชŸ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชคเซ‡ เชฌเชงเซเช‚ เช˜เชกเชฟเชฏเชพเชณเชจเชพ เชธเซเชคเซเชฐเซ‹เชคเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชŸเซ‡เชฎเซเชชเซ‹ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชซเชฟเชฒเซเชŸเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชจเชพ เช˜เชกเชฟเชฏเชพเชณ เชšเช•เซเชฐ เชฎเซเชœเชฌ, เชฆเชฐเซ‡เช• เชซเชฟเชฒเซเชŸเชฐ เชคเซ‡เชจเชพ เช‡เชจเชชเซเชŸ เชชเชฐ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชธเชพเชฅเซ‡เชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เช•เชคเชพเชฐเชฎเชพเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เช˜เชกเชฟเชฏเชพเชณเชจเชพ เชธเซเชคเซเชฐเซ‹เชคเชจเซ€ เชธเซŒเชฅเซ€ เชจเชœเซ€เช•เชจเซเช‚ เชซเชฟเชฒเซเชŸเชฐ เช—เชฃเชคเชฐเซ€เช“ เช•เชฐเซ‡ เช›เซ‡, เชชเช›เซ€ เชคเซ‡เชจเชพ เช†เช‰เชŸเชชเซเชŸ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชซเชฟเชฒเซเชŸเชฐเซเชธ (เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เช†เช‰เชŸเชชเซเชŸ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡), เชตเช—เซ‡เชฐเซ‡. เชธเชพเช‚เช•เชณเชฎเชพเช‚ เช›เซ‡เชฒเซเชฒเซเช‚ เชซเชฟเชฒเซเชŸเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡ เชชเช›เซ€, เชจเชตเซ€ เช˜เชกเชฟเชฏเชพเชณ เช†เชตเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเชฒ เช…เชŸเช•เซ‡ เช›เซ‡. เชฌเซ€เชŸเซเชธ, เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, 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)

เชœเซเชฏเชพเช‚ เชชเซเชฐเชฅเชฎ เชฆเชฒเซ€เชฒ เชธเซเชคเซเชฐเซ‹เชค เชซเชฟเชฒเซเชŸเชฐ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เช›เซ‡, เชฌเซ€เชœเซ€ เชฆเชฒเซ€เชฒ เชธเซเชคเซเชฐเซ‹เชค เช†เช‰เชŸเชชเซเชŸ เชจเช‚เชฌเชฐ เช›เซ‡ (เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช‡เชจเชชเซเชŸเซเชธ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชถเซ‚เชจเซเชฏเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡ เชจเช‚เชฌเชฐ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡). เชคเซเชฐเซ€เชœเซ€ เชฆเชฒเซ€เชฒ เชฐเซ€เชธเซ€เชตเชฐ เชซเชฟเชฒเซเชŸเชฐ เชฎเชพเชŸเซ‡ เชเช• เชจเชฟเชฐเซเชฆเซ‡เชถเช• เช›เซ‡, เชšเซ‹เชฅเซ‹ เชฐเซ€เชธเซ€เชตเชฐ เช‡เชจเชชเซเชŸ เชจเช‚เชฌเชฐ เช›เซ‡.

เชฌเชงเชพ เชซเชฟเชฒเซเชŸเชฐเซเชธ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡ เช˜เชกเชฟเชฏเชพเชณเชจเซ‹ เชธเซเชคเซเชฐเซ‹เชค เช›เซ‡เชฒเซเชฒเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡ (เชคเซเชฏเชพเชฐเชฌเชพเชฆ เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เชซเช•เซเชค เชŸเซ€เช•เชฐ เช•เชนเซ€เชถเซเช‚). เชœเซ‡ เชชเช›เซ€ เช…เชฎเชพเชฐเซเช‚ เชธเชพเช‰เชจเซเชก เชธเชฐเซเช•เชฟเชŸ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชธเซเชชเซ€เช•เชฐเชฎเชพเช‚ เชนเชœเซ€ เชธเซเชงเซ€ เช•เช‚เชˆ เชธเชพเช‚เชญเชณเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€ - เชงเซเชตเชจเชฟ เชœเชจเชฐเซ‡เชŸเชฐ เชฌเช‚เชง เช›เซ‡ เช…เชจเซ‡ เชฎเซŒเชจ เชธเชพเชฅเซ‡ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพ เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เชŸเซ‹เชจ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชœเชจเชฐเซ‡เชŸเชฐ เชซเชฟเชฒเซเชŸเชฐ เชชเชฆเซเชงเชคเชฟ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช…เชฎเซ‡ เชซเซ‹เชจ เชชเชฐ "1" เชฌเชŸเชจ เชฆเชฌเชพเชตเชตเชพเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชŸเซ-เชŸเซ‹เชจ (DTMF) เชธเชฟเช—เซเชจเชฒ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เชถเซเช‚. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช ms_filter_call_method() เช…เชฎเซ‡ MS_DTMF_GEN_PLAY เชชเชฆเซเชงเชคเชฟเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชจเซ‡ เชเช• เชฆเชฒเซ€เชฒ เชคเชฐเซ€เช•เซ‡ เชชเชพเชธ เช•เชฐเซ€เชจเซ‡ เช•เซ‹เชกเชจเชพ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชคเชฐเซ€เช•เซ‡ เชœเซ‡ เชชเซเชฒเซ‡เชฌเซ‡เช• เชธเชฟเช—เซเชจเชฒเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡:

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

เช…เชจเซ‡ เชšเชฒเชพเชตเซ‹:

$ ./mstest2

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชถเชฐเซ‚ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเชฎเซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชธเซเชชเซ€เช•เชฐเชฎเชพเช‚ เชฌเซ‡ เชŸเซ‹เชจ เชงเชฐเชพเชตเชคเชพ เชŸเซ‚เช‚เช•เชพ เชงเซเชตเชจเชฟ เชธเช‚เช•เซ‡เชค เชธเชพเช‚เชญเชณเชถเซ‹.

เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชชเซเชฐเชฅเชฎ เชธเชพเช‰เชจเซเชก เชธเชฐเซเช•เชฟเชŸ เชฌเชจเชพเชตเซ€ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ€. เช…เชฎเซ‡ เชœเซ‹เชฏเซเช‚ เช•เซ‡ เชซเชฟเชฒเซเชŸเชฐ เช‡เชจเซเชธเซเชŸเชจเซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚, เชคเซ‡เชฎเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชฆเซเชงเชคเชฟเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเซ€. เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชธเชซเชณเชคเชพเชฅเซ€ เช–เซเชถ เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เชชเชฃ เช…เชฎเชพเชฐเซ‡ เช เชนเช•เซ€เช•เชค เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเชคเชพ เชชเชนเซ‡เชฒเชพ เชซเชพเชณเชตเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชฎเซเช•เซเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช†เช—เชพเชฎเซ€ เชฎเชพเช‚ เชฒเซ‡เช– เช†เชชเชฃเซ‡ เช†เชชเชฃเซ€ เชœเชพเชคเชจเซ‡ เชธเชพเชซ เช•เชฐเชตเชพเชจเซเช‚ เชถเซ€เช–เซ€เชถเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹