15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "media/filters/clockless_video_frame_scheduler.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/location.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/message_loop/message_loop_proxy.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "media/base/video_frame.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace media { 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuClocklessVideoFrameScheduler::ClocklessVideoFrameScheduler( 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const DisplayCB& display_cb) 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : display_cb_(display_cb) { 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuClocklessVideoFrameScheduler::~ClocklessVideoFrameScheduler() { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid ClocklessVideoFrameScheduler::ScheduleVideoFrame( 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const scoped_refptr<VideoFrame>& frame, 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::TimeTicks /* wall_ticks */, 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const DoneCB& done_cb) { 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu display_cb_.Run(frame); 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::MessageLoopProxy::current()->PostTask( 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu FROM_HERE, base::Bind(done_cb, frame, DISPLAYED)); 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid ClocklessVideoFrameScheduler::Reset() { 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace media 35