DSPRelated.com
Forums

Wave header format for mu-law and A-law

Started by Padmalatha Y August 27, 2003
Jeff,

In case of compressed .wav file, the "fact" chunk
indicates the number of uncompressed samples.

Included is an example of .wav file that contains
compressed data (ACELP), with the "fact" chunk
included.

Regards,
/Shaofeng

--- Jeff Brower <> wrote:
> Shaofeng-
>
> > The 'fact' chunk is required for all compressed
> audio
> > formats, and for the case where the data is
> included
> > in 'wavl' list chunk.
>
> What kind of .wav files typically contain non-PCM
> data? Can you give some
> typical examples? Do they still have .wav
> extensions, or some other
> extensions?
>
> Thanks.
>
> -Jeff
>
> > --- Jeff Brower <> wrote:
> >> Shaofeng-
> >>
> >> FWIW, most .wav files are 44 byte header (e.g.
> >> Microsoft examples included with
> >> WinXX) and don't have the 'fact' tag.
> >>
> >> Jeff Brower
> >> system engineer
> >> Signalogic
> >>
> >> Shaofeng Li wrote:
> >> >
> >> > Padmalatha,
> >> >
> >> > You can refer to this link for wave format:
> >> >
> >> >
> >>
> >
>
http://ccrma-www.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/
> >> >
> >> > Your wave file is formatted as follows:
> >> >
> >> > Chunk Id = 'RIFF'
> >> > Chunk Size = 5996
> >> > Format = 'WAVE'
> >> >
> >> > Subchunk Id = 'fmt '
> >> > Subchunk Size = 18
> >> > AudioFormat = 0x0007 (WAVE_FORMAT_MULAW)
> >> > NumChannels = 1
> >> > SampleRate = 8000
> >> > ByteRate = 8000
> >> > BlockAlign = 1
> >> > BitsPerSample = 8
> >> > ExtraParamLen = 2
> >> > ExtraParamVal = 0x0000
> >> >
> >> > Subchunk Id = 'fact'
> >> > Subchunk Size = 4
> >> > Subchunk Val = 0xe8160000
> >> >
> >> > Subchunk Id = 'data'
> >> > Subchunk Size = 5864
> >> >
> >> > Regards,
> >> > /Shaofeng
> >> >
> >> > --- Padmalatha Y <>
> wrote:
> >> > > Hi All,
> >> > >
> >> > > Can any one tell me the wave header
> for
> >> > > mu-law and A-law. I have a wave file which is
> >> mu-law
> >> > > 8-bit mono which has 56 bytes as header. I
> want
> >> to
> >> > > know in what format are these bytes arranged.
> >> The
> >> > > following 56 byte header is provided for
> >> reference.
> >> > >
> >> > > 52 49 46 46 6C 17 00 00 57 41 56 45 66 6D 74
> 20
> >> > > 12 00 00 00 07 00 01 00 40 1F 00 00 40 1F 00
> 00
> >> > > 01 00 08 00 00 00 66 61 63 74 04 00 00 00 E8
> 16
> >> > > 00 00 64 61 74 61 E8 16 00 00
> >> > >
> >> > >
> >> > > Thanks in advance,
> >> > > Padmalatha
> >
> >
> > __________________________________
> >
> >
> >
> > ------------------------ Yahoo! Groups Sponsor
> ---------------------~-->
> > Buy Ink Cartridges or Refill Kits for Your HP,
> Epson, Canon or Lexmark
> > Printer at Myinks.com. Free s/h on orders $50 or
> more to the US & Canada.
> > http://www.c1tracking.com/l.asp?cidU11
> >
>
http://us.click.yahoo.com/l.m7sD/LIdGAA/qnsNAA/GP4qlB/TM
> >
>
---------------------------------~->
> >
> > _____________________________________
> > Note: If you do a simple "reply" with your email
> client, only the author
> > of this message will receive your answer. You
> need to do a "reply all" if
> > you want your answer to be distributed to the
> entire group.
> >
> > _____________________________________
> > About this discussion group:
> >
> > To Join:
> >
> > To Post:
> >
> > To Leave:
> >
> > Archives:
> http://www.yahoogroups.com/group/speechcoding
> >
> > Other DSP-Related Groups:
> http://www.dsprelated.com
> >
> >
> > ">http://docs.yahoo.com/info/terms/
> >
> >
> >
>


__________________________________

Attachment (not stored)
ACELP_NET.wav
Type: audio/wav

Shaofeng-

