1 // Copyright (c) 2018-2019 Intel Corporation
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in all
11 // copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 // SOFTWARE.
20 #ifndef __MFXFEI_H__
21 #define __MFXFEI_H__
22 #include "mfxdefs.h"
23 #include "mfxvstructures.h"
24 #include "mfxpak.h"
25 
26 #ifdef __cplusplus
27 extern "C"
28 {
29 #endif /* __cplusplus */
30 
31 MFX_PACK_BEGIN_STRUCT_W_PTR()
32 MFX_DEPRECATED typedef struct {
33     mfxExtBuffer    Header;
34 
35     mfxU16    Qp;
36     mfxU16    LenSP;
37     mfxU16    SearchPath;
38     mfxU16    SubMBPartMask;
39     mfxU16    SubPelMode;
40     mfxU16    InterSAD;
41     mfxU16    IntraSAD;
42     mfxU16    AdaptiveSearch;
43     mfxU16    MVPredictor;
44     mfxU16    MBQp;
45     mfxU16    FTEnable;
46     mfxU16    IntraPartMask;
47     mfxU16    RefWidth;
48     mfxU16    RefHeight;
49     mfxU16    SearchWindow;
50     mfxU16    DisableMVOutput;
51     mfxU16    DisableStatisticsOutput;
52     mfxU16    Enable8x8Stat;
53     mfxU16    PictureType; /* Input picture type*/
54     mfxU16    DownsampleInput;
55 
56     mfxU16    RefPictureType[2]; /* reference picture type, 0 -L0, 1 - L1 */
57     mfxU16    DownsampleReference[2];
58     mfxFrameSurface1 *RefFrame[2];
59     mfxU16    reserved[28];
60 } mfxExtFeiPreEncCtrl;
61 MFX_PACK_END()
62 
63 MFX_PACK_BEGIN_STRUCT_W_PTR()
64 MFX_DEPRECATED typedef struct {
65     mfxExtBuffer    Header;
66     mfxU32  reserved1[3];
67     mfxU32  NumMBAlloc; /* size of allocated memory in number of macroblocks */
68     mfxU16  reserved2[20];
69 
70     struct  mfxExtFeiPreEncMVPredictorsMB {
71         mfxI16Pair MV[2]; /* 0 for L0 and 1 for L1 */
72     } *MB;
73 } mfxExtFeiPreEncMVPredictors;
74 MFX_PACK_END()
75 
76 MFX_PACK_BEGIN_STRUCT_W_PTR()
77 MFX_DEPRECATED typedef struct {
78     mfxExtBuffer    Header;
79     mfxU32  reserved1[3];
80     mfxU32  NumMBAlloc;
81     mfxU16  reserved2[20];
82 
83     mfxU8    *MB;
84 } mfxExtFeiEncQP;
85 MFX_PACK_END()
86 
87 /* PreENC output */
88 /* Layout is exactly the same as mfxExtFeiEncMVs, this buffer may be removed in future */
89 MFX_PACK_BEGIN_STRUCT_W_PTR()
90 MFX_DEPRECATED typedef struct {
91     mfxExtBuffer    Header;
92     mfxU32  reserved1[3];
93     mfxU32  NumMBAlloc;
94     mfxU16  reserved2[20];
95 
96     struct  mfxExtFeiPreEncMVMB {
97         mfxI16Pair MV[16][2];
98     } *MB;
99 } mfxExtFeiPreEncMV;
100 MFX_PACK_END()
101 
102 MFX_PACK_BEGIN_STRUCT_W_PTR()
103 MFX_DEPRECATED typedef struct {
104     mfxExtBuffer    Header;
105     mfxU32  reserved1[3];
106     mfxU32  NumMBAlloc;
107     mfxU16  reserved2[20];
108 
109     struct  mfxExtFeiPreEncMBStatMB {
110         struct  mfxExtFeiPreEncMBStatMBInter {
111             mfxU16  BestDistortion;
112             mfxU16  Mode ;
113         } Inter[2]; /*0 -L0, 1 - L1*/
114 
115         mfxU16  BestIntraDistortion;
116         mfxU16  IntraMode ;
117 
118         mfxU16  NumOfNonZeroCoef;
119         mfxU16  reserved1;
120         mfxU32  SumOfCoef;
121 
122         mfxU32  reserved2;
123 
124         mfxU32  Variance16x16;
125         mfxU32  Variance8x8[4];
126         mfxU32  PixelAverage16x16;
127         mfxU32  PixelAverage8x8[4];
128     } *MB;
129 } mfxExtFeiPreEncMBStat;
130 MFX_PACK_END()
131 
132 /* 1  ENC_PAK input */
133 MFX_PACK_BEGIN_USUAL_STRUCT()
134 MFX_DEPRECATED typedef struct {
135     mfxExtBuffer    Header;
136 
137     mfxU16    SearchPath;
138     mfxU16    LenSP;
139     mfxU16    SubMBPartMask;
140     mfxU16    IntraPartMask;
141     mfxU16    MultiPredL0;
142     mfxU16    MultiPredL1;
143     mfxU16    SubPelMode;
144     mfxU16    InterSAD;
145     mfxU16    IntraSAD;
146     mfxU16    DistortionType;
147     mfxU16    RepartitionCheckEnable;
148     mfxU16    AdaptiveSearch;
149     mfxU16    MVPredictor;
150     mfxU16    NumMVPredictors[2];
151     mfxU16    PerMBQp;
152     mfxU16    PerMBInput;
153     mfxU16    MBSizeCtrl;
154     mfxU16    RefWidth;
155     mfxU16    RefHeight;
156     mfxU16    SearchWindow;
157     mfxU16    ColocatedMbDistortion;
158     mfxU16    reserved[38];
159 } mfxExtFeiEncFrameCtrl;
160 MFX_PACK_END()
161 
162 MFX_PACK_BEGIN_STRUCT_W_PTR()
163 MFX_DEPRECATED typedef struct {
164     mfxExtBuffer    Header;
165     mfxU32  reserved1[3];
166     mfxU32  NumMBAlloc;
167     mfxU16  reserved2[20];
168 
169     struct  mfxExtFeiEncMVPredictorsMB {
170         struct mfxExtFeiEncMVPredictorsMBRefIdx{
171             mfxU8   RefL0: 4;
172             mfxU8   RefL1: 4;
173         } RefIdx[4]; /* index is predictor number */
174         mfxU32      reserved;
175         mfxI16Pair MV[4][2]; /* first index is predictor number, second is 0 for L0 and 1 for L1 */
176     } *MB;
177 } mfxExtFeiEncMVPredictors;
178 MFX_PACK_END()
179 
180 MFX_PACK_BEGIN_STRUCT_W_PTR()
181 MFX_DEPRECATED typedef struct {
182     mfxExtBuffer    Header;
183     mfxU32  reserved1[3];
184     mfxU32  NumMBAlloc;
185     mfxU16  reserved2[20];
186 
187     struct  mfxExtFeiEncMBCtrlMB {
188         mfxU32    ForceToIntra     : 1;
189         mfxU32    ForceToSkip      : 1;
190         mfxU32    ForceToNoneSkip  : 1;
191 #if (MFX_VERSION >= 1025)
192         mfxU32    DirectBiasAdjustment        : 1;
193         mfxU32    GlobalMotionBiasAdjustment  : 1;
194         mfxU32    MVCostScalingFactor         : 3;
195 
196         mfxU32    reserved1        : 24;
197 #else
198         mfxU32    reserved1        : 29;
199 #endif
200         mfxU32    reserved2;
201         mfxU32    reserved3;
202 
203         mfxU32    reserved4        : 16;
204         mfxU32    TargetSizeInWord : 8;
205         mfxU32    MaxSizeInWord    : 8;
206     } *MB;
207 } mfxExtFeiEncMBCtrl;
208 MFX_PACK_END()
209 
210 /* 1 ENC_PAK output */
211 /* Buffer holds 32 MVs per MB. MVs are located in zigzag scan order.
212 Number in diagram below shows location of MV in memory.
213 For example, MV for right top 4x4 sub block is stored in 5-th element of the array.
214 ========================
215 || 00 | 01 || 04 | 05 ||
216 ------------------------
217 || 02 | 03 || 06 | 07 ||
218 ========================
219 || 08 | 09 || 12 | 13 ||
220 ------------------------
221 || 10 | 11 || 14 | 15 ||
222 ========================
223 */
224 MFX_PACK_BEGIN_STRUCT_W_PTR()
225 MFX_DEPRECATED typedef struct {
226     mfxExtBuffer    Header;
227     mfxU32  reserved1[3];
228     mfxU32  NumMBAlloc;
229     mfxU16  reserved2[20];
230 
231     struct  mfxExtFeiEncMVMB {
232         mfxI16Pair MV[16][2]; /* first index is block (4x4 pixels) number, second is 0 for L0 and 1 for L1 */
233     } *MB;
234 } mfxExtFeiEncMV;
235 MFX_PACK_END()
236 
237 MFX_PACK_BEGIN_STRUCT_W_PTR()
238 MFX_DEPRECATED typedef struct {
239     mfxExtBuffer    Header;
240     mfxU32  reserved1[3];
241     mfxU32  NumMBAlloc;
242     mfxU16  reserved2[20];
243 
244     struct mfxExtFeiEncMBStatMB {
245         mfxU16  InterDistortion[16];
246         mfxU16  BestInterDistortion;
247         mfxU16  BestIntraDistortion;
248         mfxU16  ColocatedMbDistortion;
249         mfxU16  reserved;
250         mfxU32  reserved1[2];
251     } *MB;
252 } mfxExtFeiEncMBStat;
253 MFX_PACK_END()
254 
255 enum {
256     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PAK_OBJECT_HEADER) = 0x7149000A
257 };
258 
259 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_PAK_OBJECT_HEADER);
260 
261 MFX_PACK_BEGIN_USUAL_STRUCT()
262 MFX_DEPRECATED typedef struct {
263     /* dword 0-2 */
264     mfxU32    Header;  /* MFX_PAK_OBJECT_HEADER */
265     mfxU32    MVDataLength;
266     mfxU32    MVDataOffset;
267 
268     /* dword 3 */
269     mfxU32    InterMbMode         : 2;
270     mfxU32    MBSkipFlag          : 1;
271     mfxU32    Reserved00          : 1;
272     mfxU32    IntraMbMode         : 2;
273     mfxU32    Reserved01          : 1;
274     mfxU32    FieldMbPolarityFlag : 1;
275     mfxU32    MbType              : 5;
276     mfxU32    IntraMbFlag         : 1;
277     mfxU32    FieldMbFlag         : 1;
278     mfxU32    Transform8x8Flag    : 1;
279     mfxU32    Reserved02          : 1;
280     mfxU32    DcBlockCodedCrFlag  : 1;
281     mfxU32    DcBlockCodedCbFlag  : 1;
282     mfxU32    DcBlockCodedYFlag   : 1;
283     mfxU32    MVFormat            : 3; /* layout and number of MVs, 0 - no MVs, 6 - 32 MVs, the rest are reserved */
284     mfxU32    Reserved03          : 8;
285     mfxU32    ExtendedFormat      : 1; /* should be 1, specifies that LumaIntraPredModes and RefIdx are replicated for 8x8 and 4x4 block/subblock */
286 
287     /* dword 4 */
288     mfxU8     HorzOrigin;
289     mfxU8     VertOrigin;
290     mfxU16    CbpY;
291 
292     /* dword 5 */
293     mfxU16    CbpCb;
294     mfxU16    CbpCr;
295 
296     /* dword 6 */
297     mfxU32    QpPrimeY               : 8;
298     mfxU32    Reserved30             :17;
299     mfxU32    MbSkipConvDisable      : 1;
300     mfxU32    IsLastMB               : 1;
301     mfxU32    EnableCoefficientClamp : 1;
302     mfxU32    Direct8x8Pattern       : 4;
303 
304     union {
305         struct {/* Intra MBs */
306             /* dword 7-8 */
307             mfxU16   LumaIntraPredModes[4];
308 
309             /* dword 9 */
310             mfxU32   ChromaIntraPredMode : 2;
311             mfxU32   IntraPredAvailFlags : 6;
312             mfxU32   Reserved60          : 24;
313         } IntraMB;
314         struct {/* Inter MBs */
315             /*dword 7 */
316             mfxU8    SubMbShapes;
317             mfxU8    SubMbPredModes;
318             mfxU16   Reserved40;
319 
320             /* dword 8-9 */
321             mfxU8    RefIdx[2][4]; /* first index is 0 for L0 and 1 for L1 */
322         } InterMB;
323     };
324 
325     /* dword 10 */
326     mfxU16    Reserved70;
327     mfxU8     TargetSizeInWord;
328     mfxU8     MaxSizeInWord;
329 
330     mfxU32     reserved2[5];
331 }mfxFeiPakMBCtrl;
332 MFX_PACK_END()
333 
334 MFX_PACK_BEGIN_STRUCT_W_PTR()
335 MFX_DEPRECATED typedef struct {
336     mfxExtBuffer    Header;
337     mfxU32  reserved1[3];
338     mfxU32  NumMBAlloc;
339     mfxU16  reserved2[20];
340 
341     mfxFeiPakMBCtrl *MB;
342 } mfxExtFeiPakMBCtrl;
343 MFX_PACK_END()
344 
345 MFX_PACK_BEGIN_USUAL_STRUCT()
346 MFX_DEPRECATED typedef struct {
347     mfxExtBuffer    Header;
348     mfxU32      MaxFrameSize; /* in bytes */
349     mfxU32      NumPasses;    /* up to 8 */
350     mfxU16      reserved[8];
351     mfxU8       DeltaQP[8];   /* list of delta QPs, only positive values */
352 } mfxExtFeiRepackCtrl;
353 MFX_PACK_END()
354 
355 #if (MFX_VERSION >= 1025)
356 /* FEI repack status */
357 MFX_PACK_BEGIN_USUAL_STRUCT()
358 MFX_DEPRECATED typedef struct {
359     mfxExtBuffer    Header;
360     mfxU32          NumPasses;
361     mfxU16          reserved[58];
362 } mfxExtFeiRepackStat;
363 MFX_PACK_END()
364 #endif
365 
366 /* 1 decode stream out */
367 MFX_PACK_BEGIN_USUAL_STRUCT()
368 MFX_DEPRECATED typedef struct {
369     /* dword 0 */
370     mfxU32    InterMbMode         : 2;
371     mfxU32    MBSkipFlag          : 1;
372     mfxU32    Reserved00          : 1;
373     mfxU32    IntraMbMode         : 2;
374     mfxU32    Reserved01          : 1;
375     mfxU32    FieldMbPolarityFlag : 1;
376     mfxU32    MbType              : 5;
377     mfxU32    IntraMbFlag         : 1;
378     mfxU32    FieldMbFlag         : 1;
379     mfxU32    Transform8x8Flag    : 1;
380     mfxU32    Reserved02          : 1;
381     mfxU32    DcBlockCodedCrFlag  : 1;
382     mfxU32    DcBlockCodedCbFlag  : 1;
383     mfxU32    DcBlockCodedYFlag   : 1;
384     mfxU32    Reserved03          :12;
385 
386     /* dword 1 */
387     mfxU16     HorzOrigin;
388     mfxU16     VertOrigin;
389 
390     /* dword 2 */
391     mfxU32    CbpY                :16;
392     mfxU32    CbpCb               : 4;
393     mfxU32    CbpCr               : 4;
394     mfxU32    Reserved20          : 6;
395     mfxU32    IsLastMB            : 1;
396     mfxU32    ConcealMB           : 1;
397 
398     /* dword 3 */
399     mfxU32    QpPrimeY            : 7;
400     mfxU32    Reserved30          : 1;
401     mfxU32    Reserved31          : 8;
402     mfxU32    NzCoeffCount        : 9;
403     mfxU32    Reserved32          : 3;
404     mfxU32    Direct8x8Pattern    : 4;
405 
406     /* dword 4-6 */
407     union {
408         struct {/* Intra MBs */
409             /* dword 4-5 */
410             mfxU16   LumaIntraPredModes[4];
411 
412             /* dword 6 */
413             mfxU32   ChromaIntraPredMode : 2;
414             mfxU32   IntraPredAvailFlags : 6;
415             mfxU32   Reserved60          : 24;
416         } IntraMB;
417 
418         struct {/* Inter MBs */
419             /* dword 4 */
420             mfxU8    SubMbShapes;
421             mfxU8    SubMbPredModes;
422             mfxU16   Reserved40;
423 
424             /* dword 5-6 */
425             mfxU8    RefIdx[2][4]; /* first index is 0 for L0 and 1 for L1 */
426         } InterMB;
427     };
428 
429     /* dword 7 */
430     mfxU32     Reserved70;
431 
432     /* dword 8-15 */
433     mfxI16Pair MV[4][2]; /* L0 - 0, L1 - 1 */
434 }mfxFeiDecStreamOutMBCtrl;
435 MFX_PACK_END()
436 
437 MFX_PACK_BEGIN_STRUCT_W_PTR()
438 MFX_DEPRECATED typedef struct {
439     mfxExtBuffer    Header;
440     mfxU32  reserved1[3];
441     mfxU32  NumMBAlloc;
442     mfxU16  RemapRefIdx; /* tri-state option, default is OFF */
443     mfxU16  PicStruct;
444     mfxU16  reserved2[18];
445 
446     mfxFeiDecStreamOutMBCtrl *MB;
447 } mfxExtFeiDecStreamOut;
448 MFX_PACK_END()
449 
450 /* SPS, PPS, Slice Header */
451 MFX_PACK_BEGIN_USUAL_STRUCT()
452 MFX_DEPRECATED typedef struct {
453     mfxExtBuffer    Header;
454 
455     mfxU16    SPSId;
456 
457     mfxU16    PicOrderCntType;
458     mfxU16    Log2MaxPicOrderCntLsb;
459     mfxU16    reserved[121];
460 } mfxExtFeiSPS;
461 MFX_PACK_END()
462 
463 MFX_PACK_BEGIN_USUAL_STRUCT()
464 MFX_DEPRECATED typedef struct {
465     mfxExtBuffer    Header;
466 
467     mfxU16    SPSId;
468     mfxU16    PPSId;
469 
470     mfxU16    PictureType;
471     mfxU16    FrameType;
472     mfxU16    PicInitQP;
473     mfxU16    NumRefIdxL0Active;
474     mfxU16    NumRefIdxL1Active;
475     mfxI16    ChromaQPIndexOffset;
476     mfxI16    SecondChromaQPIndexOffset;
477     mfxU16    Transform8x8ModeFlag;
478     mfxU16    reserved[114];
479 
480     struct mfxExtFeiPpsDPB {
481         mfxU16    Index;    /* index in mfxPAKInput::L0Surface array */
482         mfxU16    PicType;
483         mfxI32    FrameNumWrap;
484         mfxU16    LongTermFrameIdx;
485         mfxU16    reserved[3];
486     } DpbBefore[16], DpbAfter[16];
487 } mfxExtFeiPPS;
488 MFX_PACK_END()
489 
490 MFX_PACK_BEGIN_STRUCT_W_PTR()
491 MFX_DEPRECATED typedef struct {
492     mfxExtBuffer    Header;
493 
494     mfxU16    NumSlice; /* actual number of slices in the picture */
495     mfxU16    reserved[11];
496 
497     struct mfxSlice{
498         mfxU16    MBAddress;
499         mfxU16    NumMBs;
500         mfxU16    SliceType;
501         mfxU16    PPSId;
502         mfxU16    IdrPicId;
503 
504         mfxU16    CabacInitIdc;
505 
506         mfxU16    NumRefIdxL0Active;
507         mfxU16    NumRefIdxL1Active;
508 
509         mfxI16    SliceQPDelta;
510         mfxU16    DisableDeblockingFilterIdc;
511         mfxI16    SliceAlphaC0OffsetDiv2;
512         mfxI16    SliceBetaOffsetDiv2;
513         mfxU16    reserved[20];
514 
515         struct mfxSliceRef{
516             mfxU16   PictureType;
517             mfxU16   Index;
518             mfxU16   reserved[2];
519         } RefL0[32], RefL1[32]; /* index in mfxPAKInput::L0Surface array */
520 
521     } *Slice;
522 }mfxExtFeiSliceHeader;
523 MFX_PACK_END()
524 
525 MFX_PACK_BEGIN_USUAL_STRUCT()
526 MFX_DEPRECATED typedef struct {
527     mfxExtBuffer    Header;
528 
529     mfxU16  DisableHME;  /* 0 - enable, any other value means disable */
530     mfxU16  DisableSuperHME;
531     mfxU16  DisableUltraHME;
532 
533     mfxU16     reserved[57];
534 } mfxExtFeiCodingOption;
535 MFX_PACK_END()
536 
537 /* 1 functions */
538 typedef enum {
539     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_FEI_FUNCTION_PREENC)     =1,
540     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_FEI_FUNCTION_ENCODE)     =2,
541     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_FEI_FUNCTION_ENC)        =3,
542     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_FEI_FUNCTION_PAK)        =4,
543     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_FEI_FUNCTION_DEC)        =5,
544 } mfxFeiFunction;
545 
546 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_FEI_FUNCTION_PREENC);
547 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_FEI_FUNCTION_ENCODE);
548 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_FEI_FUNCTION_ENC);
549 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_FEI_FUNCTION_PAK);
550 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_FEI_FUNCTION_DEC);
551 
552 enum {
553     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PARAM)          = MFX_MAKEFOURCC('F','E','P','R'),
554     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PREENC_CTRL)    = MFX_MAKEFOURCC('F','P','C','T'),
555     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PREENC_MV_PRED) = MFX_MAKEFOURCC('F','P','M','P'),
556     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PREENC_MV)      = MFX_MAKEFOURCC('F','P','M','V'),
557     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PREENC_MB)      = MFX_MAKEFOURCC('F','P','M','B'),
558     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_CTRL)       = MFX_MAKEFOURCC('F','E','C','T'),
559     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_MV_PRED)    = MFX_MAKEFOURCC('F','E','M','P'),
560     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_QP)         = MFX_MAKEFOURCC('F','E','Q','P'),
561     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_MV)         = MFX_MAKEFOURCC('F','E','M','V'),
562     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_MB)         = MFX_MAKEFOURCC('F','E','M','B'),
563     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_ENC_MB_STAT)    = MFX_MAKEFOURCC('F','E','S','T'),
564     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PAK_CTRL)       = MFX_MAKEFOURCC('F','K','C','T'),
565     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_SPS)            = MFX_MAKEFOURCC('F','S','P','S'),
566     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_PPS)            = MFX_MAKEFOURCC('F','P','P','S'),
567     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_SLICE)          = MFX_MAKEFOURCC('F','S','L','C'),
568     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_CODING_OPTION)  = MFX_MAKEFOURCC('F','C','D','O'),
569     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_DEC_STREAM_OUT) = MFX_MAKEFOURCC('F','D','S','O'),
570     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_REPACK_CTRL)    = MFX_MAKEFOURCC('F','E','R','P'),
571 #if (MFX_VERSION >= 1025)
572     MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_EXTBUFF_FEI_REPACK_STAT)    = MFX_MAKEFOURCC('F','E','R','S')
573 #endif
574 };
575 
576 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PARAM);
577 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PREENC_CTRL);
578 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PREENC_MV_PRED);
579 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PREENC_MV);
580 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PREENC_MB);
581 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_CTRL);
582 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_MV_PRED);
583 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_QP);
584 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_MV);
585 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_MB);
586 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_ENC_MB_STAT);
587 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PAK_CTRL);
588 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_SPS);
589 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_PPS);
590 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_SLICE);
591 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_CODING_OPTION);
592 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_DEC_STREAM_OUT);
593 MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_REPACK_CTRL);
594 
595 #if (MFX_VERSION >= 1025)
596     MFX_DEPRECATED_ENUM_FIELD_OUTSIDE(MFX_EXTBUFF_FEI_REPACK_STAT);
597 #endif
598 
599 /* should be attached to mfxVideoParam during initialization to indicate FEI function */
600 MFX_PACK_BEGIN_USUAL_STRUCT()
601 MFX_DEPRECATED typedef struct {
602     mfxExtBuffer    Header;
603     mfxFeiFunction  Func;
604     mfxU16  SingleFieldProcessing;
605     mfxU16 reserved[57];
606 } mfxExtFeiParam;
607 MFX_PACK_END()
608 
609 #ifdef __cplusplus
610 } /* extern "C" */
611 #endif /* __cplusplus */
612 
613 
614 #endif
615