void media_stream_iterate(MediaStream *stream){ time_t curtime=ms_time(NULL); if (stream->ice_check_list) ice_check_list_process(stream->ice_check_list,stream->sessions.rtp_session); /*we choose to update the quality indicator as much as possible, since local statistics can be computed realtime. */ if (stream->state==MSStreamStarted){ if (stream->qi && curtime>stream->last_iterate_time) ms_quality_indicator_update_local(stream->qi); } stream->last_iterate_time=curtime; if (stream->rc) ms_bitrate_controller_update(stream->rc); if (stream->evq){ OrtpEvent *ev=NULL; while ((ev=ortp_ev_queue_get(stream->evq))!=NULL){ OrtpEventType evt=ortp_event_get_type(ev); if (evt==ORTP_EVENT_RTCP_PACKET_RECEIVED){ mblk_t *m=ortp_event_get_data(ev)->packet; media_stream_process_rtcp(stream,m,curtime); }else if (evt==ORTP_EVENT_RTCP_PACKET_EMITTED){ ms_message("%s_stream_iterate[%p]: local statistics available\n\tLocal's current jitter buffer size:%f ms", media_stream_type_str(stream), stream, rtp_session_get_jitter_stats(stream->sessions.rtp_session)->jitter_buffer_size_ms); }else if ((evt==ORTP_EVENT_STUN_PACKET_RECEIVED)&&(stream->ice_check_list)){ ice_handle_stun_packet(stream->ice_check_list,stream->sessions.rtp_session,ortp_event_get_data(ev)); } else if (evt == ORTP_EVENT_ZRTP_ENCRYPTION_CHANGED) { OrtpEventData *evd=ortp_event_get_data(ev); stream->sessions.is_secured=evd->info.zrtp_stream_encrypted; ms_message("%s_stream_iterate[%p]: is %s ",media_stream_type_str(stream) , stream, stream->sessions.is_secured ? "encrypted" : "not encrypted"); } ortp_event_destroy(ev); } } }
void video_stream_iterate(VideoStream *stream){ /* if (stream->output!=NULL) ms_filter_call_method_noarg(stream->output, MS_VIDEO_OUT_HANDLE_RESIZING); */ if (stream->evq){ OrtpEvent *ev; while (NULL != (ev=ortp_ev_queue_get(stream->evq))) { OrtpEventType evt=ortp_event_get_type(ev); if (evt == ORTP_EVENT_RTCP_PACKET_RECEIVED){ OrtpEventData *evd=ortp_event_get_data(ev); video_steam_process_rtcp(stream,evd->packet); }else if ((evt == ORTP_EVENT_STUN_PACKET_RECEIVED) && (stream->ice_check_list)) { ice_handle_stun_packet(stream->ice_check_list,stream->session,ortp_event_get_data(ev)); } ortp_event_destroy(ev); } } if (stream->ice_check_list) ice_check_list_process(stream->ice_check_list,stream->session); }