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

Unified Diff: media/base/filter_host_impl.h

Issue 149215: Big media::Pipeline cleanup. (Closed)
Patch Set: Test Created 11 years, 5 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/filter_host.h ('k') | media/base/filter_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/filter_host_impl.h
diff --git a/media/base/filter_host_impl.h b/media/base/filter_host_impl.h
index 4ae92609f7dcbb61380ca6e8c9355ff3e09b7c3a..1fcb0c4f50d34a400f5d8fb65ebc93b66f2690c6 100644
--- a/media/base/filter_host_impl.h
+++ b/media/base/filter_host_impl.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2008-2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -16,11 +16,9 @@ namespace media {
class FilterHostImpl : public FilterHost {
public:
// FilterHost interface.
- virtual const PipelineStatus* GetPipelineStatus() const;
- virtual void SetTimeUpdateCallback(Callback1<base::TimeDelta>::Type* cb);
- virtual void ScheduleTimeUpdateCallback(base::TimeDelta time);
virtual void InitializationComplete();
virtual void Error(PipelineError error);
+ virtual base::TimeDelta GetTime() const;
virtual void SetTime(base::TimeDelta time);
virtual void SetDuration(base::TimeDelta duration);
virtual void SetBufferedTime(base::TimeDelta buffered_time);
@@ -31,7 +29,7 @@ class FilterHostImpl : public FilterHost {
// These methods are public, but are intended for use by the
// PipelineThread class only.
- // Creates a FilterHostImpl object and populates the filter_type_ member
+ // Creates a FilterHostImpl object and populates the |filter_type_| member
// by calling the Filter class's static filter_type() method. This ensures
// that the GetFilter method can safely cast the filter interface from the
// MediaFilter base class interface to the specific Filter interface.
@@ -40,12 +38,11 @@ class FilterHostImpl : public FilterHost {
: pipeline_thread_(pipeline_thread),
filter_type_(Filter::filter_type()),
filter_(filter),
- scheduled_time_update_task_(NULL),
stopped_(false) {
}
~FilterHostImpl() {}
- // If this FilterHost contains a filter of the specifed Filter class, then
+ // If this FilterHost contains a filter of the specified Filter class, then
// this method returns a pointer to the interface, otherwise it returns NULL
// in |*filter_out|.
template <class Filter>
@@ -54,10 +51,6 @@ class FilterHostImpl : public FilterHost {
reinterpret_cast<Filter*>(media_filter()) : NULL;
}
- // Call the filter if it has registered a time update callback if the filter
- // has registered one though the FilterHost::SetTimeUpdateCallback method.
- void RunTimeUpdateCallback(base::TimeDelta time);
-
// Stops the filter.
void Stop();
@@ -65,49 +58,6 @@ class FilterHostImpl : public FilterHost {
MediaFilter* media_filter() const { return filter_; }
private:
- // This task class is used to schedule a time update callback for the filter.
- // Because a filter may call the ScheduleTimeUpdateCallback method from any
- // thread, and becuase we only want to honor the last call to that method,
- // we always have only one current task.
- // We are required to keep a pointer to the host and a boolean that tells
- // us if the task was canceled because the cancelation could happen on one
- // thread, just as the pipeline thread is calling the Run method on this task.
- // So, we can't just NULL out the host_ to cancel this because it could
- // fault. Once we have called the host, it needs to enter it's critical
- // section and make sure that the task that has Run is, in fact, the last one
- // that was scheduled.
- // In the case where the filter host is Stopping (or being destroyed), it will
- // be guaranteed to happen on the pipeline thread, thus making the setting
- // of the |canceled_| bool thread safe since the task would only execute on
- // the pipeline thread. This means that it could be possible for a task to
- // hold a pointer to a |host_| that has been deleted, but it will never access
- // that pointer because the task was canceled.
- class TimeUpdateTask : public CancelableTask {
- public:
- explicit TimeUpdateTask(FilterHostImpl* host)
- : host_(host),
- canceled_(false) {}
-
- virtual void Run() {
- if (!canceled_) {
- host_->RunScheduledTimeUpdateCallback(this);
- }
- }
-
- virtual void Cancel() {
- canceled_ = true;
- }
-
- private:
- FilterHostImpl* const host_;
- bool canceled_;
-
- DISALLOW_COPY_AND_ASSIGN(TimeUpdateTask);
- };
-
- // Method used by the TimeUpdateTask to call back to the filter.
- void RunScheduledTimeUpdateCallback(TimeUpdateTask* caller);
-
// Useful method for getting the pipeline.
PipelineImpl* pipeline() const { return pipeline_thread_->pipeline(); }
@@ -120,15 +70,9 @@ class FilterHostImpl : public FilterHost {
// A pointer to the filter's MediaFilter base interface.
scoped_refptr<MediaFilter> filter_;
- // An optional callback that will be called when the time is updated.
- scoped_ptr<Callback1<base::TimeDelta>::Type> time_update_callback_;
-
// Critical section used for scheduled time update callbacks.
Lock time_update_lock_;
- // Pointer to the current time update callback task.
- TimeUpdateTask* scheduled_time_update_task_;
-
// Used to avoid calling Filter's Stop() method multiple times.
bool stopped_;
« no previous file with comments | « media/base/filter_host.h ('k') | media/base/filter_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698