static int tester_before_all(void) { //ms_init(); _factory = ms_factory_new(); ms_factory_init_voip(_factory); ms_factory_init_plugins(_factory); //ms_filter_enable_statistics(TRUE); ms_factory_enable_statistics(_factory, TRUE); ortp_init(); rtp_profile_set_payload (&rtp_profile,0,&payload_type_pcmu8000); rtp_profile_set_payload (&rtp_profile,OPUS_PAYLOAD_TYPE,&payload_type_opus); rtp_profile_set_payload (&rtp_profile,SPEEX16_PAYLOAD_TYPE,&payload_type_speex_wb); rtp_profile_set_payload (&rtp_profile,SILK16_PAYLOAD_TYPE,&payload_type_silk_wb); rtp_profile_set_payload (&rtp_profile,PCMA8_PAYLOAD_TYPE,&payload_type_pcma8000); return 0; }
MSFactory *ms_factory_create_fallback(void){ if (fallback_factory==NULL){ fallback_factory=ms_factory_new(); } return fallback_factory; }
int main(int argc, char *argv[]){ MSFilter *src, *gen, *det, *rec; MSTicker *ticker; MSFactory *factory ; //ms_base_init(); factory = ms_factory_new(); ms_factory_init_voip(factory); ms_factory_init_plugins(factory); ortp_set_log_level_mask (ORTP_LOG_DOMAIN, ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); src=ms_factory_create_filter(factory,MS_FILE_PLAYER_ID); rec=ms_factory_create_filter(factory,MS_FILE_REC_ID); gen=ms_factory_create_filter(factory,MS_DTMF_GEN_ID); det=ms_factory_create_filter(factory,MS_TONE_DETECTOR_ID); ms_filter_link(src,0,gen,0); ms_filter_link(gen,0,det,0); //ms_filter_link(gen,0,rec,0); ms_filter_link(det,0,rec,0); ticker=ms_ticker_new(); ms_ticker_attach(ticker,src); ms_filter_call_method(rec,MS_FILE_REC_OPEN,"/tmp/output.wav"); ms_filter_call_method_noarg(rec,MS_FILE_REC_START); { /*generate and detect the tones*/ MSDtmfGenCustomTone tone; MSToneDetectorDef expected_tone; char dtmf='*'; memset(&tone,0,sizeof(tone)); memset(&expected_tone,0,sizeof(expected_tone)); tone.frequencies[0]=2000; tone.duration=400; tone.amplitude=0.6f; expected_tone.frequency=2000; expected_tone.min_duration=200; expected_tone.min_amplitude=0.5; ms_filter_add_notify_callback(det,(MSFilterNotifyFunc)tone_detected_cb,NULL,TRUE); ms_filter_add_notify_callback(gen,(MSFilterNotifyFunc)tone_sent_cb,NULL,TRUE); ms_filter_call_method(det,MS_TONE_DETECTOR_ADD_SCAN,&expected_tone); ms_filter_call_method(gen,MS_DTMF_GEN_PLAY,&dtmf); ms_sleep(1); ms_filter_call_method(gen,MS_DTMF_GEN_PLAY_CUSTOM,&tone); ms_sleep(1); ms_filter_call_method(gen,MS_DTMF_GEN_PLAY_CUSTOM,&tone); ms_sleep(1); ms_filter_call_method(gen,MS_DTMF_GEN_PLAY_CUSTOM,&tone); ms_sleep(1); tone.frequencies[0]=1500; tone.amplitude=1.0f; ms_filter_call_method(gen,MS_DTMF_GEN_PLAY_CUSTOM,&tone); ms_sleep(1); } ms_filter_call_method_noarg(rec,MS_FILE_REC_CLOSE); ms_ticker_detach(ticker,src); ms_filter_unlink(src,0,gen,0); ms_filter_unlink(gen,0,det,0); //ms_filter_unlink(gen,0,rec,0); ms_filter_unlink(det,0,rec,0); ms_ticker_destroy(ticker); ms_filter_destroy(src); ms_filter_destroy(gen); ms_filter_destroy(det); ms_filter_destroy(rec); ms_factory_destroy(factory); //ms_base_exit(); return 0; }
int main(int argc, char *argv[]){ VideoStream *vs; MSWebCam *cam; MSVideoSize vsize; MSFactory* factory; int i; vsize.width=MS_VIDEO_SIZE_CIF_W; vsize.height=MS_VIDEO_SIZE_CIF_H; ortp_init(); ortp_set_log_level_mask(ORTP_LOG_DOMAIN, ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); //ms_init(); factory = ms_factory_new(); ms_factory_init_voip(factory); ms_factory_init_plugins(factory); cam=ms_web_cam_manager_get_cam(ms_factory_get_web_cam_manager(factory),"StaticImage: Static picture"); //cam=ms_web_cam_manager_get_cam(ms_web_cam_manager_get(),"StaticImage: Static picture"); signal(SIGINT,stop); /* this is to test the sequence start/stop */ for(i=0;i<1;++i){ int n; vs=video_preview_new(factory); /*video_preview_set_display_filter_name(vs,"MSVideoOut");*/ video_preview_set_size(vs,vsize); video_preview_start(vs, cam); for(n=0;n<60000 && !stopped;++n){ #ifdef _WIN32 MSG msg; Sleep(100); while (PeekMessage(&msg, NULL, 0, 0,1)){ TranslateMessage(&msg); DispatchMessage(&msg); } #else struct timespec ts; ts.tv_sec=0; ts.tv_nsec=10000000; nanosleep(&ts,NULL); if (vs) video_stream_iterate(vs); #endif /* test code */ if (n==400) { ms_ticker_detach (vs->ms.sessions.ticker, vs->source); vs->tee = ms_factory_create_filter(factory, MS_TEE_ID); ms_filter_unlink(vs->pixconv,0, vs->output2,0); ms_filter_link(vs->pixconv,0,vs->tee,0); ms_filter_link(vs->tee,0,vs->output2,0); ms_filter_link(vs->tee,1,vs->output2,1); //ms_filter_unlink(vs->tee,0,vs->output,0); ms_ticker_attach (vs->ms.sessions.ticker, vs->source); } if (n==500) { int corner=1; ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner); } if (n==600) { int corner=2; ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner); } if (n==700) { int corner=3; ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner); } if (n==800) { int corner=-1; ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner); } if (n==900) { ms_ticker_detach (vs->ms.sessions.ticker, vs->source); ms_filter_unlink(vs->pixconv,0,vs->tee,0); ms_filter_unlink(vs->tee,0,vs->output2,0); ms_filter_unlink(vs->tee,1,vs->output2,1); ms_filter_destroy(vs->tee); vs->tee=NULL; ms_filter_link(vs->pixconv,0, vs->output2,0); ms_ticker_attach (vs->ms.sessions.ticker, vs->source); } } video_preview_stop(vs); } return 0; }