summaryrefslogtreecommitdiff
path: root/libavutil/lls.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-06-30 11:30:07 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-06-30 11:35:52 +0200
commit78b547963362cc9827d92dc0808534b757ab05d4 (patch)
tree5b15d364e43e987ea2be5c381d0e99e9b303d958 /libavutil/lls.h
parentc93a424718c38c6add273745f3792b531332ea88 (diff)
parent502ab21af0ca68f76d6112722c46d2f35c004053 (diff)
Merge commit '502ab21af0ca68f76d6112722c46d2f35c004053'
* commit '502ab21af0ca68f76d6112722c46d2f35c004053': x86: lpc: simd av_update_lls The versions are bumped due to changes in lls.h which is used across libraries affecting intra library ABI (This version bump also covers changes to lls.h in the immedeatly previous commits) Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/lls.h')
-rw-r--r--libavutil/lls.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/libavutil/lls.h b/libavutil/lls.h
index f5159f3f2f..c62d78a230 100644
--- a/libavutil/lls.h
+++ b/libavutil/lls.h
@@ -23,9 +23,12 @@
#ifndef AVUTIL_LLS_H
#define AVUTIL_LLS_H
+#include "common.h"
+#include "mem.h"
#include "version.h"
#define MAX_VARS 32
+#define MAX_VARS_ALIGN FFALIGN(MAX_VARS+1,4)
//FIXME avoid direct access to LLSModel from outside
@@ -33,26 +36,29 @@
* Linear least squares model.
*/
typedef struct LLSModel {
- double covariance[MAX_VARS + 1][MAX_VARS + 1];
- double coeff[MAX_VARS][MAX_VARS];
+ DECLARE_ALIGNED(32, double, covariance[MAX_VARS_ALIGN][MAX_VARS_ALIGN]);
+ DECLARE_ALIGNED(32, double, coeff[MAX_VARS][MAX_VARS]);
double variance[MAX_VARS];
int indep_count;
/**
* Take the outer-product of var[] with itself, and add to the covariance matrix.
* @param m this context
* @param var training samples, starting with the value to be predicted
+ * 32-byte aligned, and any padding elements must be initialized
+ * (i.e not denormal/nan).
*/
void (*update_lls)(struct LLSModel *m, double *var);
/**
* Inner product of var[] and the LPC coefs.
* @param m this context
- * @param var training samples, excluding the value to be predicted
+ * @param var training samples, excluding the value to be predicted. unaligned.
* @param order lpc order
*/
double (*evaluate_lls)(struct LLSModel *m, double *var, int order);
} LLSModel;
void avpriv_init_lls(LLSModel *m, int indep_count);
+void ff_init_lls_x86(LLSModel *m);
void avpriv_solve_lls(LLSModel *m, double threshold, unsigned short min_order);
#if FF_API_LLS_PRIVATE