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