• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_
12 #define WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_
13 
14 #include <vector>
15 
16 #include "webrtc/base/scoped_ptr.h"
17 #include "webrtc/video_encoder.h"
18 
19 namespace webrtc {
20 namespace test {
21 
22 class ConfigurableFrameSizeEncoder : public VideoEncoder {
23  public:
24   explicit ConfigurableFrameSizeEncoder(size_t max_frame_size);
25   virtual ~ConfigurableFrameSizeEncoder();
26 
27   int32_t InitEncode(const VideoCodec* codec_settings,
28                      int32_t number_of_cores,
29                      size_t max_payload_size) override;
30 
31   int32_t Encode(const VideoFrame& input_image,
32                  const CodecSpecificInfo* codec_specific_info,
33                  const std::vector<FrameType>* frame_types) override;
34 
35   int32_t RegisterEncodeCompleteCallback(
36       EncodedImageCallback* callback) override;
37 
38   int32_t Release() override;
39 
40   int32_t SetChannelParameters(uint32_t packet_loss, int64_t rtt) override;
41 
42   int32_t SetRates(uint32_t new_bit_rate, uint32_t frame_rate) override;
43 
44   int32_t SetPeriodicKeyFrames(bool enable) override;
45 
46   int32_t SetFrameSize(size_t size);
47 
48  private:
49   EncodedImageCallback* callback_;
50   const size_t max_frame_size_;
51   size_t current_frame_size_;
52   rtc::scoped_ptr<uint8_t[]> buffer_;
53 };
54 
55 }  // namespace test
56 }  // namespace webrtc
57 
58 #endif  // WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_
59