*/
/**
- * @file oggvorbis.c
+ * @file libavcodec/libvorbis.c
* Ogg Vorbis codec support via libvorbisenc.
* @author Mark Hills <mark@pogo.org.uk>
*/
} OggVorbisContext ;
-static int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext) {
+static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext) {
double cfreq;
if(avccontext->flags & CODEC_FLAG_QSCALE) {
/* variable bitrate */
if(vorbis_encode_setup_vbr(vi, avccontext->channels,
avccontext->sample_rate,
- avccontext->global_quality / (float)FF_QP2LAMBDA))
+ avccontext->global_quality / (float)FF_QP2LAMBDA / 10.0))
return -1;
} else {
/* constant bitrate */
vorbis_info_init(&context->vi) ;
if(oggvorbis_init_encoder(&context->vi, avccontext) < 0) {
- av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed") ;
+ av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed\n") ;
return -1 ;
}
vorbis_analysis_init(&context->vd, &context->vi) ;
int samples = OGGVORBIS_FRAME_SIZE;
float **buffer ;
- buffer = vorbis_analysis_buffer(&context->vd, samples) ;
-
- if(context->vi.channels == 1) {
- for(l = 0 ; l < samples ; l++)
- buffer[0][l]=audio[l]/32768.f;
- } else {
- for(l = 0 ; l < samples ; l++){
- buffer[0][l]=audio[l*2]/32768.f;
- buffer[1][l]=audio[l*2+1]/32768.f;
+ buffer = vorbis_analysis_buffer(&context->vd, samples) ;
+ if(context->vi.channels == 1) {
+ for(l = 0 ; l < samples ; l++)
+ buffer[0][l]=audio[l]/32768.f;
+ } else {
+ for(l = 0 ; l < samples ; l++){
+ buffer[0][l]=audio[l*2]/32768.f;
+ buffer[1][l]=audio[l*2+1]/32768.f;
+ }
}
- }
-
- vorbis_analysis_wrote(&context->vd, samples) ;
+ vorbis_analysis_wrote(&context->vd, samples) ;
} else {
if(!context->eof)
vorbis_analysis_wrote(&context->vd, 0) ;
oggvorbis_encode_frame,
oggvorbis_encode_close,
.capabilities= CODEC_CAP_DELAY,
- .sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
+ .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
.long_name= NULL_IF_CONFIG_SMALL("libvorbis Vorbis"),
} ;