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

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: Make the destructor of RtpReceiverObserverInterface virtual. 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..59682c871a4fef668a0a6d785dd2c56ffb473e2e 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()),
+ rtp_receiver_observer_(nullptr) {
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,17 @@ void AudioRtpReceiver::Reconfigure() {
provider_->SetAudioPlayout(ssrc_, track_->enabled());
}
+void AudioRtpReceiver::RegisterRtpReceiverObserver(
+ RtpReceiverObserverInterface* observer) {
+ rtp_receiver_observer_ = observer;
pthatcher2 2016/05/20 20:23:13 We could add: if (received_first_packet_) { obs
Zhi Huang 2016/06/09 00:37:36 This is a good point! In this way, we can fire the
+}
+
+void AudioRtpReceiver::onFirstAudioPacketReceived() {
+ if (rtp_receiver_observer_) {
+ rtp_receiver_observer_->onFirstPacketReceived(cricket::MEDIA_TYPE_AUDIO);
+ }
pthatcher2 2016/05/20 20:23:13 Right here we could store: received_first_packet_
+}
+
VideoRtpReceiver::VideoRtpReceiver(MediaStreamInterface* stream,
const std::string& track_id,
rtc::Thread* worker_thread,
@@ -100,10 +114,13 @@ VideoRtpReceiver::VideoRtpReceiver(MediaStreamInterface* stream,
track_id,
VideoTrackSourceProxy::Create(rtc::Thread::Current(),
worker_thread,
- source_)))) {
+ source_)))),
+ rtp_receiver_observer_(nullptr) {
source_->SetState(MediaSourceInterface::kLive);
provider_->SetVideoPlayout(ssrc_, true, &broadcaster_);
stream->AddTrack(track_);
+ provider_->SignalFirstVideoPacketReceived.connect(
+ this, &VideoRtpReceiver::onFirstVideoPacketReceived);
}
VideoRtpReceiver::~VideoRtpReceiver() {
@@ -132,4 +149,15 @@ bool VideoRtpReceiver::SetParameters(const RtpParameters& parameters) {
return provider_->SetVideoRtpReceiveParameters(ssrc_, parameters);
}
+void VideoRtpReceiver::RegisterRtpReceiverObserver(
+ RtpReceiverObserverInterface* observer) {
+ rtp_receiver_observer_ = observer;
+}
+
+void VideoRtpReceiver::onFirstVideoPacketReceived() {
+ if (rtp_receiver_observer_) {
+ rtp_receiver_observer_->onFirstPacketReceived(cricket::MEDIA_TYPE_VIDEO);
+ }
+}
pthatcher2 2016/05/20 20:23:13 Same here.
+
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698