Hi all, Please a moment to look my source code, this is very similar to example of the documentation. I added FIXED_POINT flag. My source code compile and build but not decode correctly (the error may be in the while). I work with eVC 4.0 and pocket pc 2003. Someone know what is the error? Thanks. Rodrigo. #include "speex.h" #define FRAME_SIZE 160 void CPlayerDlg::OnButton3() { char infile[]="test.spx"; char outfile[]="test.wav"; char *outFile; char *inFile; FILE *fout; // output file FILE *fin; // input file short out[FRAME_SIZE]; short output[FRAME_SIZE]; char cbits[200]; int nbBytes; void *state; SpeexBits bits; int i, tmp; state = speex_decoder_init(&speex_nb_mode); tmp=1; speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp); outFile = outfile; fout = fopen(outFile, "w"); inFile = infile; fin = fopen(inFile,"r"); speex_bits_init(&bits); while (1) { fread(&nbBytes, sizeof(int), 1, fin); fprintf (stderr, "nbBytes: %d\n", nbBytes); if (feof(fin)) break; /*Read the "packet" encoded by sampleenc*/ fread(cbits, 1, nbBytes, fin); /*Copy the data into the bit-stream struct*/ speex_bits_read_from(&bits, cbits, nbBytes); /*Decode the data*/ speex_decode(state, &bits, output); /*Copy from float to short (16 bits) for output*/ for (i=0;i<FRAME_SIZE;i++) out[i]=output[i]; /*Write the decoded audio to file*/ fwrite(out, sizeof(short), FRAME_SIZE, fout); } /*Destroy the decoder state*/ speex_decoder_destroy(state); /*Destroy the bit-stream truct*/ speex_bits_destroy(&bits); fclose(fout); //return 0; } <p>--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
Note that FIXED_POINT is only related to compiling speex, not your application. Also, in 1.1.x, the output and output format for audio changed to 'short' (instead of float). Jean-Marc Le lun 19/01/2004 à 05:19, Rodrigo Parra M a écrit :> Hi all, > > Please a moment to look my source code, this is very similar to > example of the documentation. I added FIXED_POINT flag. My source code > compile and build but not decode correctly (the error may be in the > while). I work with eVC 4.0 and pocket pc 2003. Someone know what is > the error? > > Thanks. > > Rodrigo. > > > > #include "speex.h" > > #define FRAME_SIZE 160 > > > > void CPlayerDlg::OnButton3() > > { > > char infile[]="test.spx"; > > char outfile[]="test.wav"; > > char *outFile; > > char *inFile; > > FILE *fout; // output file > > FILE *fin; // input file > > > > short out[FRAME_SIZE]; > > > > short output[FRAME_SIZE]; > > char cbits[200]; > > int nbBytes; > > > > void *state; > > > > SpeexBits bits; > > int i, tmp; > > > > state = speex_decoder_init(&speex_nb_mode); > > > > tmp=1; > > speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp); > > > > outFile = outfile; > > fout = fopen(outFile, "w"); > > > > inFile = infile; > > fin = fopen(inFile,"r"); > > > > speex_bits_init(&bits); > > while (1) > > { > > > > fread(&nbBytes, sizeof(int), 1, fin); > > fprintf (stderr, "nbBytes: %d\n", nbBytes); > > if (feof(fin)) > > break; > > > > /*Read the "packet" encoded by sampleenc*/ > > fread(cbits, 1, nbBytes, fin); > > /*Copy the data into the bit-stream struct*/ > > speex_bits_read_from(&bits, cbits, nbBytes); > > > > /*Decode the data*/ > > speex_decode(state, &bits, output); > > > > /*Copy from float to short (16 bits) for > output*/ > > for (i=0;i<FRAME_SIZE;i++) > > out[i]=output[i]; > > > > /*Write the decoded audio to file*/ > > fwrite(out, sizeof(short), FRAME_SIZE, fout); > > } > > > > /*Destroy the decoder state*/ > > speex_decoder_destroy(state); > > /*Destroy the bit-stream truct*/ > > speex_bits_destroy(&bits); > > fclose(fout); > > //return 0; > > }-- Jean-Marc Valin, M.Sc.A., ing. jr. LABORIUS (http://www.gel.usherb.ca/laborius) Université de Sherbrooke, Québec, Canada -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 190 bytes Desc: Ceci est une partie de message numériquement signée. Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20040121/e6018a50/signature-0001.pgp
Hi, My problem is at the second fread function, fread(&nbBytes, sizeof(int), 1, fin); //the first fread fread(cbits,1, nbBytes, fin);// the second fread. When I'm debugging always nbytes is greater than cbits. This give me a execution error. Thanks. Rodrigo. <p><p><p>-----Mensaje original----- De: owner-speex-dev@xiph.org [mailto:owner-speex-dev@xiph.org] En nombre de Jean-Marc Valin Enviado el: Miércoles, 21 de Enero de 2004 18:28 Para: speex Asunto: Re: [speex-dev] decode in ppc 2003 Note that FIXED_POINT is only related to compiling speex, not your application. Also, in 1.1.x, the output and output format for audio changed to 'short' (instead of float). Jean-Marc Le lun 19/01/2004 à 05:19, Rodrigo Parra M a écrit :> Hi all, > > Please a moment to look my source code, this is very similar to > example of the documentation. I added FIXED_POINT flag. My source code > compile and build but not decode correctly (the error may be in the > while). I work with eVC 4.0 and pocket pc 2003. Someone know what is > the error? > > Thanks. > > Rodrigo. > > > > #include "speex.h" > > #define FRAME_SIZE 160 > > > > void CPlayerDlg::OnButton3() > > { > > char infile[]="test.spx"; > > char outfile[]="test.wav"; > > char *outFile; > > char *inFile; > > FILE *fout; // output file > > FILE *fin; // input file > > > > short out[FRAME_SIZE]; > > > > short output[FRAME_SIZE]; > > char cbits[200]; > > int nbBytes; > > > > void *state; > > > > SpeexBits bits; > > int i, tmp; > > > > state = speex_decoder_init(&speex_nb_mode); > > > > tmp=1; > > speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp); > > > > outFile = outfile; > > fout = fopen(outFile, "w"); > > > > inFile = infile; > > fin = fopen(inFile,"r"); > > > > speex_bits_init(&bits); > > while (1) > > { > > > > fread(&nbBytes, sizeof(int), 1, fin); > > fprintf (stderr, "nbBytes: %d\n", nbBytes); > > if (feof(fin)) > > break; > > > > /*Read the "packet" encoded by sampleenc*/ > > fread(cbits, 1, nbBytes, fin); > > /*Copy the data into the bit-stream struct*/ > > speex_bits_read_from(&bits, cbits, nbBytes); > > > > /*Decode the data*/ > > speex_decode(state, &bits, output); > > > > /*Copy from float to short (16 bits) for > output*/ > > for (i=0;i<FRAME_SIZE;i++) > > out[i]=output[i]; > > > > /*Write the decoded audio to file*/ > > fwrite(out, sizeof(short), FRAME_SIZE, fout); > > } > > > > /*Destroy the decoder state*/ > > speex_decoder_destroy(state); > > /*Destroy the bit-stream truct*/ > > speex_bits_destroy(&bits); > > fclose(fout); > > //return 0; > > }-- Jean-Marc Valin, M.Sc.A., ing. jr. LABORIUS (http://www.gel.usherb.ca/laborius) Université de Sherbrooke, Québec, Canada --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.