1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This file contains the interface to I420 "codec" 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This is a dummy wrapper to allow VCM deal with raw I420 sequences 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_I420_CODEC_H_ 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_I420_CODEC_H_ 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19281cff8cd679728fe395f7f0203c05e763c0c789pbos@webrtc.org#include "webrtc/modules/video_coding/codecs/interface/video_codec_interface.h" 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass TbI420Encoder: public webrtc::VideoEncoder 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TbI420Encoder(); 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual ~TbI420Encoder(); 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2767879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t InitEncode(const webrtc::VideoCodec* codecSettings, 2867879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t numberOfCores, 296b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org uint32_t maxPayloadSize) OVERRIDE; 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3167879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t Encode( 323bbed74cdcf1f27ce82104ce645ec0dcdd36902dmikhal@webrtc.org const webrtc::I420VideoFrame& inputImage, 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const webrtc::CodecSpecificInfo* codecSpecificInfo, 346b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org const std::vector<webrtc::VideoFrameType>* frameTypes) OVERRIDE; 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3667879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t RegisterEncodeCompleteCallback( 376b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org webrtc::EncodedImageCallback* callback) OVERRIDE; 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 396b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t Release() OVERRIDE; 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 416b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t SetChannelParameters(uint32_t packetLoss, int rtt) OVERRIDE; 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 436b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) OVERRIDE; 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 456b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t SetPeriodicKeyFrames(bool enable) OVERRIDE; 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 4767879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t CodecConfigParameters(uint8_t* /*buffer*/, 486b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org int32_t /*size*/) OVERRIDE; 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org struct FunctionCalls 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 5267879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t InitEncode; 5367879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Encode; 5467879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t RegisterEncodeCompleteCallback; 5567879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Release; 5667879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Reset; 5767879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t SetChannelParameters; 5867879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t SetRates; 5967879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t SetPeriodicKeyFrames; 6067879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t CodecConfigParameters; 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org }; 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FunctionCalls GetFunctionCalls(); 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _inited; 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::EncodedImage _encodedImage; 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FunctionCalls _functionCalls; 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::EncodedImageCallback* _encodedCompleteCallback; 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; // end of tbI420Encoder class 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/***************************/ 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* tbI420Decoder class */ 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/***************************/ 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass TbI420Decoder: public webrtc::VideoDecoder 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TbI420Decoder(); 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual ~TbI420Decoder(); 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 8467879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t InitDecode(const webrtc::VideoCodec* inst, 856b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org int32_t numberOfCores) OVERRIDE; 8667879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org virtual int32_t Decode( 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const webrtc::EncodedImage& inputImage, 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool missingFrames, 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const webrtc::RTPFragmentationHeader* fragmentation, 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const webrtc::CodecSpecificInfo* codecSpecificInfo = NULL, 916b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org int64_t renderTimeMs = -1) OVERRIDE; 92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 936b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t RegisterDecodeCompleteCallback( 946b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org webrtc::DecodedImageCallback* callback) OVERRIDE; 956b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t Release() OVERRIDE; 966b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual int32_t Reset() OVERRIDE; 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org struct FunctionCalls 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 10067879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t InitDecode; 10167879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Decode; 10267879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t RegisterDecodeCompleteCallback; 10367879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Release; 10467879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t Reset; 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org }; 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FunctionCalls GetFunctionCalls(); 108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1113bbed74cdcf1f27ce82104ce645ec0dcdd36902dmikhal@webrtc.org webrtc::I420VideoFrame _decodedImage; 11267879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t _width; 11367879bc2e69d7907b7ceb92135a34f77fe643e7fpbos@webrtc.org int32_t _height; 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _inited; 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FunctionCalls _functionCalls; 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::DecodedImageCallback* _decodeCompleteCallback; 117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; // end of tbI420Decoder class 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_I420_CODEC_H_ 121