729 lines
19 KiB
C
729 lines
19 KiB
C
/*
|
|
* Copyright (c) 2009-2011 Intel Corporation. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef __VIDEO_ENCODER_DEF_H__
|
|
#define __VIDEO_ENCODER_DEF_H__
|
|
|
|
#include <stdint.h>
|
|
|
|
#define STRING_TO_FOURCC(format) ((uint32_t)(((format)[0])|((format)[1]<<8)|((format)[2]<<16)|((format)[3]<<24)))
|
|
|
|
typedef int32_t Encode_Status;
|
|
|
|
// Video encode error code
|
|
enum {
|
|
ENCODE_INVALID_SURFACE = -11,
|
|
ENCODE_NO_REQUEST_DATA = -10,
|
|
ENCODE_WRONG_STATE = -9,
|
|
ENCODE_NOTIMPL = -8,
|
|
ENCODE_NO_MEMORY = -7,
|
|
ENCODE_NOT_INIT = -6,
|
|
ENCODE_DRIVER_FAIL = -5,
|
|
ENCODE_INVALID_PARAMS = -4,
|
|
ENCODE_NOT_SUPPORTED = -3,
|
|
ENCODE_NULL_PTR = -2,
|
|
ENCODE_FAIL = -1,
|
|
ENCODE_SUCCESS = 0,
|
|
ENCODE_ALREADY_INIT = 1,
|
|
ENCODE_SLICESIZE_OVERFLOW = 2,
|
|
ENCODE_BUFFER_TOO_SMALL = 3, // The buffer passed to encode is too small to contain encoded data
|
|
ENCODE_DEVICE_BUSY = 4,
|
|
ENCODE_DATA_NOT_READY = 5,
|
|
};
|
|
|
|
typedef enum {
|
|
OUTPUT_EVERYTHING = 0, //Output whatever driver generates
|
|
OUTPUT_CODEC_DATA = 1,
|
|
OUTPUT_FRAME_DATA = 2, //Equal to OUTPUT_EVERYTHING when no header along with the frame data
|
|
OUTPUT_ONE_NAL = 4,
|
|
OUTPUT_ONE_NAL_WITHOUT_STARTCODE = 8,
|
|
OUTPUT_LENGTH_PREFIXED = 16,
|
|
OUTPUT_CODEDBUFFER = 32,
|
|
OUTPUT_NALULENGTHS_PREFIXED = 64,
|
|
OUTPUT_BUFFER_LAST
|
|
} VideoOutputFormat;
|
|
|
|
typedef enum {
|
|
RAW_FORMAT_NONE = 0,
|
|
RAW_FORMAT_YUV420 = 1,
|
|
RAW_FORMAT_YUV422 = 2,
|
|
RAW_FORMAT_YUV444 = 4,
|
|
RAW_FORMAT_NV12 = 8,
|
|
RAW_FORMAT_RGBA = 16,
|
|
RAW_FORMAT_OPAQUE = 32,
|
|
RAW_FORMAT_PROTECTED = 0x80000000,
|
|
RAW_FORMAT_LAST
|
|
} VideoRawFormat;
|
|
|
|
typedef enum {
|
|
RATE_CONTROL_NONE = 1,
|
|
RATE_CONTROL_CBR = 2,
|
|
RATE_CONTROL_VBR = 4,
|
|
RATE_CONTROL_VCM = 8,
|
|
RATE_CONTROL_LAST
|
|
} VideoRateControl;
|
|
|
|
typedef enum {
|
|
PROFILE_MPEG2SIMPLE = 0,
|
|
PROFILE_MPEG2MAIN,
|
|
PROFILE_MPEG4SIMPLE,
|
|
PROFILE_MPEG4ADVANCEDSIMPLE,
|
|
PROFILE_MPEG4MAIN,
|
|
PROFILE_H264BASELINE,
|
|
PROFILE_H264MAIN,
|
|
PROFILE_H264HIGH,
|
|
PROFILE_VC1SIMPLE,
|
|
PROFILE_VC1MAIN,
|
|
PROFILE_VC1ADVANCED,
|
|
PROFILE_H263BASELINE
|
|
} VideoProfile;
|
|
|
|
typedef enum {
|
|
AVC_DELIMITER_LENGTHPREFIX = 0,
|
|
AVC_DELIMITER_ANNEXB
|
|
} AVCDelimiterType;
|
|
|
|
typedef enum {
|
|
VIDEO_ENC_NONIR, // Non intra refresh
|
|
VIDEO_ENC_CIR, // Cyclic intra refresh
|
|
VIDEO_ENC_AIR, // Adaptive intra refresh
|
|
VIDEO_ENC_BOTH,
|
|
VIDEO_ENC_LAST
|
|
} VideoIntraRefreshType;
|
|
|
|
enum VideoBufferSharingMode {
|
|
BUFFER_SHARING_NONE = 1, //Means non shared buffer mode
|
|
BUFFER_SHARING_CI = 2,
|
|
BUFFER_SHARING_V4L2 = 4,
|
|
BUFFER_SHARING_SURFACE = 8,
|
|
BUFFER_SHARING_USRPTR = 16,
|
|
BUFFER_SHARING_GFXHANDLE = 32,
|
|
BUFFER_SHARING_KBUFHANDLE = 64,
|
|
BUFFER_LAST
|
|
};
|
|
|
|
typedef enum {
|
|
FTYPE_UNKNOWN = 0, // Unknown
|
|
FTYPE_I = 1, // General I-frame type
|
|
FTYPE_P = 2, // General P-frame type
|
|
FTYPE_B = 3, // General B-frame type
|
|
FTYPE_SI = 4, // H.263 SI-frame type
|
|
FTYPE_SP = 5, // H.263 SP-frame type
|
|
FTYPE_EI = 6, // H.264 EI-frame type
|
|
FTYPE_EP = 7, // H.264 EP-frame type
|
|
FTYPE_S = 8, // MPEG-4 S-frame type
|
|
FTYPE_IDR = 9, // IDR-frame type
|
|
}FrameType;
|
|
|
|
//function call mode
|
|
#define FUNC_BLOCK 0xFFFFFFFF
|
|
#define FUNC_NONBLOCK 0
|
|
|
|
// Output buffer flag
|
|
#define ENCODE_BUFFERFLAG_ENDOFFRAME 0x00000001
|
|
#define ENCODE_BUFFERFLAG_PARTIALFRAME 0x00000002
|
|
#define ENCODE_BUFFERFLAG_SYNCFRAME 0x00000004
|
|
#define ENCODE_BUFFERFLAG_CODECCONFIG 0x00000008
|
|
#define ENCODE_BUFFERFLAG_DATACORRUPT 0x00000010
|
|
#define ENCODE_BUFFERFLAG_DATAINVALID 0x00000020
|
|
#define ENCODE_BUFFERFLAG_SLICEOVERFOLOW 0x00000040
|
|
#define ENCODE_BUFFERFLAG_ENDOFSTREAM 0x00000080
|
|
#define ENCODE_BUFFERFLAG_NSTOPFRAME 0x00000100
|
|
|
|
typedef struct {
|
|
uint8_t *data;
|
|
uint32_t bufferSize; //buffer size
|
|
uint32_t dataSize; //actual size
|
|
uint32_t offset; //buffer offset
|
|
uint32_t remainingSize;
|
|
int flag; //Key frame, Codec Data etc
|
|
VideoOutputFormat format; //output format
|
|
int64_t timeStamp; //reserved
|
|
FrameType type;
|
|
void *priv; //indicate corresponding input data
|
|
} VideoEncOutputBuffer;
|
|
|
|
typedef struct {
|
|
uint8_t *data;
|
|
uint32_t size;
|
|
bool bufAvailable; //To indicate whether this buffer can be reused
|
|
int64_t timeStamp; //reserved
|
|
FrameType type; //frame type expected to be encoded
|
|
int flag; // flag to indicate buffer property
|
|
void *priv; //indicate corresponding input data
|
|
} VideoEncRawBuffer;
|
|
|
|
struct VideoEncSurfaceBuffer {
|
|
VASurfaceID surface;
|
|
uint8_t *usrptr;
|
|
uint32_t index;
|
|
bool bufAvailable;
|
|
VideoEncSurfaceBuffer *next;
|
|
};
|
|
|
|
struct CirParams {
|
|
uint32_t cir_num_mbs;
|
|
|
|
CirParams &operator=(const CirParams &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->cir_num_mbs = other.cir_num_mbs;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct AirParams {
|
|
uint32_t airMBs;
|
|
uint32_t airThreshold;
|
|
uint32_t airAuto;
|
|
|
|
AirParams &operator=(const AirParams &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->airMBs= other.airMBs;
|
|
this->airThreshold= other.airThreshold;
|
|
this->airAuto = other.airAuto;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoFrameRate {
|
|
uint32_t frameRateNum;
|
|
uint32_t frameRateDenom;
|
|
|
|
VideoFrameRate &operator=(const VideoFrameRate &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->frameRateNum = other.frameRateNum;
|
|
this->frameRateDenom = other.frameRateDenom;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoResolution {
|
|
uint32_t width;
|
|
uint32_t height;
|
|
|
|
VideoResolution &operator=(const VideoResolution &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->width = other.width;
|
|
this->height = other.height;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoRateControlParams {
|
|
uint32_t bitRate;
|
|
uint32_t initQP;
|
|
uint32_t minQP;
|
|
uint32_t maxQP;
|
|
uint32_t I_minQP;
|
|
uint32_t I_maxQP;
|
|
uint32_t windowSize;
|
|
uint32_t targetPercentage;
|
|
uint32_t disableFrameSkip;
|
|
uint32_t disableBitsStuffing;
|
|
uint32_t enableIntraFrameQPControl;
|
|
uint32_t temporalFrameRate;
|
|
uint32_t temporalID;
|
|
|
|
VideoRateControlParams &operator=(const VideoRateControlParams &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->bitRate = other.bitRate;
|
|
this->initQP = other.initQP;
|
|
this->minQP = other.minQP;
|
|
this->maxQP = other.maxQP;
|
|
this->I_minQP = other.I_minQP;
|
|
this->I_maxQP = other.I_maxQP;
|
|
this->windowSize = other.windowSize;
|
|
this->targetPercentage = other.targetPercentage;
|
|
this->disableFrameSkip = other.disableFrameSkip;
|
|
this->disableBitsStuffing = other.disableBitsStuffing;
|
|
this->enableIntraFrameQPControl = other.enableIntraFrameQPControl;
|
|
this->temporalFrameRate = other.temporalFrameRate;
|
|
this->temporalID = other.temporalID;
|
|
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct SliceNum {
|
|
uint32_t iSliceNum;
|
|
uint32_t pSliceNum;
|
|
|
|
SliceNum &operator=(const SliceNum &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->iSliceNum = other.iSliceNum;
|
|
this->pSliceNum= other.pSliceNum;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
typedef struct {
|
|
uint32_t realWidth;
|
|
uint32_t realHeight;
|
|
uint32_t lumaStride;
|
|
uint32_t chromStride;
|
|
uint32_t format;
|
|
} ExternalBufferAttrib;
|
|
|
|
struct Cropping {
|
|
uint32_t LeftOffset;
|
|
uint32_t RightOffset;
|
|
uint32_t TopOffset;
|
|
uint32_t BottomOffset;
|
|
|
|
Cropping &operator=(const Cropping &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->LeftOffset = other.LeftOffset;
|
|
this->RightOffset = other.RightOffset;
|
|
this->TopOffset = other.TopOffset;
|
|
this->BottomOffset = other.BottomOffset;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct SamplingAspectRatio {
|
|
uint16_t SarWidth;
|
|
uint16_t SarHeight;
|
|
|
|
SamplingAspectRatio &operator=(const SamplingAspectRatio &other) {
|
|
if (this == &other) return *this;
|
|
|
|
this->SarWidth = other.SarWidth;
|
|
this->SarHeight = other.SarHeight;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
enum VideoParamConfigType {
|
|
VideoParamsTypeStartUnused = 0x01000000,
|
|
VideoParamsTypeCommon,
|
|
VideoParamsTypeAVC,
|
|
VideoParamsTypeH263,
|
|
VideoParamsTypeMP4,
|
|
VideoParamsTypeVC1,
|
|
VideoParamsTypeUpSteamBuffer,
|
|
VideoParamsTypeUsrptrBuffer,
|
|
VideoParamsTypeHRD,
|
|
VideoParamsTypeStoreMetaDataInBuffers,
|
|
VideoParamsTypeProfileLevel,
|
|
VideoParamsTypeVP8,
|
|
VideoParamsTypeTemporalLayer,
|
|
|
|
VideoConfigTypeFrameRate,
|
|
VideoConfigTypeBitRate,
|
|
VideoConfigTypeResolution,
|
|
VideoConfigTypeIntraRefreshType,
|
|
VideoConfigTypeAIR,
|
|
VideoConfigTypeCyclicFrameInterval,
|
|
VideoConfigTypeAVCIntraPeriod,
|
|
VideoConfigTypeNALSize,
|
|
VideoConfigTypeIDRRequest,
|
|
VideoConfigTypeSliceNum,
|
|
VideoConfigTypeVP8,
|
|
VideoConfigTypeVP8ReferenceFrame,
|
|
VideoConfigTypeCIR,
|
|
VideoConfigTypeVP8MaxFrameSizeRatio,
|
|
VideoConfigTypeTemperalLayerBitrateFramerate,
|
|
|
|
VideoParamsConfigExtension
|
|
};
|
|
|
|
struct VideoParamConfigSet {
|
|
VideoParamConfigType type;
|
|
uint32_t size;
|
|
|
|
VideoParamConfigSet &operator=(const VideoParamConfigSet &other) {
|
|
if (this == &other) return *this;
|
|
this->type = other.type;
|
|
this->size = other.size;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoParamsCommon : VideoParamConfigSet {
|
|
|
|
VAProfile profile;
|
|
uint8_t level;
|
|
VideoRawFormat rawFormat;
|
|
VideoResolution resolution;
|
|
VideoFrameRate frameRate;
|
|
int32_t intraPeriod;
|
|
VideoRateControl rcMode;
|
|
VideoRateControlParams rcParams;
|
|
VideoIntraRefreshType refreshType;
|
|
int32_t cyclicFrameInterval;
|
|
AirParams airParams;
|
|
CirParams cirParams;
|
|
uint32_t disableDeblocking;
|
|
bool syncEncMode;
|
|
//CodedBuffer properties
|
|
uint32_t codedBufNum;
|
|
uint32_t numberOfLayer;
|
|
uint32_t nPeriodicity;
|
|
uint32_t nLayerID[32];
|
|
|
|
VideoParamsCommon() {
|
|
type = VideoParamsTypeCommon;
|
|
size = sizeof(VideoParamsCommon);
|
|
}
|
|
|
|
VideoParamsCommon &operator=(const VideoParamsCommon &other) {
|
|
if (this == &other) return *this;
|
|
|
|
VideoParamConfigSet::operator=(other);
|
|
this->profile = other.profile;
|
|
this->level = other.level;
|
|
this->rawFormat = other.rawFormat;
|
|
this->resolution = other.resolution;
|
|
this->frameRate = other.frameRate;
|
|
this->intraPeriod = other.intraPeriod;
|
|
this->rcMode = other.rcMode;
|
|
this->rcParams = other.rcParams;
|
|
this->refreshType = other.refreshType;
|
|
this->cyclicFrameInterval = other.cyclicFrameInterval;
|
|
this->airParams = other.airParams;
|
|
this->disableDeblocking = other.disableDeblocking;
|
|
this->syncEncMode = other.syncEncMode;
|
|
this->codedBufNum = other.codedBufNum;
|
|
this->numberOfLayer = other.numberOfLayer;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoParamsAVC : VideoParamConfigSet {
|
|
uint32_t basicUnitSize; //for rate control
|
|
uint8_t VUIFlag;
|
|
int32_t maxSliceSize;
|
|
uint32_t idrInterval;
|
|
uint32_t ipPeriod;
|
|
uint32_t refFrames;
|
|
SliceNum sliceNum;
|
|
AVCDelimiterType delimiterType;
|
|
Cropping crop;
|
|
SamplingAspectRatio SAR;
|
|
uint32_t refIdx10ActiveMinus1;
|
|
uint32_t refIdx11ActiveMinus1;
|
|
bool bFrameMBsOnly;
|
|
bool bMBAFF;
|
|
bool bEntropyCodingCABAC;
|
|
bool bWeightedPPrediction;
|
|
uint32_t weightedBipredicitonMode;
|
|
bool bConstIpred ;
|
|
bool bDirect8x8Inference;
|
|
bool bDirectSpatialTemporal;
|
|
uint32_t cabacInitIdc;
|
|
|
|
VideoParamsAVC() {
|
|
type = VideoParamsTypeAVC;
|
|
size = sizeof(VideoParamsAVC);
|
|
}
|
|
|
|
VideoParamsAVC &operator=(const VideoParamsAVC &other) {
|
|
if (this == &other) return *this;
|
|
|
|
VideoParamConfigSet::operator=(other);
|
|
this->basicUnitSize = other.basicUnitSize;
|
|
this->VUIFlag = other.VUIFlag;
|
|
this->maxSliceSize = other.maxSliceSize;
|
|
this->idrInterval = other.idrInterval;
|
|
this->ipPeriod = other.ipPeriod;
|
|
this->refFrames = other.refFrames;
|
|
this->sliceNum = other.sliceNum;
|
|
this->delimiterType = other.delimiterType;
|
|
this->crop.LeftOffset = other.crop.LeftOffset;
|
|
this->crop.RightOffset = other.crop.RightOffset;
|
|
this->crop.TopOffset = other.crop.TopOffset;
|
|
this->crop.BottomOffset = other.crop.BottomOffset;
|
|
this->SAR.SarWidth = other.SAR.SarWidth;
|
|
this->SAR.SarHeight = other.SAR.SarHeight;
|
|
|
|
this->refIdx10ActiveMinus1 = other.refIdx10ActiveMinus1;
|
|
this->refIdx11ActiveMinus1 = other.refIdx11ActiveMinus1;
|
|
this->bFrameMBsOnly = other.bFrameMBsOnly;
|
|
this->bMBAFF = other.bMBAFF;
|
|
this->bEntropyCodingCABAC = other.bEntropyCodingCABAC;
|
|
this->bWeightedPPrediction = other.bWeightedPPrediction;
|
|
this->weightedBipredicitonMode = other.weightedBipredicitonMode;
|
|
this->bConstIpred = other.bConstIpred;
|
|
this->bDirect8x8Inference = other.bDirect8x8Inference;
|
|
this->bDirectSpatialTemporal = other.bDirectSpatialTemporal;
|
|
this->cabacInitIdc = other.cabacInitIdc;
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
struct VideoParamsUpstreamBuffer : VideoParamConfigSet {
|
|
|
|
VideoParamsUpstreamBuffer() {
|
|
type = VideoParamsTypeUpSteamBuffer;
|
|
size = sizeof(VideoParamsUpstreamBuffer);
|
|
}
|
|
|
|
VideoBufferSharingMode bufferMode;
|
|
intptr_t *bufList;
|
|
uint32_t bufCnt;
|
|
ExternalBufferAttrib *bufAttrib;
|
|
void *display;
|
|
};
|
|
|
|
struct VideoParamsUsrptrBuffer : VideoParamConfigSet {
|
|
|
|
VideoParamsUsrptrBuffer() {
|
|
type = VideoParamsTypeUsrptrBuffer;
|
|
size = sizeof(VideoParamsUsrptrBuffer);
|
|
}
|
|
|
|
//input
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint32_t format;
|
|
uint32_t expectedSize;
|
|
|
|
//output
|
|
uint32_t actualSize;
|
|
uint32_t stride;
|
|
uint8_t *usrPtr;
|
|
};
|
|
|
|
struct VideoParamsHRD : VideoParamConfigSet {
|
|
|
|
VideoParamsHRD() {
|
|
type = VideoParamsTypeHRD;
|
|
size = sizeof(VideoParamsHRD);
|
|
}
|
|
|
|
uint32_t bufferSize;
|
|
uint32_t initBufferFullness;
|
|
};
|
|
|
|
struct VideoParamsStoreMetaDataInBuffers : VideoParamConfigSet {
|
|
|
|
VideoParamsStoreMetaDataInBuffers() {
|
|
type = VideoParamsTypeStoreMetaDataInBuffers;
|
|
size = sizeof(VideoParamsStoreMetaDataInBuffers);
|
|
}
|
|
|
|
bool isEnabled;
|
|
};
|
|
|
|
struct VideoParamsProfileLevel : VideoParamConfigSet {
|
|
|
|
VideoParamsProfileLevel() {
|
|
type = VideoParamsTypeProfileLevel;
|
|
size = sizeof(VideoParamsProfileLevel);
|
|
}
|
|
|
|
VAProfile profile;
|
|
uint32_t level;
|
|
bool isSupported;
|
|
};
|
|
|
|
struct VideoParamsTemporalLayer : VideoParamConfigSet {
|
|
|
|
VideoParamsTemporalLayer() {
|
|
type = VideoParamsTypeTemporalLayer;
|
|
size = sizeof(VideoParamsTemporalLayer);
|
|
}
|
|
|
|
uint32_t numberOfLayer;
|
|
uint32_t nPeriodicity;
|
|
uint32_t nLayerID[32];
|
|
};
|
|
|
|
|
|
struct VideoConfigFrameRate : VideoParamConfigSet {
|
|
|
|
VideoConfigFrameRate() {
|
|
type = VideoConfigTypeFrameRate;
|
|
size = sizeof(VideoConfigFrameRate);
|
|
}
|
|
|
|
VideoFrameRate frameRate;
|
|
};
|
|
|
|
struct VideoConfigBitRate : VideoParamConfigSet {
|
|
|
|
VideoConfigBitRate() {
|
|
type = VideoConfigTypeBitRate;
|
|
size = sizeof(VideoConfigBitRate);
|
|
}
|
|
|
|
VideoRateControlParams rcParams;
|
|
};
|
|
|
|
struct VideoConfigAVCIntraPeriod : VideoParamConfigSet {
|
|
|
|
VideoConfigAVCIntraPeriod() {
|
|
type = VideoConfigTypeAVCIntraPeriod;
|
|
size = sizeof(VideoConfigAVCIntraPeriod);
|
|
}
|
|
|
|
uint32_t idrInterval; //How many Intra frame will have a IDR frame
|
|
uint32_t intraPeriod;
|
|
uint32_t ipPeriod;
|
|
};
|
|
|
|
struct VideoConfigNALSize : VideoParamConfigSet {
|
|
|
|
VideoConfigNALSize() {
|
|
type = VideoConfigTypeNALSize;
|
|
size = sizeof(VideoConfigNALSize);
|
|
}
|
|
|
|
uint32_t maxSliceSize;
|
|
};
|
|
|
|
struct VideoConfigResolution : VideoParamConfigSet {
|
|
|
|
VideoConfigResolution() {
|
|
type = VideoConfigTypeResolution;
|
|
size = sizeof(VideoConfigResolution);
|
|
}
|
|
|
|
VideoResolution resolution;
|
|
};
|
|
|
|
struct VideoConfigIntraRefreshType : VideoParamConfigSet {
|
|
|
|
VideoConfigIntraRefreshType() {
|
|
type = VideoConfigTypeIntraRefreshType;
|
|
size = sizeof(VideoConfigIntraRefreshType);
|
|
}
|
|
|
|
VideoIntraRefreshType refreshType;
|
|
};
|
|
|
|
struct VideoConfigCyclicFrameInterval : VideoParamConfigSet {
|
|
|
|
VideoConfigCyclicFrameInterval() {
|
|
type = VideoConfigTypeCyclicFrameInterval;
|
|
size = sizeof(VideoConfigCyclicFrameInterval);
|
|
}
|
|
|
|
int32_t cyclicFrameInterval;
|
|
};
|
|
|
|
struct VideoConfigCIR : VideoParamConfigSet {
|
|
|
|
VideoConfigCIR() {
|
|
type = VideoConfigTypeCIR;
|
|
size = sizeof(VideoConfigCIR);
|
|
}
|
|
|
|
CirParams cirParams;
|
|
};
|
|
|
|
struct VideoConfigAIR : VideoParamConfigSet {
|
|
|
|
VideoConfigAIR() {
|
|
type = VideoConfigTypeAIR;
|
|
size = sizeof(VideoConfigAIR);
|
|
}
|
|
|
|
AirParams airParams;
|
|
};
|
|
|
|
struct VideoConfigSliceNum : VideoParamConfigSet {
|
|
|
|
VideoConfigSliceNum() {
|
|
type = VideoConfigTypeSliceNum;
|
|
size = sizeof(VideoConfigSliceNum);
|
|
}
|
|
|
|
SliceNum sliceNum;
|
|
};
|
|
|
|
struct VideoParamsVP8 : VideoParamConfigSet {
|
|
|
|
uint32_t profile;
|
|
uint32_t error_resilient;
|
|
uint32_t num_token_partitions;
|
|
uint32_t kf_auto;
|
|
uint32_t kf_min_dist;
|
|
uint32_t kf_max_dist;
|
|
uint32_t min_qp;
|
|
uint32_t max_qp;
|
|
uint32_t init_qp;
|
|
uint32_t rc_undershoot;
|
|
uint32_t rc_overshoot;
|
|
uint32_t hrd_buf_size;
|
|
uint32_t hrd_buf_initial_fullness;
|
|
uint32_t hrd_buf_optimal_fullness;
|
|
uint32_t max_frame_size_ratio;
|
|
|
|
VideoParamsVP8() {
|
|
type = VideoParamsTypeVP8;
|
|
size = sizeof(VideoParamsVP8);
|
|
}
|
|
};
|
|
|
|
struct VideoConfigVP8 : VideoParamConfigSet {
|
|
|
|
uint32_t force_kf;
|
|
uint32_t refresh_entropy_probs;
|
|
uint32_t value;
|
|
unsigned char sharpness_level;
|
|
|
|
VideoConfigVP8 () {
|
|
type = VideoConfigTypeVP8;
|
|
size = sizeof(VideoConfigVP8);
|
|
}
|
|
};
|
|
|
|
struct VideoConfigVP8ReferenceFrame : VideoParamConfigSet {
|
|
|
|
uint32_t no_ref_last;
|
|
uint32_t no_ref_gf;
|
|
uint32_t no_ref_arf;
|
|
uint32_t refresh_last;
|
|
uint32_t refresh_golden_frame;
|
|
uint32_t refresh_alternate_frame;
|
|
|
|
VideoConfigVP8ReferenceFrame () {
|
|
type = VideoConfigTypeVP8ReferenceFrame;
|
|
size = sizeof(VideoConfigVP8ReferenceFrame);
|
|
}
|
|
};
|
|
|
|
struct VideoConfigVP8MaxFrameSizeRatio : VideoParamConfigSet {
|
|
|
|
VideoConfigVP8MaxFrameSizeRatio() {
|
|
type = VideoConfigTypeVP8MaxFrameSizeRatio;
|
|
size = sizeof(VideoConfigVP8MaxFrameSizeRatio);
|
|
}
|
|
|
|
uint32_t max_frame_size_ratio;
|
|
};
|
|
|
|
struct VideoConfigTemperalLayerBitrateFramerate : VideoParamConfigSet {
|
|
|
|
VideoConfigTemperalLayerBitrateFramerate() {
|
|
type = VideoConfigTypeTemperalLayerBitrateFramerate;
|
|
size = sizeof(VideoConfigTemperalLayerBitrateFramerate);
|
|
}
|
|
|
|
uint32_t nLayerID;
|
|
uint32_t bitRate;
|
|
uint32_t frameRate;
|
|
};
|
|
|
|
#endif /* __VIDEO_ENCODER_DEF_H__ */
|