Skip to content
Snippets Groups Projects
Commit 13c71451 authored by Justin Ruggles's avatar Justin Ruggles Committed by Benjamin Larsson
Browse files

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
No related branches found
No related tags found
No related merge requests found
...@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment