<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">One more thing. The original example decompresses the file to roughly 74924 while my example decompresses to 37440. Like I said, it's about half the expected size and it plays at twice the speed. It's like I'm missing every other sample. I suspect the following code in copyOggPacketToSpeexBitstream:<div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 132, 28); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>/*Copy Ogg packet to Speex bitstream*/</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(78, 129, 134); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #31595d">speex_bits_read_from</span><span style="color: #000000">(&amp;</span>bits<span style="color: #000000">, (</span><span style="color: #bb2b9f">char</span><span style="color: #000000">*)</span>oggPacket<span style="color: #000000">.</span>packet<span style="color: #000000">, </span>oggPacket<span style="color: #000000">.</span><span style="color: #713da6">bytes</span><span style="color: #000000">);</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #bb2b9f">int</span> numberOfFrames = [[<span style="color: #4e8186">audioAttributes</span> <span style="color: #3e1e7e">valueForKey</span>:<span style="color: #d12c25">@"framesPerPacket"</span>] <span style="color: #3e1e7e">intValue</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #bb2b9f">for</span> (<span style="color: #bb2b9f">int</span> i=<span style="color: #2a2bd3">0</span>;i!=numberOfFrames;i++) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #bb2b9f">short</span> <span style="color: #bb2b9f">int</span> decodedData[<span style="color: #78482e">MAX_FRAME_SIZE</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #31595d">speex_decode_int</span>(<span style="color: #4e8186">theSpeexDecoder</span>, &amp;<span style="color: #4e8186">bits</span>, decodedData);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #bb2b9f">int</span> blockSize = [[<span style="color: #4e8186">audioAttributes</span> <span style="color: #3e1e7e">valueForKey</span>:<span style="color: #d12c25">@"decodeBlockSize"</span>] <span style="color: #3e1e7e">intValue</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #bb2b9f">short</span> <span style="color: #bb2b9f">int</span> rawBlock[blockSize];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #bb2b9f">for</span> (<span style="color: #bb2b9f">int</span> count=<span style="color: #2a2bd3">0</span>; count &lt; blockSize; count++) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                        </span>rawBlock[count] = <span style="color: #78482e">le_short</span>( decodedData[count] );</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(62, 30, 126); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #bb2b9f">if</span><span style="color: #000000"> ([</span><span style="color: #4e8186">delegate</span><span style="color: #000000"> </span>respondsToSelector<span style="color: #000000">:</span><span style="color: #bb2b9f">@selector</span><span style="color: #000000">(</span><span style="color: #31595d">audioWasDecoded</span><span style="color: #000000">:)]) {</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                        </span><span style="color: #713da6">NSData</span> *delegatesData = [<span style="color: #713da6">NSData</span> <span style="color: #3e1e7e">dataWithBytes</span>:rawBlock <span style="color: #3e1e7e">length</span>:blockSize];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                        </span>[<span style="color: #4e8186">delegate</span> <span style="color: #3e1e7e">performSelector</span>:<span style="color: #bb2b9f">@selector</span>(<span style="color: #31595d">audioWasDecoded</span>:) <span style="color: #3e1e7e">withObject</span>:delegatesData];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><font class="Apple-style-span" face="Menlo" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br></span></font></div><div><font class="Apple-style-span" face="Menlo" size="3"><span class="Apple-style-span" style="font-size: 11px;"><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">but I don't see anything wrong here. What am I missing???</span></span></font></div><br><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Clifton Craig</div><div>Software Engineer</div><div><a href="http://codeforfun.wordpress.com">http://codeforfun.wordpress.com</a></div><div><a href="mailto:clifton.craig@gmail.com">clifton.craig@gmail.com</a></div></div></span></span>
</div>
<br><div><div>On May 3, 2010, at 4:15 PM, Clifton Craig wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>I have an audio file compressed by JSpeex that I'm trying to decompress on the iPhone. I've been trying to work from the speexdec example in an attempt to port the core logic to ObjC. I have a class that does the decode and passes the result back to another class. (currently the other class is a unit test.) My other class is writing the converted output to disk. I compare the results of my rewrite against the result of running the same file against the speexdec.c example. I've gotten pretty far as the audio is decompressing. My problem is that the converted output is half the size that is generated by the original speexdec.c example. It plays, but it appears to play at double the speed. I'm certain that there is something I am missing in my algorithm and if someone could lend a hand I'd be so appreciative. I'm attaching my unit test as well as my rewritten example in ObjC<br><br><br><br>Clifton Craig<br>Software Engineer<br><a href="http://codeforfun.wordpress.com">http://codeforfun.wordpress.com</a><br>clifton.craig@gmail.com<br><br><span>&lt;MQSpeexDecoderTest.m&gt;</span><span>&lt;MQSpeexDecoder.h&gt;</span><span>&lt;MQSpeexDecoder.m&gt;</span></div></blockquote></div><br></div></body></html>