MSVideoSize video_stream_get_received_video_size(const VideoStream *stream) { MSVideoSize vsize; MS_VIDEO_SIZE_ASSIGN(vsize, UNKNOWN); if (stream->ms.decoder != NULL) { ms_filter_call_method(stream->ms.decoder, MS_FILTER_GET_VIDEO_SIZE, &vsize); } return vsize; }
static void enc_init(MSFilter *f) { EncData *d=ms_new(EncData,1); d->enc=NULL; MS_VIDEO_SIZE_ASSIGN(d->vsize,CIF); d->bitrate=384000; d->fps=30; d->keyframe_int=10; /*10 seconds */ d->mode=0; d->framenum=0; d->generate_keyframe=FALSE; d->packer=NULL; f->data=d; }
static void enc_init(MSFilter *f){ MSVideoSize vsize; EncData *d=ms_new0(EncData,1); d->packer=NULL; d->isYUV=TRUE; d->mode=1; d->avpf_enabled=FALSE; d->force_keyframe=FALSE; d->framenum=0; d->vconf_list=mediaCodecH264_conf_list; MS_VIDEO_SIZE_ASSIGN(vsize, CIF); d->vconf = ms_video_find_best_configuration_for_size(d->vconf_list, vsize, ms_get_cpu_count()); f->data=d; }
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; }
static void enc_init(MSFilter *f) { vpx_codec_err_t res; MSVideoSize vsize; EncState *s=(EncState *)ms_new0(EncState,1); ms_message("Using %s\n",vpx_codec_iface_name(interface)); /* Populate encoder configuration */ res = vpx_codec_enc_config_default(interface, &s->cfg, 0); if(res) { ms_error("Failed to get config: %s\n", vpx_codec_err_to_string(res)); } if (ms_get_cpu_count() > 1) s->vconf_list = &multicore_vp8_conf_list[0]; else s->vconf_list = &vp8_conf_list[0]; MS_VIDEO_SIZE_ASSIGN(vsize, CIF); s->vconf = ms_video_find_best_configuration_for_size(s->vconf_list, vsize); s->frame_count = 0; s->cfg.g_w = s->vconf.vsize.width; s->cfg.g_h = s->vconf.vsize.height; /* encoder automatically places keyframes */ s->cfg.kf_mode = VPX_KF_AUTO; s->cfg.kf_max_dist = 300; s->cfg.rc_target_bitrate = ((float)s->vconf.required_bitrate)*0.92/1024.0; //0.9=take into account IP/UDP/RTP overhead, in average. s->cfg.g_pass = VPX_RC_ONE_PASS; /* -p 1 */ s->cfg.g_timebase.num = 1; s->cfg.g_timebase.den = s->vconf.fps; s->cfg.rc_end_usage = VPX_CBR; /* --end-usage=cbr */ #if TARGET_IPHONE_SIMULATOR s->cfg.g_threads = 1; /*workaround to remove crash on ipad simulator*/ #else s->cfg.g_threads = ms_get_cpu_count(); #endif ms_message("VP8 g_threads=%d", s->cfg.g_threads); s->cfg.rc_undershoot_pct = 95; /* --undershoot-pct=95 */ s->cfg.g_error_resilient = 1; s->cfg.g_lag_in_frames = 0; s->mtu=ms_get_payload_max_size()-1;/*-1 for the vp8 payload header*/ f->data = s; }
static void enc_init(MSFilter *f) { EncState *s = (EncState *)ms_new0(EncState, 1); MSVideoSize vsize; s->iface = vpx_codec_vp8_cx(); ms_message("Using %s", vpx_codec_iface_name(s->iface)); s->vconf_list = &vp8_conf_list[0]; MS_VIDEO_SIZE_ASSIGN(vsize, CIF); s->vconf = ms_video_find_best_configuration_for_size(s->vconf_list, vsize, ms_factory_get_cpu_count(f->factory)); s->frame_count = 0; s->last_fir_seq_nr = -1; #ifdef PICTURE_ID_ON_16_BITS s->picture_id = (ortp_random() & 0x7FFF) | 0x8000; #else s->picture_id = ortp_random() & 0x007F; #endif s->avpf_enabled = FALSE; enc_reset_frames_state(s); f->data = s; }
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; }