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)#ifndef REMOTING_CODEC_VIDEO_ENCODER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define REMOTING_CODEC_VIDEO_ENCODER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace webrtc { 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class DesktopFrame; 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace webrtc 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VideoPacket; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// A class to perform the task of encoding a continuous stream of images. The 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// interface is asynchronous to enable maximum throughput. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VideoEncoder { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~VideoEncoder() {} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Request that the encoder provide lossless encoding, or color, if possible. 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetLosslessEncode(bool want_lossless) {} 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetLosslessColor(bool want_lossless) {} 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Encode an image stored in |frame|. 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual scoped_ptr<VideoPacket> Encode(const webrtc::DesktopFrame& frame) = 0; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace remoting 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // REMOTING_CODEC_VIDEO_ENCODER_H_ 35