Remove webrtc/stream.h and unutilized inheritance.
Removes inheritance and a virtual call. Also removes a root header that
would have needed to be moved into a subdirectory otherwise to prevent
circular dependencies.
BUG=webrtc:4243
R=kjellander@webrtc.org, solenberg@webrtc.org
TBR=mflodman@webrtc.org
Review-Url: https://codereview.webrtc.org/1924793002
Cr-Commit-Position: refs/heads/master@{#12586}
diff --git a/webrtc/DEPS b/webrtc/DEPS
index ab08fbf..40ec7a3 100644
--- a/webrtc/DEPS
+++ b/webrtc/DEPS
@@ -19,7 +19,6 @@
"+webrtc/common_types.h",
"+webrtc/config.h",
"+webrtc/engine_configurations.h",
- "+webrtc/stream.h",
"+webrtc/transport.h",
"+webrtc/typedefs.h",
"+webrtc/video_decoder.h",
diff --git a/webrtc/audio/audio_receive_stream.cc b/webrtc/audio/audio_receive_stream.cc
index 449f2f4..f984c7f 100644
--- a/webrtc/audio/audio_receive_stream.cc
+++ b/webrtc/audio/audio_receive_stream.cc
@@ -143,46 +143,6 @@
RTC_DCHECK(thread_checker_.CalledOnValidThread());
}
-void AudioReceiveStream::SignalNetworkState(NetworkState state) {
- RTC_DCHECK(thread_checker_.CalledOnValidThread());
-}
-
-bool AudioReceiveStream::DeliverRtcp(const uint8_t* packet, size_t length) {
- // TODO(solenberg): Tests call this function on a network thread, libjingle
- // calls on the worker thread. We should move towards always using a network
- // thread. Then this check can be enabled.
- // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
- return channel_proxy_->ReceivedRTCPPacket(packet, length);
-}
-
-bool AudioReceiveStream::DeliverRtp(const uint8_t* packet,
- size_t length,
- const PacketTime& packet_time) {
- // TODO(solenberg): Tests call this function on a network thread, libjingle
- // calls on the worker thread. We should move towards always using a network
- // thread. Then this check can be enabled.
- // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
- RTPHeader header;
- if (!rtp_header_parser_->Parse(packet, length, &header)) {
- return false;
- }
-
- // Only forward if the parsed header has one of the headers necessary for
- // bandwidth estimation. RTP timestamps has different rates for audio and
- // video and shouldn't be mixed.
- if (remote_bitrate_estimator_ &&
- header.extension.hasTransportSequenceNumber) {
- int64_t arrival_time_ms = TickTime::MillisecondTimestamp();
- if (packet_time.timestamp >= 0)
- arrival_time_ms = (packet_time.timestamp + 500) / 1000;
- size_t payload_size = length - header.headerLength;
- remote_bitrate_estimator_->IncomingPacket(arrival_time_ms, payload_size,
- header, false);
- }
-
- return channel_proxy_->ReceivedRTPPacket(packet, length, packet_time);
-}
-
webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
webrtc::AudioReceiveStream::Stats stats;
@@ -241,6 +201,46 @@
return config_;
}
+void AudioReceiveStream::SignalNetworkState(NetworkState state) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+}
+
+bool AudioReceiveStream::DeliverRtcp(const uint8_t* packet, size_t length) {
+ // TODO(solenberg): Tests call this function on a network thread, libjingle
+ // calls on the worker thread. We should move towards always using a network
+ // thread. Then this check can be enabled.
+ // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
+ return channel_proxy_->ReceivedRTCPPacket(packet, length);
+}
+
+bool AudioReceiveStream::DeliverRtp(const uint8_t* packet,
+ size_t length,
+ const PacketTime& packet_time) {
+ // TODO(solenberg): Tests call this function on a network thread, libjingle
+ // calls on the worker thread. We should move towards always using a network
+ // thread. Then this check can be enabled.
+ // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
+ RTPHeader header;
+ if (!rtp_header_parser_->Parse(packet, length, &header)) {
+ return false;
+ }
+
+ // Only forward if the parsed header has one of the headers necessary for
+ // bandwidth estimation. RTP timestamps has different rates for audio and
+ // video and shouldn't be mixed.
+ if (remote_bitrate_estimator_ &&
+ header.extension.hasTransportSequenceNumber) {
+ int64_t arrival_time_ms = TickTime::MillisecondTimestamp();
+ if (packet_time.timestamp >= 0)
+ arrival_time_ms = (packet_time.timestamp + 500) / 1000;
+ size_t payload_size = length - header.headerLength;
+ remote_bitrate_estimator_->IncomingPacket(arrival_time_ms, payload_size,
+ header, false);
+ }
+
+ return channel_proxy_->ReceivedRTPPacket(packet, length, packet_time);
+}
+
VoiceEngine* AudioReceiveStream::voice_engine() const {
internal::AudioState* audio_state =
static_cast<internal::AudioState*>(audio_state_.get());
diff --git a/webrtc/audio/audio_receive_stream.h b/webrtc/audio/audio_receive_stream.h
index 3711742..d99956c 100644
--- a/webrtc/audio/audio_receive_stream.h
+++ b/webrtc/audio/audio_receive_stream.h
@@ -36,20 +36,17 @@
const rtc::scoped_refptr<webrtc::AudioState>& audio_state);
~AudioReceiveStream() override;
- // webrtc::ReceiveStream implementation.
+ // webrtc::AudioReceiveStream implementation.
void Start() override;
void Stop() override;
- void SignalNetworkState(NetworkState state) override;
- bool DeliverRtcp(const uint8_t* packet, size_t length) override;
- bool DeliverRtp(const uint8_t* packet,
- size_t length,
- const PacketTime& packet_time) override;
-
- // webrtc::AudioReceiveStream implementation.
webrtc::AudioReceiveStream::Stats GetStats() const override;
-
void SetSink(std::unique_ptr<AudioSinkInterface> sink) override;
+ void SignalNetworkState(NetworkState state);
+ bool DeliverRtcp(const uint8_t* packet, size_t length);
+ bool DeliverRtp(const uint8_t* packet,
+ size_t length,
+ const PacketTime& packet_time);
const webrtc::AudioReceiveStream::Config& config() const;
private:
diff --git a/webrtc/audio/audio_send_stream.cc b/webrtc/audio/audio_send_stream.cc
index c5dfd77..c0a709e 100644
--- a/webrtc/audio/audio_send_stream.cc
+++ b/webrtc/audio/audio_send_stream.cc
@@ -116,18 +116,6 @@
}
}
-void AudioSendStream::SignalNetworkState(NetworkState state) {
- RTC_DCHECK(thread_checker_.CalledOnValidThread());
-}
-
-bool AudioSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
- // TODO(solenberg): Tests call this function on a network thread, libjingle
- // calls on the worker thread. We should move towards always using a network
- // thread. Then this check can be enabled.
- // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
- return channel_proxy_->ReceivedRTCPPacket(packet, length);
-}
-
bool AudioSendStream::SendTelephoneEvent(int payload_type, int event,
int duration_ms) {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
@@ -218,6 +206,18 @@
return stats;
}
+void AudioSendStream::SignalNetworkState(NetworkState state) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+}
+
+bool AudioSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
+ // TODO(solenberg): Tests call this function on a network thread, libjingle
+ // calls on the worker thread. We should move towards always using a network
+ // thread. Then this check can be enabled.
+ // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
+ return channel_proxy_->ReceivedRTCPPacket(packet, length);
+}
+
const webrtc::AudioSendStream::Config& AudioSendStream::config() const {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
return config_;
diff --git a/webrtc/audio/audio_send_stream.h b/webrtc/audio/audio_send_stream.h
index 183ad88..61dd7f2 100644
--- a/webrtc/audio/audio_send_stream.h
+++ b/webrtc/audio/audio_send_stream.h
@@ -34,17 +34,15 @@
CongestionController* congestion_controller);
~AudioSendStream() override;
- // webrtc::SendStream implementation.
+ // webrtc::AudioSendStream implementation.
void Start() override;
void Stop() override;
- void SignalNetworkState(NetworkState state) override;
- bool DeliverRtcp(const uint8_t* packet, size_t length) override;
-
- // webrtc::AudioSendStream implementation.
bool SendTelephoneEvent(int payload_type, int event,
int duration_ms) override;
webrtc::AudioSendStream::Stats GetStats() const override;
+ void SignalNetworkState(NetworkState state);
+ bool DeliverRtcp(const uint8_t* packet, size_t length);
const webrtc::AudioSendStream::Config& config() const;
private:
diff --git a/webrtc/audio_receive_stream.h b/webrtc/audio_receive_stream.h
index 97feccc..6d72b4d 100644
--- a/webrtc/audio_receive_stream.h
+++ b/webrtc/audio_receive_stream.h
@@ -16,8 +16,8 @@
#include <string>
#include <vector>
+#include "webrtc/common_types.h"
#include "webrtc/config.h"
-#include "webrtc/stream.h"
#include "webrtc/transport.h"
#include "webrtc/typedefs.h"
@@ -31,7 +31,7 @@
// of WebRtc/Libjingle. Please use the VoiceEngine API instead.
// See: https://bugs.chromium.org/p/webrtc/issues/detail?id=4690
-class AudioReceiveStream : public ReceiveStream {
+class AudioReceiveStream {
public:
struct Stats {
uint32_t remote_ssrc = 0;
@@ -103,6 +103,13 @@
std::map<uint8_t, AudioDecoder*> decoder_map;
};
+ // Starts stream activity.
+ // When a stream is active, it can receive, process and deliver packets.
+ virtual void Start() = 0;
+ // Stops stream activity.
+ // When a stream is stopped, it can't receive, process or deliver packets.
+ virtual void Stop() = 0;
+
virtual Stats GetStats() const = 0;
// Sets an audio sink that receives unmixed audio from the receive stream.
@@ -114,6 +121,9 @@
// is being pulled+rendered and/or if audio is being pulled for the purposes
// of feeding to the AEC.
virtual void SetSink(std::unique_ptr<AudioSinkInterface> sink) = 0;
+
+ protected:
+ virtual ~AudioReceiveStream() {}
};
} // namespace webrtc
diff --git a/webrtc/audio_send_stream.h b/webrtc/audio_send_stream.h
index 18e7125..d5d16f2 100644
--- a/webrtc/audio_send_stream.h
+++ b/webrtc/audio_send_stream.h
@@ -18,7 +18,6 @@
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/config.h"
#include "webrtc/modules/audio_coding/codecs/audio_encoder.h"
-#include "webrtc/stream.h"
#include "webrtc/transport.h"
#include "webrtc/typedefs.h"
@@ -29,7 +28,7 @@
// of WebRtc/Libjingle. Please use the VoiceEngine API instead.
// See: https://bugs.chromium.org/p/webrtc/issues/detail?id=4690
-class AudioSendStream : public SendStream {
+class AudioSendStream {
public:
struct Stats {
// TODO(solenberg): Harmonize naming and defaults with receive stream stats.
@@ -90,10 +89,20 @@
int red_payload_type = -1; // pt, or -1 to disable REDundant coding.
};
+ // Starts stream activity.
+ // When a stream is active, it can receive, process and deliver packets.
+ virtual void Start() = 0;
+ // Stops stream activity.
+ // When a stream is stopped, it can't receive, process or deliver packets.
+ virtual void Stop() = 0;
+
// TODO(solenberg): Make payload_type a config property instead.
virtual bool SendTelephoneEvent(int payload_type, int event,
int duration_ms) = 0;
virtual Stats GetStats() const = 0;
+
+ protected:
+ virtual ~AudioSendStream() {}
};
} // namespace webrtc
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index e171e1b..58aebdc 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -880,6 +880,11 @@
// RTCP mode is described by RFC 5506.
enum class RtcpMode { kOff, kCompound, kReducedSize };
+enum NetworkState {
+ kNetworkUp,
+ kNetworkDown,
+};
+
} // namespace webrtc
#endif // WEBRTC_COMMON_TYPES_H_
diff --git a/webrtc/media/engine/fakewebrtccall.cc b/webrtc/media/engine/fakewebrtccall.cc
index bc580e3..e9edf27 100644
--- a/webrtc/media/engine/fakewebrtccall.cc
+++ b/webrtc/media/engine/fakewebrtccall.cc
@@ -80,10 +80,6 @@
return true;
}
-bool FakeAudioReceiveStream::DeliverRtcp(const uint8_t* packet, size_t length) {
- return true;
-}
-
webrtc::AudioReceiveStream::Stats FakeAudioReceiveStream::GetStats() const {
return stats_;
}
diff --git a/webrtc/media/engine/fakewebrtccall.h b/webrtc/media/engine/fakewebrtccall.h
index 63c3b41..c9caf8e 100644
--- a/webrtc/media/engine/fakewebrtccall.h
+++ b/webrtc/media/engine/fakewebrtccall.h
@@ -48,15 +48,10 @@
bool IsSending() const { return sending_; }
private:
- // webrtc::SendStream implementation.
+ // webrtc::AudioSendStream implementation.
void Start() override { sending_ = true; }
void Stop() override { sending_ = false; }
- void SignalNetworkState(webrtc::NetworkState state) override {}
- bool DeliverRtcp(const uint8_t* packet, size_t length) override {
- return true;
- }
- // webrtc::AudioSendStream implementation.
bool SendTelephoneEvent(int payload_type, int event,
int duration_ms) override;
webrtc::AudioSendStream::Stats GetStats() const override;
@@ -77,18 +72,15 @@
int received_packets() const { return received_packets_; }
bool VerifyLastPacket(const uint8_t* data, size_t length) const;
const webrtc::AudioSinkInterface* sink() const { return sink_.get(); }
-
bool DeliverRtp(const uint8_t* packet,
size_t length,
- const webrtc::PacketTime& packet_time) override;
- bool DeliverRtcp(const uint8_t* packet, size_t length) override;
+ const webrtc::PacketTime& packet_time);
+
private:
- // webrtc::ReceiveStream implementation.
+ // webrtc::AudioReceiveStream implementation.
void Start() override {}
void Stop() override {}
- void SignalNetworkState(webrtc::NetworkState state) override {}
- // webrtc::AudioReceiveStream implementation.
webrtc::AudioReceiveStream::Stats GetStats() const override;
void SetSink(std::unique_ptr<webrtc::AudioSinkInterface> sink) override;
@@ -124,15 +116,9 @@
private:
void IncomingCapturedFrame(const webrtc::VideoFrame& frame) override;
- // webrtc::SendStream implementation.
+ // webrtc::VideoSendStream implementation.
void Start() override;
void Stop() override;
- void SignalNetworkState(webrtc::NetworkState state) override {}
- bool DeliverRtcp(const uint8_t* packet, size_t length) override {
- return true;
- }
-
- // webrtc::VideoSendStream implementation.
webrtc::VideoSendStream::Stats GetStats() override;
void ReconfigureVideoEncoder(
const webrtc::VideoEncoderConfig& config) override;
@@ -166,20 +152,10 @@
void SetStats(const webrtc::VideoReceiveStream::Stats& stats);
private:
- // webrtc::ReceiveStream implementation.
+ // webrtc::VideoReceiveStream implementation.
void Start() override;
void Stop() override;
- void SignalNetworkState(webrtc::NetworkState state) override {}
- bool DeliverRtcp(const uint8_t* packet, size_t length) override {
- return true;
- }
- bool DeliverRtp(const uint8_t* packet,
- size_t length,
- const webrtc::PacketTime& packet_time) override {
- return true;
- }
- // webrtc::VideoReceiveStream implementation.
webrtc::VideoReceiveStream::Stats GetStats() const override;
webrtc::VideoReceiveStream::Config config_;
diff --git a/webrtc/modules/congestion_controller/include/congestion_controller.h b/webrtc/modules/congestion_controller/include/congestion_controller.h
index 7f18150..284070c 100644
--- a/webrtc/modules/congestion_controller/include/congestion_controller.h
+++ b/webrtc/modules/congestion_controller/include/congestion_controller.h
@@ -15,12 +15,12 @@
#include "webrtc/base/constructormagic.h"
#include "webrtc/base/scoped_ptr.h"
+#include "webrtc/common_types.h"
#include "webrtc/modules/include/module.h"
#include "webrtc/modules/include/module_common_types.h"
#include "webrtc/modules/pacing/packet_router.h"
#include "webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy.h"
#include "webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.h"
-#include "webrtc/stream.h"
namespace rtc {
struct SentPacket;
diff --git a/webrtc/stream.h b/webrtc/stream.h
deleted file mode 100644
index 5afab0f..0000000
--- a/webrtc/stream.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef WEBRTC_STREAM_H_
-#define WEBRTC_STREAM_H_
-
-#include "webrtc/common_types.h"
-
-namespace webrtc {
-
-enum NetworkState {
- kNetworkUp,
- kNetworkDown,
-};
-
-// Common base class for streams.
-class Stream {
- public:
- // Starts stream activity.
- // When a stream is active, it can receive, process and deliver packets.
- virtual void Start() = 0;
- // Stops stream activity.
- // When a stream is stopped, it can't receive, process or deliver packets.
- virtual void Stop() = 0;
- // Called to notify that network state has changed, so that the stream can
- // respond, e.g. by pausing or resuming activity.
- virtual void SignalNetworkState(NetworkState state) = 0;
- // Called when a RTCP packet is received.
- virtual bool DeliverRtcp(const uint8_t* packet, size_t length) = 0;
-
- protected:
- virtual ~Stream() {}
-};
-
-// Common base class for receive streams.
-class ReceiveStream : public Stream {
- public:
- // Called when a RTP packet is received.
- virtual bool DeliverRtp(const uint8_t* packet,
- size_t length,
- const PacketTime& packet_time) = 0;
-};
-
-// Common base class for send streams.
-// A tag class that denotes send stream type.
-class SendStream : public Stream {};
-
-} // namespace webrtc
-
-#endif // WEBRTC_STREAM_H_
diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc
index b82fa9a..814928b 100644
--- a/webrtc/video/video_receive_stream.cc
+++ b/webrtc/video/video_receive_stream.cc
@@ -322,6 +322,22 @@
->RemoveStream(rtp_stream_receiver_.GetRemoteSsrc());
}
+void VideoReceiveStream::SignalNetworkState(NetworkState state) {
+ rtp_rtcp_->SetRTCPStatus(state == kNetworkUp ? config_.rtp.rtcp_mode
+ : RtcpMode::kOff);
+}
+
+
+bool VideoReceiveStream::DeliverRtcp(const uint8_t* packet, size_t length) {
+ return rtp_stream_receiver_.DeliverRtcp(packet, length);
+}
+
+bool VideoReceiveStream::DeliverRtp(const uint8_t* packet,
+ size_t length,
+ const PacketTime& packet_time) {
+ return rtp_stream_receiver_.DeliverRtp(packet, length, packet_time);
+}
+
void VideoReceiveStream::Start() {
if (decode_thread_.IsRunning())
return;
@@ -358,16 +374,6 @@
return stats_proxy_.GetStats();
}
-bool VideoReceiveStream::DeliverRtcp(const uint8_t* packet, size_t length) {
- return rtp_stream_receiver_.DeliverRtcp(packet, length);
-}
-
-bool VideoReceiveStream::DeliverRtp(const uint8_t* packet,
- size_t length,
- const PacketTime& packet_time) {
- return rtp_stream_receiver_.DeliverRtp(packet, length, packet_time);
-}
-
void VideoReceiveStream::FrameCallback(VideoFrame* video_frame) {
stats_proxy_.OnDecodedFrame();
@@ -421,11 +427,6 @@
return 0;
}
-void VideoReceiveStream::SignalNetworkState(NetworkState state) {
- rtp_rtcp_->SetRTCPStatus(state == kNetworkUp ? config_.rtp.rtcp_mode
- : RtcpMode::kOff);
-}
-
bool VideoReceiveStream::DecodeThreadFunction(void* ptr) {
static_cast<VideoReceiveStream*>(ptr)->Decode();
return true;
diff --git a/webrtc/video/video_receive_stream.h b/webrtc/video/video_receive_stream.h
index a7ee42d..fa02d7c 100644
--- a/webrtc/video/video_receive_stream.h
+++ b/webrtc/video/video_receive_stream.h
@@ -54,16 +54,16 @@
VieRemb* remb);
~VideoReceiveStream() override;
- // webrtc::ReceiveStream implementation.
- void Start() override;
- void Stop() override;
- void SignalNetworkState(NetworkState state) override;
- bool DeliverRtcp(const uint8_t* packet, size_t length) override;
+ void SignalNetworkState(NetworkState state);
+ bool DeliverRtcp(const uint8_t* packet, size_t length);
bool DeliverRtp(const uint8_t* packet,
size_t length,
- const PacketTime& packet_time) override;
+ const PacketTime& packet_time);
// webrtc::VideoReceiveStream implementation.
+ void Start() override;
+ void Stop() override;
+
webrtc::VideoReceiveStream::Stats GetStats() const override;
// Overrides I420FrameCallback.
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index 40871af1..cecc7e9 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -491,8 +491,25 @@
}
}
-VideoCaptureInput* VideoSendStream::Input() {
- return &input_;
+void VideoSendStream::SignalNetworkState(NetworkState state) {
+ // When network goes up, enable RTCP status before setting transmission state.
+ // When it goes down, disable RTCP afterwards. This ensures that any packets
+ // sent due to the network state changed will not be dropped.
+ if (state == kNetworkUp) {
+ for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
+ rtp_rtcp->SetRTCPStatus(config_.rtp.rtcp_mode);
+ }
+ vie_encoder_.SetNetworkTransmissionState(state == kNetworkUp);
+ if (state == kNetworkDown) {
+ for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
+ rtp_rtcp->SetRTCPStatus(RtcpMode::kOff);
+ }
+}
+
+bool VideoSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
+ for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
+ rtp_rtcp->IncomingRtcpPacket(packet, length);
+ return true;
}
void VideoSendStream::Start() {
@@ -514,6 +531,10 @@
payload_router_.set_active(false);
}
+VideoCaptureInput* VideoSendStream::Input() {
+ return &input_;
+}
+
bool VideoSendStream::EncoderThreadFunction(void* obj) {
static_cast<VideoSendStream*>(obj)->EncoderProcess();
// We're done, return false to abort.
@@ -580,12 +601,6 @@
encoder_wakeup_event_.Set();
}
-bool VideoSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
- for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
- rtp_rtcp->IncomingRtcpPacket(packet, length);
- return true;
-}
-
VideoSendStream::Stats VideoSendStream::GetStats() {
return stats_proxy_.GetStats();
}
@@ -714,21 +729,6 @@
return rtp_states;
}
-void VideoSendStream::SignalNetworkState(NetworkState state) {
- // When network goes up, enable RTCP status before setting transmission state.
- // When it goes down, disable RTCP afterwards. This ensures that any packets
- // sent due to the network state changed will not be dropped.
- if (state == kNetworkUp) {
- for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
- rtp_rtcp->SetRTCPStatus(config_.rtp.rtcp_mode);
- }
- vie_encoder_.SetNetworkTransmissionState(state == kNetworkUp);
- if (state == kNetworkDown) {
- for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
- rtp_rtcp->SetRTCPStatus(RtcpMode::kOff);
- }
-}
-
int VideoSendStream::GetPaddingNeededBps() const {
return vie_encoder_.GetPaddingNeededBps();
}
diff --git a/webrtc/video/video_send_stream.h b/webrtc/video/video_send_stream.h
index 475b58e..fb16b67 100644
--- a/webrtc/video/video_send_stream.h
+++ b/webrtc/video/video_send_stream.h
@@ -63,13 +63,12 @@
~VideoSendStream() override;
- // webrtc::SendStream implementation.
- void Start() override;
- void Stop() override;
- void SignalNetworkState(NetworkState state) override;
- bool DeliverRtcp(const uint8_t* packet, size_t length) override;
+ void SignalNetworkState(NetworkState state);
+ bool DeliverRtcp(const uint8_t* packet, size_t length);
// webrtc::VideoSendStream implementation.
+ void Start() override;
+ void Stop() override;
VideoCaptureInput* Input() override;
void ReconfigureVideoEncoder(const VideoEncoderConfig& config) override;
Stats GetStats() override;
diff --git a/webrtc/video_receive_stream.h b/webrtc/video_receive_stream.h
index 1b46c17..167df47 100644
--- a/webrtc/video_receive_stream.h
+++ b/webrtc/video_receive_stream.h
@@ -20,14 +20,13 @@
#include "webrtc/common_video/include/frame_callback.h"
#include "webrtc/config.h"
#include "webrtc/media/base/videosinkinterface.h"
-#include "webrtc/stream.h"
#include "webrtc/transport.h"
namespace webrtc {
class VideoDecoder;
-class VideoReceiveStream : public ReceiveStream {
+class VideoReceiveStream {
public:
// TODO(mflodman) Move all these settings to VideoDecoder and move the
// declaration to common_types.h.
@@ -176,8 +175,18 @@
int target_delay_ms = 0;
};
+ // Starts stream activity.
+ // When a stream is active, it can receive, process and deliver packets.
+ virtual void Start() = 0;
+ // Stops stream activity.
+ // When a stream is stopped, it can't receive, process or deliver packets.
+ virtual void Stop() = 0;
+
// TODO(pbos): Add info on currently-received codec to Stats.
virtual Stats GetStats() const = 0;
+
+ protected:
+ virtual ~VideoReceiveStream() {}
};
} // namespace webrtc
diff --git a/webrtc/video_send_stream.h b/webrtc/video_send_stream.h
index 50a8df3..886367f 100644
--- a/webrtc/video_send_stream.h
+++ b/webrtc/video_send_stream.h
@@ -18,7 +18,6 @@
#include "webrtc/common_video/include/frame_callback.h"
#include "webrtc/config.h"
#include "webrtc/media/base/videosinkinterface.h"
-#include "webrtc/stream.h"
#include "webrtc/transport.h"
#include "webrtc/media/base/videosinkinterface.h"
@@ -39,7 +38,7 @@
virtual ~VideoCaptureInput() {}
};
-class VideoSendStream : public SendStream {
+class VideoSendStream {
public:
struct StreamStats {
FrameCounts frame_counts;
@@ -167,6 +166,13 @@
bool suspend_below_min_bitrate = false;
};
+ // Starts stream activity.
+ // When a stream is active, it can receive, process and deliver packets.
+ virtual void Start() = 0;
+ // Stops stream activity.
+ // When a stream is stopped, it can't receive, process or deliver packets.
+ virtual void Stop() = 0;
+
// Gets interface used to insert captured frames. Valid as long as the
// VideoSendStream is valid.
virtual VideoCaptureInput* Input() = 0;
@@ -177,6 +183,9 @@
virtual void ReconfigureVideoEncoder(const VideoEncoderConfig& config) = 0;
virtual Stats GetStats() = 0;
+
+ protected:
+ virtual ~VideoSendStream() {}
};
} // namespace webrtc
diff --git a/webrtc/webrtc.gyp b/webrtc/webrtc.gyp
index abc48e9..2138744 100644
--- a/webrtc/webrtc.gyp
+++ b/webrtc/webrtc.gyp
@@ -126,7 +126,6 @@
'audio_state.h',
'call.h',
'config.h',
- 'stream.h',
'transport.h',
'video_receive_stream.h',
'video_send_stream.h',