// 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
↑ V802 On 64-bit platform, structure size can be reduced from 80 to 72 bytes by rearranging the fields according to their sizes in decreasing order.
↑ V802 On 64-bit platform, structure size can be reduced from 68 to 64 bytes by rearranging the fields according to their sizes in decreasing order.
↑ V802 On 64-bit platform, structure size can be reduced from 88 to 80 bytes by rearranging the fields according to their sizes in decreasing order.