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