<!doctype html public "-//W3C//DTD W3 HTML//EN">
<html><head><style type="text/css"><!--
blockquote, dl, ul, ol, li { padding-top: 0 ; padding-bottom: 0 }
 --></style><title>Re: [Asterisk-Dev] Re: MS-ADPCM in
format_wav?</title></head><body>
<blockquote type="cite" cite>On Wed, 2005-02-02 at 15:47 +0000, Tony
Mountifield wrote:<br>
&gt; In article &lt;1107359089.2799.18.camel@critch&gt;,<br>
&gt; Steven Critchfield &lt;critch@basesys.com&gt; wrote:<br>
&gt; &gt; On Wed, 2005-02-02 at 11:02 +0000, Tony Mountifield
wrote:<br>
&gt; &gt; &gt; Does anyone know if there has been any work done on
enhancing format_wav<br>
&gt; &gt; &gt; to support MS-ADPCM format (fmt codec type 2)?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; If not, I may consider having a go myself, but I don't
want to re-invent<br>
&gt; &gt; &gt; the wheel unnecessarily.<br>
&gt; &gt;<br>
&gt; &gt; You wouldn't modify format_wav under the current method. You
can copy it<br>
&gt; &gt; to format_wav2 to mimic the way GSM wav files are handled
by<br>
&gt; &gt; format_wav49. Then you only need to modify the seek
function, and the<br>
&gt; &gt; header creation/update. After that, you just need to make
sure the codec<br>
&gt; &gt; is set to adpcm so your incoming frames are already in the
right format.<br>
&gt;<br>
&gt; OK, thanks, I'll have a look at that. At the moment, I'm more
interested<br>
&gt; in being able to play adpcm files than record them. Rather than
relying<br>
&gt; on a matching codec, I was thinking more of having format_wav2
decode the<br>
&gt; ADPCM into SLIN or something, like format_mp3 does.<br>
&gt;<br>
&gt; And having each format in a separate module looks like it
requires each<br>
&gt; format to have a different file extension, rather than looking at
the<br>
&gt; fmt chunk in the file to determine the format. Is that
correct?<br>
&gt;<br>
&gt; I'll take a look at format_adpcm too. Thanks to you and bkw for
the pointers.<br>
<br>
Ideally, if asterisk doesn't support the codec, you should look
into<br>
making the codec then. Putting audio encoding at the format level
isn't<br>
a real good idea.<br>
<br>
Now as for combining the wav functions into one simple format_wav,
that<br>
wouldn't be too bad. Of course you would still have to signify to<br>
asterisk what codec you wanted the file to be recorded in when you
said<br>
wav. The only thing that is different between the 2 currently
supported<br>
wav formats is the header functions and a few assumptions with how
to<br>
deal with blocks of audio for the codec.<br>
<br>
For instance, in format_wav_gsm, you read a 65 byte block and send it
to<br>
the on it's way. you can not use anything smaller than 65 bytes, and
you<br>
have to be on the proper boundaries too. But in format_wav, you
just<br>
have to be on the right 2 byte boundary to send the slinear bytes to
the<br>
codec.<br>
<br>
I'm assuming adpcm and MS-adpcm is similar.&nbsp;<br>
--</blockquote>
<blockquote type="cite" cite>Steven Critchfield
&lt;critch@basesys.com&gt;</blockquote>
<blockquote type="cite" cite><br></blockquote>
<div><br></div>
<div><br></div>
<div>I'll throw in a couple of comments here. A good starting point to
understand the Microsoft-adpcm file format, is to read an Apple tech
note http://developer.apple.com/technotes/tn/tn1081.html&nbsp; that
describes the differences between IMA-ADPCM and MS-ADPCM, note the
real issue is how the data is stored on disk. RAW ADPCM samples (for
example if you put a voice capable modem into voice mode (see the
V.253 Modem AT Command set) then asterisk's adpcm codec will handle
it. However it's when windows software &quot;writes these adpcm
samples to a wav file, is where the issue is..</div>
<div><br></div>
<div>The original question (correct me if i am wrong Steven) is how to
take a windows .wav file that contains&nbsp; adpcm audio samples that
are created under MS Windows and &quot;play&quot; them to a caller via
asterisk. The Apple tech note is a great starting point on describing
the issues for parsing the data.</div>
<div><br></div>
<div>Another good open source code base that I have used to read and
&quot;play&quot; a windows .wav file over a modem (i.e an answering
machine) is the vgetty/voice subproject&nbsp; that's part of mgetty.
There is code in vgetty that parses the MSADPCM wav file and creates a
.RMD file (which is a RAW ADPCM file) that you just write to the phone
line.</div>
<div><br></div>
<div>Do a search for &quot;<font face="Courier" size="+2"
color="#000000"><b>pvf tools</b></font>&quot; to see some of the
different formats supported by the vgetty project.</div>
</body>
</html>