ืืืืืจ ืฉื ืืืืืจ ืืงืื ืืื ื
ืืฆืืจืช ืื ืจืืช ืืืช
ืืขืืจ
ืืืืืจ ืื ื ืจืืื ืืขืื ืื ืจืืช ืืืช ืื ืืื ืืืฆื ืืงืจืื ืืช ืชืืฆืืช ืืืืืื ืืืคืืืืจ. ืืืื ื ืขืจืื ืืช ืืืืง ืืืืืื.
ืกื ืืืกื ื ืื ืฉืืกืคืง ืกืืจืืืจ ืืืืื ืืืื ืคืืืืจ, MS_VOLUME, ืืืกืืื ืืืืื ืืช ืจืืช ื-RMS ืฉื ืืืืช ืืขืืืจ ืืจืื, ืืืืืืฉ ืืช ืืืืช ืืืืฆืข ืืจืื ืคืื ืงืฆืืืช ืฉืืืืฉืืืช ืืืืชื ืฆืคืืืืช. ืืคืืืืจ ืื ื ืงืืืฉ ืืืืจ ืฉืื ืืืืฉื. ืืื ืืขืช ืขืชื ื ืฉืชืืฉ ืื ืืื.
ื ืฉืชืืฉ ืืืืืื ืฆืืืืื ืืืงืืจ ืืืช, ืฉืืืืช ืืื ื ืืืฉืื ืืืกื ื MS_VOLUME, ืฉืืืื ืืืืืจ ืืจืืืก ืืงืื.
ืืืืืื ืื, ื ืฉืชืืฉ ืืคืืืืจ ืืืืืื ืืืฆื ืืขื ืฉืื ื - ืืื ืืคืืง ืขืืืจื ื ืืืช ืื-ืืืื ื, ืืืืืจ. ืืืช ืืืืื ืจืง ืชื ืืื ืกืื ืืกืืืืืืืช ืืืช.
ืื ืืกืฃ ืืชืืจ ืืืืฉืจืขืช, ื ืฆืืจื ืืืืืืจ ืืช ืืืื ืฉืืืืืื ืืืืช ืืืืฆืจ, ืื ืืืื ืืืกืคืืง ืืื ืฉืืกืคืจ ืืกืคืืง ืฉื ืืืืืืช ืืขืืืจ ืืืกื ื MS_VOLUME ืืืืืื. ืืื ืืืขืืืจ ืืืืจืืช ืืืืืื, ื ืขืฉื ืฉืืืืฉ ืืืื ื MSDtmfGenCustomTone:
struct _MSDtmfGenCustomTone{
char tone_name[8]; /* ะขะตะบััะพะฒะพะต ะฝะฐะทะฒะฐะฝะธะต ัะธะณะฝะฐะปะฐ ะธะท 8 ะฑัะบะฒ.*/
int duration; /* ะะปะธัะตะปัะฝะพััั ัะธะณะฝะฐะปะฐ ะฒ ะผะธะปะปะธัะตะบัะฝะดะฐั
.*/
int frequencies[2]; /* ะะฐัะฐ ัะฐััะพั ะธะท ะบะพัะพััั
ะดะพะปะถะตะฝ ัะพััะพััั ะฒัั
ะพะดะฝะพะน ัะธะณะฝะฐะป. */
float amplitude; /* ะะผะฟะปะธััะดะฐ ัะพะฝะพะฒ, 1.0 ัะพะพัะฒะตัััะฒัะตั ััะพะฒะฝั 0 ะดะ ะพั ะผะธะปะปะธะฒะฐััะฐ ะฝะฐ ะฝะฐะณััะทะบะต 600 ะะผ.*/
int interval; /* ะะฐัะทะฐ ะฒ ะผะธะปะปะธัะตะบัะฝะดะฐั
ะฟะตัะตะด ะฝะฐัะฐะปะพะผ ะฟะพะฒัะพัะฝะพะณะพ ะฟัะพะธะณััะฒะฐะฝะธั ัะธะณะฝะฐะปะฐ.*/
int repeat_count; /* ะะพะปะธัะตััะฒะพ ะฟะพะฒัะพัะพะฒ.*/
};
typedef struct _MSDtmfGenCustomTone MSDtmfGenCustomTone;
ืืื ืืืคืขืื ืืช ืืืืืื, ื ืฉืชืืฉ ืืฉืืืช MS_DTMF_GEN_PLAY_CUSTOM ืฉืื.
ืืืืืจืืช ืืืืงืื ืฉื ืขืืืื ืืืชืืช:
ืงืื ืืชืืื ืืช ืฉืืืืฉื ืกืืืื ืื ืืืฆื ืืืื.
/* ะคะฐะนะป mstest3.c */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
#include <mediastreamer2/msvolume.h>
int main()
{
ms_init();
/* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปััั ัะธะปัััะพะฒ. */
MSFilter *voidsource=ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen=ms_filter_new(MS_DTMF_GEN_ID);
MSFilter *volume=ms_filter_new(MS_VOLUME_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, volume, 0);
ms_filter_link(volume, 0, snd_card_write, 0);
/* ะะพะดะบะปััะฐะตะผ ะธััะพัะฝะธะบ ัะฐะบัะพะฒ. */
ms_ticker_attach(ticker,voidsource);
MSDtmfGenCustomTone dtmf_cfg;
/* ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะธะผั ะฝะฐัะตะณะพ ัะธะณะฝะฐะปะฐ, ะฟะพะผะฝั ะพ ัะพะผ, ััะพ ะฒ ะผะฐััะธะฒะต ะผั ะดะพะปะถะฝั
ะพััะฐะฒะธัั ะผะตััะพ ะดะปั ะฝัะปั, ะบะพัะพััะน ะพะฑะพะทะฝะฐัะฐะตั ะบะพะฝะตั ัััะพะบะธ. */
strncpy(dtmf_cfg.tone_name, "busy", sizeof(dtmf_cfg.tone_name));
dtmf_cfg.duration=1000;
dtmf_cfg.frequencies[0]=440; /* ะัะดะตะผ ะณะตะฝะตัะธัะพะฒะฐัั ะพะดะธะฝ ัะพะฝ, ัะฐััะพัั ะฒัะพัะพะณะพ ัะพะฝะฐ ัััะฐะฝะพะฒะธะผ ะฒ 0.*/
dtmf_cfg.frequencies[1]=0;
dtmf_cfg.amplitude=1.0; /* ะขะฐะบะพะน ะฐะผะฟะปะธััะดะต ัะธะฝััะฐ ะดะพะปะถะตะฝ ัะพะพัะฒะตัััะฒะพะฒะฐัั ัะตะทัะปััะฐั ะธะทะผะตัะตะฝะธั 0.707.*/
dtmf_cfg.interval=0.;
dtmf_cfg.repeat_count=0.;
/* ะะบะปััะฐะตะผ ะทะฒัะบะพะฒะพะน ะณะตะฝะตัะฐัะพั. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM, (void*)&dtmf_cfg);
/* ะะฐะตะผ, ะฒัะตะผั ะฟะพะปะพะฒะธะฝั ัะตะบัะฝะดั, ััะพะฑั ะธะทะผะตัะธัะตะปั ะฝะฐะบะพะฟะธะป ะดะฐะฝะฝัะต. */
ms_usleep(500000);
/* ะงะธัะฐะตะผ ัะตะทัะปััะฐั ะธะทะผะตัะตะฝะธั. */
float level=0;
ms_filter_call_method(volume, MS_VOLUME_GET_LINEAR,&level);
printf("ะะผะฟะปะธััะดะต ัะธะฝััะฐ %f ะฒะพะปัั ัะพะพัะฒะตัััะฒัะตั ััะตะดะฝะตะบะฒะฐะดัะฐัะธัะตัะบะพะต ะทะฝะฐัะตะฝะธะต %f ะฒะพะปัั.n", dtmf_cfg.amplitude, level);
}
ืื ื ืืจืืืืื ืืช ืืืืืื ืฉืื ื, ืืืืืง ืืื ืฉืขืฉืื ื ืงืืื, ืจืง ืืืืฆืขืืช ืฉื ืืงืืืฅ mstest3. ืืื ื ืจืืฅ ืืช ืื ืื ืงืื ืืช ืืชืืฆืื:
ะะผะฟะปะธััะดะต ัะธะฝััะฐ 1.000000 ะฒะพะปัั ัะพะพัะฒะตัััะฒัะตั ััะตะดะฝะตะบะฒะฐะดัะฐัะธัะตัะบะพะต ะทะฝะฐัะตะฝะธะต 0.707733 ะฒะพะปัั.
ืืคื ืฉื ืืชื ืืจืืืช, ืชืืฆืืช ืืืืืื ืืืื ืืงื ื ืืื ืขื ืืืงืื ืืขืฉืจืื ื ืืฉืืืฉื ืขื ืืขืจื ืืชืืืืจืื ืืฉืืื ืืฉืืจืฉ ืฉื ืฉื ืืื ืืืืืง ืืฉื ืืื: sqr(2)/2=0,7071067811865475
ืืกืืืื ืืืืกืืช ืฉื ืืชืืฆืื ืืืขืจื ืืืืืชื ืืืืชื 0.1%. ืืขืจืื ื ืืช ืฉืืืืช ืืืืืื ืืจืืช ืืืืช ืืืงืกืืืืืช. ืืืชืื ืืื, ืืื ืฉืืจืื ืืืจืืช, ืืฉืืืื ืฆืจืืื ืืืืื. ืื ื ืืฆืืข ืื ืืืขืจืื ืืช ืื ืืขืฆืื ืขืืืจ ืจืืืช ืืืช ื ืืืืืช.
ืืืืืจ ืืื ื ืจืืื ืืขืื ืฉืืืื ื ืืืืืช ืฉื ืืืช ืืื ืืชืืจ ื ืชืื ืืื ืืกื ืืืืฆืขืืช ืืืื ืืื. ื ืืื ืื ืืืฆื ืืขืื ืืืจืืขืื ืฉื ืืฆืจื ืขื ืืื ืืกื ื ืื.
ืืงืืจ: www.habr.com