Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Side by Side Diff: webrtc/voice_engine/channel.cc

Issue 1267683002: Hooked up RtcEventLog. It lives in Voice Engine and pointers are propagated to ACM and Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added comment regarding pointer lifetime on the VoECodec sub-API. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 if(_outputFilePlayerPtr->Frequency()>highestNeeded) 621 if(_outputFilePlayerPtr->Frequency()>highestNeeded)
622 { 622 {
623 highestNeeded=_outputFilePlayerPtr->Frequency(); 623 highestNeeded=_outputFilePlayerPtr->Frequency();
624 } 624 }
625 } 625 }
626 } 626 }
627 627
628 return(highestNeeded); 628 return(highestNeeded);
629 } 629 }
630 630
631 int32_t 631 int32_t Channel::CreateChannel(Channel*& channel,
632 Channel::CreateChannel(Channel*& channel, 632 int32_t channelId,
633 int32_t channelId, 633 uint32_t instanceId,
634 uint32_t instanceId, 634 RtcEventLog* const event_log,
635 const Config& config) 635 const Config& config) {
636 {
637 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(instanceId,channelId), 636 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(instanceId,channelId),
638 "Channel::CreateChannel(channelId=%d, instanceId=%d)", 637 "Channel::CreateChannel(channelId=%d, instanceId=%d)",
639 channelId, instanceId); 638 channelId, instanceId);
640 639
641 channel = new Channel(channelId, instanceId, config); 640 channel = new Channel(channelId, instanceId, event_log, config);
642 if (channel == NULL) 641 if (channel == NULL)
643 { 642 {
644 WEBRTC_TRACE(kTraceMemory, kTraceVoice, 643 WEBRTC_TRACE(kTraceMemory, kTraceVoice,
645 VoEId(instanceId,channelId), 644 VoEId(instanceId,channelId),
646 "Channel::CreateChannel() unable to allocate memory for" 645 "Channel::CreateChannel() unable to allocate memory for"
647 " channel"); 646 " channel");
648 return -1; 647 return -1;
649 } 648 }
650 return 0; 649 return 0;
651 } 650 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 705
707 _outputFileRecording = false; 706 _outputFileRecording = false;
708 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, 707 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
709 VoEId(_instanceId,_channelId), 708 VoEId(_instanceId,_channelId),
710 "Channel::RecordFileEnded() => output file recorder module is" 709 "Channel::RecordFileEnded() => output file recorder module is"
711 " shutdown"); 710 " shutdown");
712 } 711 }
713 712
714 Channel::Channel(int32_t channelId, 713 Channel::Channel(int32_t channelId,
715 uint32_t instanceId, 714 uint32_t instanceId,
716 const Config& config) : 715 RtcEventLog* const event_log,
717 _fileCritSect(*CriticalSectionWrapper::CreateCriticalSection()), 716 const Config& config)
718 _callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()), 717 : _fileCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
719 volume_settings_critsect_(*CriticalSectionWrapper::CreateCriticalSection()), 718 _callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
720 _instanceId(instanceId), 719 volume_settings_critsect_(
721 _channelId(channelId), 720 *CriticalSectionWrapper::CreateCriticalSection()),
722 rtp_header_parser_(RtpHeaderParser::Create()), 721 _instanceId(instanceId),
723 rtp_payload_registry_( 722 _channelId(channelId),
724 new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(true))), 723 rtp_header_parser_(RtpHeaderParser::Create()),
725 rtp_receive_statistics_(ReceiveStatistics::Create( 724 rtp_payload_registry_(
726 Clock::GetRealTimeClock())), 725 new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(true))),
727 rtp_receiver_(RtpReceiver::CreateAudioReceiver( 726 rtp_receive_statistics_(
728 VoEModuleId(instanceId, channelId), Clock::GetRealTimeClock(), this, 727 ReceiveStatistics::Create(Clock::GetRealTimeClock())),
729 this, this, rtp_payload_registry_.get())), 728 rtp_receiver_(
730 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()), 729 RtpReceiver::CreateAudioReceiver(VoEModuleId(instanceId, channelId),
731 _outputAudioLevel(), 730 Clock::GetRealTimeClock(),
732 _externalTransport(false), 731 this,
733 _inputFilePlayerPtr(NULL), 732 this,
734 _outputFilePlayerPtr(NULL), 733 this,
735 _outputFileRecorderPtr(NULL), 734 rtp_payload_registry_.get())),
736 // Avoid conflict with other channels by adding 1024 - 1026, 735 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()),
737 // won't use as much as 1024 channels. 736 _outputAudioLevel(),
738 _inputFilePlayerId(VoEModuleId(instanceId, channelId) + 1024), 737 _externalTransport(false),
739 _outputFilePlayerId(VoEModuleId(instanceId, channelId) + 1025), 738 _inputFilePlayerPtr(NULL),
740 _outputFileRecorderId(VoEModuleId(instanceId, channelId) + 1026), 739 _outputFilePlayerPtr(NULL),
741 _outputFileRecording(false), 740 _outputFileRecorderPtr(NULL),
742 _inbandDtmfQueue(VoEModuleId(instanceId, channelId)), 741 // Avoid conflict with other channels by adding 1024 - 1026,
743 _inbandDtmfGenerator(VoEModuleId(instanceId, channelId)), 742 // won't use as much as 1024 channels.
744 _outputExternalMedia(false), 743 _inputFilePlayerId(VoEModuleId(instanceId, channelId) + 1024),
745 _inputExternalMediaCallbackPtr(NULL), 744 _outputFilePlayerId(VoEModuleId(instanceId, channelId) + 1025),
746 _outputExternalMediaCallbackPtr(NULL), 745 _outputFileRecorderId(VoEModuleId(instanceId, channelId) + 1026),
747 _timeStamp(0), // This is just an offset, RTP module will add it's own rando m offset 746 _outputFileRecording(false),
748 _sendTelephoneEventPayloadType(106), 747 _inbandDtmfQueue(VoEModuleId(instanceId, channelId)),
749 ntp_estimator_(Clock::GetRealTimeClock()), 748 _inbandDtmfGenerator(VoEModuleId(instanceId, channelId)),
750 jitter_buffer_playout_timestamp_(0), 749 _outputExternalMedia(false),
751 playout_timestamp_rtp_(0), 750 _inputExternalMediaCallbackPtr(NULL),
752 playout_timestamp_rtcp_(0), 751 _outputExternalMediaCallbackPtr(NULL),
753 playout_delay_ms_(0), 752 _timeStamp(0), // This is just an offset, RTP module will add it's own
754 _numberOfDiscardedPackets(0), 753 // random offset
755 send_sequence_number_(0), 754 _sendTelephoneEventPayloadType(106),
756 ts_stats_lock_(CriticalSectionWrapper::CreateCriticalSection()), 755 ntp_estimator_(Clock::GetRealTimeClock()),
757 rtp_ts_wraparound_handler_(new rtc::TimestampWrapAroundHandler()), 756 jitter_buffer_playout_timestamp_(0),
758 capture_start_rtp_time_stamp_(-1), 757 playout_timestamp_rtp_(0),
759 capture_start_ntp_time_ms_(-1), 758 playout_timestamp_rtcp_(0),
760 _engineStatisticsPtr(NULL), 759 playout_delay_ms_(0),
761 _outputMixerPtr(NULL), 760 _numberOfDiscardedPackets(0),
762 _transmitMixerPtr(NULL), 761 send_sequence_number_(0),
763 _moduleProcessThreadPtr(NULL), 762 ts_stats_lock_(CriticalSectionWrapper::CreateCriticalSection()),
764 _audioDeviceModulePtr(NULL), 763 rtp_ts_wraparound_handler_(new rtc::TimestampWrapAroundHandler()),
765 _voiceEngineObserverPtr(NULL), 764 capture_start_rtp_time_stamp_(-1),
766 _callbackCritSectPtr(NULL), 765 capture_start_ntp_time_ms_(-1),
767 _transportPtr(NULL), 766 _engineStatisticsPtr(NULL),
768 _rxVadObserverPtr(NULL), 767 _outputMixerPtr(NULL),
769 _oldVadDecision(-1), 768 _transmitMixerPtr(NULL),
770 _sendFrameType(0), 769 _moduleProcessThreadPtr(NULL),
771 _externalMixing(false), 770 _audioDeviceModulePtr(NULL),
772 _mixFileWithMicrophone(false), 771 _voiceEngineObserverPtr(NULL),
773 _mute(false), 772 _callbackCritSectPtr(NULL),
774 _panLeft(1.0f), 773 _transportPtr(NULL),
775 _panRight(1.0f), 774 _rxVadObserverPtr(NULL),
776 _outputGain(1.0f), 775 _oldVadDecision(-1),
777 _playOutbandDtmfEvent(false), 776 _sendFrameType(0),
778 _playInbandDtmfEvent(false), 777 _externalMixing(false),
779 _lastLocalTimeStamp(0), 778 _mixFileWithMicrophone(false),
780 _lastPayloadType(0), 779 _mute(false),
781 _includeAudioLevelIndication(false), 780 _panLeft(1.0f),
782 _outputSpeechType(AudioFrame::kNormalSpeech), 781 _panRight(1.0f),
783 _average_jitter_buffer_delay_us(0), 782 _outputGain(1.0f),
784 least_required_delay_ms_(0), 783 _playOutbandDtmfEvent(false),
785 _previousTimestamp(0), 784 _playInbandDtmfEvent(false),
786 _recPacketDelayMs(20), 785 _lastLocalTimeStamp(0),
787 _RxVadDetection(false), 786 _lastPayloadType(0),
788 _rxAgcIsEnabled(false), 787 _includeAudioLevelIndication(false),
789 _rxNsIsEnabled(false), 788 _outputSpeechType(AudioFrame::kNormalSpeech),
790 restored_packet_in_use_(false), 789 _average_jitter_buffer_delay_us(0),
791 rtcp_observer_(new VoERtcpObserver(this)), 790 least_required_delay_ms_(0),
792 network_predictor_(new NetworkPredictor(Clock::GetRealTimeClock())), 791 _previousTimestamp(0),
793 assoc_send_channel_lock_(CriticalSectionWrapper::CreateCriticalSection()), 792 _recPacketDelayMs(20),
794 associate_send_channel_(ChannelOwner(nullptr)) 793 _RxVadDetection(false),
795 { 794 _rxAgcIsEnabled(false),
795 _rxNsIsEnabled(false),
796 restored_packet_in_use_(false),
797 rtcp_observer_(new VoERtcpObserver(this)),
798 network_predictor_(new NetworkPredictor(Clock::GetRealTimeClock())),
799 assoc_send_channel_lock_(CriticalSectionWrapper::CreateCriticalSection()),
800 associate_send_channel_(ChannelOwner(nullptr)) {
796 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,_channelId), 801 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,_channelId),
797 "Channel::Channel() - ctor"); 802 "Channel::Channel() - ctor");
798 AudioCodingModule::Config acm_config; 803 AudioCodingModule::Config acm_config;
799 acm_config.id = VoEModuleId(instanceId, channelId); 804 acm_config.id = VoEModuleId(instanceId, channelId);
800 if (config.Get<NetEqCapacityConfig>().enabled) { 805 if (config.Get<NetEqCapacityConfig>().enabled) {
801 // Clamping the buffer capacity at 20 packets. While going lower will 806 // Clamping the buffer capacity at 20 packets. While going lower will
802 // probably work, it makes little sense. 807 // probably work, it makes little sense.
803 acm_config.neteq_config.max_packets_in_buffer = 808 acm_config.neteq_config.max_packets_in_buffer =
804 std::max(20, config.Get<NetEqCapacityConfig>().capacity); 809 std::max(20, config.Get<NetEqCapacityConfig>().capacity);
805 } 810 }
806 acm_config.neteq_config.enable_fast_accelerate = 811 acm_config.neteq_config.enable_fast_accelerate =
807 config.Get<NetEqFastAccelerate>().enabled; 812 config.Get<NetEqFastAccelerate>().enabled;
813 acm_config.event_log = event_log;
808 audio_coding_.reset(AudioCodingModule::Create(acm_config)); 814 audio_coding_.reset(AudioCodingModule::Create(acm_config));
809 815
810 _inbandDtmfQueue.ResetDtmf(); 816 _inbandDtmfQueue.ResetDtmf();
811 _inbandDtmfGenerator.Init(); 817 _inbandDtmfGenerator.Init();
812 _outputAudioLevel.Clear(); 818 _outputAudioLevel.Clear();
813 819
814 RtpRtcp::Configuration configuration; 820 RtpRtcp::Configuration configuration;
815 configuration.id = VoEModuleId(instanceId, channelId); 821 configuration.id = VoEModuleId(instanceId, channelId);
816 configuration.audio = true; 822 configuration.audio = true;
817 configuration.outgoing_transport = this; 823 configuration.outgoing_transport = this;
(...skipping 3313 matching lines...) Expand 10 before | Expand all | Expand 10 after
4131 int64_t min_rtt = 0; 4137 int64_t min_rtt = 0;
4132 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) 4138 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt)
4133 != 0) { 4139 != 0) {
4134 return 0; 4140 return 0;
4135 } 4141 }
4136 return rtt; 4142 return rtt;
4137 } 4143 }
4138 4144
4139 } // namespace voe 4145 } // namespace voe
4140 } // namespace webrtc 4146 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698