|
|
@ -66,12 +66,12 @@ struct wav_desc { /* format-specific parameters */
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
|
|
#define htoll(b) \
|
|
|
|
#define htoll(b) \
|
|
|
|
(((((b) ) & 0xFF) << 24) | \
|
|
|
|
(((((b) ) & 0xFF) << 24) | \
|
|
|
|
((((b) >> 8) & 0xFF) << 16) | \
|
|
|
|
((( (b) >> 8) & 0xFF) << 16) | \
|
|
|
|
((((b) >> 16) & 0xFF) << 8) | \
|
|
|
|
((( (b) >> 16) & 0xFF) << 8) | \
|
|
|
|
((((b) >> 24) & 0xFF) ))
|
|
|
|
((( (b) >> 24) & 0xFF) ))
|
|
|
|
#define htols(b) \
|
|
|
|
#define htols(b) \
|
|
|
|
(((((b) ) & 0xFF) << 8) | \
|
|
|
|
(((((b) ) & 0xFF) << 8) | \
|
|
|
|
((((b) >> 8) & 0xFF) ))
|
|
|
|
((( (b) >> 8) & 0xFF) ))
|
|
|
|
#define ltohl(b) htoll(b)
|
|
|
|
#define ltohl(b) htoll(b)
|
|
|
|
#define ltohs(b) htols(b)
|
|
|
|
#define ltohs(b) htols(b)
|
|
|
|
#else
|
|
|
|
#else
|
|
|
@ -153,7 +153,9 @@ static int check_header(FILE *f, int hz)
|
|
|
|
ast_log(LOG_WARNING, "Read failed (size)\n");
|
|
|
|
ast_log(LOG_WARNING, "Read failed (size)\n");
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
|
|
size = ltohl(size);
|
|
|
|
size = ltohl(size);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
if (fread(&formtype, 1, 4, f) != 4) {
|
|
|
|
if (fread(&formtype, 1, 4, f) != 4) {
|
|
|
|
ast_log(LOG_WARNING, "Read failed (formtype)\n");
|
|
|
|
ast_log(LOG_WARNING, "Read failed (formtype)\n");
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
@ -181,7 +183,9 @@ static int check_header(FILE *f, int hz)
|
|
|
|
ast_log(LOG_WARNING, "Read failed (block '%.4s' header length)\n", buf);
|
|
|
|
ast_log(LOG_WARNING, "Read failed (block '%.4s' header length)\n", buf);
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
|
|
data = ltohl(data);
|
|
|
|
data = ltohl(data);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
if (memcmp(&buf, "fmt ", 4) == 0) {
|
|
|
|
if (memcmp(&buf, "fmt ", 4) == 0) {
|
|
|
|
if (check_header_fmt(f, data, hz))
|
|
|
|
if (check_header_fmt(f, data, hz))
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
@ -461,12 +465,13 @@ static int wav_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (whence == SEEK_SET)
|
|
|
|
if (whence == SEEK_SET) {
|
|
|
|
offset = samples + min;
|
|
|
|
offset = samples + min;
|
|
|
|
else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
|
|
|
|
} else if (whence == SEEK_CUR || whence == SEEK_FORCECUR) {
|
|
|
|
offset = samples + cur;
|
|
|
|
offset = samples + cur;
|
|
|
|
else if (whence == SEEK_END)
|
|
|
|
} else if (whence == SEEK_END) {
|
|
|
|
offset = max - samples;
|
|
|
|
offset = max - samples;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (whence != SEEK_FORCECUR) {
|
|
|
|
if (whence != SEEK_FORCECUR) {
|
|
|
|
offset = (offset > max)?max:offset;
|
|
|
|
offset = (offset > max)?max:offset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|