| Index: media/filters/video_frame_scheduler_proxy.cc
|
| diff --git a/media/filters/video_frame_scheduler_proxy.cc b/media/filters/video_frame_scheduler_proxy.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7499dc38d2fe1ca74a63b06a2b69a9c880e0db16
|
| --- /dev/null
|
| +++ b/media/filters/video_frame_scheduler_proxy.cc
|
| @@ -0,0 +1,47 @@
|
| +// Copyright 2014 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.
|
| +
|
| +#include "media/filters/video_frame_scheduler_proxy.h"
|
| +
|
| +#include "base/single_thread_task_runner.h"
|
| +#include "media/base/bind_to_current_loop.h"
|
| +#include "media/base/video_frame.h"
|
| +
|
| +namespace media {
|
| +
|
| +VideoFrameSchedulerProxy::VideoFrameSchedulerProxy(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& scheduler_runner,
|
| + VideoFrameScheduler* scheduler)
|
| + : task_runner_(task_runner),
|
| + scheduler_runner_(scheduler_runner),
|
| + scheduler_(scheduler),
|
| + weak_factory_(this) {
|
| +}
|
| +
|
| +VideoFrameSchedulerProxy::~VideoFrameSchedulerProxy() {
|
| +}
|
| +
|
| +void VideoFrameSchedulerProxy::ScheduleVideoFrame(
|
| + const scoped_refptr<VideoFrame>& frame,
|
| + base::TimeTicks wall_ticks,
|
| + const DoneCB& done_cb) {
|
| + DCHECK(task_runner_->BelongsToCurrentThread());
|
| + scheduler_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&VideoFrameScheduler::ScheduleVideoFrame,
|
| + base::Unretained(scheduler_),
|
| + frame,
|
| + wall_ticks,
|
| + BindToCurrentLoop(done_cb)));
|
| +}
|
| +
|
| +void VideoFrameSchedulerProxy::Reset() {
|
| + DCHECK(task_runner_->BelongsToCurrentThread());
|
| + scheduler_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&VideoFrameScheduler::Reset, base::Unretained(scheduler_)));
|
| +}
|
| +
|
| +} // namespace media
|
|
|