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 |