18b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org/* 28b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 38b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * 48b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * Use of this source code is governed by a BSD-style license 58b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * that can be found in the LICENSE file in the root of the source 68b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * tree. An additional intellectual property rights grant can be found 78b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * in the file PATENTS. All contributing project authors may 88b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org * be found in the AUTHORS file in the root of the source tree. 98b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org */ 108b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 118b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org#ifndef WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_ 128b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org#define WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_ 138b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 148b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org#include <vector> 158b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 1600b8f6b3643332cce1ee711715f7fbb824d793cakwiberg@webrtc.org#include "webrtc/base/scoped_ptr.h" 17ab990ae43a2b84b103cb3c50bc38502375c13e68pbos@webrtc.org#include "webrtc/video_encoder.h" 188b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 198b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.orgnamespace webrtc { 208b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.orgnamespace test { 218b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 228b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.orgclass ConfigurableFrameSizeEncoder : public VideoEncoder { 238b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org public: 244591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org explicit ConfigurableFrameSizeEncoder(size_t max_frame_size); 258b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org virtual ~ConfigurableFrameSizeEncoder(); 268b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 2714665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t InitEncode(const VideoCodec* codec_settings, 2814665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t number_of_cores, 2914665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org size_t max_payload_size) override; 308b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 314765070b8d6f024509c717c04d9b708750666927Miguel Casas-Sanchez int32_t Encode(const VideoFrame& input_image, 3214665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org const CodecSpecificInfo* codec_specific_info, 3322993e1a0c114122fc1b9de0fc74d4096ec868bdpbos const std::vector<FrameType>* frame_types) override; 348b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 3514665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t RegisterEncodeCompleteCallback( 3614665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org EncodedImageCallback* callback) override; 378b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 3814665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t Release() override; 398b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 4014665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t SetChannelParameters(uint32_t packet_loss, int64_t rtt) override; 418b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 4214665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t SetRates(uint32_t new_bit_rate, uint32_t frame_rate) override; 438b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 4414665ff7d4024d07e58622f498b23fd980001871kjellander@webrtc.org int32_t SetPeriodicKeyFrames(bool enable) override; 458b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 464591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org int32_t SetFrameSize(size_t size); 478b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 488b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org private: 498b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org EncodedImageCallback* callback_; 504591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t max_frame_size_; 514591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t current_frame_size_; 5200b8f6b3643332cce1ee711715f7fbb824d793cakwiberg@webrtc.org rtc::scoped_ptr<uint8_t[]> buffer_; 538b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org}; 548b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 558b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org} // namespace test 568b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org} // namespace webrtc 578b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org 588b8819262f4ec2333656aa6eb0b76e7a893b683asprang@webrtc.org#endif // WEBRTC_TEST_CONFIGURABLE_FRAME_SIZE_ENCODER_H_ 59