|
@@ -1,6 +1,6 @@
|
|
|
/******************************************************************************* *\
|
|
|
|
|
|
-Copyright (C) 2007-2015 Intel Corporation. All rights reserved.
|
|
|
+Copyright (C) 2007-2018 Intel Corporation. All rights reserved.
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -106,7 +106,7 @@ enum {
|
|
|
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'),
|
|
|
+ MFX_FOURCC_P010 = MFX_MAKEFOURCC('P','0','1','0'),
|
|
|
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 */
|
|
@@ -115,7 +115,9 @@ enum {
|
|
|
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')
|
|
|
+ MFX_FOURCC_UYVY = MFX_MAKEFOURCC('U','Y','V','Y'),
|
|
|
+ MFX_FOURCC_Y210 = MFX_MAKEFOURCC('Y','2','1','0'),
|
|
|
+ MFX_FOURCC_Y410 = MFX_MAKEFOURCC('Y','4','1','0'),
|
|
|
};
|
|
|
|
|
|
/* PicStruct */
|
|
@@ -127,7 +129,13 @@ enum {
|
|
|
|
|
|
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_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 */
|
|
@@ -139,7 +147,8 @@ enum {
|
|
|
MFX_CHROMAFORMAT_YUV400 = MFX_CHROMAFORMAT_MONOCHROME,
|
|
|
MFX_CHROMAFORMAT_YUV411 = 4,
|
|
|
MFX_CHROMAFORMAT_YUV422H = MFX_CHROMAFORMAT_YUV422,
|
|
|
- MFX_CHROMAFORMAT_YUV422V = 5
|
|
|
+ MFX_CHROMAFORMAT_YUV422V = 5,
|
|
|
+ MFX_CHROMAFORMAT_RESERVED1 = 6
|
|
|
};
|
|
|
|
|
|
enum {
|
|
@@ -165,6 +174,27 @@ enum {
|
|
|
MFX_CORRUPTION_REFERENCE_LIST = 0x0020
|
|
|
};
|
|
|
|
|
|
+#pragma pack(push, 4)
|
|
|
+typedef struct
|
|
|
+{
|
|
|
+ mfxU32 U : 10;
|
|
|
+ mfxU32 Y : 10;
|
|
|
+ mfxU32 V : 10;
|
|
|
+ mfxU32 A : 2;
|
|
|
+} mfxY410;
|
|
|
+#pragma pack(pop)
|
|
|
+
|
|
|
+#pragma pack(push, 4)
|
|
|
+typedef struct
|
|
|
+{
|
|
|
+ mfxU32 B : 10;
|
|
|
+ mfxU32 G : 10;
|
|
|
+ mfxU32 R : 10;
|
|
|
+ mfxU32 A : 2;
|
|
|
+} mfxA2RGB10;
|
|
|
+#pragma pack(pop)
|
|
|
+
|
|
|
+
|
|
|
/* Frame Data Info */
|
|
|
typedef struct {
|
|
|
union {
|
|
@@ -173,7 +203,8 @@ typedef struct {
|
|
|
};
|
|
|
mfxU16 NumExtParam;
|
|
|
|
|
|
- mfxU16 reserved[10];
|
|
|
+ mfxU16 reserved[9];
|
|
|
+ mfxU16 MemType;
|
|
|
mfxU16 PitchHigh;
|
|
|
|
|
|
mfxU64 TimeStamp;
|
|
@@ -199,12 +230,14 @@ typedef struct {
|
|
|
mfxU8 *U;
|
|
|
mfxU16 *U16;
|
|
|
mfxU8 *G;
|
|
|
+ mfxY410 *Y410; /* for Y410 format (merged AVYU) */
|
|
|
};
|
|
|
union {
|
|
|
mfxU8 *Cr;
|
|
|
mfxU8 *V;
|
|
|
mfxU16 *V16;
|
|
|
mfxU8 *B;
|
|
|
+ mfxA2RGB10 *A2RGB10; /* for A2RGB10 format (merged ARGB) */
|
|
|
};
|
|
|
mfxU8 *A;
|
|
|
mfxMemId MemId;
|
|
@@ -240,7 +273,7 @@ typedef struct {
|
|
|
mfxU16 NumThread;
|
|
|
|
|
|
union {
|
|
|
- struct { /* MPEG-2/H.264 Encoding Options */
|
|
|
+ struct { /* Encoding Options */
|
|
|
mfxU16 TargetUsage;
|
|
|
|
|
|
mfxU16 GopPicSize;
|
|
@@ -270,20 +303,23 @@ typedef struct {
|
|
|
mfxU16 NumRefFrame;
|
|
|
mfxU16 EncodedOrder;
|
|
|
};
|
|
|
- struct { /* H.264, MPEG-2 and VC-1 Decoding Options */
|
|
|
+ struct { /* Decoding Options */
|
|
|
mfxU16 DecodedOrder;
|
|
|
mfxU16 ExtendedPicStruct;
|
|
|
mfxU16 TimeStampCalc;
|
|
|
mfxU16 SliceGroupsPresent;
|
|
|
mfxU16 MaxDecFrameBuffering;
|
|
|
- mfxU16 reserved2[8];
|
|
|
+ mfxU16 EnableReallocRequest;
|
|
|
+ mfxU16 reserved2[7];
|
|
|
};
|
|
|
struct { /* JPEG Decoding Options */
|
|
|
mfxU16 JPEGChromaFormat;
|
|
|
mfxU16 Rotation;
|
|
|
mfxU16 JPEGColorFormat;
|
|
|
mfxU16 InterleavedDec;
|
|
|
- mfxU16 reserved3[9];
|
|
|
+ mfxU8 SamplingFactorH[4];
|
|
|
+ mfxU8 SamplingFactorV[4];
|
|
|
+ mfxU16 reserved3[5];
|
|
|
};
|
|
|
struct { /* JPEG Encoding Options */
|
|
|
mfxU16 Interleaved;
|
|
@@ -333,7 +369,9 @@ enum {
|
|
|
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_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 */
|
|
@@ -426,6 +464,13 @@ enum {
|
|
|
|
|
|
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,
|
|
|
+
|
|
|
};
|
|
|
|
|
|
/* GopOptFlag */
|
|
@@ -466,7 +511,7 @@ enum {
|
|
|
MFX_RATECONTROL_LA_ICQ =11,
|
|
|
MFX_RATECONTROL_LA_EXT =12,
|
|
|
MFX_RATECONTROL_LA_HRD =13,
|
|
|
- MFX_RATECONTROL_QVBR =14
|
|
|
+ MFX_RATECONTROL_QVBR =14,
|
|
|
};
|
|
|
|
|
|
/* Trellis control*/
|
|
@@ -538,6 +583,14 @@ enum {
|
|
|
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
|
|
|
+};
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -606,6 +659,7 @@ enum {
|
|
|
MFX_P_REF_PYRAMID = 2
|
|
|
};
|
|
|
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -632,14 +686,46 @@ typedef struct {
|
|
|
mfxU16 OverscanAppropriate; /* tri-state option */
|
|
|
mfxU16 TimingInfoPresent; /* tri-state option */
|
|
|
mfxU16 BitstreamRestriction; /* tri-state option */
|
|
|
- mfxU16 reserved1[4];
|
|
|
+ mfxU16 LowDelayHrd; /* tri-state option */
|
|
|
+ mfxU16 MotionVectorsOverPicBoundaries; /* tri-state option */
|
|
|
+ mfxU16 reserved1[2];
|
|
|
|
|
|
mfxU16 ScenarioInfo;
|
|
|
mfxU16 ContentInfo;
|
|
|
|
|
|
mfxU16 PRefType;
|
|
|
mfxU16 FadeDetection; /* tri-state option */
|
|
|
- mfxU16 reserved[225];
|
|
|
+ mfxU16 reserved2[2];
|
|
|
+ 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];
|
|
|
+
|
|
|
+ mfxU16 reserved6;
|
|
|
+ mfxU16 TransformSkip; /* tri-state option; HEVC transform_skip_enabled_flag */
|
|
|
+ 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. */
|
|
|
+ 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 */
|
|
|
+ mfxU16 reserved5[3];
|
|
|
+ mfxU16 EncodedUnitsInfo; /* tri-state option */
|
|
|
+ mfxU16 EnableNalUnitType; /* tri-state option */
|
|
|
+ mfxU16 ExtBrcAdaptiveLTR; /* tri-state option for ExtBRC */
|
|
|
+ mfxU16 reserved[163];
|
|
|
} mfxExtCodingOption3;
|
|
|
|
|
|
/* IntraPredBlockSize/InterPredBlockSize */
|
|
@@ -670,51 +756,72 @@ 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_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_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_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_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_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'),
|
|
|
+ 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'),
|
|
|
+ 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'),
|
|
|
+ MFX_EXTBUFF_AVC_ROUNDING_OFFSET = MFX_MAKEFOURCC('R','N','D','O'),
|
|
|
};
|
|
|
|
|
|
/* VPP Conf: Do not use certain algorithms */
|
|
@@ -781,8 +888,14 @@ typedef struct {
|
|
|
mfxU16 RepeatedFrame;
|
|
|
} mfxExtVppAuxData;
|
|
|
|
|
|
+/* CtrlFlags */
|
|
|
+enum {
|
|
|
+ MFX_PAYLOAD_CTRL_SUFFIX = 0x00000001 /* HEVC suffix SEI */
|
|
|
+};
|
|
|
+
|
|
|
typedef struct {
|
|
|
- mfxU32 reserved[4];
|
|
|
+ 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 */
|
|
@@ -791,7 +904,9 @@ typedef struct {
|
|
|
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
- mfxU32 reserved[5];
|
|
|
+ mfxU32 reserved[4];
|
|
|
+ mfxU16 reserved1;
|
|
|
+ mfxU16 MfxNalUnitType;
|
|
|
mfxU16 SkipFrame;
|
|
|
|
|
|
mfxU16 QP; /* per frame QP */
|
|
@@ -812,7 +927,7 @@ enum {
|
|
|
};
|
|
|
|
|
|
/* Frame Memory Types */
|
|
|
-#define MFX_MEMTYPE_BASE(x) (0xf0ff & (x))
|
|
|
+#define MFX_MEMTYPE_BASE(x) (0x90ff & (x))
|
|
|
|
|
|
enum {
|
|
|
MFX_MEMTYPE_DXVA2_DECODER_TARGET =0x0010,
|
|
@@ -826,13 +941,15 @@ enum {
|
|
|
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_MEMTYPE_OPAQUE_FRAME = 0x0004,
|
|
|
MFX_MEMTYPE_EXPORT_FRAME = 0x0008,
|
|
|
-
|
|
|
- MFX_MEMTYPE_RESERVED2 = 0x1000
|
|
|
+ MFX_MEMTYPE_SHARED_RESOURCE = MFX_MEMTYPE_EXPORT_FRAME,
|
|
|
+ MFX_MEMTYPE_VIDEO_MEMORY_ENCODER_TARGET = 0x1000
|
|
|
};
|
|
|
|
|
|
typedef struct {
|
|
@@ -877,13 +994,26 @@ enum {
|
|
|
MFX_FRAMETYPE_xIDR =0x8000
|
|
|
};
|
|
|
|
|
|
+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)
|
|
|
+};
|
|
|
+
|
|
|
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
|
|
|
+ MFX_HANDLE_RESERVED3 = 5,
|
|
|
} mfxHandleType;
|
|
|
|
|
|
typedef enum {
|
|
@@ -983,6 +1113,36 @@ typedef struct {
|
|
|
mfxU16 reserved[11];
|
|
|
} mfxExtVPPImageStab;
|
|
|
|
|
|
+
|
|
|
+enum {
|
|
|
+ MFX_PAYLOAD_OFF = 0,
|
|
|
+ MFX_PAYLOAD_IDR = 1
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+ mfxU16 reserved[15];
|
|
|
+
|
|
|
+ mfxU16 InsertPayloadToggle;
|
|
|
+ mfxU16 DisplayPrimariesX[3];
|
|
|
+ mfxU16 DisplayPrimariesY[3];
|
|
|
+ mfxU16 WhitePointX;
|
|
|
+ mfxU16 WhitePointY;
|
|
|
+ mfxU32 MaxDisplayMasteringLuminance;
|
|
|
+ mfxU32 MinDisplayMasteringLuminance;
|
|
|
+} mfxExtMasteringDisplayColourVolume;
|
|
|
+
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+ mfxU16 reserved[9];
|
|
|
+
|
|
|
+ mfxU16 InsertPayloadToggle;
|
|
|
+ mfxU16 MaxContentLightLevel;
|
|
|
+ mfxU16 MaxPicAverageLightLevel;
|
|
|
+} mfxExtContentLightLevelInfo;
|
|
|
+
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
mfxU32 reserved[14];
|
|
@@ -1018,6 +1178,7 @@ typedef struct {
|
|
|
}Layer[8];
|
|
|
} mfxExtAvcTemporalLayers;
|
|
|
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -1038,7 +1199,7 @@ enum {
|
|
|
};
|
|
|
|
|
|
typedef struct {
|
|
|
- mfxExtBuffer Header;
|
|
|
+ mfxExtBuffer Header;
|
|
|
|
|
|
mfxU32 FrameOrder;
|
|
|
mfxU16 PicStruct;
|
|
@@ -1050,30 +1211,31 @@ typedef struct {
|
|
|
mfxU16 reserved[2];
|
|
|
|
|
|
struct {
|
|
|
- mfxU32 FrameOrder;
|
|
|
- mfxU16 PicStruct;
|
|
|
- mfxU16 LongTermIdx;
|
|
|
- mfxU16 reserved[4];
|
|
|
+ mfxU32 FrameOrder;
|
|
|
+ mfxU16 PicStruct;
|
|
|
+ mfxU16 LongTermIdx;
|
|
|
+ mfxU16 reserved[4];
|
|
|
} UsedRefListL0[32], UsedRefListL1[32];
|
|
|
} mfxExtAVCEncodedFrameInfo;
|
|
|
|
|
|
typedef struct mfxVPPCompInputStream {
|
|
|
- mfxU32 DstX;
|
|
|
- mfxU32 DstY;
|
|
|
- mfxU32 DstW;
|
|
|
- mfxU32 DstH;
|
|
|
+ mfxU32 DstX;
|
|
|
+ mfxU32 DstY;
|
|
|
+ mfxU32 DstW;
|
|
|
+ mfxU32 DstH;
|
|
|
|
|
|
- mfxU16 LumaKeyEnable;
|
|
|
- mfxU16 LumaKeyMin;
|
|
|
- mfxU16 LumaKeyMax;
|
|
|
+ mfxU16 LumaKeyEnable;
|
|
|
+ mfxU16 LumaKeyMin;
|
|
|
+ mfxU16 LumaKeyMax;
|
|
|
|
|
|
- mfxU16 GlobalAlphaEnable;
|
|
|
- mfxU16 GlobalAlpha;
|
|
|
+ mfxU16 GlobalAlphaEnable;
|
|
|
+ mfxU16 GlobalAlpha;
|
|
|
+ mfxU16 PixelAlphaEnable;
|
|
|
|
|
|
- mfxU16 PixelAlphaEnable;
|
|
|
+ mfxU16 TileId;
|
|
|
|
|
|
- mfxU16 reserved2[18];
|
|
|
-} mfxVPPCompInputStream;
|
|
|
+ mfxU16 reserved2[17];
|
|
|
+} mfxVPPCompInputStream;
|
|
|
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
@@ -1091,11 +1253,11 @@ typedef struct {
|
|
|
mfxU16 V;
|
|
|
mfxU16 B;
|
|
|
};
|
|
|
+ mfxU16 NumTiles;
|
|
|
+ mfxU16 reserved1[23];
|
|
|
|
|
|
- mfxU16 reserved1[24];
|
|
|
-
|
|
|
- mfxU16 NumInputStream;
|
|
|
- mfxVPPCompInputStream *InputStream;
|
|
|
+ mfxU16 NumInputStream;
|
|
|
+ mfxVPPCompInputStream *InputStream;
|
|
|
} mfxExtVPPComposite;
|
|
|
|
|
|
/* TransferMatrix */
|
|
@@ -1116,26 +1278,44 @@ typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
mfxU16 reserved1[4];
|
|
|
|
|
|
- struct {
|
|
|
- mfxU16 TransferMatrix;
|
|
|
- mfxU16 NominalRange;
|
|
|
- mfxU16 reserved2[6];
|
|
|
- } In, Out;
|
|
|
+ union {
|
|
|
+ struct { // Init
|
|
|
+ struct {
|
|
|
+ mfxU16 TransferMatrix;
|
|
|
+ mfxU16 NominalRange;
|
|
|
+ mfxU16 reserved2[6];
|
|
|
+ } In, Out;
|
|
|
+ };
|
|
|
+ struct { // Runtime
|
|
|
+ mfxU16 TransferMatrix;
|
|
|
+ mfxU16 NominalRange;
|
|
|
+ mfxU16 reserved3[14];
|
|
|
+ };
|
|
|
+ };
|
|
|
} mfxExtVPPVideoSignalInfo;
|
|
|
|
|
|
+/* ROI encoding mode */
|
|
|
+enum {
|
|
|
+ MFX_ROI_MODE_PRIORITY = 0,
|
|
|
+ MFX_ROI_MODE_QP_DELTA = 1
|
|
|
+};
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
|
mfxU16 NumROI;
|
|
|
- mfxU16 reserved1[11];
|
|
|
+ mfxU16 ROIMode;
|
|
|
+ mfxU16 reserved1[10];
|
|
|
|
|
|
struct {
|
|
|
mfxU32 Left;
|
|
|
mfxU32 Top;
|
|
|
mfxU32 Right;
|
|
|
mfxU32 Bottom;
|
|
|
-
|
|
|
- mfxI16 Priority;
|
|
|
+ union {
|
|
|
+ mfxI16 Priority;
|
|
|
+ mfxI16 DeltaQP;
|
|
|
+ };
|
|
|
mfxU16 reserved2[7];
|
|
|
} ROI[256];
|
|
|
} mfxExtEncoderROI;
|
|
@@ -1152,7 +1332,9 @@ enum {
|
|
|
MFX_DEINTERLACING_FIXED_TELECINE_PATTERN = 8,
|
|
|
MFX_DEINTERLACING_30FPS_OUT = 9,
|
|
|
MFX_DEINTERLACING_DETECT_INTERLACE = 10,
|
|
|
- MFX_DEINTERLACING_ADVANCED_NOREF = 11
|
|
|
+ MFX_DEINTERLACING_ADVANCED_NOREF = 11,
|
|
|
+ MFX_DEINTERLACING_ADVANCED_SCD = 12,
|
|
|
+ MFX_DEINTERLACING_FIELD_WEAVING = 13
|
|
|
};
|
|
|
|
|
|
/*TelecinePattern*/
|
|
@@ -1209,6 +1391,35 @@ typedef struct {
|
|
|
mfxU16 reserved[25];
|
|
|
} mfxExtVPPFieldProcessing;
|
|
|
|
|
|
+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;
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -1218,17 +1429,37 @@ typedef struct {
|
|
|
mfxU16 reserved[9];
|
|
|
} mfxExtChromaLocInfo;
|
|
|
|
|
|
+/* MBQPMode */
|
|
|
+enum {
|
|
|
+ MFX_MBQP_MODE_QP_VALUE = 0, // supported in CQP mode only
|
|
|
+ MFX_MBQP_MODE_QP_DELTA = 1
|
|
|
+};
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
|
- mfxU32 reserved[11];
|
|
|
- mfxU32 NumQPAlloc;
|
|
|
+ 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;
|
|
|
+ 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
|
|
|
mfxU64 reserved2;
|
|
|
};
|
|
|
} mfxExtMBQP;
|
|
|
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU32 reserved[11];
|
|
|
+ mfxU32 MapSize;
|
|
|
+ union {
|
|
|
+ mfxU8 *Map;
|
|
|
+ mfxU64 reserved2;
|
|
|
+ };
|
|
|
+} mfxExtMBForceIntra;
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -1239,7 +1470,7 @@ typedef struct {
|
|
|
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
-
|
|
|
+
|
|
|
mfxU32 reserved[11];
|
|
|
mfxU32 MapSize;
|
|
|
union {
|
|
@@ -1248,6 +1479,7 @@ typedef struct {
|
|
|
};
|
|
|
} mfxExtMBDisableSkipMap;
|
|
|
|
|
|
+
|
|
|
/*GeneralConstraintFlags*/
|
|
|
enum {
|
|
|
/* REXT Profile constraint flags*/
|
|
@@ -1262,6 +1494,16 @@ enum {
|
|
|
MFX_HEVC_CONSTR_REXT_LOWER_BIT_RATE = (1 << 8)
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+/* SampleAdaptiveOffset */
|
|
|
+enum {
|
|
|
+ MFX_SAO_UNKNOWN = 0x00,
|
|
|
+ MFX_SAO_DISABLE = 0x01,
|
|
|
+ MFX_SAO_ENABLE_LUMA = 0x02,
|
|
|
+ MFX_SAO_ENABLE_CHROMA = 0x04
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
#pragma pack(push, 4)
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
@@ -1269,10 +1511,29 @@ typedef struct {
|
|
|
mfxU16 PicWidthInLumaSamples;
|
|
|
mfxU16 PicHeightInLumaSamples;
|
|
|
mfxU64 GeneralConstraintFlags;
|
|
|
- mfxU16 reserved[118];
|
|
|
+ mfxU16 SampleAdaptiveOffset; /* see enum SampleAdaptiveOffset, valid during Init and Runtime */
|
|
|
+ mfxU16 LCUSize;
|
|
|
+ mfxU16 reserved[116];
|
|
|
} mfxExtHEVCParam;
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
+/*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),
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU32 ErrorTypes;
|
|
|
+ mfxU16 reserved[10];
|
|
|
+} mfxExtDecodeErrorReport;
|
|
|
+
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -1322,6 +1583,18 @@ typedef struct {
|
|
|
mfxU16 reserved[58];
|
|
|
} mfxExtPredWeightTable;
|
|
|
|
|
|
+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;
|
|
|
+
|
|
|
+
|
|
|
typedef struct {
|
|
|
mfxExtBuffer Header;
|
|
|
|
|
@@ -1356,6 +1629,7 @@ typedef struct {
|
|
|
} Rect[256];
|
|
|
} mfxExtMoveRect;
|
|
|
|
|
|
+
|
|
|
/* Angle */
|
|
|
enum {
|
|
|
MFX_ANGLE_0 = 0,
|
|
@@ -1371,9 +1645,226 @@ typedef struct {
|
|
|
mfxU16 reserved[11];
|
|
|
} mfxExtVPPRotation;
|
|
|
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 SliceSizeOverflow;
|
|
|
+ mfxU16 NumSliceNonCopliant;
|
|
|
+ mfxU16 NumEncodedSlice;
|
|
|
+ mfxU16 NumSliceSizeAlloc;
|
|
|
+ union {
|
|
|
+ mfxU16 *SliceSize;
|
|
|
+ mfxU64 reserved1;
|
|
|
+ };
|
|
|
+
|
|
|
+ mfxU16 reserved[20];
|
|
|
+} mfxExtEncodedSlicesInfo;
|
|
|
+
|
|
|
+/* ScalingMode */
|
|
|
+enum {
|
|
|
+ MFX_SCALING_MODE_DEFAULT = 0,
|
|
|
+ MFX_SCALING_MODE_LOWPOWER = 1,
|
|
|
+ MFX_SCALING_MODE_QUALITY = 2
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 ScalingMode;
|
|
|
+ mfxU16 reserved[11];
|
|
|
+} mfxExtVPPScaling;
|
|
|
+
|
|
|
+
|
|
|
+typedef mfxExtAVCRefListCtrl mfxExtHEVCRefListCtrl;
|
|
|
+typedef mfxExtAVCRefLists mfxExtHEVCRefLists;
|
|
|
+typedef mfxExtAvcTemporalLayers mfxExtHEVCTemporalLayers;
|
|
|
+
|
|
|
+/* MirroringType */
|
|
|
+enum
|
|
|
+{
|
|
|
+ MFX_MIRRORING_DISABLED = 0,
|
|
|
+ MFX_MIRRORING_HORIZONTAL = 1,
|
|
|
+ MFX_MIRRORING_VERTICAL = 2
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 Type;
|
|
|
+ mfxU16 reserved[11];
|
|
|
+} mfxExtVPPMirroring;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 Enable; /* tri-state option */
|
|
|
+ mfxU16 reserved[11];
|
|
|
+} mfxExtVPPColorFill;
|
|
|
+
|
|
|
+
|
|
|
+/* 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. */
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 ChromaSiting;
|
|
|
+ mfxU16 reserved[27];
|
|
|
+} mfxExtColorConversion;
|
|
|
+
|
|
|
+
|
|
|
+/* 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 */
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxU16 FeatureEnabled; /* see enum SegmentFeature */
|
|
|
+ mfxI16 QIndexDelta;
|
|
|
+ mfxI16 LoopFilterLevelDelta;
|
|
|
+ mfxU16 ReferenceFrame; /* see enum VP9ReferenceFrame */
|
|
|
+ mfxU16 reserved[12];
|
|
|
+} mfxVP9SegmentParam;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+ mfxVP9TemporalLayer Layer[8];
|
|
|
+ mfxU16 reserved[60];
|
|
|
+} mfxExtVP9TemporalLayers;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 FrameWidth;
|
|
|
+ mfxU16 FrameHeight;
|
|
|
+
|
|
|
+ mfxU16 WriteIVFHeaders; /* tri-state option */
|
|
|
+
|
|
|
+ mfxI16 reserved1[6];
|
|
|
+ mfxI16 QIndexDeltaLumaDC;
|
|
|
+ mfxI16 QIndexDeltaChromaAC;
|
|
|
+ mfxI16 QIndexDeltaChromaDC;
|
|
|
+ mfxU16 reserved[112];
|
|
|
+} mfxExtVP9Param;
|
|
|
+
|
|
|
+
|
|
|
+/* Multi-Frame Mode */
|
|
|
+enum {
|
|
|
+ MFX_MF_DEFAULT = 0,
|
|
|
+ MFX_MF_DISABLED = 1,
|
|
|
+ MFX_MF_AUTO = 2,
|
|
|
+ MFX_MF_MANUAL = 3
|
|
|
+};
|
|
|
+
|
|
|
+/* Multi-Frame Initialization parameters */
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ mfxU16 MFMode;
|
|
|
+ mfxU16 MaxNumFrames;
|
|
|
+
|
|
|
+ mfxU16 reserved[58];
|
|
|
+} mfxExtMultiFrameParam;
|
|
|
+
|
|
|
+/* Multi-Frame Run-time controls */
|
|
|
+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;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxU16 Type;
|
|
|
+ mfxU16 reserved1;
|
|
|
+ mfxU32 Offset;
|
|
|
+ mfxU32 Size;
|
|
|
+ mfxU32 reserved[5];
|
|
|
+} mfxEncodedUnitInfo;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+
|
|
|
+ union {
|
|
|
+ mfxEncodedUnitInfo *UnitInfo;
|
|
|
+ mfxU64 reserved1;
|
|
|
+ };
|
|
|
+ mfxU16 NumUnitsAlloc;
|
|
|
+ mfxU16 NumUnitsEncoded;
|
|
|
+
|
|
|
+ mfxU16 reserved[22];
|
|
|
+} mfxExtEncodedUnitsInfo;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* MCTF initialization & runtime */
|
|
|
+typedef struct {
|
|
|
+ mfxExtBuffer Header;
|
|
|
+ mfxU16 FilterStrength;
|
|
|
+ mfxU16 reserved[27];
|
|
|
+} mfxExtVppMctf;
|
|
|
+
|
|
|
+
|
|
|
#ifdef __cplusplus
|
|
|
} // extern "C"
|
|
|
#endif
|
|
|
|
|
|
#endif
|
|
|
-
|