Chromium Code Reviews| 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 |