15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/host/mouse_clamping_filter.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/proto/event.pb.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "remoting/proto/video.pb.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MouseClampingFilter::MouseClampingFilter( 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protocol::InputStub* input_stub) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : input_filter_(input_stub), 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) video_stub_(NULL) { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MouseClampingFilter::~MouseClampingFilter() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MouseClampingFilter::ProcessVideoPacket( 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<VideoPacket> video_packet, 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Closure& done) { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Configure the MouseInputFilter to clamp to the video dimensions. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (video_packet->format().has_screen_width() && 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) video_packet->format().has_screen_height()) { 27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) webrtc::DesktopSize screen_size = 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) webrtc::DesktopSize(video_packet->format().screen_width(), 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) video_packet->format().screen_height()); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) input_filter_.set_input_size(screen_size); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) input_filter_.set_output_size(screen_size); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) video_stub_->ProcessVideoPacket(video_packet.Pass(), done); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace remoting 38