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; }
VideoStream *video_stream_new(int loc_rtp_port, int loc_rtcp_port, bool_t use_ipv6){ VideoStream *stream = (VideoStream *)ms_new0 (VideoStream, 1); stream->ms.type = VideoStreamType; stream->ms.session=create_duplex_rtpsession(loc_rtp_port,loc_rtcp_port,use_ipv6); stream->ms.qi=ms_quality_indicator_new(stream->ms.session); stream->ms.evq=ortp_ev_queue_new(); stream->ms.rtpsend=ms_filter_new(MS_RTP_SEND_ID); stream->ms.ice_check_list=NULL; rtp_session_register_event_queue(stream->ms.session,stream->ms.evq); MS_VIDEO_SIZE_ASSIGN(stream->sent_vsize, CIF); stream->dir=VideoStreamSendRecv; stream->display_filter_auto_rotate_enabled=0; stream->source_performs_encoding = FALSE; stream->output_performs_decoding = FALSE; choose_display_name(stream); return stream; }