<div><div>Hi Ross, <br><br>Thanks for pointing out omitLATMDataLengthField(), it works beautifully. <br><br>I now want to write my own application using the  live555 library framework that does the following: <br>- Capture an MP4A (generic or LATM) audio RTSP/RTP stream
<br>- Decode each frame to a PCM frame<br>- Re-encode PCM to lower-bitrate AAC frame(s)<br>- Send out AAC frames using LATM to a Darwin server (RTSP announce)<br><br>Would this be the correct approach? <br>1) Use RTPSource class as already shown in 
playCommon.cpp to capture frames<br>2) Make &quot;filter&quot; derived from the FramedFilter class to decode AAC (similar to uLawFromPCMAudioSource.cpp perhaps)<br>3) Make &quot;filter&quot; derived from the FramedFilter class to re-encode AAC (similar to 
<a class="el" href="http://www.live555.com/liveMedia/doxygen/html/classPCMFromuLawAudioSource.html">PCMFromuLawAudioSource</a>.cpp perhaps)<br>4) Use MPEG4LATMAudioRTPSink to announce a stream to a Darwin server (similar to testMPEG4*
toDarwin.cpp)<br>&nbsp;</div>Please let me know if you see any problems/inefficiencies in the above approach. <br><br>Thanks for your time. <br><br>Mathur<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Date: Wed, 03 May 2006 14:25:43 -0700<br>From: Ross Finlayson &lt;<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>&gt;<br>Subject: Re: [Live-devel] Extracting AAC frames from an M4A-LATM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream<br>
To: LIVE555 Streaming Media - development &amp; use<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="mailto:live-devel@ns.live555.com">live-devel@ns.live555.com</a>&gt;<br>Message-ID: &lt;<a href="mailto:7.0.1.0.1.20060503142131.01f5fb10@live555.com">
7.0.1.0.1.20060503142131.01f5fb10@live555.com</a>&gt;<br>Content-Type: text/plain; charset=&quot;us-ascii&quot;; format=flowed<br><br><br>&gt;I am trying to create a tool that receives an RTSP/RTP stream with<br>&gt;M4A-LATM payload, and decodes the audio to PCM. How do I extend the
<br>&gt;openRTSP test program to achieve this?<br>&gt;<br>&gt;Specifically, where do I add the functionality that removes the LATM<br>&gt;header from each RTP payload? AAC decoder APIs work only when the<br>&gt;transport (LATM) header is removed from the top of the payload.
<br><br>*Some* AAC decoders work this way, but others do not.&nbsp;&nbsp;However, if<br>you want to remove the LATM header from received AAC-LATM data, call<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPEG4LATMAudioRTPSource::omitLATMDataLengthField()<br>See the (anachronistically named file &quot;
livedotcom.cpp&quot; - in the VLC<br>&lt;<a href="http://www.videolan.org/vlc">http://www.videolan.org/vlc</a>&gt; source code - for an example of this.<br><br>&gt;I have looked at the Mplayer code for reference,<br><br>As noted above, I suggest looking at the VLC code instead.
<br><br>Note also that apart from the above change, you don't really need to<br>'extend' &quot;openRTSP&quot;.&nbsp;&nbsp;Instead, just run it with the &quot;-a&quot; option, and<br>pipe its standard output into a separate decoder application.
<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ross Finlayson<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Live Networks, Inc. (<a href="http://LIVE555.COM">LIVE555.COM</a>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="http://www.live555.com/">http://www.live555.com/</a>&gt;<br><br><br><br>------------------------------
<br><br>_______________________________________________<br>live-devel mailing list<br><a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br><a href="http://lists.live555.com/mailman/listinfo/live-devel">
http://lists.live555.com/mailman/listinfo/live-devel</a><br><br><br>End of live-devel Digest, Vol 31, Issue 3<br>*****************************************<br></blockquote></div><br>