| Index: media/base/pipeline.cc
|
| diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc
|
| index 84a1e18bf19326bb74081d1c5132fab718e730a7..292aef4c6f5480c166ba91e41e893eda5177d59d 100644
|
| --- a/media/base/pipeline.cc
|
| +++ b/media/base/pipeline.cc
|
| @@ -82,14 +82,14 @@ void Pipeline::Start(scoped_ptr<FilterCollection> collection,
|
|
|
| running_ = true;
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::StartTask, this, base::Passed(&collection),
|
| + &Pipeline::StartTask, base::Unretained(this), base::Passed(&collection),
|
| ended_cb, error_cb, seek_cb, buffering_state_cb, duration_change_cb));
|
| }
|
|
|
| void Pipeline::Stop(const base::Closure& stop_cb) {
|
| base::AutoLock auto_lock(lock_);
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::StopTask, this, stop_cb));
|
| + &Pipeline::StopTask, base::Unretained(this), stop_cb));
|
| }
|
|
|
| void Pipeline::Seek(TimeDelta time, const PipelineStatusCB& seek_cb) {
|
| @@ -100,7 +100,7 @@ void Pipeline::Seek(TimeDelta time, const PipelineStatusCB& seek_cb) {
|
| }
|
|
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::SeekTask, this, time, seek_cb));
|
| + &Pipeline::SeekTask, base::Unretained(this), time, seek_cb));
|
| }
|
|
|
| bool Pipeline::IsRunning() const {
|
| @@ -131,7 +131,8 @@ void Pipeline::SetPlaybackRate(float playback_rate) {
|
| playback_rate_ = playback_rate;
|
| if (running_) {
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::PlaybackRateChangedTask, this, playback_rate));
|
| + &Pipeline::PlaybackRateChangedTask, base::Unretained(this),
|
| + playback_rate));
|
| }
|
| }
|
|
|
| @@ -148,7 +149,7 @@ void Pipeline::SetVolume(float volume) {
|
| volume_ = volume;
|
| if (running_) {
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::VolumeChangedTask, this, volume));
|
| + &Pipeline::VolumeChangedTask, base::Unretained(this), volume));
|
| }
|
| }
|
|
|
| @@ -302,7 +303,7 @@ void Pipeline::SetError(PipelineStatus error) {
|
| VLOG(1) << "Media pipeline error: " << error;
|
|
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::ErrorChangedTask, this, error));
|
| + &Pipeline::ErrorChangedTask, base::Unretained(this), error));
|
|
|
| media_log_->AddEvent(media_log_->CreatePipelineErrorEvent(error));
|
| }
|
| @@ -310,7 +311,7 @@ void Pipeline::SetError(PipelineStatus error) {
|
| void Pipeline::OnAudioDisabled() {
|
| DCHECK(IsRunning());
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::AudioDisabledTask, this));
|
| + &Pipeline::AudioDisabledTask, base::Unretained(this)));
|
| media_log_->AddEvent(
|
| media_log_->CreateEvent(MediaLogEvent::AUDIO_RENDERER_DISABLED));
|
| }
|
| @@ -395,7 +396,7 @@ TimeDelta Pipeline::TimeForByteOffset_Locked(int64 byte_offset) const {
|
| void Pipeline::OnStateTransition(PipelineStatus status) {
|
| // Force post to process state transitions after current execution frame.
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::StateTransitionTask, this, status));
|
| + &Pipeline::StateTransitionTask, base::Unretained(this), status));
|
| }
|
|
|
| void Pipeline::StateTransitionTask(PipelineStatus status) {
|
| @@ -423,7 +424,8 @@ void Pipeline::StateTransitionTask(PipelineStatus status) {
|
| state_ == kSeeking));
|
| pending_callbacks_.reset();
|
|
|
| - PipelineStatusCB done_cb = base::Bind(&Pipeline::OnStateTransition, this);
|
| + PipelineStatusCB done_cb = base::Bind(
|
| + &Pipeline::OnStateTransition, base::Unretained(this));
|
|
|
| // Switch states, performing any entrance actions for the new state as well.
|
| SetState(GetNextState());
|
| @@ -672,14 +674,14 @@ void Pipeline::OnNaturalVideoSizeChanged(const gfx::Size& size) {
|
| void Pipeline::OnAudioRendererEnded() {
|
| // Force post to process ended messages after current execution frame.
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::DoAudioRendererEnded, this));
|
| + &Pipeline::DoAudioRendererEnded, base::Unretained(this)));
|
| media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::AUDIO_ENDED));
|
| }
|
|
|
| void Pipeline::OnVideoRendererEnded() {
|
| // Force post to process ended messages after current execution frame.
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::DoVideoRendererEnded, this));
|
| + &Pipeline::DoVideoRendererEnded, base::Unretained(this)));
|
| media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::VIDEO_ENDED));
|
| }
|
|
|
| @@ -725,7 +727,7 @@ void Pipeline::StopTask(const base::Closure& stop_cb) {
|
| pending_callbacks_.reset();
|
| stop_cb_ = stop_cb;
|
|
|
| - DoStop(base::Bind(&Pipeline::OnStopCompleted, this));
|
| + DoStop(base::Bind(&Pipeline::OnStopCompleted, base::Unretained(this)));
|
| }
|
|
|
| void Pipeline::ErrorChangedTask(PipelineStatus error) {
|
| @@ -739,7 +741,7 @@ void Pipeline::ErrorChangedTask(PipelineStatus error) {
|
| pending_callbacks_.reset();
|
| status_ = error;
|
|
|
| - DoStop(base::Bind(&Pipeline::OnStopCompleted, this));
|
| + DoStop(base::Bind(&Pipeline::OnStopCompleted, base::Unretained(this)));
|
| }
|
|
|
| void Pipeline::PlaybackRateChangedTask(float playback_rate) {
|
| @@ -804,7 +806,8 @@ void Pipeline::SeekTask(TimeDelta time, const PipelineStatusCB& seek_cb) {
|
| clock_->Pause();
|
| clock_->SetTime(seek_timestamp, seek_timestamp);
|
| }
|
| - DoSeek(seek_timestamp, base::Bind(&Pipeline::OnStateTransition, this));
|
| + DoSeek(seek_timestamp, base::Bind(
|
| + &Pipeline::OnStateTransition, base::Unretained(this)));
|
| }
|
|
|
| void Pipeline::DoAudioRendererEnded() {
|
| @@ -885,12 +888,12 @@ void Pipeline::InitializeAudioRenderer(const PipelineStatusCB& done_cb) {
|
| audio_renderer_->Initialize(
|
| demuxer_->GetStream(DemuxerStream::AUDIO),
|
| done_cb,
|
| - base::Bind(&Pipeline::OnUpdateStatistics, this),
|
| - base::Bind(&Pipeline::OnAudioUnderflow, this),
|
| - base::Bind(&Pipeline::OnAudioTimeUpdate, this),
|
| - base::Bind(&Pipeline::OnAudioRendererEnded, this),
|
| - base::Bind(&Pipeline::OnAudioDisabled, this),
|
| - base::Bind(&Pipeline::SetError, this));
|
| + base::Bind(&Pipeline::OnUpdateStatistics, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnAudioUnderflow, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnAudioTimeUpdate, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnAudioRendererEnded, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnAudioDisabled, base::Unretained(this)),
|
| + base::Bind(&Pipeline::SetError, base::Unretained(this)));
|
| }
|
|
|
| void Pipeline::InitializeVideoRenderer(const PipelineStatusCB& done_cb) {
|
| @@ -909,19 +912,19 @@ void Pipeline::InitializeVideoRenderer(const PipelineStatusCB& done_cb) {
|
| video_renderer_->Initialize(
|
| stream,
|
| done_cb,
|
| - base::Bind(&Pipeline::OnUpdateStatistics, this),
|
| - base::Bind(&Pipeline::OnVideoTimeUpdate, this),
|
| - base::Bind(&Pipeline::OnNaturalVideoSizeChanged, this),
|
| - base::Bind(&Pipeline::OnVideoRendererEnded, this),
|
| - base::Bind(&Pipeline::SetError, this),
|
| - base::Bind(&Pipeline::GetMediaTime, this),
|
| - base::Bind(&Pipeline::GetMediaDuration, this));
|
| + base::Bind(&Pipeline::OnUpdateStatistics, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnVideoTimeUpdate, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnNaturalVideoSizeChanged, base::Unretained(this)),
|
| + base::Bind(&Pipeline::OnVideoRendererEnded, base::Unretained(this)),
|
| + base::Bind(&Pipeline::SetError, base::Unretained(this)),
|
| + base::Bind(&Pipeline::GetMediaTime, base::Unretained(this)),
|
| + base::Bind(&Pipeline::GetMediaDuration, base::Unretained(this)));
|
| }
|
|
|
| void Pipeline::OnAudioUnderflow() {
|
| if (!message_loop_->BelongsToCurrentThread()) {
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &Pipeline::OnAudioUnderflow, this));
|
| + &Pipeline::OnAudioUnderflow, base::Unretained(this)));
|
| return;
|
| }
|
|
|
|
|