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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