OSDN Git Service

sbc: provide implementation info as a readable string
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Mon, 16 Feb 2009 13:59:51 +0000 (15:59 +0200)
committerJohan Hedberg <johan.hedberg@nokia.com>
Tue, 17 Feb 2009 21:54:45 +0000 (23:54 +0200)
This is mainly useful for logging and debugging.

sbc/sbc.c
sbc/sbc.h
sbc/sbc_primitives.c
sbc/sbc_primitives.h
sbc/sbc_primitives_mmx.c
sbc/sbc_primitives_neon.c

index 29258d0..e2e7c61 100644 (file)
--- a/sbc/sbc.c
+++ b/sbc/sbc.c
@@ -1221,6 +1221,20 @@ uint16_t sbc_get_codesize(sbc_t *sbc)
        return subbands * blocks * channels * 2;
 }
 
+const char *sbc_get_implementation_info(sbc_t *sbc)
+{
+       struct sbc_priv *priv;
+
+       if (!sbc)
+               return NULL;
+
+       priv = sbc->priv;
+       if (!priv)
+               return NULL;
+
+       return priv->enc_state.implementation_info;
+}
+
 int sbc_reinit(sbc_t *sbc, unsigned long flags)
 {
        struct sbc_priv *priv;
index b0a1488..f9d506b 100644 (file)
--- a/sbc/sbc.h
+++ b/sbc/sbc.h
@@ -89,6 +89,7 @@ int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
 int sbc_get_frame_length(sbc_t *sbc);
 int sbc_get_frame_duration(sbc_t *sbc);
 uint16_t sbc_get_codesize(sbc_t *sbc);
+const char *sbc_get_implementation_info(sbc_t *sbc);
 void sbc_finish(sbc_t *sbc);
 
 #ifdef __cplusplus
index 303f3fe..6b0be3f 100644 (file)
@@ -456,6 +456,7 @@ void sbc_init_primitives(struct sbc_encoder_state *state)
 
        /* Default implementation for scale factors calculation */
        state->sbc_calc_scalefactors = sbc_calc_scalefactors;
+       state->implementation_info = "Generic C";
 
        /* X86/AMD64 optimizations */
 #ifdef SBC_BUILD_WITH_MMX_SUPPORT
index 2708c82..3d01c11 100644 (file)
@@ -62,6 +62,7 @@ struct sbc_encoder_state {
        void (*sbc_calc_scalefactors)(int32_t sb_sample_f[16][2][8],
                        uint32_t scale_factor[2][8],
                        int blocks, int channels, int subbands);
+       const char *implementation_info;
 };
 
 /*
index 1870a9b..08e9ca2 100644 (file)
@@ -313,6 +313,7 @@ void sbc_init_primitives_mmx(struct sbc_encoder_state *state)
        if (check_mmx_support()) {
                state->sbc_analyze_4b_4s = sbc_analyze_4b_4s_mmx;
                state->sbc_analyze_4b_8s = sbc_analyze_4b_8s_mmx;
+               state->implementation_info = "MMX";
        }
 }
 
index d9c12f9..f1bc7b4 100644 (file)
@@ -240,6 +240,7 @@ void sbc_init_primitives_neon(struct sbc_encoder_state *state)
 {
        state->sbc_analyze_4b_4s = sbc_analyze_4b_4s_neon;
        state->sbc_analyze_4b_8s = sbc_analyze_4b_8s_neon;
+       state->implementation_info = "NEON";
 }
 
 #endif