1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "remoting/protocol/monitored_video_stub.h" 6 7#include "base/bind.h" 8#include "base/logging.h" 9#include "remoting/codec/video_decoder.h" 10#include "remoting/codec/video_decoder_verbatim.h" 11#include "remoting/codec/video_decoder_vpx.h" 12 13namespace remoting { 14namespace protocol { 15 16MonitoredVideoStub::MonitoredVideoStub(VideoStub* video_stub, 17 base::TimeDelta connectivity_check_delay, 18 const ChannelStateCallback& callback) 19 : video_stub_(video_stub), 20 callback_(callback), 21 is_connected_(false), 22 connectivity_check_timer_( 23 FROM_HERE, 24 connectivity_check_delay, 25 this, 26 &MonitoredVideoStub::OnConnectivityCheckTimeout) { 27} 28 29MonitoredVideoStub::~MonitoredVideoStub() { 30} 31 32void MonitoredVideoStub::ProcessVideoPacket(scoped_ptr<VideoPacket> packet, 33 const base::Closure& done) { 34 DCHECK(thread_checker_.CalledOnValidThread()); 35 36 connectivity_check_timer_.Reset(); 37 38 NotifyChannelState(true); 39 40 video_stub_->ProcessVideoPacket(packet.Pass(), done); 41} 42 43void MonitoredVideoStub::OnConnectivityCheckTimeout() { 44 DCHECK(thread_checker_.CalledOnValidThread()); 45 NotifyChannelState(false); 46} 47 48void MonitoredVideoStub::NotifyChannelState(bool connected) { 49 if (is_connected_ != connected) { 50 is_connected_ = connected; 51 callback_.Run(is_connected_); 52 } 53} 54 55} // namespace protocol 56} // namespace remoting 57