Receive the audio packet Udpsocketmanagerposiximpl:: RunUdpsocketmanagerposiximpl::P rocessUdpsocketposix:: hasincoming(recvfrom) Udptransportimpl:: IncomingrtpcallbackUdptransportimpl:: IncomingrtpfunctionVoicechanneltransport:: IncomingrtppacketVoenetworkimpl:: ReceivedrtppacketChannel:: ReceivedrtppacketUpdateplayouttimestamp Audiocodingmoduleimpl::P layouttimestampAcmreceiver:: GetplayouttimestampInitialdelaymanager:: GetplayouttimestampAudiodevicemoduleimpl::P layoutdelayAudiodevicetemplate::P layoutdelayOpenslesoutput::P layoutdelayChannel:: IspacketinorderReceivestatisticsimpl:: Getstatistician(This class should manage all the streams) Streamstatisticianimpl:: IspacketinorderStreamstatisticianimpl:: Inorderpacketinternal(You can learn the code for this Judgment order) Channel:: ispacketretransmittedStreamstatisticianimpl:: Isretransmitofoldpacket(You can learn this to re-pass the code) Receivestatisticsimpl:: IncomingpacketIf it is received for the first time, create Streamstatisticianimpl Streamstatistician Impl:: IncomingpacketStreamstatisticianimpl:: UpdatecountersRecord necessary information for statistics, such as disorderly order, retransmission, Jitbuff, calculation bitrate Streamstatisticianimpl:: NotifyrtpcallbackReceivestatisticsimpl::D atacountersupdated(not processed) Channel:: ReceivepacketRtpreceiverimpl:: IncomingrtppacketCheck Ssrc/play/timestamp Rtpreceiverimpl:: checkssrcchangedIf this is the first time, the channel:: OninitializedecoderAudiocodingmodule:: Codec, select the specific codec Inst (array, which has been initialized all the first) Audiocodingmoduleimpl:: RegisterreceivecodecAudiocodingmoduleimpl:: GetaudiodecoderAudiocodingmoduleimpl:: CreatecodecAcmcodecdb:: Createcodecinstance NewAcmisac Acmreceiver:: AddcodecNeteq Initialize Neteqimpl:: RegisterexternaldecoderRtpreceiveraudio::P arsertppacketRtpreceiveraudio::P arseaudiocodecspecificDetermine if DTMF, CGN,2833Wait Channel:: OnreceivedpayloaddataAudiocodingmoduleimpl:: IncomingpacketAcmreceiver:: InsertpacketACK Lip Synchronization Neteqimpl:: InsertpacketNeteqimpl:: InsertpacketinternalAcmisac:: IncomingpacketAcmisac:: UpdatedecodersampfreqWebrtcisac_setdecsamprate decoderinitub Channel:: UpdatepacketdelayChannel:: Getplayoutfrequency(Audiocodingmoduleimpl::P layoutfrequency() Audiotrackjni::P laythreadprocessAudiodevicebuffer:: RequestplayoutdataVoebaseimpl:: NeedmoreplaydataVoebaseimpl:: GetplayoutdataAudioconferencemixerimpl::P rocessAudioconferencemixerimpl:: UpdatetomixAll the Attendees Channel:: GetaudioframeAudiocodingmoduleimpl::P layoutdata10msAcmreceiver:: GetaudioTime judgment may produce mute packet Neteqimpl:: GetaudioNeteqimpl:: GetaudiointernalNeteqimpl::D ecodeAcmisac::D ECODEPLCNeteqimpl::D ecodeloopAcmisac::D ecodeNeteqimpl::D ecodedrtpinfoACK Handling resampling Channel:: UpdaterxvaddetectionChannel:: onrxvaddetectedAudioprocessingimpl::P rocessstreamAudiobuffer::D einterleavefromAudiobuffer:: Interleavetonecessary audio processing, scale and the like volume to judge the synthesized sound outputmixer:: GetmixedaudioGet the synthesized data audiodevicebuffer:: GetplayoutdataCopy to Java memory call Java program Callintmethod (_javascobj, _javamidplayaudio,
WEBRTCDEMO.APK Code Daytime (iii): Audio reception process