| Index: remoting/host/encoder.h
|
| ===================================================================
|
| --- remoting/host/encoder.h (revision 0)
|
| +++ remoting/host/encoder.h (revision 0)
|
| @@ -0,0 +1,63 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef REMOTING_HOST_ENCODER_H_
|
| +#define REMOTING_HOST_ENCODER_H_
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/task.h"
|
| +#include "remoting/base/protocol/chromotocol.pb.h"
|
| +#include "remoting/host/capturer.h"
|
| +
|
| +namespace media {
|
| +
|
| +class DataBuffer;
|
| +
|
| +} // namespace media
|
| +
|
| +namespace remoting {
|
| +
|
| +// A class to perform the task of encoding a continous stream of
|
| +// images.
|
| +// This class operates asynchronously to enable maximum throughput.
|
| +class Encoder {
|
| + public:
|
| + virtual ~Encoder() {}
|
| +
|
| + // Encode an image stored in |input_data|. |dirty_rects| contains
|
| + // regions of update since last encode.
|
| + //
|
| + // If |key_frame| is true, the encoder should not reference
|
| + // previous encode and encode the full frame.
|
| + //
|
| + // When encoded data is available, partial or full |data_available_task|
|
| + // is called, data can be read from |data| and size is |data_size|.
|
| + // After the last data available event and encode has completed,
|
| + // |encode_done| is set to true and |data_available_task| is deleted.
|
| + //
|
| + // Note that |input_data| and |stride| are arrays of 3 elements.
|
| + //
|
| + // Implementation has to ensure that when |data_available_task| is called
|
| + // output parameters are stable.
|
| + virtual void Encode(const DirtyRects& dirty_rects,
|
| + const uint8** input_data,
|
| + const int* strides,
|
| + bool key_frame,
|
| + chromotocol_pb::UpdateStreamPacketHeader* header,
|
| + scoped_refptr<media::DataBuffer>* output_data,
|
| + bool* encode_done,
|
| + Task* data_available_task) = 0;
|
| +
|
| + // Set the dimension of the incoming images. Need to call this before
|
| + // calling Encode().
|
| + virtual void SetSize(int width, int height) = 0;
|
| +
|
| + // Set the pixel format of the incoming images. Need to call this before
|
| + // calling Encode().
|
| + virtual void SetPixelFormat(chromotocol_pb::PixelFormat pixel_format) = 0;
|
| +};
|
| +
|
| +} // namespace remoting
|
| +
|
| +#endif // REMOTING_HOST_ENCODER_H_
|
|
|
| Property changes on: remoting/host/encoder.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|