> In case of compressed .wav file, the "fact" chunk
> indicates the number of uncompressed samples.
>
> Included is an example of .wav file that contains
> compressed data (ACELP), with the "fact" chunk
> included.

Thanks for the example.

Ok, I think I've got it now: the fmt tag contains the PCM identifier/codec ID
and
the length of compressed data; the FACT tag is a placeholder to provide the
length of
PCM data after compression, since there's not a spot for it in the standard fmt
tag.
Is that correct?

I notice that mplayer2 can handle your ACELP example, but mplayer and Winamp
cannot.
Is there a list somewhere of codecs supported by WMP? Is it possible to create
user-defined plug-ins and additional codec identifier definitions for WMP so
they can
handle other codec types? My company does work on mil/gov codecs like MELPe;
making
it possible for people to click on a MELPe compressed file using WMP would be
very
convenient.

-Jeff > --- Jeff Brower <> wrote:
> > Shaofeng-
> >
> > > The 'fact' chunk is required for all compressed
> > audio
> > > formats, and for the case where the data is
> > included
> > > in 'wavl' list chunk.
> >
> > What kind of .wav files typically contain non-PCM
> > data? Can you give some
> > typical examples? Do they still have .wav
> > extensions, or some other
> > extensions?
> >
> > Thanks.
> >
> > -Jeff
> >
> > > --- Jeff Brower <> wrote:
> > >> Shaofeng-
> > >>
> > >> FWIW, most .wav files are 44 byte header (e.g.
> > >> Microsoft examples included with
> > >> WinXX) and don't have the 'fact' tag.
> > >>
> > >> Jeff Brower
> > >> system engineer
> > >> Signalogic
> > >>
> > >> Shaofeng Li wrote:
> > >> >
> > >> > Padmalatha,
> > >> >
> > >> > You can refer to this link for wave format:
> > >> >
> > >> >
> > >>
> > >
> >
> http://ccrma-www.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/
> > >> >
> > >> > Your wave file is formatted as follows:
> > >> >
> > >> > Chunk Id = 'RIFF'
> > >> > Chunk Size = 5996
> > >> > Format = 'WAVE'
> > >> >
> > >> > Subchunk Id = 'fmt '
> > >> > Subchunk Size = 18
> > >> > AudioFormat = 0x0007 (WAVE_FORMAT_MULAW)
> > >> > NumChannels = 1
> > >> > SampleRate = 8000
> > >> > ByteRate = 8000
> > >> > BlockAlign = 1
> > >> > BitsPerSample = 8
> > >> > ExtraParamLen = 2
> > >> > ExtraParamVal = 0x0000
> > >> >
> > >> > Subchunk Id = 'fact'
> > >> > Subchunk Size = 4
> > >> > Subchunk Val = 0xe8160000
> > >> >
> > >> > Subchunk Id = 'data'
> > >> > Subchunk Size = 5864
> > >> >
> > >> > Regards,
> > >> > /Shaofeng
> > >> >
> > >> > --- Padmalatha Y <>
> > wrote:
> > >> > > Hi All,
> > >> > >
> > >> > > Can any one tell me the wave header
> > for
> > >> > > mu-law and A-law. I have a wave file which is
> > >> mu-law
> > >> > > 8-bit mono which has 56 bytes as header. I
> > want
> > >> to
> > >> > > know in what format are these bytes arranged.
> > >> The
> > >> > > following 56 byte header is provided for
> > >> reference.
> > >> > >
> > >> > > 52 49 46 46 6C 17 00 00 57 41 56 45 66 6D 74
> > 20
> > >> > > 12 00 00 00 07 00 01 00 40 1F 00 00 40 1F 00
> > 00
> > >> > > 01 00 08 00 00 00 66 61 63 74 04 00 00 00 E8
> > 16
> > >> > > 00 00 64 61 74 61 E8 16 00 00
> > >> > >
> > >> > >
> > >> > > Thanks in advance,
> > >> > > Padmalatha





Mark-

> > I notice that mplayer2 can handle your ACELP example, but mplayer and Winamp
cannot.
> > Is there a list somewhere of codecs supported by WMP? Is it possible to
create
> > user-defined plug-ins and additional codec identifier definitions for WMP so
they can
> > handle other codec types? My company does work on mil/gov codecs like
MELPe; making
> > it possible for people to click on a MELPe compressed file using WMP would
be very
> > convenient.
>
> Yes, to write your own Winamp decoder plug-in, read this:
>
> http://www.winamp.com/nsdn/winamp2x/dev/plugins/in.jhtml

Thanks very much for your help. Could you double-check the link above? I got a
500
error when I tried.

