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