เปเบญเบเบฐเบชเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบกเปเบกเปเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบเบญเบเบเปเบญเบ
เบเบฒเบเบชเปเบฒเบเปเบเบทเปเบญเบเบงเบฑเบเปเบเบเบฅเบฐเบเบฑเบเบชเบฑเบเบเบฒเบ
เปเบเบเบตเปเบชเบธเบ
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบญเบเบงเบปเบเบเบญเบเปเบเบทเปเบญเบเบงเบฑเบเปเบเบเบฅเบฐเบเบฑเบเบชเบฑเบเบเบฒเบเปเบฅเบฐเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบญเปเบฒเบเบเบปเบเบเบฒเบเบงเบฑเบเปเบเบเบเบฒเบเบเบฒเบเบเบฑเปเบเบเบญเบ. เปเบซเปเบเบฐเปเบกเบตเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบเบญเบเบเบฒเบเบงเบฑเบเปเบเบ.
เบเบธเบเบเบญเบเบเบปเบงเบเบญเบเบเบตเปเบชเบฐเบซเบเบญเบเปเบเบ media streamer เบเบฐเบเบญเบเบกเบตเบเบฒเบเบเบฑเปเบเบเบญเบ, MS_VOLUME, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบงเบฑเบเปเบเบเบฅเบฐเบเบฑเบ RMS เบเบญเบเบชเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบกเบฑเบ, เบซเบผเบธเบเบเปเบญเบเบชเบฑเบเบเบฒเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเปเบฅเบฐเบเปเปเบเบฒเบเบเบดเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเบญเบธเบเบดเบเบเบปเบเบเบงเบฒเบกเบเบฑเบเปเบปเบเปเบซเปเบเบฑเบเบเบปเบงเบเบญเบเบเบตเปเปเบเบเบฒเบเบซเบผเบฑเบ. เปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบกเบฑเบเปเบเบฑเบเปเบกเบฑเบ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเบชเบฝเบเปเบเบฑเบเปเบซเบผเปเบเบชเบฑเบเบเบฒเบ, เบชเบฑเบเบเบฒเบเบเบตเปเบเบฐเบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบปเบงเบเบญเบ MS_VOLUME, เปเบเบซเบฒเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเบเบฑเบเบชเบฝเบเบเบทเบเปเบเบทเปเบญเบกเบเปเป.
เปเบเบเบปเบงเบขเปเบฒเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเปเบเบฎเบนเบเปเบเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบ - เบกเบฑเบเบเบฐเบชเปเบฒเบเบชเบฑเบเบเบฒเบเบชเบฝเบเบเบฝเบงเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ, i.e. เบชเบฑเบโเบเบฒเบโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบซเบเบถเปเบ oscillation sinusoidalโ.
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบงเบฒเบกเบเบตเปเปเบฅเบฐเบเบงเบฒเบกเบเบงเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเปเบฒเบเบปเบเปเบงเบฅเบฒเบเบตเปเบชเบฑเบเบเบฒเบเบเบฐเบเบทเบเบชเปเบฒเบเบเบถเปเบ; เบกเบฑเบเบเปเบญเบเบเบฝเบเบเปเปเบเบทเปเบญเปเบซเปเบเปเบฒเบเบงเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเบฝเบเบเปเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเบญเบ 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 ะฒะพะปัั.
เบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เบเบปเบเบเบฒเบเบงเบฑเบเปเบเบเบเบปเบเบเบฑเบเบเบฑเบเบเบธเบเบเบปเบเบชเบฐเบเบดเบเบปเบกเบเบต 2 เบเปเบงเบเบเปเบฒเบเบฒเบเบเบดเบเบชเบฐเบเบตเปเบเบปเปเบฒเบเบฑเบเบฎเบฒเบเบชเบญเบเบเบญเบเบชเบญเบเปเบเปเบเบญเบญเบเปเบเบฑเบเปเบเบดเปเบเปเบถเปเบ: sqr(2)/0,7071067811865475=XNUMX
เบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบญเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบกเบนเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเปเบกเปเบ 0.1%. เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเปเบกเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบญเบเบเบฒเบเบงเบฑเบเปเบเบเปเบเบฅเบฐเบเบฑเบเบชเบฑเบเบเบฒเบเบชเบนเบเบชเบธเบ. เบเบฒเบกเบเบฑเปเบเปเบฅเปเบง, เปเบกเบทเปเบญเบฅเบฐเบเบฑเบเบซเบผเบธเบเบฅเบปเบ, เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบงเบเปเบเบตเปเบกเบเบถเปเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบฐเบเปเบฒเปเบซเปเบเปเบฒเบเบเบฐเปเบกเบตเบเบกเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบฑเบเบชเบฑเบเบเบฒเบเบเปเปเบฒ.
เปเบเบเบปเบเบเบงเบฒเบกเบเปเปเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบญเบเบงเบปเบเบเบญเบเบเบตเปเบเบงเบเบเบปเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเบชเบฑเบเบเบฒเบเปเบเบเบเบญเบเบเบงเบฒเบกเบเบตเปเบเบญเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเปเบเปเปเบเบทเปเบญเบเบเบงเบเบเบฑเบเบชเบฝเบ. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบเปเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเปเบซเบเบเบฒเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเบเบปเบงเบเบญเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com