2522 lines
75 KiB
C
2522 lines
75 KiB
C
// Copyright (c) 2018-2020 Intel Corporation
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
// SOFTWARE.
|
|
#ifndef __MFXSTRUCTURES_H__
|
|
#define __MFXSTRUCTURES_H__
|
|
#include "mfxcommon.h"
|
|
|
|
#if !defined (__GNUC__)
|
|
#pragma warning(disable: 4201)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Frame ID for SVC and MVC */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU16 TemporalId;
|
|
mfxU16 PriorityId;
|
|
union {
|
|
struct {
|
|
mfxU16 DependencyId;
|
|
mfxU16 QualityId;
|
|
};
|
|
struct {
|
|
mfxU16 ViewId;
|
|
};
|
|
};
|
|
} mfxFrameId;
|
|
MFX_PACK_END()
|
|
|
|
/* This struct has 4-byte alignment for binary compatibility with previously released versions of API */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
/* Frame Info */
|
|
typedef struct {
|
|
mfxU32 reserved[4];
|
|
mfxU16 reserved4;
|
|
mfxU16 BitDepthLuma;
|
|
mfxU16 BitDepthChroma;
|
|
mfxU16 Shift;
|
|
|
|
mfxFrameId FrameId;
|
|
|
|
mfxU32 FourCC;
|
|
union {
|
|
struct { /* Frame parameters */
|
|
mfxU16 Width;
|
|
mfxU16 Height;
|
|
|
|
mfxU16 CropX;
|
|
mfxU16 CropY;
|
|
mfxU16 CropW;
|
|
mfxU16 CropH;
|
|
};
|
|
struct { /* Buffer parameters (for plain formats like P8) */
|
|
mfxU64 BufferSize;
|
|
mfxU32 reserved5;
|
|
};
|
|
};
|
|
|
|
mfxU32 FrameRateExtN;
|
|
mfxU32 FrameRateExtD;
|
|
mfxU16 reserved3;
|
|
|
|
mfxU16 AspectRatioW;
|
|
mfxU16 AspectRatioH;
|
|
|
|
mfxU16 PicStruct;
|
|
mfxU16 ChromaFormat;
|
|
mfxU16 reserved2;
|
|
} mfxFrameInfo;
|
|
MFX_PACK_END()
|
|
|
|
/* FourCC */
|
|
enum {
|
|
MFX_FOURCC_NV12 = MFX_MAKEFOURCC('N','V','1','2'), /* Native Format */
|
|
MFX_FOURCC_YV12 = MFX_MAKEFOURCC('Y','V','1','2'),
|
|
MFX_FOURCC_NV16 = MFX_MAKEFOURCC('N','V','1','6'),
|
|
MFX_FOURCC_YUY2 = MFX_MAKEFOURCC('Y','U','Y','2'),
|
|
#if (MFX_VERSION >= 1028)
|
|
MFX_FOURCC_RGB565 = MFX_MAKEFOURCC('R','G','B','2'), /* 2 bytes per pixel, uint16 in little-endian format, where 0-4 bits are blue, bits 5-10 are green and bits 11-15 are red */
|
|
MFX_FOURCC_RGBP = MFX_MAKEFOURCC('R','G','B','P'),
|
|
#endif
|
|
MFX_FOURCC_RGB3 = MFX_MAKEFOURCC('R','G','B','3'), /* deprecated */
|
|
MFX_FOURCC_RGB4 = MFX_MAKEFOURCC('R','G','B','4'), /* ARGB in that order, A channel is 8 MSBs */
|
|
MFX_FOURCC_P8 = 41, /* D3DFMT_P8 */
|
|
MFX_FOURCC_P8_TEXTURE = MFX_MAKEFOURCC('P','8','M','B'),
|
|
MFX_FOURCC_P010 = MFX_MAKEFOURCC('P','0','1','0'),
|
|
#if (MFX_VERSION >= 1031)
|
|
MFX_FOURCC_P016 = MFX_MAKEFOURCC('P','0','1','6'),
|
|
#endif
|
|
MFX_FOURCC_P210 = MFX_MAKEFOURCC('P','2','1','0'),
|
|
MFX_FOURCC_BGR4 = MFX_MAKEFOURCC('B','G','R','4'), /* ABGR in that order, A channel is 8 MSBs */
|
|
MFX_FOURCC_A2RGB10 = MFX_MAKEFOURCC('R','G','1','0'), /* ARGB in that order, A channel is two MSBs */
|
|
MFX_FOURCC_ARGB16 = MFX_MAKEFOURCC('R','G','1','6'), /* ARGB in that order, 64 bits, A channel is 16 MSBs */
|
|
MFX_FOURCC_ABGR16 = MFX_MAKEFOURCC('B','G','1','6'), /* ABGR in that order, 64 bits, A channel is 16 MSBs */
|
|
MFX_FOURCC_R16 = MFX_MAKEFOURCC('R','1','6','U'),
|
|
MFX_FOURCC_AYUV = MFX_MAKEFOURCC('A','Y','U','V'), /* YUV 4:4:4, AYUV in that order, A channel is 8 MSBs */
|
|
MFX_FOURCC_AYUV_RGB4 = MFX_MAKEFOURCC('A','V','U','Y'), /* ARGB in that order, A channel is 8 MSBs stored in AYUV surface*/
|
|
MFX_FOURCC_UYVY = MFX_MAKEFOURCC('U','Y','V','Y'),
|
|
#if (MFX_VERSION >= 1027)
|
|
MFX_FOURCC_Y210 = MFX_MAKEFOURCC('Y','2','1','0'),
|
|
MFX_FOURCC_Y410 = MFX_MAKEFOURCC('Y','4','1','0'),
|
|
#endif
|
|
#if (MFX_VERSION >= 1031)
|
|
MFX_FOURCC_Y216 = MFX_MAKEFOURCC('Y','2','1','6'),
|
|
MFX_FOURCC_Y416 = MFX_MAKEFOURCC('Y','4','1','6'),
|
|
#endif
|
|
MFX_FOURCC_NV21 = MFX_MAKEFOURCC('N', 'V', '2', '1'), /* Same as NV12 but with weaved V and U values. */
|
|
MFX_FOURCC_IYUV = MFX_MAKEFOURCC('I', 'Y', 'U', 'V'), /* Same as YV12 except that the U and V plane order is reversed. */
|
|
MFX_FOURCC_I010 = MFX_MAKEFOURCC('I', '0', '1', '0'), /* 10-bit YUV 4:2:0, each component has its own plane. */
|
|
};
|
|
|
|
/* PicStruct */
|
|
enum {
|
|
MFX_PICSTRUCT_UNKNOWN =0x00,
|
|
MFX_PICSTRUCT_PROGRESSIVE =0x01,
|
|
MFX_PICSTRUCT_FIELD_TFF =0x02,
|
|
MFX_PICSTRUCT_FIELD_BFF =0x04,
|
|
|
|
MFX_PICSTRUCT_FIELD_REPEATED=0x10, /* first field repeated, pic_struct=5 or 6 in H.264 */
|
|
MFX_PICSTRUCT_FRAME_DOUBLING=0x20, /* pic_struct=7 in H.264 */
|
|
MFX_PICSTRUCT_FRAME_TRIPLING=0x40, /* pic_struct=8 in H.264 */
|
|
|
|
MFX_PICSTRUCT_FIELD_SINGLE =0x100,
|
|
MFX_PICSTRUCT_FIELD_TOP =MFX_PICSTRUCT_FIELD_SINGLE | MFX_PICSTRUCT_FIELD_TFF,
|
|
MFX_PICSTRUCT_FIELD_BOTTOM =MFX_PICSTRUCT_FIELD_SINGLE | MFX_PICSTRUCT_FIELD_BFF,
|
|
MFX_PICSTRUCT_FIELD_PAIRED_PREV =0x200,
|
|
MFX_PICSTRUCT_FIELD_PAIRED_NEXT =0x400,
|
|
};
|
|
|
|
/* ColorFormat */
|
|
enum {
|
|
MFX_CHROMAFORMAT_MONOCHROME =0,
|
|
MFX_CHROMAFORMAT_YUV420 =1,
|
|
MFX_CHROMAFORMAT_YUV422 =2,
|
|
MFX_CHROMAFORMAT_YUV444 =3,
|
|
MFX_CHROMAFORMAT_YUV400 = MFX_CHROMAFORMAT_MONOCHROME,
|
|
MFX_CHROMAFORMAT_YUV411 = 4,
|
|
MFX_CHROMAFORMAT_YUV422H = MFX_CHROMAFORMAT_YUV422,
|
|
MFX_CHROMAFORMAT_YUV422V = 5,
|
|
MFX_CHROMAFORMAT_RESERVED1 = 6
|
|
};
|
|
|
|
enum {
|
|
MFX_TIMESTAMP_UNKNOWN = -1
|
|
};
|
|
|
|
enum {
|
|
MFX_FRAMEORDER_UNKNOWN = -1
|
|
};
|
|
|
|
/* DataFlag in mfxFrameData */
|
|
enum {
|
|
MFX_FRAMEDATA_ORIGINAL_TIMESTAMP = 0x0001
|
|
};
|
|
|
|
/* Corrupted in mfxFrameData */
|
|
enum {
|
|
MFX_CORRUPTION_MINOR = 0x0001,
|
|
MFX_CORRUPTION_MAJOR = 0x0002,
|
|
MFX_CORRUPTION_ABSENT_TOP_FIELD = 0x0004,
|
|
MFX_CORRUPTION_ABSENT_BOTTOM_FIELD = 0x0008,
|
|
MFX_CORRUPTION_REFERENCE_FRAME = 0x0010,
|
|
MFX_CORRUPTION_REFERENCE_LIST = 0x0020
|
|
};
|
|
|
|
#if (MFX_VERSION >= 1027)
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct
|
|
{
|
|
mfxU32 U : 10;
|
|
mfxU32 Y : 10;
|
|
mfxU32 V : 10;
|
|
mfxU32 A : 2;
|
|
} mfxY410;
|
|
MFX_PACK_END()
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct
|
|
{
|
|
mfxU32 B : 10;
|
|
mfxU32 G : 10;
|
|
mfxU32 R : 10;
|
|
mfxU32 A : 2;
|
|
} mfxA2RGB10;
|
|
MFX_PACK_END()
|
|
#endif
|
|
|
|
/* Frame Data Info */
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
union {
|
|
mfxExtBuffer **ExtParam;
|
|
mfxU64 reserved2;
|
|
};
|
|
mfxU16 NumExtParam;
|
|
|
|
mfxU16 reserved[9];
|
|
mfxU16 MemType;
|
|
mfxU16 PitchHigh;
|
|
|
|
mfxU64 TimeStamp;
|
|
mfxU32 FrameOrder;
|
|
mfxU16 Locked;
|
|
union{
|
|
mfxU16 Pitch;
|
|
mfxU16 PitchLow;
|
|
};
|
|
|
|
/* color planes */
|
|
union {
|
|
mfxU8 *Y;
|
|
mfxU16 *Y16;
|
|
mfxU8 *R;
|
|
};
|
|
union {
|
|
mfxU8 *UV; /* for UV merged formats */
|
|
mfxU8 *VU; /* for VU merged formats */
|
|
mfxU8 *CbCr; /* for CbCr merged formats */
|
|
mfxU8 *CrCb; /* for CrCb merged formats */
|
|
mfxU8 *Cb;
|
|
mfxU8 *U;
|
|
mfxU16 *U16;
|
|
mfxU8 *G;
|
|
#if (MFX_VERSION >= 1027)
|
|
mfxY410 *Y410; /* for Y410 format (merged AVYU) */
|
|
#endif
|
|
};
|
|
union {
|
|
mfxU8 *Cr;
|
|
mfxU8 *V;
|
|
mfxU16 *V16;
|
|
mfxU8 *B;
|
|
#if (MFX_VERSION >= 1025)
|
|
mfxA2RGB10 *A2RGB10; /* for A2RGB10 format (merged ARGB) */
|
|
#endif
|
|
};
|
|
mfxU8 *A;
|
|
mfxMemId MemId;
|
|
|
|
/* Additional Flags */
|
|
mfxU16 Corrupted;
|
|
mfxU16 DataFlag;
|
|
} mfxFrameData;
|
|
MFX_PACK_END()
|
|
|
|
/* Frame Surface */
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxU32 reserved[4];
|
|
mfxFrameInfo Info;
|
|
mfxFrameData Data;
|
|
} mfxFrameSurface1;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_TIMESTAMPCALC_UNKNOWN = 0,
|
|
MFX_TIMESTAMPCALC_TELECINE = 1,
|
|
};
|
|
|
|
/* Transcoding Info */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU32 reserved[7];
|
|
|
|
mfxU16 LowPower;
|
|
mfxU16 BRCParamMultiplier;
|
|
|
|
mfxFrameInfo FrameInfo;
|
|
mfxU32 CodecId;
|
|
mfxU16 CodecProfile;
|
|
mfxU16 CodecLevel;
|
|
mfxU16 NumThread;
|
|
|
|
union {
|
|
struct { /* Encoding Options */
|
|
mfxU16 TargetUsage;
|
|
|
|
mfxU16 GopPicSize;
|
|
mfxU16 GopRefDist;
|
|
mfxU16 GopOptFlag;
|
|
mfxU16 IdrInterval;
|
|
|
|
mfxU16 RateControlMethod;
|
|
union {
|
|
mfxU16 InitialDelayInKB;
|
|
mfxU16 QPI;
|
|
mfxU16 Accuracy;
|
|
};
|
|
mfxU16 BufferSizeInKB;
|
|
union {
|
|
mfxU16 TargetKbps;
|
|
mfxU16 QPP;
|
|
mfxU16 ICQQuality;
|
|
};
|
|
union {
|
|
mfxU16 MaxKbps;
|
|
mfxU16 QPB;
|
|
mfxU16 Convergence;
|
|
};
|
|
|
|
mfxU16 NumSlice;
|
|
mfxU16 NumRefFrame;
|
|
mfxU16 EncodedOrder;
|
|
};
|
|
struct { /* Decoding Options */
|
|
mfxU16 DecodedOrder;
|
|
mfxU16 ExtendedPicStruct;
|
|
mfxU16 TimeStampCalc;
|
|
mfxU16 SliceGroupsPresent;
|
|
mfxU16 MaxDecFrameBuffering;
|
|
mfxU16 EnableReallocRequest;
|
|
#if (MFX_VERSION >= 1034)
|
|
mfxU16 FilmGrain;
|
|
mfxU16 IgnoreLevelConstrain;
|
|
mfxU16 reserved2[5];
|
|
#else
|
|
mfxU16 reserved2[7];
|
|
#endif
|
|
};
|
|
struct { /* JPEG Decoding Options */
|
|
mfxU16 JPEGChromaFormat;
|
|
mfxU16 Rotation;
|
|
mfxU16 JPEGColorFormat;
|
|
mfxU16 InterleavedDec;
|
|
mfxU8 SamplingFactorH[4];
|
|
mfxU8 SamplingFactorV[4];
|
|
mfxU16 reserved3[5];
|
|
};
|
|
struct { /* JPEG Encoding Options */
|
|
mfxU16 Interleaved;
|
|
mfxU16 Quality;
|
|
mfxU16 RestartInterval;
|
|
mfxU16 reserved5[10];
|
|
};
|
|
};
|
|
} mfxInfoMFX;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU32 reserved[8];
|
|
mfxFrameInfo In;
|
|
mfxFrameInfo Out;
|
|
} mfxInfoVPP;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxU32 AllocId;
|
|
mfxU32 reserved[2];
|
|
mfxU16 reserved3;
|
|
mfxU16 AsyncDepth;
|
|
|
|
union {
|
|
mfxInfoMFX mfx;
|
|
mfxInfoVPP vpp;
|
|
};
|
|
mfxU16 Protected;
|
|
mfxU16 IOPattern;
|
|
mfxExtBuffer** ExtParam;
|
|
mfxU16 NumExtParam;
|
|
mfxU16 reserved2;
|
|
} mfxVideoParam;
|
|
MFX_PACK_END()
|
|
|
|
/* IOPattern */
|
|
enum {
|
|
MFX_IOPATTERN_IN_VIDEO_MEMORY = 0x01,
|
|
MFX_IOPATTERN_IN_SYSTEM_MEMORY = 0x02,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_IOPATTERN_IN_OPAQUE_MEMORY) = 0x04,
|
|
MFX_IOPATTERN_OUT_VIDEO_MEMORY = 0x10,
|
|
MFX_IOPATTERN_OUT_SYSTEM_MEMORY = 0x20,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_IOPATTERN_OUT_OPAQUE_MEMORY) = 0x40
|
|
};
|
|
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_IOPATTERN_IN_OPAQUE_MEMORY);
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_IOPATTERN_OUT_OPAQUE_MEMORY);
|
|
|
|
/* CodecId */
|
|
enum {
|
|
MFX_CODEC_AVC =MFX_MAKEFOURCC('A','V','C',' '),
|
|
MFX_CODEC_HEVC =MFX_MAKEFOURCC('H','E','V','C'),
|
|
MFX_CODEC_MPEG2 =MFX_MAKEFOURCC('M','P','G','2'),
|
|
MFX_CODEC_VC1 =MFX_MAKEFOURCC('V','C','1',' '),
|
|
MFX_CODEC_CAPTURE =MFX_MAKEFOURCC('C','A','P','T'),
|
|
MFX_CODEC_VP9 =MFX_MAKEFOURCC('V','P','9',' '),
|
|
MFX_CODEC_AV1 =MFX_MAKEFOURCC('A','V','1',' ')
|
|
};
|
|
|
|
/* CodecProfile, CodecLevel */
|
|
enum {
|
|
MFX_PROFILE_UNKNOWN =0,
|
|
MFX_LEVEL_UNKNOWN =0,
|
|
|
|
/* AVC Profiles & Levels */
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET0 = (0x100 << 0),
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET1 = (0x100 << 1),
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET2 = (0x100 << 2),
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET3 = (0x100 << 3),
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET4 = (0x100 << 4),
|
|
MFX_PROFILE_AVC_CONSTRAINT_SET5 = (0x100 << 5),
|
|
|
|
MFX_PROFILE_AVC_BASELINE =66,
|
|
MFX_PROFILE_AVC_MAIN =77,
|
|
MFX_PROFILE_AVC_EXTENDED =88,
|
|
MFX_PROFILE_AVC_HIGH =100,
|
|
MFX_PROFILE_AVC_HIGH10 =110,
|
|
MFX_PROFILE_AVC_HIGH_422 =122,
|
|
MFX_PROFILE_AVC_CONSTRAINED_BASELINE =MFX_PROFILE_AVC_BASELINE + MFX_PROFILE_AVC_CONSTRAINT_SET1,
|
|
MFX_PROFILE_AVC_CONSTRAINED_HIGH =MFX_PROFILE_AVC_HIGH + MFX_PROFILE_AVC_CONSTRAINT_SET4
|
|
+ MFX_PROFILE_AVC_CONSTRAINT_SET5,
|
|
MFX_PROFILE_AVC_PROGRESSIVE_HIGH =MFX_PROFILE_AVC_HIGH + MFX_PROFILE_AVC_CONSTRAINT_SET4,
|
|
|
|
MFX_LEVEL_AVC_1 =10,
|
|
MFX_LEVEL_AVC_1b =9,
|
|
MFX_LEVEL_AVC_11 =11,
|
|
MFX_LEVEL_AVC_12 =12,
|
|
MFX_LEVEL_AVC_13 =13,
|
|
MFX_LEVEL_AVC_2 =20,
|
|
MFX_LEVEL_AVC_21 =21,
|
|
MFX_LEVEL_AVC_22 =22,
|
|
MFX_LEVEL_AVC_3 =30,
|
|
MFX_LEVEL_AVC_31 =31,
|
|
MFX_LEVEL_AVC_32 =32,
|
|
MFX_LEVEL_AVC_4 =40,
|
|
MFX_LEVEL_AVC_41 =41,
|
|
MFX_LEVEL_AVC_42 =42,
|
|
MFX_LEVEL_AVC_5 =50,
|
|
MFX_LEVEL_AVC_51 =51,
|
|
MFX_LEVEL_AVC_52 =52,
|
|
#if (MFX_VERSION >= 1035)
|
|
MFX_LEVEL_AVC_6 =60,
|
|
MFX_LEVEL_AVC_61 =61,
|
|
MFX_LEVEL_AVC_62 =62,
|
|
#endif
|
|
|
|
/* MPEG-2 Profiles & Levels */
|
|
MFX_PROFILE_MPEG2_SIMPLE =0x50,
|
|
MFX_PROFILE_MPEG2_MAIN =0x40,
|
|
MFX_PROFILE_MPEG2_HIGH =0x10,
|
|
|
|
MFX_LEVEL_MPEG2_LOW =0xA,
|
|
MFX_LEVEL_MPEG2_MAIN =0x8,
|
|
MFX_LEVEL_MPEG2_HIGH =0x4,
|
|
MFX_LEVEL_MPEG2_HIGH1440 =0x6,
|
|
|
|
/* VC1 Profiles & Levels */
|
|
MFX_PROFILE_VC1_SIMPLE =(0+1),
|
|
MFX_PROFILE_VC1_MAIN =(4+1),
|
|
MFX_PROFILE_VC1_ADVANCED =(12+1),
|
|
|
|
/* VC1 levels for simple & main profiles */
|
|
MFX_LEVEL_VC1_LOW =(0+1),
|
|
MFX_LEVEL_VC1_MEDIAN =(2+1),
|
|
MFX_LEVEL_VC1_HIGH =(4+1),
|
|
|
|
/* VC1 levels for the advanced profile */
|
|
MFX_LEVEL_VC1_0 =(0x00+1),
|
|
MFX_LEVEL_VC1_1 =(0x01+1),
|
|
MFX_LEVEL_VC1_2 =(0x02+1),
|
|
MFX_LEVEL_VC1_3 =(0x03+1),
|
|
MFX_LEVEL_VC1_4 =(0x04+1),
|
|
|
|
/* HEVC Profiles & Levels & Tiers */
|
|
MFX_PROFILE_HEVC_MAIN =1,
|
|
MFX_PROFILE_HEVC_MAIN10 =2,
|
|
MFX_PROFILE_HEVC_MAINSP =3,
|
|
MFX_PROFILE_HEVC_REXT =4,
|
|
#if (MFX_VERSION >= 1032)
|
|
MFX_PROFILE_HEVC_SCC =9,
|
|
#endif
|
|
|
|
MFX_LEVEL_HEVC_1 = 10,
|
|
MFX_LEVEL_HEVC_2 = 20,
|
|
MFX_LEVEL_HEVC_21 = 21,
|
|
MFX_LEVEL_HEVC_3 = 30,
|
|
MFX_LEVEL_HEVC_31 = 31,
|
|
MFX_LEVEL_HEVC_4 = 40,
|
|
MFX_LEVEL_HEVC_41 = 41,
|
|
MFX_LEVEL_HEVC_5 = 50,
|
|
MFX_LEVEL_HEVC_51 = 51,
|
|
MFX_LEVEL_HEVC_52 = 52,
|
|
MFX_LEVEL_HEVC_6 = 60,
|
|
MFX_LEVEL_HEVC_61 = 61,
|
|
MFX_LEVEL_HEVC_62 = 62,
|
|
|
|
MFX_TIER_HEVC_MAIN = 0,
|
|
MFX_TIER_HEVC_HIGH = 0x100,
|
|
|
|
/* VP9 Profiles */
|
|
MFX_PROFILE_VP9_0 = 1,
|
|
MFX_PROFILE_VP9_1 = 2,
|
|
MFX_PROFILE_VP9_2 = 3,
|
|
MFX_PROFILE_VP9_3 = 4,
|
|
|
|
#if (MFX_VERSION >= 1034)
|
|
/* AV1 Profiles */
|
|
MFX_PROFILE_AV1_MAIN = 1,
|
|
MFX_PROFILE_AV1_HIGH = 2,
|
|
MFX_PROFILE_AV1_PRO = 3,
|
|
|
|
MFX_LEVEL_AV1_2 = 20,
|
|
MFX_LEVEL_AV1_21 = 21,
|
|
MFX_LEVEL_AV1_22 = 22,
|
|
MFX_LEVEL_AV1_23 = 23,
|
|
MFX_LEVEL_AV1_3 = 30,
|
|
MFX_LEVEL_AV1_31 = 31,
|
|
MFX_LEVEL_AV1_32 = 32,
|
|
MFX_LEVEL_AV1_33 = 33,
|
|
MFX_LEVEL_AV1_4 = 40,
|
|
MFX_LEVEL_AV1_41 = 41,
|
|
MFX_LEVEL_AV1_42 = 42,
|
|
MFX_LEVEL_AV1_43 = 43,
|
|
MFX_LEVEL_AV1_5 = 50,
|
|
MFX_LEVEL_AV1_51 = 51,
|
|
MFX_LEVEL_AV1_52 = 52,
|
|
MFX_LEVEL_AV1_53 = 53,
|
|
MFX_LEVEL_AV1_6 = 60,
|
|
MFX_LEVEL_AV1_61 = 61,
|
|
MFX_LEVEL_AV1_62 = 62,
|
|
MFX_LEVEL_AV1_63 = 63,
|
|
#endif
|
|
};
|
|
|
|
/* GopOptFlag */
|
|
enum {
|
|
MFX_GOP_CLOSED =1,
|
|
MFX_GOP_STRICT =2
|
|
};
|
|
|
|
/* TargetUsages: from 1 to 7 inclusive */
|
|
enum {
|
|
MFX_TARGETUSAGE_1 =1,
|
|
MFX_TARGETUSAGE_2 =2,
|
|
MFX_TARGETUSAGE_3 =3,
|
|
MFX_TARGETUSAGE_4 =4,
|
|
MFX_TARGETUSAGE_5 =5,
|
|
MFX_TARGETUSAGE_6 =6,
|
|
MFX_TARGETUSAGE_7 =7,
|
|
|
|
MFX_TARGETUSAGE_UNKNOWN =0,
|
|
MFX_TARGETUSAGE_BEST_QUALITY =MFX_TARGETUSAGE_1,
|
|
MFX_TARGETUSAGE_BALANCED =MFX_TARGETUSAGE_4,
|
|
MFX_TARGETUSAGE_BEST_SPEED =MFX_TARGETUSAGE_7
|
|
};
|
|
|
|
/* RateControlMethod */
|
|
enum {
|
|
MFX_RATECONTROL_CBR =1,
|
|
MFX_RATECONTROL_VBR =2,
|
|
MFX_RATECONTROL_CQP =3,
|
|
MFX_RATECONTROL_AVBR =4,
|
|
MFX_RATECONTROL_RESERVED1 =5,
|
|
MFX_RATECONTROL_RESERVED2 =6,
|
|
MFX_RATECONTROL_RESERVED3 =100,
|
|
MFX_RATECONTROL_RESERVED4 =7,
|
|
MFX_RATECONTROL_LA =8,
|
|
MFX_RATECONTROL_ICQ =9,
|
|
MFX_RATECONTROL_VCM =10,
|
|
MFX_RATECONTROL_LA_ICQ =11,
|
|
MFX_RATECONTROL_LA_EXT =12,
|
|
MFX_RATECONTROL_LA_HRD =13,
|
|
MFX_RATECONTROL_QVBR =14,
|
|
};
|
|
|
|
/* Trellis control*/
|
|
enum {
|
|
MFX_TRELLIS_UNKNOWN =0,
|
|
MFX_TRELLIS_OFF =0x01,
|
|
MFX_TRELLIS_I =0x02,
|
|
MFX_TRELLIS_P =0x04,
|
|
MFX_TRELLIS_B =0x08
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 reserved1;
|
|
mfxU16 RateDistortionOpt; /* tri-state option */
|
|
mfxU16 MECostType;
|
|
mfxU16 MESearchType;
|
|
mfxI16Pair MVSearchWindow;
|
|
mfxU16 EndOfSequence; /* tri-state option */
|
|
mfxU16 FramePicture; /* tri-state option */
|
|
|
|
mfxU16 CAVLC; /* tri-state option */
|
|
mfxU16 reserved2[2];
|
|
mfxU16 RecoveryPointSEI; /* tri-state option */
|
|
mfxU16 ViewOutput; /* tri-state option */
|
|
mfxU16 NalHrdConformance; /* tri-state option */
|
|
mfxU16 SingleSeiNalUnit; /* tri-state option */
|
|
mfxU16 VuiVclHrdParameters; /* tri-state option */
|
|
|
|
mfxU16 RefPicListReordering; /* tri-state option */
|
|
mfxU16 ResetRefList; /* tri-state option */
|
|
mfxU16 RefPicMarkRep; /* tri-state option */
|
|
mfxU16 FieldOutput; /* tri-state option */
|
|
|
|
mfxU16 IntraPredBlockSize;
|
|
mfxU16 InterPredBlockSize;
|
|
mfxU16 MVPrecision;
|
|
mfxU16 MaxDecFrameBuffering;
|
|
|
|
mfxU16 AUDelimiter; /* tri-state option */
|
|
mfxU16 EndOfStream; /* tri-state option */
|
|
mfxU16 PicTimingSEI; /* tri-state option */
|
|
mfxU16 VuiNalHrdParameters; /* tri-state option */
|
|
} mfxExtCodingOption;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_B_REF_UNKNOWN = 0,
|
|
MFX_B_REF_OFF = 1,
|
|
MFX_B_REF_PYRAMID = 2
|
|
};
|
|
|
|
enum {
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_LOOKAHEAD_DS_UNKNOWN) = 0,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_LOOKAHEAD_DS_OFF) = 1,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_LOOKAHEAD_DS_2x) = 2,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_LOOKAHEAD_DS_4x) = 3
|
|
};
|
|
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_LOOKAHEAD_DS_UNKNOWN);
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_LOOKAHEAD_DS_OFF);
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_LOOKAHEAD_DS_2x);
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_LOOKAHEAD_DS_4x);
|
|
|
|
enum {
|
|
MFX_BPSEI_DEFAULT = 0x00,
|
|
MFX_BPSEI_IFRAME = 0x01
|
|
};
|
|
|
|
enum {
|
|
MFX_SKIPFRAME_NO_SKIP = 0,
|
|
MFX_SKIPFRAME_INSERT_DUMMY = 1,
|
|
MFX_SKIPFRAME_INSERT_NOTHING = 2,
|
|
MFX_SKIPFRAME_BRC_ONLY = 3,
|
|
};
|
|
|
|
/* Intra refresh types */
|
|
enum {
|
|
MFX_REFRESH_NO = 0,
|
|
MFX_REFRESH_VERTICAL = 1,
|
|
MFX_REFRESH_HORIZONTAL = 2,
|
|
MFX_REFRESH_SLICE = 3
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 IntRefType;
|
|
mfxU16 IntRefCycleSize;
|
|
mfxI16 IntRefQPDelta;
|
|
|
|
mfxU32 MaxFrameSize;
|
|
mfxU32 MaxSliceSize;
|
|
|
|
mfxU16 BitrateLimit; /* tri-state option */
|
|
mfxU16 MBBRC; /* tri-state option */
|
|
mfxU16 ExtBRC; /* tri-state option */
|
|
mfxU16 LookAheadDepth;
|
|
mfxU16 Trellis;
|
|
mfxU16 RepeatPPS; /* tri-state option */
|
|
mfxU16 BRefType;
|
|
mfxU16 AdaptiveI; /* tri-state option */
|
|
mfxU16 AdaptiveB; /* tri-state option */
|
|
mfxU16 LookAheadDS;
|
|
mfxU16 NumMbPerSlice;
|
|
mfxU16 SkipFrame;
|
|
mfxU8 MinQPI; /* 1..51, 0 = default */
|
|
mfxU8 MaxQPI; /* 1..51, 0 = default */
|
|
mfxU8 MinQPP; /* 1..51, 0 = default */
|
|
mfxU8 MaxQPP; /* 1..51, 0 = default */
|
|
mfxU8 MinQPB; /* 1..51, 0 = default */
|
|
mfxU8 MaxQPB; /* 1..51, 0 = default */
|
|
mfxU16 FixedFrameRate; /* tri-state option */
|
|
mfxU16 DisableDeblockingIdc;
|
|
mfxU16 DisableVUI;
|
|
mfxU16 BufferingPeriodSEI;
|
|
mfxU16 EnableMAD; /* tri-state option */
|
|
mfxU16 UseRawRef; /* tri-state option */
|
|
} mfxExtCodingOption2;
|
|
MFX_PACK_END()
|
|
|
|
/* WeightedPred */
|
|
enum {
|
|
MFX_WEIGHTED_PRED_UNKNOWN = 0,
|
|
MFX_WEIGHTED_PRED_DEFAULT = 1,
|
|
MFX_WEIGHTED_PRED_EXPLICIT = 2,
|
|
MFX_WEIGHTED_PRED_IMPLICIT = 3
|
|
};
|
|
|
|
/* ScenarioInfo */
|
|
enum {
|
|
MFX_SCENARIO_UNKNOWN = 0,
|
|
MFX_SCENARIO_DISPLAY_REMOTING = 1,
|
|
MFX_SCENARIO_VIDEO_CONFERENCE = 2,
|
|
MFX_SCENARIO_ARCHIVE = 3,
|
|
MFX_SCENARIO_LIVE_STREAMING = 4,
|
|
MFX_SCENARIO_CAMERA_CAPTURE = 5,
|
|
MFX_SCENARIO_VIDEO_SURVEILLANCE = 6,
|
|
MFX_SCENARIO_GAME_STREAMING = 7,
|
|
MFX_SCENARIO_REMOTE_GAMING = 8
|
|
};
|
|
|
|
/* ContentInfo */
|
|
enum {
|
|
MFX_CONTENT_UNKNOWN = 0,
|
|
MFX_CONTENT_FULL_SCREEN_VIDEO = 1,
|
|
MFX_CONTENT_NON_VIDEO_SCREEN = 2
|
|
};
|
|
|
|
/* PRefType */
|
|
enum {
|
|
MFX_P_REF_DEFAULT = 0,
|
|
MFX_P_REF_SIMPLE = 1,
|
|
MFX_P_REF_PYRAMID = 2
|
|
};
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
|
|
/* QuantScaleType */
|
|
enum {
|
|
MFX_MPEG2_QUANT_SCALE_TYPE_DEFAULT = 0,
|
|
MFX_MPEG2_QUANT_SCALE_TYPE_LINEAR = 1, /* q_scale_type = 0 */
|
|
MFX_MPEG2_QUANT_SCALE_TYPE_NONLINEAR = 2 /* q_scale_type = 1 */
|
|
};
|
|
|
|
/* IntraVLCFormat */
|
|
enum {
|
|
MFX_MPEG2_INTRA_VLC_FORMAT_DEFAULT = 0,
|
|
MFX_MPEG2_INTRA_VLC_FORMAT_B14 = 1, /* use table B.14 */
|
|
MFX_MPEG2_INTRA_VLC_FORMAT_B15 = 2 /* use table B.15 */
|
|
};
|
|
|
|
/* ScanType */
|
|
enum {
|
|
MFX_MPEG2_SCAN_TYPE_DEFAULT = 0,
|
|
MFX_MPEG2_SCAN_TYPE_ZIGZAG = 1, /* alternate_scan = 0 */
|
|
MFX_MPEG2_SCAN_TYPE_ALTERNATE = 2 /* alternate_scan = 1 */
|
|
};
|
|
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumSliceI;
|
|
mfxU16 NumSliceP;
|
|
mfxU16 NumSliceB;
|
|
|
|
mfxU16 WinBRCMaxAvgKbps;
|
|
mfxU16 WinBRCSize;
|
|
|
|
mfxU16 QVBRQuality;
|
|
mfxU16 EnableMBQP;
|
|
mfxU16 IntRefCycleDist;
|
|
mfxU16 DirectBiasAdjustment; /* tri-state option */
|
|
mfxU16 GlobalMotionBiasAdjustment; /* tri-state option */
|
|
mfxU16 MVCostScalingFactor;
|
|
mfxU16 MBDisableSkipMap; /* tri-state option */
|
|
|
|
mfxU16 WeightedPred;
|
|
mfxU16 WeightedBiPred;
|
|
|
|
mfxU16 AspectRatioInfoPresent; /* tri-state option */
|
|
mfxU16 OverscanInfoPresent; /* tri-state option */
|
|
mfxU16 OverscanAppropriate; /* tri-state option */
|
|
mfxU16 TimingInfoPresent; /* tri-state option */
|
|
mfxU16 BitstreamRestriction; /* tri-state option */
|
|
mfxU16 LowDelayHrd; /* tri-state option */
|
|
mfxU16 MotionVectorsOverPicBoundaries; /* tri-state option */
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxU16 Log2MaxMvLengthHorizontal; /* 0..16 */
|
|
mfxU16 Log2MaxMvLengthVertical; /* 0..16 */
|
|
#else
|
|
mfxU16 reserved1[2];
|
|
#endif
|
|
|
|
mfxU16 ScenarioInfo;
|
|
mfxU16 ContentInfo;
|
|
|
|
mfxU16 PRefType;
|
|
mfxU16 FadeDetection; /* tri-state option */
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxI16 DeblockingAlphaTcOffset; /* -12..12 (slice_alpha_c0_offset_div2 << 1) */
|
|
mfxI16 DeblockingBetaOffset; /* -12..12 (slice_beta_offset_div2 << 1) */
|
|
#else
|
|
mfxU16 reserved2[2];
|
|
#endif
|
|
mfxU16 GPB; /* tri-state option */
|
|
|
|
mfxU32 MaxFrameSizeI;
|
|
mfxU32 MaxFrameSizeP;
|
|
mfxU32 reserved3[3];
|
|
|
|
mfxU16 EnableQPOffset; /* tri-state option */
|
|
mfxI16 QPOffset[8]; /* FrameQP = QPX + QPOffset[pyramid_layer]; QPX = QPB for B-pyramid, QPP for P-pyramid */
|
|
|
|
mfxU16 NumRefActiveP[8];
|
|
mfxU16 NumRefActiveBL0[8];
|
|
mfxU16 NumRefActiveBL1[8];
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxU16 ConstrainedIntraPredFlag; /* tri-state option */
|
|
#else
|
|
mfxU16 reserved6;
|
|
#endif
|
|
#if (MFX_VERSION >= 1026)
|
|
mfxU16 TransformSkip; /* tri-state option; HEVC transform_skip_enabled_flag */
|
|
#else
|
|
mfxU16 reserved7;
|
|
#endif
|
|
#if (MFX_VERSION >= 1027)
|
|
mfxU16 TargetChromaFormatPlus1; /* Minus 1 specifies target encoding chroma format (see ColorFormat enum). May differ from input one. */
|
|
mfxU16 TargetBitDepthLuma; /* Target encoding bit depth for luma samples. May differ from input one. */
|
|
mfxU16 TargetBitDepthChroma; /* Target encoding bit depth for chroma samples. May differ from input one. */
|
|
#else
|
|
mfxU16 reserved4[3];
|
|
#endif
|
|
mfxU16 BRCPanicMode; /* tri-state option */
|
|
|
|
mfxU16 LowDelayBRC; /* tri-state option */
|
|
mfxU16 EnableMBForceIntra; /* tri-state option */
|
|
mfxU16 AdaptiveMaxFrameSize; /* tri-state option */
|
|
|
|
mfxU16 RepartitionCheckEnable; /* tri-state option */
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxU16 QuantScaleType; /* For MPEG2 specifies mapping between quantiser_scale_code and quantiser_scale (see QuantScaleType enum) */
|
|
mfxU16 IntraVLCFormat; /* For MPEG2 specifies which table shall be used for coding of DCT coefficients of intra macroblocks (see IntraVLCFormat enum) */
|
|
mfxU16 ScanType; /* For MPEG2 specifies transform coefficients scan pattern (see ScanType enum) */
|
|
#else
|
|
mfxU16 reserved5[3];
|
|
#endif
|
|
#if (MFX_VERSION >= 1025)
|
|
mfxU16 EncodedUnitsInfo; /* tri-state option */
|
|
mfxU16 EnableNalUnitType; /* tri-state option */
|
|
#else
|
|
mfxU16 reserved8[2];
|
|
#endif
|
|
#if (MFX_VERSION >= 1026)
|
|
mfxU16 ExtBrcAdaptiveLTR; /* tri-state option for ExtBRC */
|
|
#else
|
|
mfxU16 reserved9;
|
|
#endif
|
|
mfxU16 reserved[163];
|
|
} mfxExtCodingOption3;
|
|
MFX_PACK_END()
|
|
|
|
/* IntraPredBlockSize/InterPredBlockSize */
|
|
enum {
|
|
MFX_BLOCKSIZE_UNKNOWN = 0,
|
|
MFX_BLOCKSIZE_MIN_16X16 = 1, /* 16x16 */
|
|
MFX_BLOCKSIZE_MIN_8X8 = 2, /* 16x16, 8x8 */
|
|
MFX_BLOCKSIZE_MIN_4X4 = 3 /* 16x16, 8x8, 4x4 */
|
|
};
|
|
|
|
/* MVPrecision */
|
|
enum {
|
|
MFX_MVPRECISION_UNKNOWN = 0,
|
|
MFX_MVPRECISION_INTEGER = (1 << 0),
|
|
MFX_MVPRECISION_HALFPEL = (1 << 1),
|
|
MFX_MVPRECISION_QUARTERPEL = (1 << 2)
|
|
};
|
|
|
|
enum {
|
|
MFX_CODINGOPTION_UNKNOWN =0,
|
|
MFX_CODINGOPTION_ON =0x10,
|
|
MFX_CODINGOPTION_OFF =0x20,
|
|
MFX_CODINGOPTION_ADAPTIVE =0x30
|
|
};
|
|
|
|
/* Data Flag for mfxBitstream*/
|
|
enum {
|
|
MFX_BITSTREAM_COMPLETE_FRAME = 0x0001, /* the bitstream contains a complete frame or field pair of data */
|
|
MFX_BITSTREAM_EOS = 0x0002
|
|
};
|
|
/* Extended Buffer Ids */
|
|
enum {
|
|
MFX_EXTBUFF_CODING_OPTION = MFX_MAKEFOURCC('C','D','O','P'),
|
|
MFX_EXTBUFF_CODING_OPTION_SPSPPS = MFX_MAKEFOURCC('C','O','S','P'),
|
|
MFX_EXTBUFF_VPP_DONOTUSE = MFX_MAKEFOURCC('N','U','S','E'),
|
|
MFX_EXTBUFF_VPP_AUXDATA = MFX_MAKEFOURCC('A','U','X','D'),
|
|
MFX_EXTBUFF_VPP_DENOISE = MFX_MAKEFOURCC('D','N','I','S'),
|
|
MFX_EXTBUFF_VPP_SCENE_ANALYSIS = MFX_MAKEFOURCC('S','C','L','Y'),
|
|
MFX_EXTBUFF_VPP_SCENE_CHANGE = MFX_EXTBUFF_VPP_SCENE_ANALYSIS,
|
|
MFX_EXTBUFF_VPP_PROCAMP = MFX_MAKEFOURCC('P','A','M','P'),
|
|
MFX_EXTBUFF_VPP_DETAIL = MFX_MAKEFOURCC('D','E','T',' '),
|
|
MFX_EXTBUFF_VIDEO_SIGNAL_INFO = MFX_MAKEFOURCC('V','S','I','N'),
|
|
MFX_EXTBUFF_VPP_DOUSE = MFX_MAKEFOURCC('D','U','S','E'),
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION) = MFX_MAKEFOURCC('O','P','Q','S'),
|
|
MFX_EXTBUFF_AVC_REFLIST_CTRL = MFX_MAKEFOURCC('R','L','S','T'),
|
|
MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION = MFX_MAKEFOURCC('F','R','C',' '),
|
|
MFX_EXTBUFF_PICTURE_TIMING_SEI = MFX_MAKEFOURCC('P','T','S','E'),
|
|
MFX_EXTBUFF_AVC_TEMPORAL_LAYERS = MFX_MAKEFOURCC('A','T','M','L'),
|
|
MFX_EXTBUFF_CODING_OPTION2 = MFX_MAKEFOURCC('C','D','O','2'),
|
|
MFX_EXTBUFF_VPP_IMAGE_STABILIZATION = MFX_MAKEFOURCC('I','S','T','B'),
|
|
MFX_EXTBUFF_VPP_PICSTRUCT_DETECTION = MFX_MAKEFOURCC('I','D','E','T'),
|
|
MFX_EXTBUFF_ENCODER_CAPABILITY = MFX_MAKEFOURCC('E','N','C','P'),
|
|
MFX_EXTBUFF_ENCODER_RESET_OPTION = MFX_MAKEFOURCC('E','N','R','O'),
|
|
MFX_EXTBUFF_ENCODED_FRAME_INFO = MFX_MAKEFOURCC('E','N','F','I'),
|
|
MFX_EXTBUFF_VPP_COMPOSITE = MFX_MAKEFOURCC('V','C','M','P'),
|
|
MFX_EXTBUFF_VPP_VIDEO_SIGNAL_INFO = MFX_MAKEFOURCC('V','V','S','I'),
|
|
MFX_EXTBUFF_ENCODER_ROI = MFX_MAKEFOURCC('E','R','O','I'),
|
|
MFX_EXTBUFF_VPP_DEINTERLACING = MFX_MAKEFOURCC('V','P','D','I'),
|
|
MFX_EXTBUFF_AVC_REFLISTS = MFX_MAKEFOURCC('R','L','T','S'),
|
|
MFX_EXTBUFF_DEC_VIDEO_PROCESSING = MFX_MAKEFOURCC('D','E','C','V'),
|
|
MFX_EXTBUFF_VPP_FIELD_PROCESSING = MFX_MAKEFOURCC('F','P','R','O'),
|
|
MFX_EXTBUFF_CODING_OPTION3 = MFX_MAKEFOURCC('C','D','O','3'),
|
|
MFX_EXTBUFF_CHROMA_LOC_INFO = MFX_MAKEFOURCC('C','L','I','N'),
|
|
MFX_EXTBUFF_MBQP = MFX_MAKEFOURCC('M','B','Q','P'),
|
|
MFX_EXTBUFF_MB_FORCE_INTRA = MFX_MAKEFOURCC('M','B','F','I'),
|
|
MFX_EXTBUFF_HEVC_TILES = MFX_MAKEFOURCC('2','6','5','T'),
|
|
MFX_EXTBUFF_MB_DISABLE_SKIP_MAP = MFX_MAKEFOURCC('M','D','S','M'),
|
|
MFX_EXTBUFF_HEVC_PARAM = MFX_MAKEFOURCC('2','6','5','P'),
|
|
MFX_EXTBUFF_DECODED_FRAME_INFO = MFX_MAKEFOURCC('D','E','F','I'),
|
|
MFX_EXTBUFF_TIME_CODE = MFX_MAKEFOURCC('T','M','C','D'),
|
|
MFX_EXTBUFF_HEVC_REGION = MFX_MAKEFOURCC('2','6','5','R'),
|
|
MFX_EXTBUFF_PRED_WEIGHT_TABLE = MFX_MAKEFOURCC('E','P','W','T'),
|
|
MFX_EXTBUFF_DIRTY_RECTANGLES = MFX_MAKEFOURCC('D','R','O','I'),
|
|
MFX_EXTBUFF_MOVING_RECTANGLES = MFX_MAKEFOURCC('M','R','O','I'),
|
|
MFX_EXTBUFF_CODING_OPTION_VPS = MFX_MAKEFOURCC('C','O','V','P'),
|
|
MFX_EXTBUFF_VPP_ROTATION = MFX_MAKEFOURCC('R','O','T',' '),
|
|
MFX_EXTBUFF_ENCODED_SLICES_INFO = MFX_MAKEFOURCC('E','N','S','I'),
|
|
MFX_EXTBUFF_VPP_SCALING = MFX_MAKEFOURCC('V','S','C','L'),
|
|
MFX_EXTBUFF_HEVC_REFLIST_CTRL = MFX_EXTBUFF_AVC_REFLIST_CTRL,
|
|
MFX_EXTBUFF_HEVC_REFLISTS = MFX_EXTBUFF_AVC_REFLISTS,
|
|
MFX_EXTBUFF_HEVC_TEMPORAL_LAYERS = MFX_EXTBUFF_AVC_TEMPORAL_LAYERS,
|
|
MFX_EXTBUFF_VPP_MIRRORING = MFX_MAKEFOURCC('M','I','R','R'),
|
|
MFX_EXTBUFF_MV_OVER_PIC_BOUNDARIES = MFX_MAKEFOURCC('M','V','P','B'),
|
|
MFX_EXTBUFF_VPP_COLORFILL = MFX_MAKEFOURCC('V','C','L','F'),
|
|
#if (MFX_VERSION >= 1025)
|
|
MFX_EXTBUFF_DECODE_ERROR_REPORT = MFX_MAKEFOURCC('D', 'E', 'R', 'R'),
|
|
MFX_EXTBUFF_VPP_COLOR_CONVERSION = MFX_MAKEFOURCC('V', 'C', 'S', 'C'),
|
|
MFX_EXTBUFF_CONTENT_LIGHT_LEVEL_INFO = MFX_MAKEFOURCC('L', 'L', 'I', 'S'),
|
|
MFX_EXTBUFF_MASTERING_DISPLAY_COLOUR_VOLUME = MFX_MAKEFOURCC('D', 'C', 'V', 'S'),
|
|
MFX_EXTBUFF_MULTI_FRAME_PARAM = MFX_MAKEFOURCC('M', 'F', 'R', 'P'),
|
|
MFX_EXTBUFF_MULTI_FRAME_CONTROL = MFX_MAKEFOURCC('M', 'F', 'R', 'C'),
|
|
MFX_EXTBUFF_ENCODED_UNITS_INFO = MFX_MAKEFOURCC('E', 'N', 'U', 'I'),
|
|
#endif
|
|
#if (MFX_VERSION >= 1026)
|
|
MFX_EXTBUFF_VPP_MCTF = MFX_MAKEFOURCC('M', 'C', 'T', 'F'),
|
|
MFX_EXTBUFF_VP9_SEGMENTATION = MFX_MAKEFOURCC('9', 'S', 'E', 'G'),
|
|
MFX_EXTBUFF_VP9_TEMPORAL_LAYERS = MFX_MAKEFOURCC('9', 'T', 'M', 'L'),
|
|
MFX_EXTBUFF_VP9_PARAM = MFX_MAKEFOURCC('9', 'P', 'A', 'R'),
|
|
#endif
|
|
#if (MFX_VERSION >= 1027)
|
|
MFX_EXTBUFF_AVC_ROUNDING_OFFSET = MFX_MAKEFOURCC('R','N','D','O'),
|
|
#endif
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_EXTBUFF_DPB = MFX_MAKEFOURCC('E','D','P','B'),
|
|
MFX_EXTBUFF_TEMPORAL_LAYERS = MFX_MAKEFOURCC('T','M','P','L'),
|
|
MFX_EXTBUFF_AVC_SCALING_MATRIX = MFX_MAKEFOURCC('A','V','S','M'),
|
|
MFX_EXTBUFF_MPEG2_QUANT_MATRIX = MFX_MAKEFOURCC('M','2','Q','M'),
|
|
MFX_EXTBUFF_TASK_DEPENDENCY = MFX_MAKEFOURCC('S','Y','N','C'),
|
|
#endif
|
|
#if (MFX_VERSION >= 1031)
|
|
MFX_EXTBUFF_PARTIAL_BITSTREAM_PARAM = MFX_MAKEFOURCC('P','B','O','P'),
|
|
#endif
|
|
MFX_EXTBUFF_ENCODER_IPCM_AREA = MFX_MAKEFOURCC('P', 'C', 'M', 'R'),
|
|
MFX_EXTBUFF_INSERT_HEADERS = MFX_MAKEFOURCC('S', 'P', 'R', 'E'),
|
|
#if (MFX_VERSION >= 1034)
|
|
MFX_EXTBUFF_AV1_FILM_GRAIN_PARAM = MFX_MAKEFOURCC('A','1','F','G'),
|
|
MFX_EXTBUFF_AV1_LST_PARAM = MFX_MAKEFOURCC('A', '1', 'L', 'S'),
|
|
MFX_EXTBUFF_AV1_SEGMENTATION = MFX_MAKEFOURCC('1', 'S', 'E', 'G'),
|
|
MFX_EXTBUFF_AV1_PARAM = MFX_MAKEFOURCC('1', 'P', 'A', 'R'),
|
|
MFX_EXTBUFF_AV1_AUXDATA = MFX_MAKEFOURCC('1', 'A', 'U', 'X'),
|
|
MFX_EXTBUFF_AV1_TEMPORAL_LAYERS = MFX_MAKEFOURCC('1', 'T', 'M', 'L')
|
|
#endif
|
|
};
|
|
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION);
|
|
|
|
/* VPP Conf: Do not use certain algorithms */
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 NumAlg;
|
|
mfxU32* AlgList;
|
|
} mfxExtVPPDoNotUse;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 DenoiseFactor;
|
|
} mfxExtVPPDenoise;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 DetailFactor;
|
|
} mfxExtVPPDetail;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxF64 Brightness;
|
|
mfxF64 Contrast;
|
|
mfxF64 Hue;
|
|
mfxF64 Saturation;
|
|
} mfxExtVPPProcAmp;
|
|
MFX_PACK_END()
|
|
|
|
/* statistics collected for decode, encode and vpp */
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxU32 reserved[16];
|
|
mfxU32 NumFrame;
|
|
mfxU64 NumBit;
|
|
mfxU32 NumCachedFrame;
|
|
} mfxEncodeStat;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU32 reserved[16];
|
|
mfxU32 NumFrame;
|
|
mfxU32 NumSkippedFrame;
|
|
mfxU32 NumError;
|
|
mfxU32 NumCachedFrame;
|
|
} mfxDecodeStat;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU32 reserved[16];
|
|
mfxU32 NumFrame;
|
|
mfxU32 NumCachedFrame;
|
|
} mfxVPPStat;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
union{
|
|
struct{
|
|
mfxU32 SpatialComplexity;
|
|
mfxU32 TemporalComplexity;
|
|
};
|
|
struct{
|
|
mfxU16 PicStruct;
|
|
mfxU16 reserved[3];
|
|
};
|
|
};
|
|
mfxU16 SceneChangeRate;
|
|
mfxU16 RepeatedFrame;
|
|
} mfxExtVppAuxData;
|
|
MFX_PACK_END()
|
|
|
|
/* CtrlFlags */
|
|
enum {
|
|
MFX_PAYLOAD_CTRL_SUFFIX = 0x00000001 /* HEVC suffix SEI */
|
|
};
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxU32 CtrlFlags;
|
|
mfxU32 reserved[3];
|
|
mfxU8 *Data; /* buffer pointer */
|
|
mfxU32 NumBit; /* number of bits */
|
|
mfxU16 Type; /* SEI message type in H.264 or user data start_code in MPEG-2 */
|
|
mfxU16 BufSize; /* payload buffer size in bytes */
|
|
} mfxPayload;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
#if (MFX_VERSION >= 1025)
|
|
mfxU32 reserved[4];
|
|
mfxU16 reserved1;
|
|
mfxU16 MfxNalUnitType;
|
|
#else
|
|
mfxU32 reserved[5];
|
|
#endif
|
|
mfxU16 SkipFrame;
|
|
|
|
mfxU16 QP; /* per frame QP */
|
|
|
|
mfxU16 FrameType;
|
|
mfxU16 NumExtParam;
|
|
mfxU16 NumPayload; /* MPEG-2 user data or H.264 SEI message(s) */
|
|
mfxU16 reserved2;
|
|
|
|
mfxExtBuffer **ExtParam;
|
|
mfxPayload **Payload; /* for field pair, first field uses even payloads and second field uses odd payloads */
|
|
} mfxEncodeCtrl;
|
|
MFX_PACK_END()
|
|
|
|
/* Buffer Memory Types */
|
|
enum {
|
|
/* Buffer types */
|
|
MFX_MEMTYPE_PERSISTENT_MEMORY =0x0002
|
|
};
|
|
|
|
/* Frame Memory Types */
|
|
#define MFX_MEMTYPE_BASE(x) (0x90ff & (x))
|
|
|
|
enum {
|
|
MFX_MEMTYPE_DXVA2_DECODER_TARGET =0x0010,
|
|
MFX_MEMTYPE_DXVA2_PROCESSOR_TARGET =0x0020,
|
|
MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET = MFX_MEMTYPE_DXVA2_DECODER_TARGET,
|
|
MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET = MFX_MEMTYPE_DXVA2_PROCESSOR_TARGET,
|
|
MFX_MEMTYPE_SYSTEM_MEMORY =0x0040,
|
|
MFX_MEMTYPE_RESERVED1 =0x0080,
|
|
|
|
MFX_MEMTYPE_FROM_ENCODE = 0x0100,
|
|
MFX_MEMTYPE_FROM_DECODE = 0x0200,
|
|
MFX_MEMTYPE_FROM_VPPIN = 0x0400,
|
|
MFX_MEMTYPE_FROM_VPPOUT = 0x0800,
|
|
MFX_MEMTYPE_FROM_ENC = 0x2000,
|
|
MFX_MEMTYPE_FROM_PAK = 0x4000, //reserved
|
|
|
|
MFX_MEMTYPE_INTERNAL_FRAME = 0x0001,
|
|
MFX_MEMTYPE_EXTERNAL_FRAME = 0x0002,
|
|
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_MEMTYPE_OPAQUE_FRAME) = 0x0004,
|
|
MFX_MEMTYPE_EXPORT_FRAME = 0x0008,
|
|
MFX_MEMTYPE_SHARED_RESOURCE = MFX_MEMTYPE_EXPORT_FRAME,
|
|
#if (MFX_VERSION >= 1025)
|
|
MFX_MEMTYPE_VIDEO_MEMORY_ENCODER_TARGET = 0x1000
|
|
#else
|
|
MFX_MEMTYPE_RESERVED2 = 0x1000
|
|
#endif
|
|
};
|
|
|
|
MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_MEMTYPE_OPAQUE_FRAME);
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
union {
|
|
mfxU32 AllocId;
|
|
mfxU32 reserved[1];
|
|
};
|
|
mfxU32 reserved3[3];
|
|
mfxFrameInfo Info;
|
|
mfxU16 Type; /* decoder or processor render targets */
|
|
mfxU16 NumFrameMin;
|
|
mfxU16 NumFrameSuggested;
|
|
mfxU16 reserved2;
|
|
} mfxFrameAllocRequest;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxU32 AllocId;
|
|
mfxU32 reserved[3];
|
|
mfxMemId *mids; /* the array allocated by application */
|
|
mfxU16 NumFrameActual;
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxU16 MemType;
|
|
#else
|
|
mfxU16 reserved2;
|
|
#endif
|
|
} mfxFrameAllocResponse;
|
|
MFX_PACK_END()
|
|
|
|
/* FrameType */
|
|
enum {
|
|
MFX_FRAMETYPE_UNKNOWN =0x0000,
|
|
|
|
MFX_FRAMETYPE_I =0x0001,
|
|
MFX_FRAMETYPE_P =0x0002,
|
|
MFX_FRAMETYPE_B =0x0004,
|
|
MFX_FRAMETYPE_S =0x0008,
|
|
|
|
MFX_FRAMETYPE_REF =0x0040,
|
|
MFX_FRAMETYPE_IDR =0x0080,
|
|
|
|
MFX_FRAMETYPE_xI =0x0100,
|
|
MFX_FRAMETYPE_xP =0x0200,
|
|
MFX_FRAMETYPE_xB =0x0400,
|
|
MFX_FRAMETYPE_xS =0x0800,
|
|
|
|
MFX_FRAMETYPE_xREF =0x4000,
|
|
MFX_FRAMETYPE_xIDR =0x8000
|
|
};
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
enum {
|
|
MFX_HEVC_NALU_TYPE_UNKNOWN = 0,
|
|
MFX_HEVC_NALU_TYPE_TRAIL_N = ( 0+1),
|
|
MFX_HEVC_NALU_TYPE_TRAIL_R = ( 1+1),
|
|
MFX_HEVC_NALU_TYPE_RADL_N = ( 6+1),
|
|
MFX_HEVC_NALU_TYPE_RADL_R = ( 7+1),
|
|
MFX_HEVC_NALU_TYPE_RASL_N = ( 8+1),
|
|
MFX_HEVC_NALU_TYPE_RASL_R = ( 9+1),
|
|
MFX_HEVC_NALU_TYPE_IDR_W_RADL = (19+1),
|
|
MFX_HEVC_NALU_TYPE_IDR_N_LP = (20+1),
|
|
MFX_HEVC_NALU_TYPE_CRA_NUT = (21+1)
|
|
};
|
|
#endif
|
|
|
|
typedef enum {
|
|
MFX_HANDLE_DIRECT3D_DEVICE_MANAGER9 =1, /* IDirect3DDeviceManager9 */
|
|
MFX_HANDLE_D3D9_DEVICE_MANAGER = MFX_HANDLE_DIRECT3D_DEVICE_MANAGER9,
|
|
MFX_HANDLE_RESERVED1 = 2,
|
|
MFX_HANDLE_D3D11_DEVICE = 3,
|
|
MFX_HANDLE_VA_DISPLAY = 4,
|
|
MFX_HANDLE_RESERVED3 = 5,
|
|
#if (MFX_VERSION >= 1030)
|
|
MFX_HANDLE_VA_CONFIG_ID = 6,
|
|
MFX_HANDLE_VA_CONTEXT_ID = 7,
|
|
#endif
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_HANDLE_CM_DEVICE = 8
|
|
#endif
|
|
} mfxHandleType;
|
|
|
|
typedef enum {
|
|
MFX_SKIPMODE_NOSKIP=0,
|
|
MFX_SKIPMODE_MORE=1,
|
|
MFX_SKIPMODE_LESS=2
|
|
} mfxSkipMode;
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU8 *SPSBuffer;
|
|
mfxU8 *PPSBuffer;
|
|
mfxU16 SPSBufSize;
|
|
mfxU16 PPSBufSize;
|
|
mfxU16 SPSId;
|
|
mfxU16 PPSId;
|
|
} mfxExtCodingOptionSPSPPS;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
union {
|
|
mfxU8 *VPSBuffer;
|
|
mfxU64 reserved1;
|
|
};
|
|
mfxU16 VPSBufSize;
|
|
mfxU16 VPSId;
|
|
|
|
mfxU16 reserved[6];
|
|
} mfxExtCodingOptionVPS;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 VideoFormat;
|
|
mfxU16 VideoFullRange;
|
|
mfxU16 ColourDescriptionPresent;
|
|
mfxU16 ColourPrimaries;
|
|
mfxU16 TransferCharacteristics;
|
|
mfxU16 MatrixCoefficients;
|
|
} mfxExtVideoSignalInfo;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 NumAlg;
|
|
mfxU32 *AlgList;
|
|
} mfxExtVPPDoUse;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
MFX_DEPRECATED typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 reserved1[2];
|
|
struct {
|
|
mfxFrameSurface1 **Surfaces;
|
|
mfxU32 reserved2[5];
|
|
mfxU16 Type;
|
|
mfxU16 NumSurface;
|
|
} In, Out;
|
|
} mfxExtOpaqueSurfaceAlloc;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 NumRefIdxL0Active;
|
|
mfxU16 NumRefIdxL1Active;
|
|
|
|
struct {
|
|
mfxU32 FrameOrder;
|
|
mfxU16 PicStruct;
|
|
mfxU16 ViewId;
|
|
mfxU16 LongTermIdx;
|
|
mfxU16 reserved[3];
|
|
} PreferredRefList[32], RejectedRefList[16], LongTermRefList[16];
|
|
|
|
mfxU16 ApplyLongTermIdx;
|
|
mfxU16 reserved[15];
|
|
} mfxExtAVCRefListCtrl;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_FRCALGM_PRESERVE_TIMESTAMP = 0x0001,
|
|
MFX_FRCALGM_DISTRIBUTED_TIMESTAMP = 0x0002,
|
|
MFX_FRCALGM_FRAME_INTERPOLATION = 0x0004
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 Algorithm;
|
|
mfxU16 reserved;
|
|
mfxU32 reserved2[15];
|
|
} mfxExtVPPFrameRateConversion;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_IMAGESTAB_MODE_UPSCALE = 0x0001,
|
|
MFX_IMAGESTAB_MODE_BOXING = 0x0002
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 Mode;
|
|
mfxU16 reserved[11];
|
|
} mfxExtVPPImageStab;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
|
|
enum {
|
|
MFX_PAYLOAD_OFF = 0,
|
|
MFX_PAYLOAD_IDR = 1
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 reserved[15];
|
|
|
|
mfxU16 InsertPayloadToggle;
|
|
mfxU16 DisplayPrimariesX[3];
|
|
mfxU16 DisplayPrimariesY[3];
|
|
mfxU16 WhitePointX;
|
|
mfxU16 WhitePointY;
|
|
mfxU32 MaxDisplayMasteringLuminance;
|
|
mfxU32 MinDisplayMasteringLuminance;
|
|
} mfxExtMasteringDisplayColourVolume;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 reserved[9];
|
|
|
|
mfxU16 InsertPayloadToggle;
|
|
mfxU16 MaxContentLightLevel;
|
|
mfxU16 MaxPicAverageLightLevel;
|
|
} mfxExtContentLightLevelInfo;
|
|
MFX_PACK_END()
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 reserved[14];
|
|
|
|
struct {
|
|
mfxU16 ClockTimestampFlag;
|
|
mfxU16 CtType;
|
|
mfxU16 NuitFieldBasedFlag;
|
|
mfxU16 CountingType;
|
|
mfxU16 FullTimestampFlag;
|
|
mfxU16 DiscontinuityFlag;
|
|
mfxU16 CntDroppedFlag;
|
|
mfxU16 NFrames;
|
|
mfxU16 SecondsFlag;
|
|
mfxU16 MinutesFlag;
|
|
mfxU16 HoursFlag;
|
|
mfxU16 SecondsValue;
|
|
mfxU16 MinutesValue;
|
|
mfxU16 HoursValue;
|
|
mfxU32 TimeOffset;
|
|
} TimeStamp[3];
|
|
} mfxExtPictureTimingSEI;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 reserved1[4];
|
|
mfxU16 reserved2;
|
|
mfxU16 BaseLayerPID;
|
|
|
|
struct {
|
|
mfxU16 Scale;
|
|
mfxU16 reserved[3];
|
|
}Layer[8];
|
|
} mfxExtAvcTemporalLayers;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 MBPerSec;
|
|
mfxU16 reserved[58];
|
|
} mfxExtEncoderCapability;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 StartNewSequence;
|
|
mfxU16 reserved[11];
|
|
} mfxExtEncoderResetOption;
|
|
MFX_PACK_END()
|
|
|
|
/*LongTermIdx*/
|
|
enum {
|
|
MFX_LONGTERM_IDX_NO_IDX = 0xFFFF
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 FrameOrder;
|
|
mfxU16 PicStruct;
|
|
mfxU16 LongTermIdx;
|
|
mfxU32 MAD;
|
|
mfxU16 BRCPanicMode;
|
|
mfxU16 QP;
|
|
mfxU32 SecondFieldOffset;
|
|
mfxU16 reserved[2];
|
|
|
|
struct {
|
|
mfxU32 FrameOrder;
|
|
mfxU16 PicStruct;
|
|
mfxU16 LongTermIdx;
|
|
mfxU16 reserved[4];
|
|
} UsedRefListL0[32], UsedRefListL1[32];
|
|
} mfxExtAVCEncodedFrameInfo;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct mfxVPPCompInputStream {
|
|
mfxU32 DstX;
|
|
mfxU32 DstY;
|
|
mfxU32 DstW;
|
|
mfxU32 DstH;
|
|
|
|
mfxU16 LumaKeyEnable;
|
|
mfxU16 LumaKeyMin;
|
|
mfxU16 LumaKeyMax;
|
|
|
|
mfxU16 GlobalAlphaEnable;
|
|
mfxU16 GlobalAlpha;
|
|
mfxU16 PixelAlphaEnable;
|
|
|
|
mfxU16 TileId;
|
|
|
|
mfxU16 reserved2[17];
|
|
} mfxVPPCompInputStream;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
/* background color*/
|
|
union {
|
|
mfxU16 Y;
|
|
mfxU16 R;
|
|
};
|
|
union {
|
|
mfxU16 U;
|
|
mfxU16 G;
|
|
};
|
|
union {
|
|
mfxU16 V;
|
|
mfxU16 B;
|
|
};
|
|
mfxU16 NumTiles;
|
|
mfxU16 reserved1[23];
|
|
|
|
mfxU16 NumInputStream;
|
|
mfxVPPCompInputStream *InputStream;
|
|
} mfxExtVPPComposite;
|
|
MFX_PACK_END()
|
|
|
|
/* TransferMatrix */
|
|
enum {
|
|
MFX_TRANSFERMATRIX_UNKNOWN = 0,
|
|
MFX_TRANSFERMATRIX_BT709 = 1,
|
|
MFX_TRANSFERMATRIX_BT601 = 2
|
|
};
|
|
|
|
/* NominalRange */
|
|
enum {
|
|
MFX_NOMINALRANGE_UNKNOWN = 0,
|
|
MFX_NOMINALRANGE_0_255 = 1,
|
|
MFX_NOMINALRANGE_16_235 = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 reserved1[4];
|
|
|
|
union {
|
|
struct { // Init
|
|
struct {
|
|
mfxU16 TransferMatrix;
|
|
mfxU16 NominalRange;
|
|
mfxU16 reserved2[6];
|
|
} In, Out;
|
|
};
|
|
struct { // Runtime
|
|
mfxU16 TransferMatrix;
|
|
mfxU16 NominalRange;
|
|
mfxU16 reserved3[14];
|
|
};
|
|
};
|
|
} mfxExtVPPVideoSignalInfo;
|
|
MFX_PACK_END()
|
|
|
|
/* ROI encoding mode */
|
|
enum {
|
|
MFX_ROI_MODE_PRIORITY = 0,
|
|
MFX_ROI_MODE_QP_DELTA = 1,
|
|
MFX_ROI_MODE_QP_VALUE = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumROI;
|
|
mfxU16 ROIMode;
|
|
mfxU16 reserved1[10];
|
|
|
|
struct {
|
|
mfxU32 Left;
|
|
mfxU32 Top;
|
|
mfxU32 Right;
|
|
mfxU32 Bottom;
|
|
union {
|
|
mfxI16 Priority;
|
|
mfxI16 DeltaQP;
|
|
};
|
|
mfxU16 reserved2[7];
|
|
} ROI[256];
|
|
} mfxExtEncoderROI;
|
|
MFX_PACK_END()
|
|
|
|
/*Deinterlacing Mode*/
|
|
enum {
|
|
MFX_DEINTERLACING_BOB = 1,
|
|
MFX_DEINTERLACING_ADVANCED = 2,
|
|
MFX_DEINTERLACING_AUTO_DOUBLE = 3,
|
|
MFX_DEINTERLACING_AUTO_SINGLE = 4,
|
|
MFX_DEINTERLACING_FULL_FR_OUT = 5,
|
|
MFX_DEINTERLACING_HALF_FR_OUT = 6,
|
|
MFX_DEINTERLACING_24FPS_OUT = 7,
|
|
MFX_DEINTERLACING_FIXED_TELECINE_PATTERN = 8,
|
|
MFX_DEINTERLACING_30FPS_OUT = 9,
|
|
MFX_DEINTERLACING_DETECT_INTERLACE = 10,
|
|
MFX_DEINTERLACING_ADVANCED_NOREF = 11,
|
|
MFX_DEINTERLACING_ADVANCED_SCD = 12,
|
|
MFX_DEINTERLACING_FIELD_WEAVING = 13
|
|
};
|
|
|
|
/*TelecinePattern*/
|
|
enum {
|
|
MFX_TELECINE_PATTERN_32 = 0,
|
|
MFX_TELECINE_PATTERN_2332 = 1,
|
|
MFX_TELECINE_PATTERN_FRAME_REPEAT = 2,
|
|
MFX_TELECINE_PATTERN_41 = 3,
|
|
MFX_TELECINE_POSITION_PROVIDED = 4
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 Mode;
|
|
mfxU16 TelecinePattern;
|
|
mfxU16 TelecineLocation;
|
|
mfxU16 reserved[9];
|
|
} mfxExtVPPDeinterlacing;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 NumRefIdxL0Active;
|
|
mfxU16 NumRefIdxL1Active;
|
|
mfxU16 reserved[2];
|
|
|
|
struct mfxRefPic{
|
|
mfxU32 FrameOrder;
|
|
mfxU16 PicStruct;
|
|
mfxU16 reserved[5];
|
|
} RefPicList0[32], RefPicList1[32];
|
|
|
|
}mfxExtAVCRefLists;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_VPP_COPY_FRAME =0x01,
|
|
MFX_VPP_COPY_FIELD =0x02,
|
|
MFX_VPP_SWAP_FIELDS =0x03
|
|
};
|
|
|
|
/*PicType*/
|
|
enum {
|
|
MFX_PICTYPE_UNKNOWN =0x00,
|
|
MFX_PICTYPE_FRAME =0x01,
|
|
MFX_PICTYPE_TOPFIELD =0x02,
|
|
MFX_PICTYPE_BOTTOMFIELD =0x04
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Mode;
|
|
mfxU16 InField;
|
|
mfxU16 OutField;
|
|
mfxU16 reserved[25];
|
|
} mfxExtVPPFieldProcessing;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
struct mfxIn{
|
|
mfxU16 CropX;
|
|
mfxU16 CropY;
|
|
mfxU16 CropW;
|
|
mfxU16 CropH;
|
|
mfxU16 reserved[12];
|
|
}In;
|
|
|
|
struct mfxOut{
|
|
mfxU32 FourCC;
|
|
mfxU16 ChromaFormat;
|
|
mfxU16 reserved1;
|
|
|
|
mfxU16 Width;
|
|
mfxU16 Height;
|
|
|
|
mfxU16 CropX;
|
|
mfxU16 CropY;
|
|
mfxU16 CropW;
|
|
mfxU16 CropH;
|
|
mfxU16 reserved[22];
|
|
}Out;
|
|
|
|
mfxU16 reserved[13];
|
|
} mfxExtDecVideoProcessing;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 ChromaLocInfoPresentFlag;
|
|
mfxU16 ChromaSampleLocTypeTopField;
|
|
mfxU16 ChromaSampleLocTypeBottomField;
|
|
mfxU16 reserved[9];
|
|
} mfxExtChromaLocInfo;
|
|
MFX_PACK_END()
|
|
|
|
/* MBQPMode */
|
|
enum {
|
|
MFX_MBQP_MODE_QP_VALUE = 0, // supported in CQP mode only
|
|
MFX_MBQP_MODE_QP_DELTA = 1,
|
|
MFX_MBQP_MODE_QP_ADAPTIVE = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct{
|
|
union {
|
|
mfxU8 QP;
|
|
mfxI8 DeltaQP;
|
|
};
|
|
mfxU16 Mode;
|
|
} mfxQPandMode;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 reserved[10];
|
|
mfxU16 Mode; // see MBQPMode enum
|
|
mfxU16 BlockSize; // QP block size, valid for HEVC only during Init and Runtime
|
|
mfxU32 NumQPAlloc; // Size of allocated by application QP or DeltaQP array
|
|
union {
|
|
mfxU8 *QP; // Block QP value. Valid when Mode = MFX_MBQP_MODE_QP_VALUE
|
|
mfxI8 *DeltaQP; // For block i: QP[i] = BrcQP[i] + DeltaQP[i]. Valid when Mode = MFX_MBQP_MODE_QP_DELTA
|
|
#if (MFX_VERSION >= 1034)
|
|
mfxQPandMode *QPmode; // Block-granularity modes when MFX_MBQP_MODE_QP_ADAPTIVE is set
|
|
#endif
|
|
mfxU64 reserved2;
|
|
};
|
|
} mfxExtMBQP;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header; /* Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_INSERT_HEADERS. */
|
|
mfxU16 SPS; /* tri-state option to insert SPS */
|
|
mfxU16 PPS; /* tri-state option to insert PPS */
|
|
mfxU16 reserved[8];
|
|
} mfxExtInsertHeaders;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxExtBuffer Header; /* Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODER_IPCM_AREA. */
|
|
mfxU16 reserve1[10];
|
|
|
|
mfxU16 NumArea; /* Number of Area's */
|
|
struct area {
|
|
mfxU32 Left; /* Left Area's coordinate. */
|
|
mfxU32 Top; /* Top Area's coordinate. */
|
|
mfxU32 Right; /* Right Area's coordinate. */
|
|
mfxU32 Bottom; /* Bottom Area's coordinate. */
|
|
|
|
mfxU16 reserved2[8];
|
|
} * Areas; /* Array of areas. */
|
|
} mfxExtEncoderIPCMArea;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 reserved[11];
|
|
mfxU32 MapSize;
|
|
union {
|
|
mfxU8 *Map;
|
|
mfxU64 reserved2;
|
|
};
|
|
} mfxExtMBForceIntra;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumTileRows;
|
|
mfxU16 NumTileColumns;
|
|
mfxU16 reserved[74];
|
|
}mfxExtHEVCTiles;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 reserved[11];
|
|
mfxU32 MapSize;
|
|
union {
|
|
mfxU8 *Map;
|
|
mfxU64 reserved2;
|
|
};
|
|
} mfxExtMBDisableSkipMap;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 DPBSize;
|
|
mfxU16 reserved[11];
|
|
|
|
struct {
|
|
mfxU32 FrameOrder;
|
|
mfxU16 PicType;
|
|
mfxU16 LongTermIdx;
|
|
mfxU16 reserved[4];
|
|
} DPB[32];
|
|
} mfxExtDPB;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
/*GeneralConstraintFlags*/
|
|
enum {
|
|
/* REXT Profile constraint flags*/
|
|
MFX_HEVC_CONSTR_REXT_MAX_12BIT = (1 << 0),
|
|
MFX_HEVC_CONSTR_REXT_MAX_10BIT = (1 << 1),
|
|
MFX_HEVC_CONSTR_REXT_MAX_8BIT = (1 << 2),
|
|
MFX_HEVC_CONSTR_REXT_MAX_422CHROMA = (1 << 3),
|
|
MFX_HEVC_CONSTR_REXT_MAX_420CHROMA = (1 << 4),
|
|
MFX_HEVC_CONSTR_REXT_MAX_MONOCHROME = (1 << 5),
|
|
MFX_HEVC_CONSTR_REXT_INTRA = (1 << 6),
|
|
MFX_HEVC_CONSTR_REXT_ONE_PICTURE_ONLY = (1 << 7),
|
|
MFX_HEVC_CONSTR_REXT_LOWER_BIT_RATE = (1 << 8)
|
|
};
|
|
|
|
#if (MFX_VERSION >= 1026)
|
|
|
|
/* SampleAdaptiveOffset */
|
|
enum {
|
|
MFX_SAO_UNKNOWN = 0x00,
|
|
MFX_SAO_DISABLE = 0x01,
|
|
MFX_SAO_ENABLE_LUMA = 0x02,
|
|
MFX_SAO_ENABLE_CHROMA = 0x04
|
|
};
|
|
|
|
#endif
|
|
|
|
/* This struct has 4-byte alignment for binary compatibility with previously released versions of API */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 PicWidthInLumaSamples;
|
|
mfxU16 PicHeightInLumaSamples;
|
|
mfxU64 GeneralConstraintFlags;
|
|
#if (MFX_VERSION >= 1026)
|
|
mfxU16 SampleAdaptiveOffset; /* see enum SampleAdaptiveOffset, valid during Init and Runtime */
|
|
mfxU16 LCUSize;
|
|
mfxU16 reserved[116];
|
|
#else
|
|
mfxU16 reserved[118];
|
|
#endif
|
|
} mfxExtHEVCParam;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
/*ErrorTypes in mfxExtDecodeErrorReport*/
|
|
enum {
|
|
MFX_ERROR_PPS = (1 << 0),
|
|
MFX_ERROR_SPS = (1 << 1),
|
|
MFX_ERROR_SLICEHEADER = (1 << 2),
|
|
MFX_ERROR_SLICEDATA = (1 << 3),
|
|
MFX_ERROR_FRAME_GAP = (1 << 4),
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 ErrorTypes;
|
|
mfxU16 reserved[10];
|
|
} mfxExtDecodeErrorReport;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 FrameType;
|
|
mfxU16 reserved[59];
|
|
} mfxExtDecodedFrameInfo;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 DropFrameFlag;
|
|
mfxU16 TimeCodeHours;
|
|
mfxU16 TimeCodeMinutes;
|
|
mfxU16 TimeCodeSeconds;
|
|
mfxU16 TimeCodePictures;
|
|
mfxU16 reserved[7];
|
|
} mfxExtTimeCode;
|
|
MFX_PACK_END()
|
|
|
|
/*RegionType*/
|
|
enum {
|
|
MFX_HEVC_REGION_SLICE = 0
|
|
};
|
|
|
|
/*RegionEncoding*/
|
|
enum {
|
|
MFX_HEVC_REGION_ENCODING_ON = 0,
|
|
MFX_HEVC_REGION_ENCODING_OFF = 1
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 RegionId;
|
|
mfxU16 RegionType;
|
|
mfxU16 RegionEncoding;
|
|
mfxU16 reserved[24];
|
|
} mfxExtHEVCRegion;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 LumaLog2WeightDenom; // 0..7
|
|
mfxU16 ChromaLog2WeightDenom; // 0..7
|
|
mfxU16 LumaWeightFlag[2][32]; // [list] 0,1
|
|
mfxU16 ChromaWeightFlag[2][32]; // [list] 0,1
|
|
mfxI16 Weights[2][32][3][2]; // [list][list entry][Y, Cb, Cr][weight, offset]
|
|
mfxU16 reserved[58];
|
|
} mfxExtPredWeightTable;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= 1027)
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 EnableRoundingIntra; // tri-state option
|
|
mfxU16 RoundingOffsetIntra; // valid value [0,7]
|
|
mfxU16 EnableRoundingInter; // tri-state option
|
|
mfxU16 RoundingOffsetInter; // valid value [0,7]
|
|
|
|
mfxU16 reserved[24];
|
|
} mfxExtAVCRoundingOffset;
|
|
MFX_PACK_END()
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 reserved[12];
|
|
|
|
struct {
|
|
mfxU16 Scale;
|
|
mfxU16 QPI;
|
|
mfxU16 QPP;
|
|
mfxU16 QPB;
|
|
mfxU32 TargetKbps;
|
|
mfxU32 MaxKbps;
|
|
mfxU32 BufferSizeInKB;
|
|
mfxU32 InitialDelayInKB;
|
|
mfxU16 reserved1[20];
|
|
} Layer[8];
|
|
} mfxExtTemporalLayers;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumRect;
|
|
mfxU16 reserved1[11];
|
|
|
|
struct {
|
|
mfxU32 Left;
|
|
mfxU32 Top;
|
|
mfxU32 Right;
|
|
mfxU32 Bottom;
|
|
|
|
mfxU16 reserved2[8];
|
|
} Rect[256];
|
|
} mfxExtDirtyRect;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumRect;
|
|
mfxU16 reserved1[11];
|
|
|
|
struct {
|
|
mfxU32 DestLeft;
|
|
mfxU32 DestTop;
|
|
mfxU32 DestRight;
|
|
mfxU32 DestBottom;
|
|
|
|
mfxU32 SourceLeft;
|
|
mfxU32 SourceTop;
|
|
mfxU16 reserved2[4];
|
|
} Rect[256];
|
|
} mfxExtMoveRect;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
|
|
/* ScalingMatrixType */
|
|
enum {
|
|
MFX_SCALING_MATRIX_SPS = 1,
|
|
MFX_SCALING_MATRIX_PPS = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Type;
|
|
mfxU16 reserved[5];
|
|
|
|
/* [4x4_Intra_Y, 4x4_Intra_Cb, 4x4_Intra_Cr,
|
|
4x4_Inter_Y, 4x4_Inter_Cb, 4x4_Inter_Cr,
|
|
8x8_Intra_Y, 8x8_Inter_Y, 8x8_Intra_Cb,
|
|
8x8_Inter_Cb, 8x8_Intra_Cr, 8x8_Inter_Cr] */
|
|
mfxU8 ScalingListPresent[12];
|
|
|
|
/* [Intra_Y, Intra_Cb, Intra_Cr,
|
|
Inter_Y, Inter_Cb, Inter_Cr] */
|
|
mfxU8 ScalingList4x4[6][16];
|
|
|
|
/* [Intra_Y, Inter_Y, Intra_Cb,
|
|
Inter_Cb, Intra_Cr, Inter_Cr] */
|
|
mfxU8 ScalingList8x8[6][64];
|
|
} mfxExtAVCScalingMatrix;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 reserved[28];
|
|
|
|
mfxU8 LoadMatrix[4]; // [LumaIntra, LumaInter, ChromaIntra, ChromaInter]
|
|
mfxU8 Matrix[4][64]; // [LumaIntra, LumaInter, ChromaIntra, ChromaInter]
|
|
} mfxExtMPEG2QuantMatrix;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
/* Angle */
|
|
enum {
|
|
MFX_ANGLE_0 = 0,
|
|
MFX_ANGLE_90 = 90,
|
|
MFX_ANGLE_180 = 180,
|
|
MFX_ANGLE_270 = 270
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Angle;
|
|
mfxU16 reserved[11];
|
|
} mfxExtVPPRotation;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 SliceSizeOverflow;
|
|
mfxU16 NumSliceNonCopliant;
|
|
mfxU16 NumEncodedSlice;
|
|
mfxU16 NumSliceSizeAlloc;
|
|
union {
|
|
mfxU16 *SliceSize;
|
|
mfxU64 reserved1;
|
|
};
|
|
|
|
mfxU16 reserved[20];
|
|
} mfxExtEncodedSlicesInfo;
|
|
MFX_PACK_END()
|
|
|
|
/* ScalingMode */
|
|
enum {
|
|
MFX_SCALING_MODE_DEFAULT = 0,
|
|
MFX_SCALING_MODE_LOWPOWER = 1,
|
|
MFX_SCALING_MODE_QUALITY = 2
|
|
};
|
|
|
|
#if (MFX_VERSION >= 1033)
|
|
/* Interpolation Method */
|
|
enum {
|
|
MFX_INTERPOLATION_DEFAULT = 0,
|
|
MFX_INTERPOLATION_NEAREST_NEIGHBOR = 1,
|
|
MFX_INTERPOLATION_BILINEAR = 2,
|
|
MFX_INTERPOLATION_ADVANCED = 3
|
|
};
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 ScalingMode;
|
|
#if (MFX_VERSION >= 1033)
|
|
mfxU16 InterpolationMethod;
|
|
mfxU16 reserved[10];
|
|
#else
|
|
mfxU16 reserved[11];
|
|
#endif
|
|
} mfxExtVPPScaling;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
|
|
/* SceneChangeType */
|
|
enum {
|
|
MFX_SCENE_NO_CHANGE = 0,
|
|
MFX_SCENE_START = 1,
|
|
MFX_SCENE_END = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Type;
|
|
mfxU16 reserved[11];
|
|
} mfxExtSceneChange;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
typedef mfxExtAVCRefListCtrl mfxExtHEVCRefListCtrl;
|
|
typedef mfxExtAVCRefLists mfxExtHEVCRefLists;
|
|
typedef mfxExtAvcTemporalLayers mfxExtHEVCTemporalLayers;
|
|
|
|
/* MirroringType */
|
|
enum
|
|
{
|
|
MFX_MIRRORING_DISABLED = 0,
|
|
MFX_MIRRORING_HORIZONTAL = 1,
|
|
MFX_MIRRORING_VERTICAL = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Type;
|
|
mfxU16 reserved[11];
|
|
} mfxExtVPPMirroring;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 StickTop; /* tri-state option */
|
|
mfxU16 StickBottom; /* tri-state option */
|
|
mfxU16 StickLeft; /* tri-state option */
|
|
mfxU16 StickRight; /* tri-state option */
|
|
mfxU16 reserved[8];
|
|
} mfxExtMVOverPicBoundaries;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 Enable; /* tri-state option */
|
|
mfxU16 reserved[11];
|
|
} mfxExtVPPColorFill;
|
|
MFX_PACK_END()
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
|
|
/* ChromaSiting */
|
|
enum {
|
|
MFX_CHROMA_SITING_UNKNOWN = 0x0000,
|
|
MFX_CHROMA_SITING_VERTICAL_TOP = 0x0001, /* Chroma samples are co-sited vertically on the top with the luma samples. */
|
|
MFX_CHROMA_SITING_VERTICAL_CENTER = 0x0002, /* Chroma samples are not co-sited vertically with the luma samples. */
|
|
MFX_CHROMA_SITING_VERTICAL_BOTTOM = 0x0004, /* Chroma samples are co-sited vertically on the bottom with the luma samples. */
|
|
MFX_CHROMA_SITING_HORIZONTAL_LEFT = 0x0010, /* Chroma samples are co-sited horizontally on the left with the luma samples. */
|
|
MFX_CHROMA_SITING_HORIZONTAL_CENTER = 0x0020 /* Chroma samples are not co-sited horizontally with the luma samples. */
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 ChromaSiting;
|
|
mfxU16 reserved[27];
|
|
} mfxExtColorConversion;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1026)
|
|
/* VP9ReferenceFrame */
|
|
enum {
|
|
MFX_VP9_REF_INTRA = 0,
|
|
MFX_VP9_REF_LAST = 1,
|
|
MFX_VP9_REF_GOLDEN = 2,
|
|
MFX_VP9_REF_ALTREF = 3
|
|
};
|
|
|
|
/* SegmentIdBlockSize */
|
|
enum {
|
|
MFX_VP9_SEGMENT_ID_BLOCK_SIZE_UNKNOWN = 0,
|
|
MFX_VP9_SEGMENT_ID_BLOCK_SIZE_8x8 = 8,
|
|
MFX_VP9_SEGMENT_ID_BLOCK_SIZE_16x16 = 16,
|
|
MFX_VP9_SEGMENT_ID_BLOCK_SIZE_32x32 = 32,
|
|
MFX_VP9_SEGMENT_ID_BLOCK_SIZE_64x64 = 64,
|
|
};
|
|
|
|
/* SegmentFeature */
|
|
enum {
|
|
MFX_VP9_SEGMENT_FEATURE_QINDEX = 0x0001,
|
|
MFX_VP9_SEGMENT_FEATURE_LOOP_FILTER = 0x0002,
|
|
MFX_VP9_SEGMENT_FEATURE_REFERENCE = 0x0004,
|
|
MFX_VP9_SEGMENT_FEATURE_SKIP = 0x0008 /* (0,0) MV, no residual */
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU16 FeatureEnabled; /* see enum SegmentFeature */
|
|
mfxI16 QIndexDelta;
|
|
mfxI16 LoopFilterLevelDelta;
|
|
mfxU16 ReferenceFrame; /* see enum VP9ReferenceFrame */
|
|
mfxU16 reserved[12];
|
|
} mfxVP9SegmentParam;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 NumSegments; /* 0..8 */
|
|
mfxVP9SegmentParam Segment[8];
|
|
mfxU16 SegmentIdBlockSize; /* see enum SegmentIdBlockSize */
|
|
mfxU32 NumSegmentIdAlloc; /* >= (Ceil(Width / SegmentIdBlockSize) * Ceil(Height / SegmentIdBlockSize)) */
|
|
union {
|
|
mfxU8 *SegmentId; /*[NumSegmentIdAlloc] = 0..7, index in Segment array, blocks of SegmentIdBlockSize map */
|
|
mfxU64 reserved1;
|
|
};
|
|
mfxU16 reserved[52];
|
|
} mfxExtVP9Segmentation;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU16 FrameRateScale; /* Layer[n].FrameRateScale = Layer[n - 1].FrameRateScale * (uint)m */
|
|
mfxU16 TargetKbps; /* affected by BRCParamMultiplier, Layer[n].TargetKbps > Layer[n - 1].TargetKbps */
|
|
mfxU16 reserved[14];
|
|
} mfxVP9TemporalLayer;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxVP9TemporalLayer Layer[8];
|
|
mfxU16 reserved[60];
|
|
} mfxExtVP9TemporalLayers;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 FrameWidth;
|
|
mfxU16 FrameHeight;
|
|
|
|
mfxU16 WriteIVFHeaders; /* tri-state option */
|
|
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxI16 LoopFilterRefDelta[4];
|
|
mfxI16 LoopFilterModeDelta[2];
|
|
#else // API 1.26
|
|
mfxI16 reserved1[6];
|
|
#endif
|
|
mfxI16 QIndexDeltaLumaDC;
|
|
mfxI16 QIndexDeltaChromaAC;
|
|
mfxI16 QIndexDeltaChromaDC;
|
|
#if (MFX_VERSION >= 1029)
|
|
mfxU16 NumTileRows;
|
|
mfxU16 NumTileColumns;
|
|
mfxU16 reserved[110];
|
|
#else
|
|
mfxU16 reserved[112];
|
|
#endif
|
|
} mfxExtVP9Param;
|
|
MFX_PACK_END()
|
|
|
|
#endif // #if (MFX_VERSION >= 1026)
|
|
|
|
#if (MFX_VERSION >= 1025)
|
|
/* Multi-Frame Mode */
|
|
enum {
|
|
MFX_MF_DEFAULT = 0,
|
|
MFX_MF_DISABLED = 1,
|
|
MFX_MF_AUTO = 2,
|
|
MFX_MF_MANUAL = 3
|
|
};
|
|
|
|
/* Multi-Frame Initialization parameters */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
MFX_DEPRECATED typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 MFMode;
|
|
mfxU16 MaxNumFrames;
|
|
|
|
mfxU16 reserved[58];
|
|
} mfxExtMultiFrameParam;
|
|
MFX_PACK_END()
|
|
|
|
/* Multi-Frame Run-time controls */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
MFX_DEPRECATED typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU32 Timeout; /* timeout in millisecond */
|
|
mfxU16 Flush; /* Flush internal frame buffer, e.g. submit all collected frames. */
|
|
|
|
mfxU16 reserved[57];
|
|
} mfxExtMultiFrameControl;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU16 Type;
|
|
mfxU16 reserved1;
|
|
mfxU32 Offset;
|
|
mfxU32 Size;
|
|
mfxU32 reserved[5];
|
|
} mfxEncodedUnitInfo;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
union {
|
|
mfxEncodedUnitInfo *UnitInfo;
|
|
mfxU64 reserved1;
|
|
};
|
|
mfxU16 NumUnitsAlloc;
|
|
mfxU16 NumUnitsEncoded;
|
|
|
|
mfxU16 reserved[22];
|
|
} mfxExtEncodedUnitsInfo;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1026)
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
/* MCTFTemporalMode */
|
|
enum {
|
|
MFX_MCTF_TEMPORAL_MODE_UNKNOWN = 0,
|
|
MFX_MCTF_TEMPORAL_MODE_SPATIAL = 1,
|
|
MFX_MCTF_TEMPORAL_MODE_1REF = 2,
|
|
MFX_MCTF_TEMPORAL_MODE_2REF = 3,
|
|
MFX_MCTF_TEMPORAL_MODE_4REF = 4
|
|
};
|
|
#endif
|
|
|
|
/* MCTF initialization & runtime */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU16 FilterStrength;
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
mfxU16 Overlap; /* tri-state option */
|
|
mfxU32 BitsPerPixelx100k;
|
|
mfxU16 Deblocking; /* tri-state option */
|
|
mfxU16 TemporalMode;
|
|
mfxU16 MVPrecision;
|
|
mfxU16 reserved[21];
|
|
#else
|
|
mfxU16 reserved[27];
|
|
#endif
|
|
} mfxExtVppMctf;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1031)
|
|
/* Multi-adapters Querying structs */
|
|
typedef enum
|
|
{
|
|
MFX_COMPONENT_ENCODE = 1,
|
|
MFX_COMPONENT_DECODE = 2,
|
|
MFX_COMPONENT_VPP = 3
|
|
} mfxComponentType;
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct
|
|
{
|
|
mfxComponentType Type;
|
|
mfxVideoParam Requirements;
|
|
|
|
mfxU16 reserved[4];
|
|
} mfxComponentInfo;
|
|
MFX_PACK_END()
|
|
|
|
/* Adapter description */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct
|
|
{
|
|
mfxPlatform Platform;
|
|
mfxU32 Number;
|
|
|
|
mfxU16 reserved[14];
|
|
} mfxAdapterInfo;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct
|
|
{
|
|
mfxAdapterInfo * Adapters;
|
|
mfxU32 NumAlloc;
|
|
mfxU32 NumActual;
|
|
|
|
mfxU16 reserved[4];
|
|
} mfxAdaptersInfo;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1034)
|
|
/* FilmGrainFlags */
|
|
enum {
|
|
MFX_FILM_GRAIN_APPLY = (1 << 0),
|
|
MFX_FILM_GRAIN_UPDATE = (1 << 1),
|
|
MFX_FILM_GRAIN_CHROMA_SCALING_FROM_LUMA = (1 << 2),
|
|
MFX_FILM_GRAIN_OVERLAP = (1 << 3),
|
|
MFX_FILM_GRAIN_CLIP_TO_RESTRICTED_RANGE = (1 << 4)
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU8 Value;
|
|
mfxU8 Scaling;
|
|
} mfxAV1FilmGrainPoint;
|
|
MFX_PACK_END()
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 FilmGrainFlags; /* FilmGrainFlags */
|
|
mfxU16 GrainSeed; /* 0..65535 */
|
|
|
|
mfxU8 RefIdx; /* 0..6 */
|
|
mfxU8 NumYPoints; /* 0..14 */
|
|
mfxU8 NumCbPoints; /* 0..10 */
|
|
mfxU8 NumCrPoints; /* 0..10 */
|
|
|
|
mfxAV1FilmGrainPoint PointY[14];
|
|
mfxAV1FilmGrainPoint PointCb[10];
|
|
mfxAV1FilmGrainPoint PointCr[10];
|
|
|
|
mfxU8 GrainScalingMinus8; /* 0..3 */
|
|
mfxU8 ArCoeffLag; /* 0..3 */
|
|
|
|
mfxU8 ArCoeffsYPlus128[24]; /* 0..255 */
|
|
mfxU8 ArCoeffsCbPlus128[25]; /* 0..255 */
|
|
mfxU8 ArCoeffsCrPlus128[25]; /* 0..255 */
|
|
|
|
mfxU8 ArCoeffShiftMinus6; /* 0..3 */
|
|
mfxU8 GrainScaleShift; /* 0..3 */
|
|
|
|
mfxU8 CbMult; /* 0..255 */
|
|
mfxU8 CbLumaMult; /* 0..255 */
|
|
mfxU16 CbOffset; /* 0..511 */
|
|
|
|
mfxU8 CrMult; /* 0..255 */
|
|
mfxU8 CrLumaMult; /* 0..255 */
|
|
mfxU16 CrOffset; /* 0..511 */
|
|
|
|
mfxU16 reserved[43];
|
|
} mfxExtAV1FilmGrainParam;
|
|
MFX_PACK_END()
|
|
|
|
#endif
|
|
|
|
#if (MFX_VERSION >= 1031)
|
|
/* PartialBitstreamOutput */
|
|
enum {
|
|
MFX_PARTIAL_BITSTREAM_NONE = 0, /* Don't use partial output */
|
|
MFX_PARTIAL_BITSTREAM_SLICE = 1, /* Partial bitstream output will be aligned to slice granularity */
|
|
MFX_PARTIAL_BITSTREAM_BLOCK = 2, /* Partial bitstream output will be aligned to user-defined block size granularity */
|
|
MFX_PARTIAL_BITSTREAM_ANY = 3 /* Partial bitstream output will be return any coded data avilable at the end of SyncOperation timeout */
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
mfxU32 BlockSize; /* output block granulatiry for Granularity = MFX_PARTIAL_BITSTREAM_BLOCK */
|
|
mfxU16 Granularity; /* granulatiry of the partial bitstream: slice/block/any */
|
|
mfxU16 reserved[8];
|
|
} mfxExtPartialBitstreamParam;
|
|
MFX_PACK_END()
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif
|