[Speex-dev] "spx_word16_t *" is incompatible with parameter of type "float *"

Alan Rasmussen Alan at larsondavis.com
Tue Jan 25 17:37:09 PST 2005


Hi,

I am bring SPEEX up on Analog Device's Blackfin (using Visual DSP++ tool set).  The floating point was too slow on this fixed-point processor so I am going for the integer version.

The floating point library build was very clean, but when I build with FIXED_POINT defined, the compiler exits when it find this discrepancy in  \libspeex\cb_search.c :

".\libspeex\cb_search.c", line 185: cc0167:  error: argument of type
          "spx_word16_t *" is incompatible with parameter of type "float *"
     compute_weighted_codebook(shape_cb, r, resp, resp2, E, shape_cb_size, subvect_size, stack);

The function definition defines resp2 as a float in line 47:
static void compute_weighted_codebook(const signed char *shape_cb, const spx_sig_t *r, spx_word16_t *resp, float *resp2, spx_word32_t *E, int shape_cb_size, int subvect_size, char *stack)

But then calls it with resp2 being defined as type spx_word16_t * in line 185:
   compute_weighted_codebook(shape_cb, r, resp, resp2, E, shape_cb_size, subvect_size, stack);

Defined on line 103:

#ifdef _USE_SSE
   __m128 *resp2;
   __m128 *E;
#else
   spx_word16_t *resp2;
   spx_word32_t *E;
#endif


I have downloaded the speex version 1.1.6 and have made no changes; I used a command line option to define FIXED_POINT.

*** Is there a fix for this discrepancy? ***

Change to float (a site search of "resp2" showed only the check-in a year ago that made resp2 a float):
http://lists.xiph.org/pipermail/commits/2004-January/004355.html

Thanks,
Alan





More information about the Speex-dev mailing list