void MSOpenH264Encoder::setSize(MSVideoSize size) { MSVideoConfiguration best_vconf = ms_video_find_best_configuration_for_size(mVConfList, size, ms_get_cpu_count()); mVConf.vsize = size; mVConf.fps = best_vconf.fps; mVConf.bitrate_limit = best_vconf.bitrate_limit; setConfiguration(mVConf); }
static int enc_set_vsize(MSFilter *f, void *data) { MSVideoConfiguration best_vconf; MSVideoSize *vs = (MSVideoSize *)data; EncState *s = (EncState *)f->data; best_vconf = ms_video_find_best_configuration_for_size(s->vconf_list, *vs); s->vconf.vsize = *vs; s->vconf.fps = best_vconf.fps; s->vconf.bitrate_limit = best_vconf.bitrate_limit; enc_set_configuration(f, &s->vconf); return 0; }
static int enc_set_vsize(MSFilter *f, void *arg){ MSVideoConfiguration best_vconf; EncData *d = (EncData *)f->data; MSVideoSize *vs = (MSVideoSize *)arg; best_vconf = ms_video_find_best_configuration_for_size(d->vconf_list, *vs, ms_get_cpu_count()); d->vconf.vsize = *vs; d->vconf.fps = best_vconf.fps; d->vconf.bitrate_limit = best_vconf.bitrate_limit; enc_set_configuration(f, &d->vconf); return 0; }
static int h264_enc_set_video_size(MSFilter *f, const MSVideoSize *vsize) { VTH264EncCtx *ctx = (VTH264EncCtx *)f->data; ms_message("VideoToolboxEnc: requested video size: %dx%d", vsize->width, vsize->height); if(ctx->is_configured) { ms_error("VideoToolbox: could not set video size: encoder is running"); return -1; } ctx->conf = ms_video_find_best_configuration_for_size(ctx->video_confs, *vsize, f->factory->cpu_count); ms_message("VideoToolboxEnc: selected video conf: size=%dx%d, framerate=%ffps", ctx->conf.vsize.width, ctx->conf.vsize.height, ctx->conf.fps); return 0; }
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; }
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; }