]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/tx.h
lavu/tx: add unaligned flag to the API
[ffmpeg] / libavutil / tx.h
index 983b5e9307c2ea4cb03245cebbcdfa6109f31a0d..a3d70644e43297a5c1a0ce5157d75912213876a8 100644 (file)
@@ -49,9 +49,11 @@ enum AVTXType {
      * float. Length is the frame size, not the window size (which is 2x frame)
      * For forward transforms, the stride specifies the spacing between each
      * sample in the output array in bytes. The input must be a flat array.
+     *
      * For inverse transforms, the stride specifies the spacing between each
      * sample in the input array in bytes. The output will be a flat array.
      * Stride must be a non-zero multiple of sizeof(float).
+     *
      * NOTE: the inverse transform is half-length, meaning the output will not
      * contain redundant data. This is what most codecs work with.
      */
@@ -93,7 +95,7 @@ enum AVTXType {
  * @param stride the input or output stride in bytes
  *
  * The out and in arrays must be aligned to the maximum required by the CPU
- * architecture.
+ * architecture unless the AV_TX_UNALIGNED flag was set in av_tx_init().
  * The stride must follow the constraints the transform type has specified.
  */
 typedef void (*av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride);
@@ -103,11 +105,17 @@ typedef void (*av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride);
  */
 enum AVTXFlags {
     /**
-     * Performs an in-place transformation on the input. The output parameter
-     * to av_tn_fn() will be ignored. May be unsupported or slower for some
+     * Performs an in-place transformation on the input. The output argument
+     * of av_tn_fn() MUST match the input. May be unsupported or slower for some
      * transform types.
      */
     AV_TX_INPLACE = 1ULL << 0,
+
+    /**
+     * Relaxes alignment requirement for the in and out arrays of av_tx_fn().
+     * May be slower with certain transform types.
+     */
+    AV_TX_UNALIGNED = 1ULL << 1,
 };
 
 /**