1 // Copyright (c) 2017-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 __MFXMVC_H__ 21 #define __MFXMVC_H__ 22 23 #include "mfxdefs.h" 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 /* CodecProfile, CodecLevel */ 30 enum { 31 /* MVC profiles */ 32 MFX_PROFILE_AVC_MULTIVIEW_HIGH =118, 33 MFX_PROFILE_AVC_STEREO_HIGH =128 34 }; 35 36 /* Extended Buffer Ids */ 37 enum { 38 MFX_EXTBUFF_MVC_SEQ_DESC = MFX_MAKEFOURCC('M','V','C','D'), 39 MFX_EXTBUFF_MVC_TARGET_VIEWS = MFX_MAKEFOURCC('M','V','C','T') 40 }; 41 42 MFX_PACK_BEGIN_USUAL_STRUCT() 43 typedef struct { 44 mfxU16 ViewId; 45 46 mfxU16 NumAnchorRefsL0; 47 mfxU16 NumAnchorRefsL1; 48 mfxU16 AnchorRefL0[16]; 49 mfxU16 AnchorRefL1[16]; 50 51 mfxU16 NumNonAnchorRefsL0; 52 mfxU16 NumNonAnchorRefsL1; 53 mfxU16 NonAnchorRefL0[16]; 54 mfxU16 NonAnchorRefL1[16]; 55 } mfxMVCViewDependency; 56 MFX_PACK_END() 57 58 MFX_PACK_BEGIN_STRUCT_W_PTR() 59 typedef struct { 60 mfxU16 TemporalId; 61 mfxU16 LevelIdc; 62 63 mfxU16 NumViews; 64 mfxU16 NumTargetViews; 65 mfxU16 *TargetViewId; 66 } mfxMVCOperationPoint; 67 MFX_PACK_END() 68 69 MFX_PACK_BEGIN_STRUCT_W_PTR() 70 typedef struct { 71 mfxExtBuffer Header; 72 73 mfxU32 NumView; 74 mfxU32 NumViewAlloc; 75 mfxMVCViewDependency *View; 76 77 mfxU32 NumViewId; 78 mfxU32 NumViewIdAlloc; 79 mfxU16 *ViewId; 80 81 mfxU32 NumOP; 82 mfxU32 NumOPAlloc; 83 mfxMVCOperationPoint *OP; 84 85 mfxU16 NumRefsTotal; 86 mfxU32 Reserved[16]; 87 88 } mfxExtMVCSeqDesc; 89 MFX_PACK_END() 90 91 MFX_PACK_BEGIN_USUAL_STRUCT() 92 typedef struct { 93 mfxExtBuffer Header; 94 95 mfxU16 TemporalId; 96 mfxU32 NumView; 97 mfxU16 ViewId[1024]; 98 } mfxExtMVCTargetViews ; 99 MFX_PACK_END() 100 101 #ifdef __cplusplus 102 } // extern "C" 103 #endif 104 105 #endif 106 107