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

Unified Diff: webrtc/api/rtpreceiver.cc

Issue 1999853002: Forward the SignalFirstPacketReceived to RtpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add media type to BaseChannel. Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/api/rtpreceiver.cc
diff --git a/webrtc/api/rtpreceiver.cc b/webrtc/api/rtpreceiver.cc
index 1b52ce27def13f255c245d353aa239f4d64d1078..923350c06ec50bcd430f960aae21c63f52c326ad 100644
--- a/webrtc/api/rtpreceiver.cc
+++ b/webrtc/api/rtpreceiver.cc
@@ -29,12 +29,15 @@ AudioRtpReceiver::AudioRtpReceiver(MediaStreamInterface* stream,
rtc::Thread::Current(),
AudioTrack::Create(track_id,
RemoteAudioSource::Create(ssrc, provider)))),
- cached_track_enabled_(track_->enabled()) {
+ cached_track_enabled_(track_->enabled()),
+ observer_(nullptr) {
pthatcher1 2016/06/08 17:35:55 You don't need this if you use "= nullptr" in the
RTC_DCHECK(track_->GetSource()->remote());
track_->RegisterObserver(this);
track_->GetSource()->RegisterAudioObserver(this);
Reconfigure();
stream->AddTrack(track_);
+ provider_->SignalFirstAudioPacketReceived.connect(
+ this, &AudioRtpReceiver::OnFirstAudioPacketReceived);
}
AudioRtpReceiver::~AudioRtpReceiver() {
@@ -83,6 +86,22 @@ void AudioRtpReceiver::Reconfigure() {
provider_->SetAudioPlayout(ssrc_, track_->enabled());
}
+void AudioRtpReceiver::SetObserver(RtpReceiverObserverInterface* observer) {
+ observer_ = observer;
+ // If received the first packet before setting the observer, call the
+ // observer.
+ if (received_first_packet_) {
+ observer_->OnFirstPacketReceived(cricket::MEDIA_TYPE_AUDIO);
+ }
+}
+
+void AudioRtpReceiver::OnFirstAudioPacketReceived() {
+ if (observer_) {
+ observer_->OnFirstPacketReceived(cricket::MEDIA_TYPE_AUDIO);
+ }
+ received_first_packet_ = true;
pthatcher1 2016/06/08 17:35:55 Do you have a unit test that covers setting the ob
+}
+
VideoRtpReceiver::VideoRtpReceiver(MediaStreamInterface* stream,
const std::string& track_id,
rtc::Thread* worker_thread,
@@ -100,10 +119,13 @@ VideoRtpReceiver::VideoRtpReceiver(MediaStreamInterface* stream,
track_id,
VideoTrackSourceProxy::Create(rtc::Thread::Current(),
worker_thread,
- source_)))) {
+ source_)))),
+ observer_(nullptr) {
source_->SetState(MediaSourceInterface::kLive);
provider_->SetVideoPlayout(ssrc_, true, &broadcaster_);
stream->AddTrack(track_);
+ provider_->SignalFirstVideoPacketReceived.connect(
+ this, &VideoRtpReceiver::OnFirstVideoPacketReceived);
}
VideoRtpReceiver::~VideoRtpReceiver() {
@@ -132,4 +154,20 @@ bool VideoRtpReceiver::SetParameters(const RtpParameters& parameters) {
return provider_->SetVideoRtpReceiveParameters(ssrc_, parameters);
}
+void VideoRtpReceiver::SetObserver(RtpReceiverObserverInterface* observer) {
+ observer_ = observer;
+ // If received the first packet before setting the observer, call the
+ // observer.
+ if (received_first_packet_) {
+ observer_->OnFirstPacketReceived(cricket::MEDIA_TYPE_VIDEO);
+ }
+}
+
+void VideoRtpReceiver::OnFirstVideoPacketReceived() {
+ if (observer_) {
+ observer_->OnFirstPacketReceived(cricket::MEDIA_TYPE_VIDEO);
pthatcher1 2016/06/08 17:35:55 Might as well add a media_type() getter to the Rtp
Zhi Huang 2016/06/09 00:37:36 Done.
+ }
+ received_first_packet_ = true;
+}
+
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698