AudioStream *audio_stream_new(int loc_rtp_port, int loc_rtcp_port, bool_t ipv6){ AudioStream *stream=(AudioStream *)ms_new0(AudioStream,1); MSFilterDesc *ec_desc=ms_filter_lookup_by_name("MSOslec"); ms_filter_enable_statistics(TRUE); ms_filter_reset_statistics(); stream->ms.type = AudioStreamType; stream->ms.session=create_duplex_rtpsession(loc_rtp_port,loc_rtcp_port,ipv6); /*some filters are created right now to allow configuration by the application before start() */ stream->ms.rtpsend=ms_filter_new(MS_RTP_SEND_ID); stream->ms.ice_check_list=NULL; stream->ms.qi=ms_quality_indicator_new(stream->ms.session); if (ec_desc!=NULL) stream->ec=ms_filter_new_from_desc(ec_desc); else #if defined(BUILD_WEBRTC_AECM) stream->ec=ms_filter_new(MS_WEBRTC_AEC_ID); #else stream->ec=ms_filter_new(MS_SPEEX_EC_ID); #endif stream->ms.evq=ortp_ev_queue_new(); rtp_session_register_event_queue(stream->ms.session,stream->ms.evq); stream->play_dtmfs=TRUE; stream->use_gc=FALSE; stream->use_agc=FALSE; stream->use_ng=FALSE; stream->features=AUDIO_STREAM_FEATURE_ALL; return stream; }
TextStream *text_stream_new_with_sessions(const MSMediaStreamSessions *sessions) { TextStream *stream = (TextStream *)ms_new0(TextStream, 1); stream->pt_red = 0; stream->pt_t140 = 0; stream->ms.type = MSText; stream->ms.sessions = *sessions; media_stream_init(&stream->ms, ms_factory_get_fallback()); ms_filter_enable_statistics(TRUE); ms_filter_reset_statistics(); if (sessions->zrtp_context != NULL) { ms_zrtp_set_stream_sessions(sessions->zrtp_context, &(stream->ms.sessions)); } if (sessions->dtls_context != NULL) { ms_dtls_srtp_set_stream_sessions(sessions->dtls_context, &(stream->ms.sessions)); } rtp_session_resync(stream->ms.sessions.rtp_session); /*some filters are created right now to allow configuration by the application before start() */ stream->ms.rtpsend = ms_filter_new(MS_RTP_SEND_ID); stream->ms.ice_check_list = NULL; stream->ms.qi = ms_quality_indicator_new(stream->ms.sessions.rtp_session); ms_quality_indicator_set_label(stream->ms.qi, "text"); stream->ms.process_rtcp = text_stream_process_rtcp; return stream; }
static int tester_init(void) { ms_init(); ms_filter_enable_statistics(TRUE); ortp_init(); rtp_profile_set_payload(&rtp_profile, VP8_PAYLOAD_TYPE, &payload_type_vp8); rtp_profile_set_payload(&rtp_profile, H264_PAYLOAD_TYPE, &payload_type_h264); rtp_profile_set_payload(&rtp_profile, MP4V_PAYLOAD_TYPE, &payload_type_mp4v); return 0; }
static int tester_init(void) { ms_init(); ms_filter_enable_statistics(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; }
static int sound_card_tester_init(void) { ms_init(); ms_filter_enable_statistics(TRUE); return 0; }
static int basic_audio_tester_init(void) { ms_init(); ms_filter_enable_statistics(TRUE); ortp_init(); return 0; }
static void setup_media_streams(MediastreamDatas *args) { MSConnectionHelper h; MSTickerParams params = {0}; /*create the rtp session */ ortp_init(); if (args->is_verbose) { ortp_set_log_level_mask(ORTP_DEBUG | ORTP_MESSAGE | ORTP_WARNING | ORTP_ERROR | ORTP_FATAL); } else { ortp_set_log_level_mask(ORTP_MESSAGE | ORTP_WARNING | ORTP_ERROR | ORTP_FATAL); } rtp_profile_set_payload(&av_profile, 110, &payload_type_speex_nb); rtp_profile_set_payload(&av_profile, 111, &payload_type_speex_wb); rtp_profile_set_payload(&av_profile, 112, &payload_type_ilbc); rtp_profile_set_payload(&av_profile, 113, &payload_type_amr); rtp_profile_set_payload(&av_profile, 115, &payload_type_lpc1015); #ifdef VIDEO_ENABLED rtp_profile_set_payload(&av_profile, 26, &payload_type_jpeg); rtp_profile_set_payload(&av_profile, 98, &payload_type_h263_1998); rtp_profile_set_payload(&av_profile, 97, &payload_type_theora); rtp_profile_set_payload(&av_profile, 99, &payload_type_mp4v); rtp_profile_set_payload(&av_profile, 100, &payload_type_x_snow); rtp_profile_set_payload(&av_profile, 102, &payload_type_h264); rtp_profile_set_payload(&av_profile, 103, &payload_type_vp8); #endif args->profile = rtp_profile_clone_full(&av_profile); ms_init(); ms_filter_enable_statistics(TRUE); ms_filter_reset_statistics(); signal(SIGINT, stop_handler); if (args->pt==NULL) args->pt = rtp_profile_get_payload(args->profile, args->payload); if (args->pt == NULL) { printf("Error: no payload defined with number %i.", args->payload); exit(-1); } if (args->pt->type == PAYLOAD_VIDEO) { #ifdef VIDEO_ENABLED const char *display_name; MSPixFmt format; MSVideoSize disp_size; int tmp = 1; #if defined(HAVE_GL) display_name = "MSGLXVideo"; #elif defined(HAVE_XV) display_name = "MSX11Video"; #elif __APPLE__ && !defined(__ios) display_name ="MSOSXGLDisplay"; #else display_name = "MSVideoOut"; #endif args->read = ms_filter_new(MS_FILE_PLAYER_ID); args->write = ms_filter_new_from_name(display_name); args->decoder = ms_filter_create_decoder(args->pt->mime_type); ms_filter_call_method_noarg(args->read, MS_FILE_PLAYER_CLOSE); ms_filter_call_method(args->read, MS_FILE_PLAYER_OPEN, args->infile); ms_filter_call_method(args->read, MS_FILTER_SET_SAMPLE_RATE, &args->pt->clock_rate); ms_filter_call_method_noarg(args->read, MS_FILE_PLAYER_START); ms_filter_add_notify_callback(args->read, reader_notify_cb, NULL,FALSE); /*force the decoder to output YUV420P */ format = MS_YUV420P; ms_filter_call_method(args->decoder, MS_FILTER_SET_PIX_FMT, &format); /*configure the display window */ disp_size.width = MS_VIDEO_SIZE_CIF_W; disp_size.height = MS_VIDEO_SIZE_CIF_H; ms_filter_call_method(args->write, MS_FILTER_SET_VIDEO_SIZE, &disp_size); ms_filter_call_method(args->write, MS_VIDEO_DISPLAY_ENABLE_AUTOFIT, &tmp); ms_filter_call_method(args->write, MS_FILTER_SET_PIX_FMT, &format); params.name = "Video MSTicker"; params.prio = MS_TICKER_PRIO_REALTIME; args->ticker = ms_ticker_new_with_params(¶ms); ms_connection_helper_start(&h); ms_connection_helper_link(&h, args->read, -1, 0); ms_connection_helper_link(&h, args->decoder, 0, 0); ms_connection_helper_link(&h, args->write, 0, -1); ms_ticker_attach(args->ticker, args->read); #else printf("Error: video support not compiled.\n"); #endif } else { MSSndCardManager *manager = ms_snd_card_manager_get(); MSSndCard *play = args->playback_card == NULL ? ms_snd_card_manager_get_default_playback_card(manager) : ms_snd_card_manager_get_card(manager, args->playback_card); args->read = ms_filter_new(MS_FILE_PLAYER_ID); args->write = ms_snd_card_create_writer(play); args->decoder = ms_filter_create_decoder(args->pt->mime_type); ms_filter_call_method_noarg(args->read, MS_FILE_PLAYER_CLOSE); ms_filter_call_method(args->read, MS_FILE_PLAYER_OPEN, args->infile); ms_filter_call_method_noarg(args->read, MS_FILE_PLAYER_START); ms_filter_call_method(args->read, MS_FILTER_SET_SAMPLE_RATE, &args->pt->clock_rate); ms_filter_call_method(args->decoder, MS_FILTER_SET_SAMPLE_RATE, &args->pt->clock_rate); ms_filter_call_method(args->decoder, MS_FILTER_SET_NCHANNELS, &args->pt->channels); ms_filter_call_method(args->write, MS_FILTER_SET_SAMPLE_RATE, &args->pt->clock_rate); ms_filter_call_method(args->write, MS_FILTER_SET_NCHANNELS, &args->pt->channels); params.name = "Audio MSTicker"; params.prio = MS_TICKER_PRIO_REALTIME; args->ticker = ms_ticker_new_with_params(¶ms); ms_connection_helper_start(&h); ms_connection_helper_link(&h, args->read, -1, 0); ms_connection_helper_link(&h, args->decoder, 0, 0); ms_connection_helper_link(&h, args->write, 0, -1); ms_ticker_attach(args->ticker, args->read); } }