ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π²Π·Π΅Ρ ΠΎΡ ΠΌΠΎΡ
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ½ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ
ΠΠ½Π΅Ρ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠΎΠ½Π°Π»Π΅Π½ ΡΠΈΠ³Π½Π°Π» Π½Π° Π·Π²ΡΠΊΠΎΠ²Π° ΠΊΠ°ΡΡΠ°. ΠΠ° Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ ΡΠΈΠ»ΡΡΠΈΡΠ΅ ΠΊΡΠΌ Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π½Π° Π·Π²ΡΠΊΠΎΠ²ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
Π§Π΅ΡΠ΅ΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΎΡΠ»ΡΠ²ΠΎ Π½Π°Π΄ΡΡΠ½ΠΎ, ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΠΎΠΊΠ°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ Π΄Π²ΠΈΠΆΠΈ Π½Π°ΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΠ° ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π²Π°Ρ ΠΈ ΡΡΡΠ΅Π»ΠΊΠΈΡΠ΅. ΠΡΠ°Π²ΠΎΡΠ³ΡΠ»Π½ΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΠΈΠ»ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°. ΠΡΡΡΠ΅ Π² ΠΏΡΠ°Π²ΠΎΡΠ³ΡΠ»Π½ΠΈΠΊΠ° Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΎΠ»Ρ ΠΈ ΡΠΈΠΏΡΡ Π½Π° ΡΠΈΠ»ΡΡΡΠ° Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ Ρ Π³Π»Π°Π²Π½ΠΈ Π±ΡΠΊΠ²ΠΈ ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΄ΠΎΠ»Ρ. Π‘ΡΡΠ΅Π»ΠΊΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π²Π°ΡΠΈ ΠΏΡΠ°Π²ΠΎΡΠ³ΡΠ»Π½ΠΈΡΠΈΡΠ΅, ΡΠ° ΠΎΠΏΠ°ΡΠΊΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΎΡ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΌ ΡΠΈΠ»ΡΡΡ. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ Π΅Π΄ΠΈΠ½ ΡΠΈΠ»ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄ΠΎΠ²Π΅ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΠΈ.
ΠΡΠΈΡΠΊΠΎ Π·Π°ΠΏΠΎΡΠ²Π° Ρ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π΄Π°Π²Π° ΡΠ΅ΠΌΠΏΠΎΡΠΎ, Ρ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π²ΡΠ² ΡΠΈΠ»ΡΡΠΈΡΠ΅. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠ²ΠΎΡ ΡΠ°ΠΊΡΠΎΠ² ΡΠΈΠΊΡΠ» Π²ΡΠ΅ΠΊΠΈ ΡΠΈΠ»ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ Π²Ρ ΠΎΠ΄. Π ΠΏΠΎΡΡΠ°Π²Ρ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°. ΠΡΡΠ²ΠΎ ΡΠΈΠ»ΡΡΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ, ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΈΠ»ΡΡΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΊΡΠΌ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄ΠΈ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Ρ ΠΎΠ΄ΠΈ) ΠΈ Ρ.Π½. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ ΡΠΈΠ»ΡΡΡ Π²ΡΠ² Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π·Π°Π²ΡΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΏΠΈΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π½ΠΎΠ² ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ. Π£Π΄Π°ΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ»Π΅Π΄Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΎΡ 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