Hi *,
It seems the latest trunk wav_hdr.c is not working (at least on my env -
solaris).
I have done a diff between the trunk version and the version I have that
works (with the rest of the trunk)
any pointers:
the debug follow:
(19204) DEBUG: IvrAudioFile_new (IvrAudio.cpp:17): ----------
IvrAudioFile_alloc -----------
(19204) DEBUG: wav_read_header (wav_hdr.c:126): trying to read WAV file
(19204) DEBUG: wav_read_header (wav_hdr.c:129): tag = <RIFF>
(19204) DEBUG: wav_read_header (wav_hdr.c:137): file size = <340787200>
(19204) DEBUG: wav_read_header (wav_hdr.c:140): tag = <WAVE>
(19204) DEBUG: wav_read_header (wav_hdr.c:147): tag = <fmt >
(19204) DEBUG: wav_read_header (wav_hdr.c:155): chunk_size = <268435456>
(19204) DEBUG: wav_read_header (wav_hdr.c:159): fmt = <100>
(19204) DEBUG: wav_read_header (wav_hdr.c:163): channels = <256>
(19204) DEBUG: wav_read_header (wav_hdr.c:167): rate = <1075773440>
(19204) DEBUG: wav_read_header (wav_hdr.c:174): bits/sample = <4096>
(19204) ERROR: wav_read_header (wav_hdr.c:194): fread: Error 0 (sr=0)
(19204) ERROR: fpopen_int (AmAudioFile.cpp:199): open returned -1: Error 0
All the info printed in this debug so far is also bogus!
2c2
< * $Id: wav_hdr.c 724 2008-02-15 13:09:30Z sayer $
---
> * $Id: wav_hdr.c 966 2008-05-15 16:13:13Z sayer $
35c35,38
< #if (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN))
---
> #include <stdio.h>
> #include <stdlib.h>
>
> #if (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)) || (defined(BYTE_ORDER) && (BYTE_ORDER == BIG_ENDIAN))
46c49
< #elif (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN)
---
> #elif (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN) || (defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN))
58c61,65
< if((sr != 1) || ferror(fp)) return -1;
---
> if((sr != 1) || ferror(fp)) { \
> ERROR("fread: %s (sr=%d)\n", strerror(errno), sr); \
> return -1; \
> }
> \
81a89,105
> //If wav_dummyread() had a problem, return code -1
> int wav_dummyread(FILE *fp, unsigned int size)
> {
> unsigned int s;
> char *dummybuf;
>
> DBG("Skip chunk by reading dummy bytes from stream\n");
> dummybuf = (char*) malloc (size);
> if(dummybuf==NULL) {
> ERROR("Can't alloc memory for dummyread!\n");
> return -1;
> }
>
> SAFE_READ(dummybuf,size,fp,s);
> free(dummybuf);
> return 0;
> }
94a119,120
> char dummy[6]={'\0'};
> int is_seekable = 1;
105c131
< DBG("wrong format !");
---
> DBG("wrong format !\n");
116c142
< DBG("wrong format !");
---
> DBG("wrong format !\n");
123c149
< DBG("wrong format !");
---
> DBG("wrong format !\n");
144c170
< fseek(fp,6,SEEK_CUR);
---
> SAFE_READ(&dummy,6,fp,s); // skip by reading into dummy buffer
160c186,190
< fseek(fp,chunk_size-16,SEEK_CUR);
---
> if ((fseek(fp,chunk_size-16,SEEK_CUR) < 0)
> && errno == EBADF) {
> is_seekable = 0;
> wav_dummyread(fp,chunk_size-16);
> }
174c204,207
< fseek(fp,chunk_size,SEEK_CUR);
---
> if (is_seekable)
> fseek(fp,chunk_size,SEEK_CUR);
> else
> wav_dummyread(fp,chunk_size);
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev