Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1259)

Unified Diff: media/base/pipeline.cc

Issue 12262058: Revert r180578, r180591, and r180604 from 1410 branch. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1410/src/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/pipeline.h ('k') | media/base/pipeline_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/pipeline.cc
===================================================================
--- media/base/pipeline.cc (revision 182591)
+++ media/base/pipeline.cc (working copy)
@@ -523,12 +523,6 @@
}
}
-// Note that the usage of base::Unretained() with the audio/video renderers
-// in the following DoXXX() functions is considered safe as they are owned by
-// |pending_callbacks_| and share the same lifetime.
-//
-// That being said, deleting the renderers while keeping |pending_callbacks_|
-// running on the media thread would result in crashes.
void Pipeline::DoInitialPreroll(const PipelineStatusCB& done_cb) {
DCHECK(message_loop_->BelongsToCurrentThread());
DCHECK(!pending_callbacks_.get());
@@ -539,14 +533,12 @@
// Preroll renderers.
if (audio_renderer_) {
bound_fns.Push(base::Bind(
- &AudioRenderer::Preroll, base::Unretained(audio_renderer_.get()),
- seek_timestamp));
+ &AudioRenderer::Preroll, audio_renderer_, seek_timestamp));
}
if (video_renderer_) {
bound_fns.Push(base::Bind(
- &VideoRenderer::Preroll, base::Unretained(video_renderer_.get()),
- seek_timestamp));
+ &VideoRenderer::Preroll, video_renderer_, seek_timestamp));
}
pending_callbacks_ = SerialRunner::Run(bound_fns, done_cb);
@@ -560,24 +552,16 @@
SerialRunner::Queue bound_fns;
// Pause.
- if (audio_renderer_) {
- bound_fns.Push(base::Bind(
- &AudioRenderer::Pause, base::Unretained(audio_renderer_.get())));
- }
- if (video_renderer_) {
- bound_fns.Push(base::Bind(
- &VideoRenderer::Pause, base::Unretained(video_renderer_.get())));
- }
+ if (audio_renderer_)
+ bound_fns.Push(base::Bind(&AudioRenderer::Pause, audio_renderer_));
+ if (video_renderer_)
+ bound_fns.Push(base::Bind(&VideoRenderer::Pause, video_renderer_));
// Flush.
- if (audio_renderer_) {
- bound_fns.Push(base::Bind(
- &AudioRenderer::Flush, base::Unretained(audio_renderer_.get())));
- }
- if (video_renderer_) {
- bound_fns.Push(base::Bind(
- &VideoRenderer::Flush, base::Unretained(video_renderer_.get())));
- }
+ if (audio_renderer_)
+ bound_fns.Push(base::Bind(&AudioRenderer::Flush, audio_renderer_));
+ if (video_renderer_)
+ bound_fns.Push(base::Bind(&VideoRenderer::Flush, video_renderer_));
// Seek demuxer.
bound_fns.Push(base::Bind(
@@ -586,14 +570,12 @@
// Preroll renderers.
if (audio_renderer_) {
bound_fns.Push(base::Bind(
- &AudioRenderer::Preroll, base::Unretained(audio_renderer_.get()),
- seek_timestamp));
+ &AudioRenderer::Preroll, audio_renderer_, seek_timestamp));
}
if (video_renderer_) {
bound_fns.Push(base::Bind(
- &VideoRenderer::Preroll, base::Unretained(video_renderer_.get()),
- seek_timestamp));
+ &VideoRenderer::Preroll, video_renderer_, seek_timestamp));
}
pending_callbacks_ = SerialRunner::Run(bound_fns, done_cb);
@@ -607,15 +589,11 @@
PlaybackRateChangedTask(GetPlaybackRate());
VolumeChangedTask(GetVolume());
- if (audio_renderer_) {
- bound_fns.Push(base::Bind(
- &AudioRenderer::Play, base::Unretained(audio_renderer_.get())));
- }
+ if (audio_renderer_)
+ bound_fns.Push(base::Bind(&AudioRenderer::Play, audio_renderer_));
- if (video_renderer_) {
- bound_fns.Push(base::Bind(
- &VideoRenderer::Play, base::Unretained(video_renderer_.get())));
- }
+ if (video_renderer_)
+ bound_fns.Push(base::Bind(&VideoRenderer::Play, video_renderer_));
pending_callbacks_ = SerialRunner::Run(bound_fns, done_cb);
}
@@ -628,15 +606,11 @@
if (demuxer_)
bound_fns.Push(base::Bind(&Demuxer::Stop, demuxer_));
- if (audio_renderer_) {
- bound_fns.Push(base::Bind(
- &AudioRenderer::Stop, base::Unretained(audio_renderer_.get())));
- }
+ if (audio_renderer_)
+ bound_fns.Push(base::Bind(&AudioRenderer::Stop, audio_renderer_));
- if (video_renderer_) {
- bound_fns.Push(base::Bind(
- &VideoRenderer::Stop, base::Unretained(video_renderer_.get())));
- }
+ if (video_renderer_)
+ bound_fns.Push(base::Bind(&VideoRenderer::Stop, video_renderer_));
pending_callbacks_ = SerialRunner::Run(bound_fns, done_cb);
}
@@ -652,8 +626,8 @@
SetState(kStopped);
pending_callbacks_.reset();
filter_collection_.reset();
- audio_renderer_.reset();
- video_renderer_.reset();
+ audio_renderer_ = NULL;
+ video_renderer_ = NULL;
demuxer_ = NULL;
// If we stop during initialization/seeking we want to run |seek_cb_|
@@ -910,7 +884,7 @@
demuxer_->GetStream(DemuxerStream::AUDIO);
DCHECK(stream);
- audio_renderer_ = filter_collection_->GetAudioRenderer();
+ filter_collection_->SelectAudioRenderer(&audio_renderer_);
audio_renderer_->Initialize(
stream,
*filter_collection_->GetAudioDecoders(),
@@ -938,7 +912,7 @@
natural_size_ = stream->video_decoder_config().natural_size();
}
- video_renderer_ = filter_collection_->GetVideoRenderer();
+ filter_collection_->SelectVideoRenderer(&video_renderer_);
video_renderer_->Initialize(
stream,
*filter_collection_->GetVideoDecoders(),
« no previous file with comments | « media/base/pipeline.h ('k') | media/base/pipeline_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698