summaryrefslogtreecommitdiff
path: root/media/cast/cast_receiver_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/cast/cast_receiver_impl.cc')
-rw-r--r--media/cast/cast_receiver_impl.cc47
1 files changed, 24 insertions, 23 deletions
diff --git a/media/cast/cast_receiver_impl.cc b/media/cast/cast_receiver_impl.cc
index 2a88cd290b..e2c004fe96 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)) {}