Commit 13c71451 authored by Justin Ruggles's avatar Justin Ruggles Committed by Benjamin Larsson

Implement audio cutoff frequency to the vorbis encoder.

Patch by Justin Ruggles jruggle earthlink net.

Originally committed as revision 4877 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 48d1b9a1
...@@ -29,25 +29,35 @@ typedef struct OggVorbisContext { ...@@ -29,25 +29,35 @@ typedef struct OggVorbisContext {
static int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext) { static int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext) {
double cfreq;
if(avccontext->flags & CODEC_FLAG_QSCALE) { if(avccontext->flags & CODEC_FLAG_QSCALE) {
return vorbis_encode_init_vbr(vi, avccontext->channels, /* variable bitrate */
if(vorbis_encode_setup_vbr(vi, avccontext->channels,
avccontext->sample_rate, avccontext->sample_rate,
avccontext->global_quality / (float)FF_QP2LAMBDA); avccontext->global_quality / (float)FF_QP2LAMBDA))
} return -1;
} else {
/* constant bitrate */
if(vorbis_encode_setup_managed(vi, avccontext->channels,
avccontext->sample_rate, -1, avccontext->bit_rate, -1))
return -1;
#ifdef OGGVORBIS_VBR_BY_ESTIMATE #ifdef OGGVORBIS_VBR_BY_ESTIMATE
/* variable bitrate by estimate */ /* variable bitrate by estimate */
if(vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE_AVG, NULL))
return -1;
#endif
}
return (vorbis_encode_setup_managed(vi, avccontext->channels, /* cutoff frequency */
avccontext->sample_rate, -1, avccontext->bit_rate, -1) || if(avccontext->cutoff > 0) {
vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE_AVG, NULL) || cfreq = avccontext->cutoff / 1000.0;
vorbis_encode_setup_init(vi)) ; if(vorbis_encode_ctl(vi, OV_ECTL_LOWPASS_SET, &cfreq))
#else return -1;
/* constant bitrate */ }
return vorbis_encode_init(vi, avccontext->channels, return vorbis_encode_setup_init(vi);
avccontext->sample_rate, -1, avccontext->bit_rate, -1) ;
#endif
} }
static int oggvorbis_encode_init(AVCodecContext *avccontext) { static int oggvorbis_encode_init(AVCodecContext *avccontext) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment