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 |