-Jeff > > -Jeff
> >
> >
> > > --- Jeff Brower <> wrote:
> > > > Shaofeng-
> > > >
> > > > > The 'fact' chunk is required for all compressed
> > > > audio
> > > > > formats, and for the case where the data is
> > > > included
> > > > > in 'wavl' list chunk.
> > > >
> > > > What kind of .wav files typically contain non-PCM
> > > > data? Can you give some
> > > > typical examples? Do they still have .wav
> > > > extensions, or some other
> > > > extensions?
> > > >
> > > > Thanks.
> > > >
> > > > -Jeff
> > > >
> > > > > --- Jeff Brower <> wrote:
> > > > >> Shaofeng-
> > > > >>
> > > > >> FWIW, most .wav files are 44 byte header (e.g.
> > > > >> Microsoft examples included with
> > > > >> WinXX) and don't have the 'fact' tag.
> > > > >>
> > > > >> Jeff Brower
> > > > >> system engineer
> > > > >> Signalogic
> > > > >>
> > > > >> Shaofeng Li wrote:
> > > > >> >
> > > > >> > Padmalatha,
> > > > >> >
> > > > >> > You can refer to this link for wave format:
> > > > >> >
> > > > >> >
> > > > >>
> > > > >
> > > >
> > > http://ccrma-www.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/
> > > > >> >
> > > > >> > Your wave file is formatted as follows:
> > > > >> >
> > > > >> > Chunk Id = 'RIFF'
> > > > >> > Chunk Size = 5996
> > > > >> > Format = 'WAVE'
> > > > >> >
> > > > >> > Subchunk Id = 'fmt '
> > > > >> > Subchunk Size = 18
> > > > >> > AudioFormat = 0x0007 (WAVE_FORMAT_MULAW)
> > > > >> > NumChannels = 1
> > > > >> > SampleRate = 8000
> > > > >> > ByteRate = 8000
> > > > >> > BlockAlign = 1
> > > > >> > BitsPerSample = 8
> > > > >> > ExtraParamLen = 2
> > > > >> > ExtraParamVal = 0x0000
> > > > >> >
> > > > >> > Subchunk Id = 'fact'
> > > > >> > Subchunk Size = 4
> > > > >> > Subchunk Val = 0xe8160000
> > > > >> >
> > > > >> > Subchunk Id = 'data'
> > > > >> > Subchunk Size = 5864
> > > > >> >
> > > > >> > Regards,
> > > > >> > /Shaofeng
> > > > >> >
> > > > >> > --- Padmalatha Y <>
> > > > wrote:
> > > > >> > > Hi All,
> > > > >> > >
> > > > >> > > Can any one tell me the wave header
> > > > for
> > > > >> > > mu-law and A-law. I have a wave file which is
> > > > >> mu-law
> > > > >> > > 8-bit mono which has 56 bytes as header. I
> > > > want
> > > > >> to
> > > > >> > > know in what format are these bytes arranged.
> > > > >> The
> > > > >> > > following 56 byte header is provided for
> > > > >> reference.
> > > > >> > >
> > > > >> > > 52 49 46 46 6C 17 00 00 57 41 56 45 66 6D 74
> > > > 20
> > > > >> > > 12 00 00 00 07 00 01 00 40 1F 00 00 40 1F 00
> > > > 00
> > > > >> > > 01 00 08 00 00 00 66 61 63 74 04 00 00 00 E8
> > > > 16
> > > > >> > > 00 00 64 61 74 61 E8 16 00 00
> > > > >> > >
> > > > >> > >
> > > > >> > > Thanks in advance,
> > > > >> > > Padmalatha
> >
> >
> >
> > _____________________________________
> > Note: If you do a simple "reply" with your email client, only the author of
this message will receive your answer. You need to do a "reply all" if you want
your answer to be distributed to the entire group.
> >
> > _____________________________________
> > About this discussion group:
> >
> > To Join:
> >
> > To Post:
> >
> > To Leave:
> >
> > Archives: http://www.yahoogroups.com/group/speechcoding
> >
> > Other DSP-Related Groups: http://www.dsprelated.com
> >
> >
> > ">http://docs.yahoo.com/info/terms/
> >
> >




Shaofeng-

> > Is there a list somewhere of codecs supported by
> > WMP?
>
> See this link for IANA WAVE and AVI codec registry:
>
> http://www.iana.org/assignments/wave-avi-codec-registry
>
> > Is it possible to create
> > user-defined plug-ins and additional codec
> > identifier definitions for WMP so they can
> > handle other codec types?
>
> Yes. You can create your Audio Compression Manager
> (ACM) driver which takes in charge a codec type on
> Microsoft platform. Refer to this link for more
> information:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/w98ddk/hh/w98dd\
k/mmedia_4vjs.asp

