182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON/* 282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Copyright (c) 2009-2011 Intel Corporation. All rights reserved. 382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Licensed under the Apache License, Version 2.0 (the "License"); 582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* you may not use this file except in compliance with the License. 682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* You may obtain a copy of the License at 782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* http://www.apache.org/licenses/LICENSE-2.0 982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 1082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Unless required by applicable law or agreed to in writing, software 1182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* distributed under the License is distributed on an "AS IS" BASIS, 1282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* See the License for the specific language governing permissions and 1482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* limitations under the License. 1582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON*/ 1682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 1782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifndef __VIDEO_ENCODER_DEF_H__ 1882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define __VIDEO_ENCODER_DEF_H__ 1982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <stdint.h> 2182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define STRING_TO_FOURCC(format) ((uint32_t)(((format)[0])|((format)[1]<<8)|((format)[2]<<16)|((format)[3]<<24))) 2382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef int32_t Encode_Status; 2582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON// Video encode error code 2782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONenum { 2882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_INVALID_SURFACE = -11, 2982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NO_REQUEST_DATA = -10, 3082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_WRONG_STATE = -9, 3182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NOTIMPL = -8, 3282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NO_MEMORY = -7, 3382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NOT_INIT = -6, 3482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_DRIVER_FAIL = -5, 3582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_INVALID_PARAMS = -4, 3682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NOT_SUPPORTED = -3, 3782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_NULL_PTR = -2, 3882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_FAIL = -1, 3982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_SUCCESS = 0, 4082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_ALREADY_INIT = 1, 4182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_SLICESIZE_OVERFLOW = 2, 4282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_BUFFER_TOO_SMALL = 3, // The buffer passed to encode is too small to contain encoded data 4382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_DEVICE_BUSY = 4, 4482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ENCODE_DATA_NOT_READY = 5, 4582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 4682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 4782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 4882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_EVERYTHING = 0, //Output whatever driver generates 4982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_CODEC_DATA = 1, 5082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_FRAME_DATA = 2, //Equal to OUTPUT_EVERYTHING when no header along with the frame data 5182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_ONE_NAL = 4, 5282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_ONE_NAL_WITHOUT_STARTCODE = 8, 5382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_LENGTH_PREFIXED = 16, 5482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_CODEDBUFFER = 32, 5582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_NALULENGTHS_PREFIXED = 64, 5682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON OUTPUT_BUFFER_LAST 5782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoOutputFormat; 5882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 5982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 6082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_NONE = 0, 6182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_YUV420 = 1, 6282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_YUV422 = 2, 6382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_YUV444 = 4, 6482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_NV12 = 8, 6582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_RGBA = 16, 6682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_OPAQUE = 32, 6782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_PROTECTED = 0x80000000, 6882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RAW_FORMAT_LAST 6982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoRawFormat; 7082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 7282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RATE_CONTROL_NONE = 1, 7382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RATE_CONTROL_CBR = 2, 7482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RATE_CONTROL_VBR = 4, 7582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RATE_CONTROL_VCM = 8, 7682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON RATE_CONTROL_LAST 7782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoRateControl; 7882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 8082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_MPEG2SIMPLE = 0, 8182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_MPEG2MAIN, 8282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_MPEG4SIMPLE, 8382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_MPEG4ADVANCEDSIMPLE, 8482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_MPEG4MAIN, 8582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_H264BASELINE, 8682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_H264MAIN, 8782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_H264HIGH, 8882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_VC1SIMPLE, 8982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_VC1MAIN, 9082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_VC1ADVANCED, 9182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON PROFILE_H263BASELINE 9282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoProfile; 9382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 9482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 9582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AVC_DELIMITER_LENGTHPREFIX = 0, 9682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AVC_DELIMITER_ANNEXB 9782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} AVCDelimiterType; 9882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 9982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 10082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VIDEO_ENC_NONIR, // Non intra refresh 10182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VIDEO_ENC_CIR, // Cyclic intra refresh 10282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VIDEO_ENC_AIR, // Adaptive intra refresh 10382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VIDEO_ENC_BOTH, 10482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VIDEO_ENC_LAST 10582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoIntraRefreshType; 10682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 10782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONenum VideoBufferSharingMode { 10882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_NONE = 1, //Means non shared buffer mode 10982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_CI = 2, 11082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_V4L2 = 4, 11182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_SURFACE = 8, 11282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_USRPTR = 16, 11382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_GFXHANDLE = 32, 11482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_SHARING_KBUFHANDLE = 64, 11582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON BUFFER_LAST 11682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 11782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 11882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 11982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_UNKNOWN = 0, // Unknown 12082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_I = 1, // General I-frame type 12182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_P = 2, // General P-frame type 12282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_B = 3, // General B-frame type 12382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_SI = 4, // H.263 SI-frame type 12482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_SP = 5, // H.263 SP-frame type 12582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_EI = 6, // H.264 EI-frame type 12682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_EP = 7, // H.264 EP-frame type 12782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_S = 8, // MPEG-4 S-frame type 12882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FTYPE_IDR = 9, // IDR-frame type 12982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}FrameType; 13082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON//function call mode 13282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define FUNC_BLOCK 0xFFFFFFFF 13382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define FUNC_NONBLOCK 0 13482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON// Output buffer flag 13682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_ENDOFFRAME 0x00000001 13782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_PARTIALFRAME 0x00000002 13882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_SYNCFRAME 0x00000004 13982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_CODECCONFIG 0x00000008 14082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_DATACORRUPT 0x00000010 14182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_DATAINVALID 0x00000020 14282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_SLICEOVERFOLOW 0x00000040 14382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_ENDOFSTREAM 0x00000080 14482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define ENCODE_BUFFERFLAG_NSTOPFRAME 0x00000100 14582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 14682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef struct { 14782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t *data; 14882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t bufferSize; //buffer size 14982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t dataSize; //actual size 15082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t offset; //buffer offset 15182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t remainingSize; 15282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int flag; //Key frame, Codec Data etc 15382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoOutputFormat format; //output format 15482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int64_t timeStamp; //reserved 15582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FrameType type; 15682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void *priv; //indicate corresponding input data 15782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoEncOutputBuffer; 15882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 15982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef struct { 16082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t *data; 16182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t size; 16282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bufAvailable; //To indicate whether this buffer can be reused 16382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int64_t timeStamp; //reserved 16482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON FrameType type; //frame type expected to be encoded 16582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int flag; // flag to indicate buffer property 16682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void *priv; //indicate corresponding input data 16782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} VideoEncRawBuffer; 16882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 16982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoEncSurfaceBuffer { 17082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VASurfaceID surface; 17182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t *usrptr; 17282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t index; 17382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bufAvailable; 17482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoEncSurfaceBuffer *next; 17582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 17682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 17782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct CirParams { 17882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t cir_num_mbs; 17982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 18082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON CirParams &operator=(const CirParams &other) { 18182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 18282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 18382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->cir_num_mbs = other.cir_num_mbs; 18482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 18582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 18682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 18782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 18882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct AirParams { 18982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t airMBs; 19082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t airThreshold; 19182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t airAuto; 19282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 19382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AirParams &operator=(const AirParams &other) { 19482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 19582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 19682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->airMBs= other.airMBs; 19782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->airThreshold= other.airThreshold; 19882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->airAuto = other.airAuto; 19982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 20082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 20182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 20282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 20382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoFrameRate { 20482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t frameRateNum; 20582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t frameRateDenom; 20682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 20782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoFrameRate &operator=(const VideoFrameRate &other) { 20882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 20982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 21082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->frameRateNum = other.frameRateNum; 21182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->frameRateDenom = other.frameRateDenom; 21282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 21382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 21482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 21582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 21682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoResolution { 21782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t width; 21882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t height; 21982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 22082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoResolution &operator=(const VideoResolution &other) { 22182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 22282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 22382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->width = other.width; 22482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->height = other.height; 22582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 22682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 22782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 22882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 22982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoRateControlParams { 23082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t bitRate; 23182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t initQP; 23282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t minQP; 23382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t maxQP; 23482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t I_minQP; 23582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t I_maxQP; 23682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t windowSize; 23782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t targetPercentage; 23882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t disableFrameSkip; 23982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t disableBitsStuffing; 24082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t enableIntraFrameQPControl; 24182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t temporalFrameRate; 24282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t temporalID; 24382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 24482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoRateControlParams &operator=(const VideoRateControlParams &other) { 24582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 24682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 24782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bitRate = other.bitRate; 24882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->initQP = other.initQP; 24982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->minQP = other.minQP; 25082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->maxQP = other.maxQP; 25182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->I_minQP = other.I_minQP; 25282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->I_maxQP = other.I_maxQP; 25382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->windowSize = other.windowSize; 25482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->targetPercentage = other.targetPercentage; 25582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->disableFrameSkip = other.disableFrameSkip; 25682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->disableBitsStuffing = other.disableBitsStuffing; 25782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->enableIntraFrameQPControl = other.enableIntraFrameQPControl; 25882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->temporalFrameRate = other.temporalFrameRate; 25982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->temporalID = other.temporalID; 26082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 26182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 26282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 26382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 26482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 26582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct SliceNum { 26682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t iSliceNum; 26782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t pSliceNum; 26882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 26982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON SliceNum &operator=(const SliceNum &other) { 27082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 27182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 27282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->iSliceNum = other.iSliceNum; 27382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->pSliceNum= other.pSliceNum; 27482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 27582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 27682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 27782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 27882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef struct { 27982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t realWidth; 28082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t realHeight; 28182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t lumaStride; 28282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t chromStride; 28382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t format; 28482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON} ExternalBufferAttrib; 28582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 28682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct Cropping { 28782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t LeftOffset; 28882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t RightOffset; 28982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t TopOffset; 29082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t BottomOffset; 29182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 29282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Cropping &operator=(const Cropping &other) { 29382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 29482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 29582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->LeftOffset = other.LeftOffset; 29682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->RightOffset = other.RightOffset; 29782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->TopOffset = other.TopOffset; 29882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->BottomOffset = other.BottomOffset; 29982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 30082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 30182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 30282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 30382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct SamplingAspectRatio { 30482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint16_t SarWidth; 30582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint16_t SarHeight; 30682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 30782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON SamplingAspectRatio &operator=(const SamplingAspectRatio &other) { 30882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 30982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 31082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->SarWidth = other.SarWidth; 31182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->SarHeight = other.SarHeight; 31282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 31382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 31482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 31582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 31682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONenum VideoParamConfigType { 31782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeStartUnused = 0x01000000, 31882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeCommon, 31982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeAVC, 32082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeH263, 32182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeMP4, 32282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeVC1, 32382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeUpSteamBuffer, 32482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeUsrptrBuffer, 32582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeHRD, 32682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeStoreMetaDataInBuffers, 32782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeProfileLevel, 32882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeVP8, 32982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTypeTemporalLayer, 33082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 33182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeFrameRate, 33282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeBitRate, 33382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeResolution, 33482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeIntraRefreshType, 33582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeAIR, 33682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeCyclicFrameInterval, 33782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeAVCIntraPeriod, 33882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeNALSize, 33982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeIDRRequest, 34082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeSliceNum, 34182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeVP8, 34282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeVP8ReferenceFrame, 34382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeCIR, 34482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeVP8MaxFrameSizeRatio, 34582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTypeTemperalLayerBitrateFramerate, 34682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 34782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsConfigExtension 34882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 34982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 35082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamConfigSet { 35182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamConfigType type; 35282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t size; 35382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 35482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamConfigSet &operator=(const VideoParamConfigSet &other) { 35582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 35682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->type = other.type; 35782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->size = other.size; 35882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 35982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 36082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 36182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 36282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsCommon : VideoParamConfigSet { 36382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 36482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VAProfile profile; 36582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t level; 36682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoRawFormat rawFormat; 36782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoResolution resolution; 36882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoFrameRate frameRate; 36982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t intraPeriod; 37082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoRateControl rcMode; 37182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoRateControlParams rcParams; 37282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoIntraRefreshType refreshType; 37382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t cyclicFrameInterval; 37482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AirParams airParams; 37582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON CirParams cirParams; 37682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t disableDeblocking; 37782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool syncEncMode; 37882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //CodedBuffer properties 37982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t codedBufNum; 38082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t numberOfLayer; 38182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t nPeriodicity; 38282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t nLayerID[32]; 38382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 38482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsCommon() { 38582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeCommon; 38682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsCommon); 38782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 38882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 38982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsCommon &operator=(const VideoParamsCommon &other) { 39082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 39182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 39282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamConfigSet::operator=(other); 39382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->profile = other.profile; 39482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->level = other.level; 39582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->rawFormat = other.rawFormat; 39682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->resolution = other.resolution; 39782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->frameRate = other.frameRate; 39882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->intraPeriod = other.intraPeriod; 39982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->rcMode = other.rcMode; 40082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->rcParams = other.rcParams; 40182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->refreshType = other.refreshType; 40282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->cyclicFrameInterval = other.cyclicFrameInterval; 40382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->airParams = other.airParams; 40482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->disableDeblocking = other.disableDeblocking; 40582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->syncEncMode = other.syncEncMode; 40682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->codedBufNum = other.codedBufNum; 40782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->numberOfLayer = other.numberOfLayer; 40882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 40982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 41082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 41182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 41282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsAVC : VideoParamConfigSet { 41382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t basicUnitSize; //for rate control 41482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t VUIFlag; 41582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t maxSliceSize; 41682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t idrInterval; 41782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t ipPeriod; 41882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refFrames; 41982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON SliceNum sliceNum; 42082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AVCDelimiterType delimiterType; 42182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Cropping crop; 42282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON SamplingAspectRatio SAR; 42382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refIdx10ActiveMinus1; 42482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refIdx11ActiveMinus1; 42582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bFrameMBsOnly; 42682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bMBAFF; 42782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bEntropyCodingCABAC; 42882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bWeightedPPrediction; 42982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t weightedBipredicitonMode; 43082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bConstIpred ; 43182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bDirect8x8Inference; 43282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool bDirectSpatialTemporal; 43382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t cabacInitIdc; 43482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 43582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsAVC() { 43682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeAVC; 43782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsAVC); 43882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 43982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 44082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsAVC &operator=(const VideoParamsAVC &other) { 44182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON if (this == &other) return *this; 44282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 44382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamConfigSet::operator=(other); 44482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->basicUnitSize = other.basicUnitSize; 44582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->VUIFlag = other.VUIFlag; 44682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->maxSliceSize = other.maxSliceSize; 44782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->idrInterval = other.idrInterval; 44882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->ipPeriod = other.ipPeriod; 44982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->refFrames = other.refFrames; 45082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->sliceNum = other.sliceNum; 45182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->delimiterType = other.delimiterType; 45282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->crop.LeftOffset = other.crop.LeftOffset; 45382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->crop.RightOffset = other.crop.RightOffset; 45482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->crop.TopOffset = other.crop.TopOffset; 45582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->crop.BottomOffset = other.crop.BottomOffset; 45682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->SAR.SarWidth = other.SAR.SarWidth; 45782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->SAR.SarHeight = other.SAR.SarHeight; 45882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 45982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->refIdx10ActiveMinus1 = other.refIdx10ActiveMinus1; 46082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->refIdx11ActiveMinus1 = other.refIdx11ActiveMinus1; 46182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bFrameMBsOnly = other.bFrameMBsOnly; 46282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bMBAFF = other.bMBAFF; 46382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bEntropyCodingCABAC = other.bEntropyCodingCABAC; 46482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bWeightedPPrediction = other.bWeightedPPrediction; 46582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->weightedBipredicitonMode = other.weightedBipredicitonMode; 46682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bConstIpred = other.bConstIpred; 46782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bDirect8x8Inference = other.bDirect8x8Inference; 46882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->bDirectSpatialTemporal = other.bDirectSpatialTemporal; 46982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON this->cabacInitIdc = other.cabacInitIdc; 47082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON return *this; 47182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 47282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 47382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 47482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsUpstreamBuffer : VideoParamConfigSet { 47582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 47682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsUpstreamBuffer() { 47782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeUpSteamBuffer; 47882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsUpstreamBuffer); 47982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 48082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 48182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoBufferSharingMode bufferMode; 48282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t *bufList; 48382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t bufCnt; 48482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ExternalBufferAttrib *bufAttrib; 48582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void *display; 48682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 48782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 48882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsUsrptrBuffer : VideoParamConfigSet { 48982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 49082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsUsrptrBuffer() { 49182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeUsrptrBuffer; 49282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsUsrptrBuffer); 49382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 49482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 49582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //input 49682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t width; 49782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t height; 49882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t format; 49982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t expectedSize; 50082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 50182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //output 50282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t actualSize; 50382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t stride; 50482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t *usrPtr; 50582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 50682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 50782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsHRD : VideoParamConfigSet { 50882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 50982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsHRD() { 51082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeHRD; 51182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsHRD); 51282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 51382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 51482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t bufferSize; 51582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t initBufferFullness; 51682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 51782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 51882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsStoreMetaDataInBuffers : VideoParamConfigSet { 51982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 52082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsStoreMetaDataInBuffers() { 52182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeStoreMetaDataInBuffers; 52282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsStoreMetaDataInBuffers); 52382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 52482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 52582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool isEnabled; 52682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 52782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 52882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsProfileLevel : VideoParamConfigSet { 52982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 53082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsProfileLevel() { 53182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeProfileLevel; 53282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsProfileLevel); 53382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 53482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 53582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VAProfile profile; 53682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t level; 53782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool isSupported; 53882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 53982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 54082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsTemporalLayer : VideoParamConfigSet { 54182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 54282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsTemporalLayer() { 54382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeTemporalLayer; 54482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsTemporalLayer); 54582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 54682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 54782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t numberOfLayer; 54882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t nPeriodicity; 54982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t nLayerID[32]; 55082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 55182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 55282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 55382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigFrameRate : VideoParamConfigSet { 55482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 55582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigFrameRate() { 55682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeFrameRate; 55782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigFrameRate); 55882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 55982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 56082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoFrameRate frameRate; 56182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 56282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 56382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigBitRate : VideoParamConfigSet { 56482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 56582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigBitRate() { 56682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeBitRate; 56782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigBitRate); 56882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 56982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 57082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoRateControlParams rcParams; 57182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 57282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 57382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigAVCIntraPeriod : VideoParamConfigSet { 57482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 57582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigAVCIntraPeriod() { 57682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeAVCIntraPeriod; 57782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigAVCIntraPeriod); 57882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 57982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 58082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t idrInterval; //How many Intra frame will have a IDR frame 58182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t intraPeriod; 58282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t ipPeriod; 58382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 58482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 58582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigNALSize : VideoParamConfigSet { 58682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 58782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigNALSize() { 58882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeNALSize; 58982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigNALSize); 59082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 59182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 59282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t maxSliceSize; 59382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 59482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 59582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigResolution : VideoParamConfigSet { 59682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 59782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigResolution() { 59882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeResolution; 59982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigResolution); 60082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 60182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 60282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoResolution resolution; 60382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 60482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 60582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigIntraRefreshType : VideoParamConfigSet { 60682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 60782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigIntraRefreshType() { 60882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeIntraRefreshType; 60982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigIntraRefreshType); 61082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 61182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 61282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoIntraRefreshType refreshType; 61382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 61482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 61582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigCyclicFrameInterval : VideoParamConfigSet { 61682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 61782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigCyclicFrameInterval() { 61882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeCyclicFrameInterval; 61982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigCyclicFrameInterval); 62082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 62182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 62282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t cyclicFrameInterval; 62382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 62482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 62582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigCIR : VideoParamConfigSet { 62682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 62782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigCIR() { 62882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeCIR; 62982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigCIR); 63082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 63182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 63282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON CirParams cirParams; 63382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 63482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 63582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigAIR : VideoParamConfigSet { 63682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 63782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigAIR() { 63882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeAIR; 63982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigAIR); 64082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 64182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 64282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON AirParams airParams; 64382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 64482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 64582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigSliceNum : VideoParamConfigSet { 64682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 64782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigSliceNum() { 64882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeSliceNum; 64982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigSliceNum); 65082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 65182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 65282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON SliceNum sliceNum; 65382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 65482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 65582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoParamsVP8 : VideoParamConfigSet { 65682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 65782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t profile; 65882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t error_resilient; 65982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t num_token_partitions; 66082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t kf_auto; 66182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t kf_min_dist; 66282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t kf_max_dist; 66382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t min_qp; 66482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t max_qp; 66582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t init_qp; 66682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t rc_undershoot; 66782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t rc_overshoot; 66882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t hrd_buf_size; 66982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t hrd_buf_initial_fullness; 67082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t hrd_buf_optimal_fullness; 67182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t max_frame_size_ratio; 67282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 67382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoParamsVP8() { 67482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoParamsTypeVP8; 67582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoParamsVP8); 67682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 67782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 67882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 67982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigVP8 : VideoParamConfigSet { 68082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 68182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t force_kf; 68282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refresh_entropy_probs; 68382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t value; 68482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON unsigned char sharpness_level; 68582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 68682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigVP8 () { 68782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeVP8; 68882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigVP8); 68982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 69082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 69182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 69282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigVP8ReferenceFrame : VideoParamConfigSet { 69382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 69482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t no_ref_last; 69582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t no_ref_gf; 69682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t no_ref_arf; 69782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refresh_last; 69882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refresh_golden_frame; 69982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t refresh_alternate_frame; 70082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 70182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigVP8ReferenceFrame () { 70282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeVP8ReferenceFrame; 70382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigVP8ReferenceFrame); 70482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 70582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 70682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 70782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigVP8MaxFrameSizeRatio : VideoParamConfigSet { 70882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 70982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigVP8MaxFrameSizeRatio() { 71082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeVP8MaxFrameSizeRatio; 71182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigVP8MaxFrameSizeRatio); 71282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 71382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 71482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t max_frame_size_ratio; 71582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 71682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 71782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONstruct VideoConfigTemperalLayerBitrateFramerate : VideoParamConfigSet { 71882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 71982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VideoConfigTemperalLayerBitrateFramerate() { 72082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON type = VideoConfigTypeTemperalLayerBitrateFramerate; 72182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON size = sizeof(VideoConfigTemperalLayerBitrateFramerate); 72282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 72382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 72482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t nLayerID; 72582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t bitRate; 72682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t frameRate; 72782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 72882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 72982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif /* __VIDEO_ENCODER_DEF_H__ */ 730