On Wed, 19 Mar 2014, Luca Barbato wrote:

On 19/03/14 18:24, Ben Avison wrote:
Verified with profiling that this doesn't have a measurable effect upon
overall performance.
---
 libavcodec/mlpdec.c |   37 ++++++++++++-------------------------
 libavcodec/mlpdsp.c |   33 +++++++++++++++++++++++++++++++++
 libavcodec/mlpdsp.h |   23 +++++++++++++++++++++++
 3 files changed, 68 insertions(+), 25 deletions(-)

diff --git a/libavcodec/mlpdsp.h b/libavcodec/mlpdsp.h
index c985a17..bd864d9 100644
--- a/libavcodec/mlpdsp.h
+++ b/libavcodec/mlpdsp.h
@@ -24,11 +24,34 @@

 #include <stdint.h>

+void ff_mlp_rematrix_channel(int32_t *samples,
+                             const int32_t *coeffs,
+                             const uint8_t *bypassed_lsbs,
+                             const int8_t *noise_buffer,
+                             int index,
+                             unsigned int dest_ch,
+                             uint16_t blockpos,
+                             unsigned int maxchan,
+                             int matrix_noise_shift,
+                             int access_unit_size_pow2,
+                             int32_t mask);
+
 typedef struct MLPDSPContext {
     void (*mlp_filter_channel)(int32_t *state, const int32_t *coeff,
                                int firorder, int iirorder,
                                unsigned int filter_shift, int32_t mask,
                                int blocksize, int32_t *sample_buffer);
+    void (*mlp_rematrix_channel)(int32_t *samples,
+                                 const int32_t *coeffs,
+                                 const uint8_t *bypassed_lsbs,
+                                 const int8_t *noise_buffer,
+                                 int index,
+                                 unsigned int dest_ch,
+                                 uint16_t blockpos,
+                                 unsigned int maxchan,
+                                 int matrix_noise_shift,
+                                 int access_unit_size_pow2,
+                                 int32_t mask);

Could you please try to have the function accept the m and s context
instead of having all those parameters? Does it work equally well?

That requires hand-coding (and manually updating) the struct element offsets (see libavcodec/arm/asm-offsets.h and mpegvideo_arm.c) and IIRC we generally tend to move away from it.

// Martin
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to