Hey that's great. I had no idea so many different codecs were registered, and
.wave
and .avi are tracked by IANA in one registry. Thanks for the info.

-Jeff


DSP Wizzard-

> I've been writing some plug in and DLLs.
>
> Is that MELPe codec freeware?

The MELPe codec source code is available online, but not sure where at the
moment --
it moves around from time-to-time.

> What is it good for, there are so many other codecs anyway?

MELPe has two interesting characteristics: low bit rate option (1200 bps), and
gov/mil/NATO standard at 1200 and 2400 bps.

> Do you sell products with that MELPe codec that, that makes you
> interested in such a plug in?

A plug-in gives our customers a convenient way to demo on a typical desktop PC.

> Does the fact that your company does work on mil/gov codecs like
> MELPe mean that you license it or can distribute it?
>
> If not, who owns the IP/copyrights of that MELPe codec?

All depends. For gov customers, MELPe is royalty-free because the gov paid for
initial development. For commercial customers, I believe that IP rights are
retained
by Texas Inst and Microsoft (which used to be SignalCom). But I'm not sure what
are
the royalty amounts. Signalogic has a number of mil/gov clients who need MELPe
integrated into their systems; these clients typically use our DSP based
hardware.
In some cases we add to the algorithm, for example different bitrates, improved
speech quality, etc.

I hope that answers your questions.

Jeff Brower
system engineer
Signalogic

> --- In , Jeff Brower <jbrower@s...> wrote:
> > Shaofeng-
> >
> > > In case of compressed .wav file, the "fact" chunk
> > > indicates the number of uncompressed samples.
> > >
> > > Included is an example of .wav file that contains
> > > compressed data (ACELP), with the "fact" chunk
> > > included.
> >
> > Thanks for the example.
> >
> > Ok, I think I've got it now: the fmt tag contains the PCM
> identifier/codec ID and
> > the length of compressed data; the FACT tag is a placeholder to
> provide the length of
> > PCM data after compression, since there's not a spot for it in the
> standard fmt tag.
> > Is that correct?
> >
> > I notice that mplayer2 can handle your ACELP example, but mplayer
> and Winamp cannot.
> > Is there a list somewhere of codecs supported by WMP? Is it
> possible to create
> > user-defined plug-ins and additional codec identifier definitions
> for WMP so they can
> > handle other codec types? My company does work on mil/gov codecs
> like MELPe; making
> > it possible for people to click on a MELPe compressed file using
> WMP would be very
> > convenient.
> >
> > -Jeff
> >
> >
> > > --- Jeff Brower <jbrower@s...> wrote:
> > > > Shaofeng-
> > > >
> > > > > The 'fact' chunk is required for all compressed
> > > > audio
> > > > > formats, and for the case where the data is
> > > > included
> > > > > in 'wavl' list chunk.
> > > >
> > > > What kind of .wav files typically contain non-PCM
> > > > data? Can you give some
> > > > typical examples? Do they still have .wav
> > > > extensions, or some other
> > > > extensions?
> > > >
> > > > Thanks.
> > > >
> > > > -Jeff
> > > >
> > > > > --- Jeff Brower <jbrower@s...> wrote:
> > > > >> Shaofeng-
> > > > >>
> > > > >> FWIW, most .wav files are 44 byte header (e.g.
> > > > >> Microsoft examples included with
> > > > >> WinXX) and don't have the 'fact' tag.
> > > > >>
> > > > >> Jeff Brower
> > > > >> system engineer
> > > > >> Signalogic
> > > > >>
> > > > >> Shaofeng Li wrote:
> > > > >> >
> > > > >> > Padmalatha,
> > > > >> >
> > > > >> > You can refer to this link for wave format:
> > > > >> >
> > > > >> >
> > > > >>
> > > > >
> > > >
> > > http://ccrma-
> www.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/
> > > > >> >
> > > > >> > Your wave file is formatted as follows:
> > > > >> >
> > > > >> > Chunk Id = 'RIFF'
> > > > >> > Chunk Size = 5996
> > > > >> > Format = 'WAVE'
> > > > >> >
> > > > >> > Subchunk Id = 'fmt '
> > > > >> > Subchunk Size = 18
> > > > >> > AudioFormat = 0x0007 (WAVE_FORMAT_MULAW)
> > > > >> > NumChannels = 1
> > > > >> > SampleRate = 8000
> > > > >> > ByteRate = 8000
> > > > >> > BlockAlign = 1
> > > > >> > BitsPerSample = 8
> > > > >> > ExtraParamLen = 2
> > > > >> > ExtraParamVal = 0x0000
> > > > >> >
> > > > >> > Subchunk Id = 'fact'
> > > > >> > Subchunk Size = 4
> > > > >> > Subchunk Val = 0xe8160000
> > > > >> >
> > > > >> > Subchunk Id = 'data'
> > > > >> > Subchunk Size = 5864
> > > > >> >
> > > > >> > Regards,
> > > > >> > /Shaofeng
> > > > >> >
> > > > >> > --- Padmalatha Y <padmalatha@s...>
> > > > wrote:
> > > > >> > > Hi All,
> > > > >> > >
> > > > >> > > Can any one tell me the wave header
> > > > for
> > > > >> > > mu-law and A-law. I have a wave file which is
> > > > >> mu-law
> > > > >> > > 8-bit mono which has 56 bytes as header. I
> > > > want
> > > > >> to
> > > > >> > > know in what format are these bytes arranged.
> > > > >> The
> > > > >> > > following 56 byte header is provided for
> > > > >> reference.
> > > > >> > >
> > > > >> > > 52 49 46 46 6C 17 00 00 57 41 56 45 66 6D 74
> > > > 20
> > > > >> > > 12 00 00 00 07 00 01 00 40 1F 00 00 40 1F 00
> > > > 00
> > > > >> > > 01 00 08 00 00 00 66 61 63 74 04 00 00 00 E8
> > > > 16
> > > > >> > > 00 00 64 61 74 61 E8 16 00 00
> > > > >> > >
> > > > >> > >
> > > > >> > > Thanks in advance,
> > > > >> > > Padmalatha





