| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 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 #ifndef REMOTING_BASE_ENCODER_H_ | |
| 6 #define REMOTING_BASE_ENCODER_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/callback.h" | |
| 10 #include "media/base/data_buffer.h" | |
| 11 | |
| 12 namespace media { | |
| 13 class DataBuffer; | |
| 14 } | |
| 15 | |
| 16 namespace remoting { | |
| 17 | |
| 18 class CaptureData; | |
| 19 class VideoPacket; | |
| 20 | |
| 21 // A class to perform the task of encoding a continous stream of | |
| 22 // images. | |
| 23 // This class operates asynchronously to enable maximum throughput. | |
| 24 class Encoder { | |
| 25 public: | |
| 26 | |
| 27 // DataAvailableCallback is called as blocks of data are made available | |
| 28 // from the encoder. Data made available by the encoder is in the form | |
| 29 // of HostMessage to reduce the amount of memory copies. | |
| 30 typedef base::Callback<void(scoped_ptr<VideoPacket>)> DataAvailableCallback; | |
| 31 | |
| 32 virtual ~Encoder() {} | |
| 33 | |
| 34 // Encode an image stored in |capture_data|. | |
| 35 // | |
| 36 // If |key_frame| is true, the encoder should not reference | |
| 37 // previous encode and encode the full frame. | |
| 38 // | |
| 39 // When encoded data is available, partial or full |data_available_callback| | |
| 40 // is called. | |
| 41 virtual void Encode(scoped_refptr<CaptureData> capture_data, | |
| 42 bool key_frame, | |
| 43 const DataAvailableCallback& data_available_callback) = 0; | |
| 44 }; | |
| 45 | |
| 46 } // namespace remoting | |
| 47 | |
| 48 #endif // REMOTING_BASE_ENCODER_H_ | |
| OLD | NEW |