Hi experts,

Have someone tested the functions used to deinterleave multi AMR frames in a 
single RTP packet? Here I have a question on the method 
AMRDeinterleave::deliverIncomingFrame. 
I suspect this method can only support the scenario that one RTP packet 
contains only one AMR frame.
My understanding is as below:
1. MultiframedRTPSource::networkReadHandler 
   This method receives RTP packet from the network and store it in the 
ReorderingPacketBuffer.
2. MultiFramedRTPSource::doGetNextFrame1()
   This method get a complete bufferedpacket form the ReorderingPacketBuffer 
and call the virtual method processSpecialHeader of the 
subclass(RawAMRRTPSource) to get the info of the AMR payload header, like the 
ILL, ILP etc.
   The usable packet is also transferred to the fInputBuffer of the 
AMRDeinterleaver.
3. FramedSource::afterGetting(this)
   In our case, the AMRDeinterleaver::afterGettingFrame is used. Then 
AMRDeinterleaver::afterGettingFrame1
4. AMRDeinterleave::deliverIncomingFrame
   This method is supposed to deliver the AMR frames in the packet, and placed 
in the fFrames[fIncomingBandId][binNumber], in which the binNumber is caculated 
by the (ILL, ILP, numChannels).
   I understand there should a loop to traverse all the AMR frames in a packet 
by this method. But it seems this method is only called once per packet, from 
my reading. 

I do not have the traffic of the format like multiple frames in single RTP 
packet. The RTSP server can only encode the .amr file to single frame /single 
packet.There must be something missed in my reading. 



_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to