[Alsaplayer-devel]bug in wav_engine
Joshua Haberman
joshua@haberman.com
Sat, 22 Dec 2001 03:58:09 -0600
Hello, alsaplayer developers!
I have come across a bug with alsaplayer's wav handling. Alsaplayer's
wav_engine will fail to recognize some valid wav files, due to an
incorrect assumption that the format chunk will always be 16 bytes long.
The problem is in this code:
In input/wav/formats.h:
typedef struct wav_header {
u_int main_chunk; /* 'RIFF' */
u_int length; /* filelen */
u_int chunk_type; /* 'WAVE' */
u_int sub_chunk; /* 'fmt ' */
u_int sc_len; /* length of sub_chunk, =16 */ <--- not necessarily!
u_short format; /* should be 1 for PCM-code */
u_short modus; /* 1 Mono, 2 Stereo */
u_int sample_fq; /* frequence of sample */
u_int byte_p_sec;
u_short byte_p_spl; /* samplesize; 1 or 2 bytes */
u_short bit_p_spl; /* 8, 12 or 16 bit */
u_int data_chunk; /* 'data' */
u_int data_length; /* samplecount */
} WaveHeader;
You need to read data_chunk and data_length from the correct offset in
the file, according to sc_len.
Joshua
P.S. I tried sending this to alsaplayer-bugs@, as you request at
http://lists.tartarus.org/mailman/listinfo/alsaplayer-devel, but my mail
was rejected with this:
----------
From: Mail Delivery System <Mailer-Daemon@ixion.tartarus.org>
Subject: Mail delivery failed: returning message to sender
Date: Sat, 22 Dec 2001 09:50:28 +0000
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. The following address(es) failed:
alsaplayer@lists.tartarus.org:
(generated from alsaplayer-bugs@lists.tartarus.org):
unknown local-part "alsaplayer" in domain "lists.tartarus.org"
----------
--
Joshua Haberman <joshua@haberman.com>