WebRTC音频接收处理全过程(一)

目录

  1.1 接收音频数据包

  1.2 插入音频数据包到待解码数据包队列

  1.3 解码音频数据包


  1.1 接收音频数据包


     cricket::BaseChannel::OnPacketReceived(bool rtcp, const rtc::CopyOnWriteBuffer & packet, __int64 packet_time_us) 行506    
     cricket::BaseChannel::OnRtpPacket(const webrtc::RtpPacketReceived & parsed_packet) 行472    
     webrtc::RtpDemuxer::OnRtpPacket(const webrtc::RtpPacketReceived & packet) 行158    
     webrtc::RtpTransport::DemuxPacket(rtc::CopyOnWriteBuffer * packet, __int64 packet_time_us) 行202    
     webrtc::SrtpTransport::OnRtpPacketReceived(rtc::CopyOnWriteBuffer * packet, __int64 packet_time_us) 行225    
     webrtc::RtpTransport::OnReadPacket(rtc::PacketTransportInternal * transport, const char * data, unsigned int len, const __int64 & packet_time_us, int flags) 行279    
     cricket::DtlsTransport::OnReadPacket(rtc::PacketTransportInternal * transport, const char * data, unsigned int size, const __int64 & packet_time_us, int flags) 行596    
     cricket::P2PTransportChannel::OnReadPacket(cricket::Connection * connection, const char * data, unsigned int len, __int64 packet_time_us) 行2379    
     cricket::Connection::OnReadPacket(const char * data, unsigned int size, __int64 packet_time_us) 行1257    
     cricket::UDPPort::OnReadPacket(rtc::AsyncPacketSocket * socket, const char * data, unsigned int size, const rtc::SocketAddress & remote_addr, const __int64 & packet_time_us) 行383    
     cricket::UDPPort::HandleIncomingPacket(rtc::AsyncPacketSocket * socket, const char * data, unsigned int size, const rtc::SocketAddress & remote_addr, __int64 packet_time_us) 行325    
     cricket::AllocationSequence::OnReadPacket(rtc::AsyncPacketSocket * socket, const char * data, unsigned int size, const rtc::SocketAddress & remote_addr, const __int64 & packet_time_us) 行1610    
     rtc::AsyncUDPSocket::OnReadEvent(rtc::AsyncSocket * socket) 行125    采用socket实现
     rtc::SocketDispatcher::OnEvent(unsigned int ff, int err) 行753    
     rtc::PhysicalSocketServer::Wait(int cmsWait, bool process_io) 行1845    


  1.2 插入音频数据包到待解码数据包队列


    webrtc::PacketBuffer::InsertPacketList(std::list<webrtc::Packet,std::allocator<webrtc::Packet> > * packet_list, const webrtc::DecoderDatabase & decoder_database, absl::optional<unsigned char> * current_rtp_payload_type, absl::optional<unsigned char> * current_cng_rtp_payload_type, webrtc::StatisticsCalculator * stats) 行139    
     webrtc::NetEqImpl::InsertPacketInternal(const webrtc::RTPHeader & rtp_header, rtc::ArrayView<unsigned char const ,-4711> payload, unsigned int receive_timestamp) 行712     将数据加到packet_buffer_数据包队列中,待解码
     webrtc::NetEqImpl::InsertPacket(const webrtc::RTPHeader & rtp_header, rtc::ArrayView<unsigned char const ,-4711> payload, unsigned int receive_timestamp) 行148    
     webrtc::acm2::AcmReceiver::InsertPacket(const webrtc::WebRtcRTPHeader & rtp_header, rtc::ArrayView<unsigned char const ,-4711> incoming_payload) 行110    
     webrtc::`anonymous namespace'::AudioCodingModuleImpl::IncomingPacket(const unsigned char * incoming_payload, const unsigned int payload_length, const webrtc::WebRtcRTPHeader & rtp_header) 行811    
     webrtc::voe::`anonymous namespace'::ChannelReceive::OnReceivedPayloadData(const unsigned char * payloadData, unsigned int payloadSize, const webrtc::WebRtcRTPHeader * rtpHeader) 行289    
     webrtc::voe::`anonymous namespace'::ChannelReceive::ReceivePacket(const unsigned char * packet, unsigned int packet_length, const webrtc::RTPHeader & header) 行675    
     webrtc::voe::`anonymous namespace'::ChannelReceive::OnRtpPacket(const webrtc::RtpPacketReceived & packet) 行624    
     webrtc::RtpDemuxer::OnRtpPacket(const webrtc::RtpPacketReceived & packet) 行158    
     webrtc::RtpStreamReceiverController::OnRtpPacket(const webrtc::RtpPacketReceived & packet) 行54    
     webrtc::internal::Call::DeliverRtp(webrtc::MediaType media_type, rtc::CopyOnWriteBuffer packet, __int64 packet_time_us) 行1318    
     webrtc::internal::Call::DeliverPacket(webrtc::MediaType media_type, rtc::CopyOnWriteBuffer packet, __int64 packet_time_us) 行1356    
     cricket::WebRtcVoiceMediaChannel::OnPacketReceived(rtc::CopyOnWriteBuffer * packet, __int64 packet_time_us) 行2057    
     cricket::BaseChannel::ProcessPacket(bool rtcp, const rtc::CopyOnWriteBuffer & packet, __int64 packet_time_us) 行547    
     rtc::FireAndForgetAsyncClosure<rtc::MethodFunctor<cricket::BaseChannel,void (__thiscall cricket::BaseChannel::*)(bool,rtc::CopyOnWriteBuffer const &,__int64),void,bool,rtc::CopyOnWriteBuffer const &,__int64> >::Execute() 行53    


    1.3 解码音频数据包


    opus_decode(OpusDecoder * st, const unsigned char * data, int len, short * pcm, int frame_size, int decode_fec) 行766    
     DecodeNative(WebRtcOpusDecInst * inst, const unsigned char * encoded, unsigned int encoded_bytes, int frame_size, short * decoded, short * audio_type, int decode_fec) 行341    
     WebRtcOpus_Decode(WebRtcOpusDecInst * inst, const unsigned char * encoded, unsigned int encoded_bytes, short * decoded, short * audio_type) 行361    
     webrtc::AudioDecoderOpusImpl::DecodeInternal(const unsigned char * encoded, unsigned int encoded_len, int sample_rate_hz, short * decoded, webrtc::AudioDecoder::SpeechType * speech_type) 行126    
     webrtc::AudioDecoder::Decode(const unsigned char * encoded, unsigned int encoded_len, int sample_rate_hz, unsigned int max_decoded_bytes, short * decoded, webrtc::AudioDecoder::SpeechType * speech_type) 行98    
     webrtc::`anonymous namespace'::OpusFrame::Decode(rtc::ArrayView<short,-4711> decoded) 行54    
     webrtc::NetEqImpl::DecodeLoop(std::list<webrtc::Packet,std::allocator<webrtc::Packet> > * packet_list, const webrtc::Operations & operation, webrtc::AudioDecoder * decoder, int * decoded_length, webrtc::AudioDecoder::SpeechType * speech_type) 行1445  
     webrtc::NetEqImpl::Decode(std::list<webrtc::Packet,std::allocator<webrtc::Packet> > * packet_list, webrtc::Operations * operation, int * decoded_length, webrtc::AudioDecoder::SpeechType * speech_type) 行1356    
     webrtc::NetEqImpl::GetAudioInternal(webrtc::AudioFrame * audio_frame, bool * muted, absl::optional<enum webrtc::Operations> action_override) 行846    从GetDecision拿到数据包进行解码
     webrtc::NetEqImpl::GetAudio(webrtc::AudioFrame * audio_frame, bool * muted, absl::optional<enum webrtc::Operations> action_override) 行211    
     webrtc::acm2::AcmReceiver::GetAudio(int desired_freq_hz, webrtc::AudioFrame * audio_frame, bool * muted) 行127    
     webrtc::`anonymous namespace'::AudioCodingModuleImpl::PlayoutData10Ms(int desired_freq_hz, webrtc::AudioFrame * audio_frame, bool * muted) 行840    
     webrtc::voe::`anonymous namespace'::ChannelReceive::GetAudioFrameWithInfo(int sample_rate_hz, webrtc::AudioFrame * audio_frame) 行341    
     webrtc::AudioMixerImpl::GetAudioFromSources() 行190    
     webrtc::AudioMixerImpl::Mix(unsigned int number_of_channels, webrtc::AudioFrame * audio_frame_for_mixing) 行129    
     webrtc::AudioTransportImpl::NeedMorePlayData(const unsigned int nSamples, const unsigned int nBytesPerSample, const unsigned int nChannels, const unsigned int samplesPerSec, void * audioSamples, unsigned int & nSamplesOut, __int64 * elapsed_time_ms, __int64 * ntp_time_ms) 行214    
     webrtc::AudioDeviceBuffer::RequestPlayoutData(unsigned int samples_per_channel) 行304    
     webrtc::AudioDeviceWindowsCore::DoRenderThread() 行2976    
     webrtc::AudioDeviceWindowsCore::WSAPIRenderThread(void * context) 行2778    渲染音频数据线程,取音频数据包进行解码播放

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术爱生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值