VideoPreview * video_preview_new(void){ VideoPreview *stream = (VideoPreview *)ms_new0 (VideoPreview, 1); stream->sent_vsize.width=MS_VIDEO_SIZE_CIF_W; stream->sent_vsize.height=MS_VIDEO_SIZE_CIF_H; choose_display_name(stream); return stream; }
static MSFilter *get_render() { const char *name = choose_display_name(); fprintf(stderr, "using render '%s'\n", name); MSFilter *render = ms_filter_new_from_name(name); return render; }
VideoStream *video_stream_new(int locport, bool_t use_ipv6){ VideoStream *stream = (VideoStream *)ms_new0 (VideoStream, 1); stream->session=create_duplex_rtpsession(locport,use_ipv6); stream->evq=ortp_ev_queue_new(); stream->rtpsend=ms_filter_new(MS_RTP_SEND_ID); rtp_session_register_event_queue(stream->session,stream->evq); stream->sent_vsize.width=MS_VIDEO_SIZE_CIF_W; stream->sent_vsize.height=MS_VIDEO_SIZE_CIF_H; stream->dir=VideoStreamSendRecv; choose_display_name(stream); return stream; }
LinphoneConferenceStream *conf_stream_new(bool_t hd_audio,bool_t has_video,bool_t ptt) { LinphoneConferenceStream *stream = ms_new0(LinphoneConferenceStream,1); stream->sample_rate = hd_audio ? 16000 : 8000; stream->sent_vsize.width=MS_VIDEO_SIZE_CIF_W; stream->sent_vsize.height=MS_VIDEO_SIZE_CIF_H; stream->has_video = has_video; choose_display_name(stream); stream->ptt_mode = ptt; 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; }
VideoPreview * video_preview_new(void){ VideoPreview *stream = (VideoPreview *)ms_new0 (VideoPreview, 1); MS_VIDEO_SIZE_ASSIGN(stream->sent_vsize, CIF); choose_display_name(stream); return stream; }
int video_mail_record_start(VideoMailRecord *vp, MSSndCard *sndcard,MSWebCam *webcam,unsigned long video_window_id,const char *filename){ MSConnectionHelper h; MSPixFmt format=MS_YUV420P; { strcpy(vp->filename, filename); vp->os = video_recoder_new(); video_recoder_init(vp->os); video_recoder_set_vsize(vp->os,vp->vsize); video_recoder_set_rate(vp->os,vp->rate); video_recoder_set_audio_bit_rate(vp->os, get_bit_rate_by_samples_rate(vp->rate)); video_recoder_set_video_bit_rate(vp->os, vp->bit_rate - get_bit_rate_by_samples_rate(vp->rate)); video_recoder_set_nbchannels(vp->os,vp->nchannels); if(video_recoder_open_file(vp->os,vp->filename)<0){ video_recoder_destory(vp->os); vp->os=NULL; return -1; } video_mail_record_set_audio_sink(vp,video_recoder_create_audio_filter(vp->os)); video_mail_record_set_video_sink(vp,video_recoder_create_video_filter(vp->os)); video_recoder_start(vp->os); } { if (sndcard!=NULL) vp->snd_read=ms_snd_card_create_reader(sndcard); if(vp->snd_read){ ms_filter_call_method(vp->snd_read,MS_FILTER_SET_NCHANNELS,&vp->nchannels); ms_filter_call_method(vp->snd_read,MS_FILTER_SET_SAMPLE_RATE,&vp->rate); } } { if (webcam==NULL){ webcam=ms_web_cam_manager_get_default_cam ( ms_web_cam_manager_get()); } vp->video_source = ms_web_cam_create_reader(webcam); vp->video_tee = ms_filter_new(MS_TEE_ID); ms_message("Setting sent vsize=%ix%i, fps=%f",vp->vsize.width,vp->vsize.height,vp->fps); /* configure the filters */ if (ms_filter_get_id(vp->video_source)!=MS_STATIC_IMAGE_ID) { ms_filter_call_method(vp->video_source,MS_FILTER_SET_FPS,&vp->fps); } ms_filter_call_method(vp->video_source,MS_FILTER_SET_VIDEO_SIZE,&vp->vsize); ms_filter_call_method(vp->video_source,MS_FILTER_GET_PIX_FMT,&format); if (format==MS_MJPEG){ vp->pixconv=ms_filter_new(MS_MJPEG_DEC_ID); }else{ vp->pixconv = ms_filter_new(MS_PIX_CONV_ID); /*set it to the pixconv */ ms_filter_call_method(vp->pixconv,MS_FILTER_SET_PIX_FMT,&format); ms_filter_call_method(vp->video_source,MS_FILTER_GET_VIDEO_SIZE,&vp->vsize); ms_filter_call_method(vp->pixconv,MS_FILTER_SET_VIDEO_SIZE,&vp->vsize); } vp->sizeconv=ms_filter_new(MS_SIZE_CONV_ID); ms_filter_call_method(vp->sizeconv,MS_FILTER_SET_VIDEO_SIZE,&vp->vsize); choose_display_name(vp); vp->video_output=ms_filter_new_from_name (vp->display_name); if (video_window_id!=0) ms_filter_call_method(vp->video_output, MS_VIDEO_DISPLAY_SET_NATIVE_WINDOW_ID,&video_window_id); } if(vp->snd_read!=NULL && vp->snd_sink!=NULL){ ms_filter_link(vp->snd_read,0,vp->snd_sink,0); } if(vp->video_source!=NULL && vp->video_output!=NULL) { ms_connection_helper_start(&h); ms_connection_helper_link(&h,vp->video_source,-1,0); ms_connection_helper_link(&h,vp->pixconv,0,0); ms_connection_helper_link(&h,vp->sizeconv,0,0); ms_connection_helper_link(&h,vp->video_tee,0,0); ms_filter_link(vp->video_tee,1,vp->video_output,0); ms_connection_helper_link(&h,vp->video_sink,0,-1); } vp->ticker = ms_ticker_new(); ms_ticker_set_name(vp->ticker,"VideoMailRecord"); if(vp->snd_read!=NULL && vp->snd_sink!=NULL) ms_ticker_attach(vp->ticker,vp->snd_read); if(vp->video_source!=NULL && vp->video_output!=NULL) ms_ticker_attach(vp->ticker,vp->video_source); return 0; }