summaryrefslogtreecommitdiff
path: root/include/FLAC/stream_encoder.h
diff options
context:
space:
mode:
authorJosh Coalson <jcoalson@users.sourceforce.net>2006-04-25 06:38:43 +0000
committerJosh Coalson <jcoalson@users.sourceforce.net>2006-04-25 06:38:43 +0000
commitbf0f52c21e439aefdbcf71551621023b0bc9cef0 (patch)
tree63fbcea934c0c4643bd74fd2d34c0ba6356dc200 /include/FLAC/stream_encoder.h
parentc8dc7a43ec4a555ee5394e3c897f10fbdcf4e7a0 (diff)
downloadflac-bf0f52c21e439aefdbcf71551621023b0bc9cef0.tar.gz
add support for specifying which apodization functions to use to window data before lpc analysis
Diffstat (limited to 'include/FLAC/stream_encoder.h')
-rw-r--r--include/FLAC/stream_encoder.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/FLAC/stream_encoder.h b/include/FLAC/stream_encoder.h
index 0ac18a36..4f82fda7 100644
--- a/include/FLAC/stream_encoder.h
+++ b/include/FLAC/stream_encoder.h
@@ -498,6 +498,52 @@ FLAC_API FLAC__bool FLAC__stream_encoder_set_sample_rate(FLAC__StreamEncoder *en
*/
FLAC_API FLAC__bool FLAC__stream_encoder_set_blocksize(FLAC__StreamEncoder *encoder, unsigned value);
+/** Sets the apodization function(s) the encoder will use when windowing
+ * audio data for LPC analysis.
+ *
+ * The \a specification is a plain ASCII string which specifies exactly
+ * which functions to use. There may be more than one (up to 32),
+ * separated by \c ';' characters. Some functions take one or more
+ * comma-separated arguments in parentheses.
+ *
+ * The available functions are \c bartlett, \c bartlett_hann,
+ * \c blackman, \c blackman_harris_4term_92db, \c connes, \c flattop,
+ * \c gauss(STDDEV), \c hamming, \c hann, \c kaiser_bessel, \c nuttall,
+ * \c rectangle, \c triangle, \c tukey(P), \c welch.
+ *
+ * For \c gauss(STDDEV), STDDEV specifies the standard deviation
+ * (0<STDDEV<=0.5).
+ *
+ * For \c tukey(P), P specifies the fraction of the window that is
+ * tapered (0<=P<=1). P=0 corresponds to \c rectangle and P=1
+ * corresponds to \c hann.
+ *
+ * Example specifications are \c "blackman" or
+ * \c "hann;triangle;tukey(0.5);tukey(0.25);tukey(0.125)"
+ *
+ * Any function that is specified erroneously is silently dropped. Up
+ * to 32 functions are kept, the rest are dropped. If the specification
+ * is empty the encoder defaults to \c "hann".
+ *
+ * When more than one function is specified, then for every subframe the
+ * encoder will try each of them separately and choose the window that
+ * results in the smallest compressed subframe.
+ *
+ * Note that each function specified causes the encoder to occupy a
+ * floating point array in which to store the window.
+ *
+ * \default \c "hann"
+ * \param encoder An encoder instance to set.
+ * \param specification See above.
+ * \assert
+ * \code encoder != NULL \endcode
+ * \code specification != NULL \endcode
+ * \retval FLAC__bool
+ * \c false if the encoder is already initialized, else \c true.
+ */
+/* @@@@add to unit tests*/
+FLAC_API FLAC__bool FLAC__stream_encoder_set_apodization(FLAC__StreamEncoder *encoder, const char *specification);
+
/** Set the maximum LPC order, or \c 0 to use only the fixed predictors.
*
* \default \c 0