void wavencode2amr(AmrEncState *s) { if(NULL==s) return; enc_preprocess(s); enc_process(s); enc_postprocess(s); enc_uninit(s); return; }
static int enc_set_br(MSFilter *f, void*data){ int br=*(int*)data; EncState *s=(EncState*)f->data; s->bitrate=br; s->cfg.rc_target_bitrate = ((float)s->bitrate)*0.92/1024.0; //0.9=take into account IP/UDP/RTP overhead, in average. if (s->ready){ ms_filter_lock(f); enc_postprocess(f); enc_preprocess(f); ms_filter_unlock(f); return 0; } if (br>=1024000){ s->width = MS_VIDEO_SIZE_VGA_W; s->height = MS_VIDEO_SIZE_VGA_H; s->fps=25; }else if (br>=350000){ s->width = MS_VIDEO_SIZE_VGA_W; s->height = MS_VIDEO_SIZE_VGA_H; s->fps=15; } else if (br>=200000){ s->width = MS_VIDEO_SIZE_CIF_W; s->height = MS_VIDEO_SIZE_CIF_H; s->fps=15; }else if (br>=150000){ s->width=MS_VIDEO_SIZE_QVGA_W; s->height=MS_VIDEO_SIZE_QVGA_H; s->fps=15; }else if (br>=100000){ s->width=MS_VIDEO_SIZE_QVGA_W; s->height=MS_VIDEO_SIZE_QVGA_H; s->fps=10; }else if (br>=64000){ s->width=MS_VIDEO_SIZE_QCIF_W; s->height=MS_VIDEO_SIZE_QCIF_H; s->fps=12; }else{ s->width=MS_VIDEO_SIZE_QCIF_W; s->height=MS_VIDEO_SIZE_QCIF_H; s->fps=5; } #ifdef __arm__ if (br >= 300000) { s->width = MS_VIDEO_SIZE_VGA_W; s->height = MS_VIDEO_SIZE_VGA_H; } else { s->width=MS_VIDEO_SIZE_QVGA_W; s->height=MS_VIDEO_SIZE_QVGA_H; } s->fps=12; #endif ms_message("bitrate requested...: %d (%d x %d)\n", br, s->width, s->height); return 0; }
static int enc_set_br(MSFilter *f, void *arg){ EncData *d=(EncData*)f->data; d->bitrate=*(int*)arg; if (d->bitrate>=1024000){ d->vsize.width=MS_VIDEO_SIZE_720P_W; d->vsize.height=MS_VIDEO_SIZE_720P_H; d->fps=20; }else if (d->bitrate>=512000){ d->vsize.width=MS_VIDEO_SIZE_4CIF_W; d->vsize.height=MS_VIDEO_SIZE_4CIF_H; d->fps=17; }else if (d->bitrate>=384000){ d->vsize.width=MS_VIDEO_SIZE_VGA_W; d->vsize.height=MS_VIDEO_SIZE_VGA_H; d->fps=15; }else if (d->bitrate>=256000){ d->vsize.width=MS_VIDEO_SIZE_CIF_W; d->vsize.height=MS_VIDEO_SIZE_CIF_H; d->fps=15; }else if (d->bitrate>=128000){ d->vsize.width=MS_VIDEO_SIZE_CIF_W; d->vsize.height=MS_VIDEO_SIZE_CIF_H; d->fps=15; }else if (d->bitrate>=64000){ d->vsize.width=MS_VIDEO_SIZE_CIF_W; d->vsize.height=MS_VIDEO_SIZE_CIF_H; d->fps=15; }else if (d->bitrate>=32000){ d->vsize.width=MS_VIDEO_SIZE_QCIF_W; d->vsize.height=MS_VIDEO_SIZE_QCIF_H; d->fps=15; }else{ d->vsize.width=MS_VIDEO_SIZE_QCIF_W; d->vsize.height=MS_VIDEO_SIZE_QCIF_H; d->fps=15; } if (d->enc != NULL) { /*apply new settings dynamically*/ ms_filter_lock(f); enc_postprocess(f); enc_preprocess(f); ms_filter_unlock(f); } ms_message("bitrate set to %i",d->bitrate); return 0; }
static int enc_set_configuration(MSFilter *f, void *data) { EncState *s = (EncState *)f->data; const MSVideoConfiguration *vconf = (const MSVideoConfiguration *)data; if (vconf != &s->vconf) memcpy(&s->vconf, vconf, sizeof(MSVideoConfiguration)); if (s->vconf.required_bitrate > s->vconf.bitrate_limit) s->vconf.required_bitrate = s->vconf.bitrate_limit; 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. if (s->ready) { ms_filter_lock(f); enc_postprocess(f); enc_preprocess(f); ms_filter_unlock(f); return 0; } ms_message("Video configuration set: bitrate=%dbits/s, fps=%f, vsize=%dx%d", s->vconf.required_bitrate, s->vconf.fps, s->vconf.vsize.width, s->vconf.vsize.height); return 0; }
static int enc_set_configuration(MSFilter *f, void *data) { EncState *s = (EncState *)f->data; const MSVideoConfiguration *vconf = (const MSVideoConfiguration *)data; s->bitrate = vconf->bitrate; s->cfg.rc_target_bitrate = ((float)s->bitrate) * 0.92 / 1024.0; //0.9=take into account IP/UDP/RTP overhead, in average. if (s->ready) { ms_filter_lock(f); enc_postprocess(f); enc_preprocess(f); ms_filter_unlock(f); return 0; } s->width = vconf->vsize.width; s->height = vconf->vsize.height; s->fps = vconf->fps; ms_message("Video configuration set: bitrate=%dbits/s, fps=%f, vsize=%dx%d", s->bitrate, s->fps, s->width, s->height); return 0; }