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

Unified Diff: media/tools/player_x11/player_x11.cc

Issue 14371023: Remove reference counting from media::Pipeline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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
Index: media/tools/player_x11/player_x11.cc
diff --git a/media/tools/player_x11/player_x11.cc b/media/tools/player_x11/player_x11.cc
index de45880dc9ef5d8ede2fd06a2498b4b5dedb9e0e..9b6faa55f3fb7fff9656f4e21bbf9aadc0153f20 100644
--- a/media/tools/player_x11/player_x11.cc
+++ b/media/tools/player_x11/player_x11.cc
@@ -101,11 +101,11 @@ static void NeedKey(const std::string& type, scoped_ptr<uint8[]> init_data,
}
// TODO(vrk): Re-enabled audio. (crbug.com/112159)
-bool InitPipeline(const scoped_refptr<base::MessageLoopProxy>& message_loop,
+void InitPipeline(media::Pipeline* pipeline,
+ const scoped_refptr<base::MessageLoopProxy>& message_loop,
media::Demuxer* demuxer,
const PaintCB& paint_cb,
bool /* enable_audio */,
- scoped_refptr<media::Pipeline>* pipeline,
base::MessageLoop* paint_message_loop) {
// Create our filter factories.
scoped_ptr<media::FilterCollection> collection(
@@ -133,23 +133,18 @@ bool InitPipeline(const scoped_refptr<base::MessageLoopProxy>& message_loop,
collection->SetAudioRenderer(audio_renderer.Pass());
// Create the pipeline and start it.
- *pipeline = new media::Pipeline(message_loop, new media::MediaLog());
media::PipelineStatusNotification note;
- (*pipeline)->Start(
+ pipeline->Start(
collection.Pass(), base::Closure(), media::PipelineStatusCB(),
note.Callback(), base::Bind(&OnBufferingState), base::Closure());
// Wait until the pipeline is fully initialized.
note.Wait();
- if (note.status() != media::PIPELINE_OK) {
- std::cout << "InitPipeline: " << note.status() << std::endl;
- (*pipeline)->Stop(base::Closure());
- return false;
- }
+ CHECK_EQ(note.status(), media::PIPELINE_OK)
+ << "Pipeline initialization failed";
// And start the playback.
- (*pipeline)->SetPlaybackRate(1.0f);
- return true;
+ pipeline->SetPlaybackRate(1.0f);
}
void TerminateHandler(int signal) {
@@ -214,7 +209,7 @@ void PeriodicalUpdate(
message_loop->PostDelayedTask(
FROM_HERE,
base::Bind(&PeriodicalUpdate,
- make_scoped_refptr(pipeline),
+ base::Unretained(pipeline),
message_loop,
audio_only),
base::TimeDelta::FromMilliseconds(10));
@@ -264,7 +259,6 @@ int main(int argc, char** argv) {
base::MessageLoop message_loop;
base::Thread media_thread("MediaThread");
media_thread.Start();
- scoped_refptr<media::Pipeline> pipeline;
PaintCB paint_cb;
if (command_line->HasSwitch("use-gl")) {
@@ -281,18 +275,17 @@ int main(int argc, char** argv) {
scoped_ptr<media::Demuxer> demuxer(new media::FFmpegDemuxer(
media_thread.message_loop_proxy(), data_source, base::Bind(&NeedKey)));
- if (InitPipeline(media_thread.message_loop_proxy(), demuxer.get(),
- paint_cb, command_line->HasSwitch("audio"),
- &pipeline, &message_loop)) {
- // Main loop of the application.
- g_running = true;
-
- message_loop.PostTask(FROM_HERE, base::Bind(
- &PeriodicalUpdate, pipeline, &message_loop, !pipeline->HasVideo()));
- message_loop.Run();
- } else {
- std::cout << "Pipeline initialization failed..." << std::endl;
- }
+ media::Pipeline pipeline(media_thread.message_loop_proxy(),
+ new media::MediaLog());
+ InitPipeline(&pipeline, media_thread.message_loop_proxy(), demuxer.get(),
+ paint_cb, command_line->HasSwitch("audio"), &message_loop);
+ // Main loop of the application.
+ g_running = true;
+
+ message_loop.PostTask(FROM_HERE, base::Bind(
+ &PeriodicalUpdate, base::Unretained(&pipeline), &message_loop,
+ !pipeline.HasVideo()));
+ message_loop.Run();
// Cleanup tasks.
media_thread.Stop();

Powered by Google App Engine
This is Rietveld 408576698