[Speex-dev] Some question about speexcodex 1.2 beta2 on linux
Jean-Marc Valin
jean-marc.valin at usherbrooke.ca
Thu Dec 6 06:27:31 PST 2007
Just link with libspeexdsp (you might have svn and not 1.2beta2 installed)
Jean-Marc
r96128 a écrit :
> Hi,
> I am an user of speex codec.Can I ask some question about the speexcodec 1.2beta2
> on installed to linux(fedora 6) thanks!
>
> After I downloaded the latest version of codec
> then I type the commands to install :
>
> configure -prefix=/home/...../test -enable-shared -enable-static
> make
> make install
>
> then I try to compile my encode.c
> here is the encode.c of mine:
> =====================================
> #include <speex/speex.h>
> #include <speex/speex_preprocess.h>
> #include <stdio.h>
>
> #define MAX_FRAME_SIZE 320
>
> int main() {
> FILE *fin, *fout;
> short in[MAX_FRAME_SIZE];
> char cbits[200];
> int nbBytes = 0;
> void *state;
> SpeexBits bits;
> int m_frame_size;
> int m_channels = 1;
>
> // SpeeX encode options
> int m_bitrate = (8 << 10);
> int m_complexity = 3;
> int m_quality = 8;
> int m_encMode = 6;
> int m_iAGC = 0;
> int m_iDenoise = 0;
>
> SpeexPreprocessState *m_preProcesser;
> int nOff = 0, nOn = 1;
> int modex=30;
> speex_bits_init(&bits);
> state = speex_encoder_init(&speex_nb_mode);
> speex_encoder_ctl(state,SPEEX_RESET_STATE,NULL);
> speex_encoder_ctl(state,SPEEX_RESET_STATE,NULL);
> speex_encoder_ctl(state,SPEEX_GET_FRAME_SIZE,&m_frame_size);
> speex_encoder_ctl(state,SPEEX_SET_VAD, &nOff);
> speex_encoder_ctl(state,SPEEX_SET_DTX, &nOn);
> speex_encoder_ctl(state,SPEEX_SET_MODE,&m_encMode);
> speex_encoder_ctl(state,SPEEX_SET_BITRATE,&m_bitrate);
> // speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
>
> m_preProcesser = speex_preprocess_state_init(m_frame_size, 8000);
> speex_preprocess_ctl(m_preProcesser, SPEEX_PREPROCESS_SET_DENOISE,
> &m_iDenoise);
> speex_preprocess_ctl(m_preProcesser, SPEEX_PREPROCESS_SET_AGC, &m_iAGC);
>
> fin = fopen("test.pcm", "r+b");
> fout = fopen("out.spx", "w+b");
>
> if (fin == NULL || fout == NULL){
> printf("FILE open error!!\n");
> return 1;
> }
>
> while(1){
> fread(in, sizeof(short), m_frame_size, fin);
> if(feof(fin))
> break;
>
> speex_bits_reset(&bits);
>
> if (m_preProcesser)
> speex_preprocess(m_preProcesser, in, NULL);
>
> speex_encode_int(state, in, &bits);
> nbBytes = speex_bits_write(&bits, cbits, 200);
>
> fwrite(&nbBytes, sizeof(int), 1, fout);
> #ifdef _DEBUG
> printf("Encode nbBytes: %d\n", nbBytes);
> #endif
> fwrite(cbits, 1, nbBytes, fout);
> //fflush(fout);
> }
>
> speex_encoder_destroy(state);
> speex_bits_destroy(&bits);
> fclose(fin);
> fclose(fout);
> return 0;
> }
>
>
> =============================
>
>
> then I used gcc or g++ to compile this file with the static libery
> command:
>
> gcc encode.c ../test/lib/libspeex.so
>
> the result of compiling is ok
> then when I run the program it shows
>
> './a.out: symbol lookup error: ./a.out: undefined symbol:
> speex_preprocess_state_init
>
> how can I compile the file?
>
> thanks for the viewing for this mail
>
>
> --
> Open WebMail Project (http://openwebmail.org)
>
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
>
>
More information about the Speex-dev
mailing list