DSP Wizzard-

> I have just found out from another newsgroup that in addition to TI
> and Microsoft, also AT&T and some small company called Compandent are
> IP holders of MELPe.

AT&T only holds IP rights to a general "noise preprocessor" filter, but not any
part
of the actual MELPe codec. The AT&T filter attempts to characterize the noise
in the
channel on an adaptive basis. Many MELPe applications will not need this type
of
noise filter.

Compandent may be small but they are an excellent algorithm and R&D group, with
a
rare combination of theoretical and practical DSP knowledge.

> The guy from the newsgroup said that Compandent
> worked with Microsoft's Signalcom and therefore it holds some of the
> IP too.

I don't think that's accurate. Compandent was contracted by NSA to produce an
all-assembly-language, bit-exact C54x version of MELPe. For definitive IP info,
you
should check with NSA and not news groups -- NSA is the "keeper of the key" for
all
MELPe. If you reply to me offline and give me your company info and other
contact
info that I can verify, I can provide you with a person inside NSA to contact
about
MELPe.

> He said that Compandent is even mentioned on some of the
> official MELPe documents and in the MELPe source code, and that his
> company has recently done MELPe related project during which he was
> in touch with Compandent (for support and licensing). He thinks that
> Compandent is today the only company that was involved in the MELPe's
> R&D and that still provides R&D support and related services.

In addition...

-a group at MIT under Dr. Joseph Campbell's direction

-Harris Corp, working on 600 bps MELPe

-Signalogic, working on enhanced speech quality
new bitrates, graceful FER degradation, and
C-code/Texas Inst CCS compliant versions. Some
samples are at:

http://www.signalogic.com/codec_samples.htm

> So perhaps [Compandent] they can do the plug-in... :)

Sure -- ask them!

-Jeff > --- In , Jeff Brower <jbrower@s...> wrote:
>
> > > Does the fact that your company does work on mil/gov codecs like
> > > MELPe mean that you license it or can distribute it?
> > >
> > > If not, who owns the IP/copyrights of that MELPe codec?
> >
> > All depends. For gov customers, MELPe is royalty-free because the
> gov paid for
> > initial development. For commercial customers, I believe that IP
> rights are retained
> > by Texas Inst and Microsoft (which used to be SignalCom). But I'm
> not sure what are
> > the royalty amounts. Signalogic has a number of mil/gov clients
> who need MELPe
> > integrated into their systems; these clients typically use our DSP
> based hardware.
> > In some cases we add to the algorithm, for example different
> bitrates, improved
> > speech quality, etc.
> >
> > I hope that answers your questions.
> >
> > Jeff Brower
> > system engineer
> > Signalogic