Author: reynaldo
Date: Tue Aug 14 05:54:16 2007
New Revision: 762

Log:
Implements the adaptive postifilter at output stage and modifies
the previously drafted qcelp_detilt accordingly.


Modified:
   qcelp/qcelpdec.c

Modified: qcelp/qcelpdec.c
==============================================================================
--- qcelp/qcelpdec.c    (original)
+++ qcelp/qcelpdec.c    Tue Aug 14 05:54:16 2007
@@ -577,11 +577,14 @@ static float qcelp_prede_filter(float *l
 
 /**
  * 2.4.8.6-2
- * Used after the adaptive postfilter at sample generation stage.
+ * Used in the adaptive postfilter at sample generation stage.
  */
-static void qcelp_detilt(float *z)
+static float qcelp_detilt(float z)
 {
-    *z = 1.0/(1.0 + 0.3 / *z);
+    if(z)
+        return (1.0/(1.0 + 0.3 / z));
+    else
+        return 0;
 }
 
 static int qcelp_decode_frame(AVCodecContext *avctx, void *data,
@@ -842,7 +845,13 @@ static int qcelp_decode_frame(AVCodecCon
             qcelp_lsp2lpc(avctx, interpolated_lspf, lpc);
         }
 
+        /* formant */
         ppf_vector[i]=1.0/qcelp_prede_filter(lpc, ppf_vector[i]);
+        /* adaptive postfilter */
+        ppf_vector[i]=qcelp_detilt(ppf_vector[i])*
+                      qcelp_prede_filter(lpc, ppf_vector[i]/0.625)/
+                      qcelp_prede_filter(lpc, ppf_vector[i]/0.775);
+
         av_log(avctx, AV_LOG_DEBUG, " %f/", ppf_vector[i]);
         /* WIP adaptive postfilter here */
 
_______________________________________________
FFmpeg-soc mailing list
[email protected]
http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc

Reply via email to