1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #ifndef AUDIO_VOIP_AUDIO_CHANNEL_H_
- #define AUDIO_VOIP_AUDIO_CHANNEL_H_
- #include <map>
- #include <memory>
- #include <queue>
- #include <utility>
- #include "api/task_queue/task_queue_factory.h"
- #include "api/voip/voip_base.h"
- #include "audio/voip/audio_egress.h"
- #include "audio/voip/audio_ingress.h"
- #include "modules/rtp_rtcp/source/rtp_rtcp_impl2.h"
- #include "modules/utility/include/process_thread.h"
- #include "rtc_base/critical_section.h"
- #include "rtc_base/ref_count.h"
- namespace webrtc {
- class AudioChannel : public rtc::RefCountInterface {
- public:
- AudioChannel(Transport* transport,
- uint32_t local_ssrc,
- TaskQueueFactory* task_queue_factory,
- ProcessThread* process_thread,
- AudioMixer* audio_mixer,
- rtc::scoped_refptr<AudioDecoderFactory> decoder_factory);
- ~AudioChannel() override;
-
-
- void SetId(ChannelId id) { id_ = id; }
- ChannelId GetId() const { return id_; }
-
- void StartSend();
- void StopSend();
- void StartPlay();
- void StopPlay();
-
- bool IsSendingMedia() const { return egress_->IsSending(); }
- AudioSender* GetAudioSender() { return egress_.get(); }
- void SetEncoder(int payload_type,
- const SdpAudioFormat& encoder_format,
- std::unique_ptr<AudioEncoder> encoder) {
- egress_->SetEncoder(payload_type, encoder_format, std::move(encoder));
- }
- absl::optional<SdpAudioFormat> GetEncoderFormat() const {
- return egress_->GetEncoderFormat();
- }
-
- bool IsPlaying() const { return ingress_->IsPlaying(); }
- void ReceivedRTPPacket(rtc::ArrayView<const uint8_t> rtp_packet) {
- ingress_->ReceivedRTPPacket(rtp_packet);
- }
- void ReceivedRTCPPacket(rtc::ArrayView<const uint8_t> rtcp_packet) {
- ingress_->ReceivedRTCPPacket(rtcp_packet);
- }
- void SetReceiveCodecs(const std::map<int, SdpAudioFormat>& codecs) {
- ingress_->SetReceiveCodecs(codecs);
- }
- private:
-
- ChannelId id_;
-
- AudioMixer* audio_mixer_;
-
- ProcessThread* process_thread_;
-
-
- std::unique_ptr<ReceiveStatistics> receive_statistics_;
- std::unique_ptr<ModuleRtpRtcpImpl2> rtp_rtcp_;
- std::unique_ptr<AudioIngress> ingress_;
- std::unique_ptr<AudioEgress> egress_;
- };
- }
- #endif
|