diff options
Diffstat (limited to 'media/cast/cast_receiver_impl.cc')
-rw-r--r-- | media/cast/cast_receiver_impl.cc | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/media/cast/cast_receiver_impl.cc b/media/cast/cast_receiver_impl.cc index 2a88cd2..e2c004f 100644 --- a/media/cast/cast_receiver_impl.cc +++ b/media/cast/cast_receiver_impl.cc @@ -18,8 +18,8 @@ namespace cast { class LocalFrameReceiver : public FrameReceiver { public: LocalFrameReceiver(scoped_refptr<CastEnvironment> cast_environment, - base::WeakPtr<AudioReceiver> audio_receiver, - base::WeakPtr<VideoReceiver> video_receiver) + AudioReceiver* audio_receiver, + VideoReceiver* video_receiver) : cast_environment_(cast_environment), audio_receiver_(audio_receiver), video_receiver_(video_receiver) {} @@ -27,15 +27,15 @@ class LocalFrameReceiver : public FrameReceiver { virtual void GetRawVideoFrame( const VideoFrameDecodedCallback& callback) OVERRIDE { cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, - base::Bind(&VideoReceiver::GetRawVideoFrame, video_receiver_, - callback)); + base::Bind(&VideoReceiver::GetRawVideoFrame, + video_receiver_->AsWeakPtr(), callback)); } virtual void GetEncodedVideoFrame( const VideoFrameEncodedCallback& callback) OVERRIDE { cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, - base::Bind(&VideoReceiver::GetEncodedVideoFrame, video_receiver_, - callback)); + base::Bind(&VideoReceiver::GetEncodedVideoFrame, + video_receiver_->AsWeakPtr(), callback)); } virtual void GetRawAudioFrame( @@ -43,14 +43,15 @@ class LocalFrameReceiver : public FrameReceiver { int desired_frequency, const AudioFrameDecodedCallback& callback) OVERRIDE { cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, base::Bind( - &AudioReceiver::GetRawAudioFrame, audio_receiver_, + &AudioReceiver::GetRawAudioFrame, audio_receiver_->AsWeakPtr(), number_of_10ms_blocks, desired_frequency, callback)); } virtual void GetCodedAudioFrame( const AudioFrameEncodedCallback& callback) OVERRIDE { - cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, base::Bind( - &AudioReceiver::GetEncodedAudioFrame, audio_receiver_, callback)); + cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, + base::Bind(&AudioReceiver::GetEncodedAudioFrame, + audio_receiver_->AsWeakPtr(), callback)); } protected: @@ -60,16 +61,16 @@ class LocalFrameReceiver : public FrameReceiver { friend class base::RefCountedThreadSafe<LocalFrameReceiver>; scoped_refptr<CastEnvironment> cast_environment_; - base::WeakPtr<AudioReceiver> audio_receiver_; - base::WeakPtr<VideoReceiver> video_receiver_; + AudioReceiver* audio_receiver_; + VideoReceiver* video_receiver_; }; // The video and audio receivers should only be called from the main thread. class LocalPacketReceiver : public PacketReceiver { public: LocalPacketReceiver(scoped_refptr<CastEnvironment> cast_environment, - base::WeakPtr<AudioReceiver> audio_receiver, - base::WeakPtr<VideoReceiver> video_receiver, + AudioReceiver* audio_receiver, + VideoReceiver* video_receiver, uint32 ssrc_of_audio_sender, uint32 ssrc_of_video_sender) : cast_environment_(cast_environment), @@ -103,12 +104,12 @@ class LocalPacketReceiver : public PacketReceiver { } if (ssrc_of_sender == ssrc_of_audio_sender_) { cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, - base::Bind(&AudioReceiver::IncomingPacket, audio_receiver_, - packet, length, callback)); + base::Bind(&AudioReceiver::IncomingPacket, + audio_receiver_->AsWeakPtr(), packet, length, callback)); } else if (ssrc_of_sender == ssrc_of_video_sender_) { cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, - base::Bind(&VideoReceiver::IncomingPacket, video_receiver_, - packet, length, callback)); + base::Bind(&VideoReceiver::IncomingPacket, + video_receiver_->AsWeakPtr(), packet, length, callback)); } else { // No action; just log and call the callback informing that we are done // with the packet. @@ -126,8 +127,8 @@ class LocalPacketReceiver : public PacketReceiver { friend class base::RefCountedThreadSafe<LocalPacketReceiver>; scoped_refptr<CastEnvironment> cast_environment_; - base::WeakPtr<AudioReceiver> audio_receiver_; - base::WeakPtr<VideoReceiver> video_receiver_; + AudioReceiver* audio_receiver_; + VideoReceiver* video_receiver_; const uint32 ssrc_of_audio_sender_; const uint32 ssrc_of_video_sender_; }; @@ -152,11 +153,11 @@ CastReceiverImpl::CastReceiverImpl( audio_receiver_(cast_environment, audio_config, &pacer_), video_receiver_(cast_environment, video_config, &pacer_), frame_receiver_(new LocalFrameReceiver(cast_environment, - audio_receiver_.AsWeakPtr(), - video_receiver_.AsWeakPtr())), + &audio_receiver_, + &video_receiver_)), packet_receiver_(new LocalPacketReceiver(cast_environment, - audio_receiver_.AsWeakPtr(), - video_receiver_.AsWeakPtr(), + &audio_receiver_, + &video_receiver_, audio_config.incoming_ssrc, video_config.incoming_ssrc)) {} |