Parameter added for user to set the cutoff frequency when encoding with faac.
[ffmpeg.git] / libavcodec / faac.c
index 9720166..d275f3c 100644 (file)
@@ -16,7 +16,7 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+
 /**
  * @file faacaudio.c
  * Interface to libfaac for aac encoding.
@@ -46,8 +46,7 @@ static int Faac_encode_init(AVCodecContext *avctx)
     /* check faac version */
     faac_cfg = faacEncGetCurrentConfiguration(s->faac_handle);
     if (faac_cfg->version != FAAC_CFG_VERSION) {
-        fprintf(stderr, "wrong libfaac version (compiled for: %d, using %d)\n",
-                FAAC_CFG_VERSION, faac_cfg->version );
+        av_log(avctx, AV_LOG_ERROR, "wrong libfaac version (compiled for: %d, using %d)\n", FAAC_CFG_VERSION, faac_cfg->version);
         faacEncClose(s->faac_handle);
         return -1;
     }
@@ -57,12 +56,17 @@ static int Faac_encode_init(AVCodecContext *avctx)
     faac_cfg->mpegVersion = MPEG4;
     faac_cfg->useTns = 0;
     faac_cfg->allowMidside = 1;
-    faac_cfg->bitRate = avctx->bit_rate;
+    faac_cfg->bitRate = avctx->bit_rate / avctx->channels;
+    faac_cfg->bandWidth = avctx->cutoff;
+    if(avctx->flags & CODEC_FLAG_QSCALE) {
+        faac_cfg->bitRate = 0;
+        faac_cfg->quantqual = avctx->global_quality / FF_QP2LAMBDA;
+    }
     faac_cfg->outputFormat = 0;
     faac_cfg->inputFormat = FAAC_INPUT_16BIT;
 
     if (!faacEncSetConfiguration(s->faac_handle, faac_cfg)) {
-        fprintf(stderr, "libfaac doesn't support this output format!\n");
+        av_log(avctx, AV_LOG_ERROR, "libfaac doesn't support this output format!\n");
         return -1;
     }