1 /* ****************************************************************************** *\
2 
3 Copyright (C) 2012-2020 Intel Corporation.  All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 - Redistributions of source code must retain the above copyright notice,
8 this list of conditions and the following disclaimer.
9 - Redistributions in binary form must reproduce the above copyright notice,
10 this list of conditions and the following disclaimer in the documentation
11 and/or other materials provided with the distribution.
12 - Neither the name of Intel Corporation nor the names of its contributors
13 may be used to endorse or promote products derived from this software
14 without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 
27 File Name: dump.cpp
28 
29 \* ****************************************************************************** */
30 
31 #include "dump.h"
32 #if defined(_WIN32) || defined(_WIN64)
33     #include "windows.h"
34 #else
35     #include "unistd.h"
36 #endif
37 
pVoidToHexString(void * x)38 std::string pVoidToHexString(void* x)
39 {
40     std::ostringstream result;
41     result << std::setw(16) << std::setfill('0') << std::hex <<std::uppercase << ((mfxU64)x);
42     return result.str();
43 }
44 
45 struct IdTable
46 {
47     mfxI32 id;
48     const char* str;
49 };
50 
51 #define TABLE_ENTRY(_name) \
52     { _name, #_name }
53 
54 
55 static IdTable g_BufferIdTable[] =
56 {
57     TABLE_ENTRY(MFX_EXTBUFF_AVC_REFLIST_CTRL),
58     TABLE_ENTRY(MFX_EXTBUFF_AVC_TEMPORAL_LAYERS),
59 
60     TABLE_ENTRY(MFX_EXTBUFF_CODING_OPTION),
61     TABLE_ENTRY(MFX_EXTBUFF_CODING_OPTION2),
62     TABLE_ENTRY(MFX_EXTBUFF_CODING_OPTION3),
63     TABLE_ENTRY(MFX_EXTBUFF_CODING_OPTION_SPSPPS),
64 
65 
66     TABLE_ENTRY(MFX_EXTBUFF_ENCODER_CAPABILITY),
67     TABLE_ENTRY(MFX_EXTBUFF_ENCODED_FRAME_INFO),
68     TABLE_ENTRY(MFX_EXTBUFF_ENCODER_RESET_OPTION),
69     TABLE_ENTRY(MFX_EXTBUFF_ENCODER_ROI),
70 
71     TABLE_ENTRY(MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION),
72 
73     TABLE_ENTRY(MFX_EXTBUFF_PICTURE_TIMING_SEI),
74 
75     TABLE_ENTRY(MFX_EXTBUFF_VPP_AUXDATA),
76     TABLE_ENTRY(MFX_EXTBUFF_VPP_COMPOSITE),
77     TABLE_ENTRY(MFX_EXTBUFF_VPP_DEINTERLACING),
78     TABLE_ENTRY(MFX_EXTBUFF_VPP_DENOISE),
79     TABLE_ENTRY(MFX_EXTBUFF_VPP_DETAIL),
80     TABLE_ENTRY(MFX_EXTBUFF_VPP_DONOTUSE),
81     TABLE_ENTRY(MFX_EXTBUFF_VPP_DOUSE),
82     TABLE_ENTRY(MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION),
83     TABLE_ENTRY(MFX_EXTBUFF_VPP_IMAGE_STABILIZATION),
84     TABLE_ENTRY(MFX_EXTBUFF_VPP_PICSTRUCT_DETECTION),
85     TABLE_ENTRY(MFX_EXTBUFF_VPP_PROCAMP),
86     TABLE_ENTRY(MFX_EXTBUFF_VPP_SCENE_ANALYSIS),
87     TABLE_ENTRY(MFX_EXTBUFF_VPP_SCENE_CHANGE),
88     TABLE_ENTRY(MFX_EXTBUFF_VPP_VIDEO_SIGNAL_INFO),
89 
90     TABLE_ENTRY(MFX_EXTBUFF_VIDEO_SIGNAL_INFO),
91 
92     TABLE_ENTRY(MFX_EXTBUFF_LOOKAHEAD_CTRL),
93     TABLE_ENTRY(MFX_EXTBUFF_LOOKAHEAD_STAT),
94 
95     TABLE_ENTRY(MFX_EXTBUFF_FEI_PARAM),
96     TABLE_ENTRY(MFX_EXTBUFF_FEI_PREENC_CTRL),
97     TABLE_ENTRY(MFX_EXTBUFF_FEI_PREENC_MV_PRED),
98     TABLE_ENTRY(MFX_EXTBUFF_FEI_PREENC_MV),
99     TABLE_ENTRY(MFX_EXTBUFF_FEI_PREENC_MB),
100     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_CTRL),
101     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_MV_PRED),
102     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_MB),
103     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_QP),
104     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_MV),
105     TABLE_ENTRY(MFX_EXTBUFF_FEI_ENC_MB_STAT),
106     TABLE_ENTRY(MFX_EXTBUFF_FEI_PAK_CTRL),
107     TABLE_ENTRY(MFX_EXTBUFF_FEI_SPS),
108     TABLE_ENTRY(MFX_EXTBUFF_FEI_PPS),
109     TABLE_ENTRY(MFX_EXTBUFF_FEI_SLICE),
110     TABLE_ENTRY(MFX_EXTBUFF_FEI_DEC_STREAM_OUT),
111     TABLE_ENTRY(MFX_EXTBUFF_FEI_REPACK_CTRL),
112     TABLE_ENTRY(MFX_EXTBUF_CAM_GAMMA_CORRECTION),
113     TABLE_ENTRY(MFX_EXTBUF_CAM_WHITE_BALANCE),
114     TABLE_ENTRY(MFX_EXTBUF_CAM_HOT_PIXEL_REMOVAL),
115     TABLE_ENTRY(MFX_EXTBUF_CAM_BLACK_LEVEL_CORRECTION),
116     TABLE_ENTRY(MFX_EXTBUF_CAM_VIGNETTE_CORRECTION),
117     TABLE_ENTRY(MFX_EXTBUF_CAM_BAYER_DENOISE),
118     TABLE_ENTRY(MFX_EXTBUF_CAM_COLOR_CORRECTION_3X3),
119     TABLE_ENTRY(MFX_EXTBUF_CAM_PADDING),
120     TABLE_ENTRY(MFX_EXTBUF_CAM_PIPECONTROL),
121     TABLE_ENTRY(MFX_EXTBUF_CAM_FORWARD_GAMMA_CORRECTION),
122     TABLE_ENTRY(MFX_EXTBUF_CAM_LENS_GEOM_DIST_CORRECTION),
123     TABLE_ENTRY(MFX_EXTBUF_CAM_TOTAL_COLOR_CONTROL),
124     TABLE_ENTRY(MFX_EXTBUFF_LOOKAHEAD_CTRL),
125     TABLE_ENTRY(MFX_EXTBUFF_LOOKAHEAD_STAT),
126     TABLE_ENTRY(MFX_EXTBUFF_AVC_REFLIST_CTRL),
127     TABLE_ENTRY(MFX_EXTBUFF_AVC_TEMPORAL_LAYERS),
128     TABLE_ENTRY(MFX_EXTBUFF_ENCODED_FRAME_INFO),
129     TABLE_ENTRY(MFX_EXTBUFF_AVC_REFLISTS),
130     TABLE_ENTRY(MFX_EXTBUFF_JPEG_QT),
131     TABLE_ENTRY(MFX_EXTBUFF_JPEG_HUFFMAN),
132     TABLE_ENTRY(MFX_EXTBUFF_MVC_SEQ_DESC),
133     TABLE_ENTRY(MFX_EXTBUFF_MVC_TARGET_VIEWS),
134     TABLE_ENTRY(MFX_EXTBUFF_HEVC_TILES),
135     TABLE_ENTRY(MFX_EXTBUFF_HEVC_PARAM),
136     TABLE_ENTRY(MFX_EXTBUFF_HEVC_REGION),
137     TABLE_ENTRY(MFX_EXTBUFF_DECODED_FRAME_INFO),
138     TABLE_ENTRY(MFX_EXTBUFF_TIME_CODE),
139     TABLE_ENTRY(MFX_EXTBUFF_THREADS_PARAM),
140     TABLE_ENTRY(MFX_EXTBUFF_PRED_WEIGHT_TABLE),
141     TABLE_ENTRY(MFX_EXTBUFF_DIRTY_RECTANGLES),
142     TABLE_ENTRY(MFX_EXTBUFF_MOVING_RECTANGLES),
143     TABLE_ENTRY(MFX_EXTBUFF_CODING_OPTION_VPS),
144     TABLE_ENTRY(MFX_EXTBUFF_VPP_ROTATION),
145     TABLE_ENTRY(MFX_EXTBUFF_ENCODED_SLICES_INFO),
146     TABLE_ENTRY(MFX_EXTBUFF_VPP_SCALING),
147     TABLE_ENTRY(MFX_EXTBUFF_FEI_CODING_OPTION),
148     TABLE_ENTRY(MFX_EXTBUFF_ENCODER_IPCM_AREA),
149     TABLE_ENTRY(MFX_EXTBUFF_INSERT_HEADERS),
150 #if (MFX_VERSION >= MFX_VERSION_NEXT)
151     TABLE_ENTRY(MFX_EXTBUFF_VP9_SEGMENTATION),
152     TABLE_ENTRY(MFX_EXTBUFF_VP9_TEMPORAL_LAYERS),
153     TABLE_ENTRY(MFX_EXTBUFF_VP9_PARAM)
154 #endif
155 };
156 
157 static IdTable tbl_impl[] = {
158     TABLE_ENTRY(MFX_IMPL_SOFTWARE),
159     TABLE_ENTRY(MFX_IMPL_HARDWARE),
160     TABLE_ENTRY(MFX_IMPL_AUTO_ANY),
161     TABLE_ENTRY(MFX_IMPL_HARDWARE_ANY),
162     TABLE_ENTRY(MFX_IMPL_HARDWARE2),
163     TABLE_ENTRY(MFX_IMPL_HARDWARE3),
164     TABLE_ENTRY(MFX_IMPL_HARDWARE4),
165     TABLE_ENTRY(MFX_IMPL_RUNTIME),
166     TABLE_ENTRY(MFX_IMPL_VIA_ANY),
167     TABLE_ENTRY(MFX_IMPL_VIA_D3D9),
168     TABLE_ENTRY(MFX_IMPL_VIA_D3D11),
169     TABLE_ENTRY(MFX_IMPL_VIA_VAAPI),
170     TABLE_ENTRY(MFX_IMPL_AUDIO)
171 };
172 
173 static IdTable tbl_fourcc[] = {
174     TABLE_ENTRY(MFX_FOURCC_NV12),
175     TABLE_ENTRY(MFX_FOURCC_YV12),
176     TABLE_ENTRY(MFX_FOURCC_NV16),
177     TABLE_ENTRY(MFX_FOURCC_YUY2),
178     TABLE_ENTRY(MFX_FOURCC_RGB3),
179     TABLE_ENTRY(MFX_FOURCC_RGB4),
180     TABLE_ENTRY(MFX_FOURCC_P8),
181     TABLE_ENTRY(MFX_FOURCC_P8_TEXTURE),
182     TABLE_ENTRY(MFX_FOURCC_P010),
183 #if (MFX_VERSION >= MFX_VERSION_NEXT)
184     TABLE_ENTRY(MFX_FOURCC_P016),
185 #endif
186     TABLE_ENTRY(MFX_FOURCC_P210),
187     TABLE_ENTRY(MFX_FOURCC_BGR4),
188     TABLE_ENTRY(MFX_FOURCC_A2RGB10),
189     TABLE_ENTRY(MFX_FOURCC_ARGB16),
190     TABLE_ENTRY(MFX_FOURCC_R16),
191     TABLE_ENTRY(MFX_FOURCC_ABGR16),
192     TABLE_ENTRY(MFX_FOURCC_AYUV),
193     TABLE_ENTRY(MFX_FOURCC_AYUV_RGB4),
194     TABLE_ENTRY(MFX_FOURCC_UYVY),
195 #if (MFX_VERSION >= 1027)
196     TABLE_ENTRY(MFX_FOURCC_Y210),
197     TABLE_ENTRY(MFX_FOURCC_Y410),
198 #endif
199     TABLE_ENTRY(MFX_FOURCC_NV21),
200     TABLE_ENTRY(MFX_FOURCC_IYUV),
201     TABLE_ENTRY(MFX_FOURCC_I010),
202 #if (MFX_VERSION >= MFX_VERSION_NEXT)
203     TABLE_ENTRY(MFX_FOURCC_Y216),
204     TABLE_ENTRY(MFX_FOURCC_Y416),
205     TABLE_ENTRY(MFX_FOURCC_RGBP),
206 #endif
207 };
208 
209 static IdTable tbl_sts[] = {
210     TABLE_ENTRY(MFX_ERR_NONE),
211     TABLE_ENTRY(MFX_ERR_UNKNOWN),
212     TABLE_ENTRY(MFX_ERR_NULL_PTR),
213     TABLE_ENTRY(MFX_ERR_UNSUPPORTED),
214     TABLE_ENTRY(MFX_ERR_MEMORY_ALLOC),
215     TABLE_ENTRY(MFX_ERR_NOT_ENOUGH_BUFFER),
216     TABLE_ENTRY(MFX_ERR_INVALID_HANDLE),
217     TABLE_ENTRY(MFX_ERR_LOCK_MEMORY),
218     TABLE_ENTRY(MFX_ERR_NOT_INITIALIZED),
219     TABLE_ENTRY(MFX_ERR_NOT_FOUND),
220     TABLE_ENTRY(MFX_ERR_MORE_DATA),
221     TABLE_ENTRY(MFX_ERR_MORE_SURFACE),
222     TABLE_ENTRY(MFX_ERR_ABORTED),
223     TABLE_ENTRY(MFX_ERR_DEVICE_LOST),
224     TABLE_ENTRY(MFX_ERR_INCOMPATIBLE_VIDEO_PARAM),
225     TABLE_ENTRY(MFX_ERR_INVALID_VIDEO_PARAM),
226     TABLE_ENTRY(MFX_ERR_UNDEFINED_BEHAVIOR),
227     TABLE_ENTRY(MFX_ERR_DEVICE_FAILED),
228     TABLE_ENTRY(MFX_ERR_MORE_BITSTREAM),
229     TABLE_ENTRY(MFX_ERR_INCOMPATIBLE_AUDIO_PARAM),
230     TABLE_ENTRY(MFX_ERR_INVALID_AUDIO_PARAM),
231     TABLE_ENTRY(MFX_WRN_IN_EXECUTION),
232     TABLE_ENTRY(MFX_WRN_DEVICE_BUSY),
233     TABLE_ENTRY(MFX_WRN_VIDEO_PARAM_CHANGED),
234     TABLE_ENTRY(MFX_WRN_PARTIAL_ACCELERATION),
235     TABLE_ENTRY(MFX_WRN_INCOMPATIBLE_VIDEO_PARAM),
236     TABLE_ENTRY(MFX_WRN_VALUE_NOT_CHANGED),
237     TABLE_ENTRY(MFX_WRN_OUT_OF_RANGE),
238     TABLE_ENTRY(MFX_WRN_FILTER_SKIPPED),
239     TABLE_ENTRY(MFX_WRN_INCOMPATIBLE_AUDIO_PARAM),
240     TABLE_ENTRY(MFX_TASK_DONE),
241     TABLE_ENTRY(MFX_TASK_WORKING),
242     TABLE_ENTRY(MFX_TASK_BUSY),
243     TABLE_ENTRY(MFX_ERR_NONE_PARTIAL_OUTPUT)
244 };
245 
246 static IdTable tbl_codecid[] = {
247     TABLE_ENTRY(MFX_CODEC_AVC),
248     TABLE_ENTRY(MFX_CODEC_HEVC),
249     TABLE_ENTRY(MFX_CODEC_MPEG2),
250     TABLE_ENTRY(MFX_CODEC_VC1),
251     TABLE_ENTRY(MFX_CODEC_CAPTURE),
252     TABLE_ENTRY(MFX_CODEC_VP9),
253     TABLE_ENTRY(MFX_CODEC_AV1)
254 };
255 
256 static IdTable tbl_iopattern[] = {
257     TABLE_ENTRY(MFX_IOPATTERN_IN_VIDEO_MEMORY),
258     TABLE_ENTRY(MFX_IOPATTERN_IN_SYSTEM_MEMORY),
259     TABLE_ENTRY(MFX_IOPATTERN_IN_OPAQUE_MEMORY),
260     TABLE_ENTRY(MFX_IOPATTERN_OUT_VIDEO_MEMORY),
261     TABLE_ENTRY(MFX_IOPATTERN_OUT_SYSTEM_MEMORY),
262     TABLE_ENTRY(MFX_IOPATTERN_OUT_OPAQUE_MEMORY)
263 };
264 
265 
get_bufferid_str(mfxU32 bufferid)266 const char* DumpContext::get_bufferid_str(mfxU32 bufferid)
267 {
268     for (size_t i = 0; i < GET_ARRAY_SIZE(g_BufferIdTable); ++i)
269     {
270         if (g_BufferIdTable[i].id == static_cast<int>(bufferid))
271         {
272             return g_BufferIdTable[i].str;
273         }
274     }
275     return NULL;
276 }
277 
GetmfxIMPL(mfxIMPL impl)278 std::string GetmfxIMPL(mfxIMPL impl) {
279 
280     std::basic_stringstream<char> stream;
281     std::string name = "UNKNOWN";
282 
283     for (unsigned int i = 0; i < (sizeof(tbl_impl) / sizeof(tbl_impl[0])); i++)
284         if (tbl_impl[i].id == (impl & (MFX_IMPL_VIA_ANY - 1)))
285             name = tbl_impl[i].str;
286     stream << name;
287 
288     int via_flag = impl & ~(MFX_IMPL_VIA_ANY - 1);
289 
290     if (0 != via_flag)
291     {
292         stream << "|";
293         name = "UNKNOWN";
294         for (unsigned int i = 0; i < (sizeof(tbl_impl) / sizeof(tbl_impl[0])); i++)
295             if (tbl_impl[i].id == via_flag)
296                 name = tbl_impl[i].str;
297         stream << name;
298     }
299     return stream.str();
300 }
301 
GetFourCC(mfxU32 fourcc)302 std::string GetFourCC(mfxU32 fourcc) {
303 
304     std::basic_stringstream<char> stream;
305     std::string name = "UNKNOWN";
306     int j = 0;
307     for (unsigned int i = 0; i < (sizeof(tbl_fourcc) / sizeof(tbl_fourcc[0])); i++)
308     {
309         if (tbl_fourcc[i].id == static_cast<int>(fourcc))
310         {
311             name = "";
312             while (tbl_fourcc[i].str[j + 11] != '\0')
313             {
314                 name = name + tbl_fourcc[i].str[j + 11];
315                 j++;
316             }
317             name = name + "\0";
318             break;
319         }
320     }
321     stream<<name;
322     return stream.str();
323 }
324 
GetStatusString(mfxStatus sts)325 std::string GetStatusString(mfxStatus sts) {
326 
327     std::basic_stringstream<char> stream;
328     std::string name = "UNKNOWN_STATUS";
329     for (unsigned int i = 0; i < (sizeof(tbl_sts) / sizeof(tbl_sts[0])); i++)
330     {
331         if (tbl_sts[i].id == sts)
332         {
333             name = tbl_sts[i].str;
334             break;
335         }
336 
337     }
338     stream<<name;
339     return stream.str();
340 }
341 
GetCodecIdString(mfxU32 id)342 std::string GetCodecIdString(mfxU32 id) {
343 
344     std::basic_stringstream<char> stream;
345     std::string name = "UNKNOWN";
346     for (unsigned int i = 0; i < (sizeof(tbl_codecid) / sizeof(tbl_codecid[0])); i++)
347     {
348         if (tbl_codecid[i].id == static_cast<int>(id))
349         {
350             name = tbl_codecid[i].str;
351             break;
352         }
353 
354     }
355     stream<<name;
356     return stream.str();
357 }
358 
GetIOPattern(mfxU32 io)359 std::string GetIOPattern(mfxU32 io) {
360 
361     std::basic_stringstream<char> stream;
362     std::string name;
363     for (unsigned int i = 0; i < (sizeof(tbl_iopattern) / sizeof(tbl_iopattern[0])); i++)
364     {
365         if (tbl_iopattern[i].id & static_cast<int>(io))
366         {
367             name += tbl_iopattern[i].str;
368             name += "; ";
369         }
370 
371     }
372     if (!name.length())
373     {
374         name = "UNKNOWN";
375         name += "(" + ToString(io) + ")";
376     }
377     stream<<name;
378     return stream.str();
379 }
380 
_IsBadReadPtr(void * ptr,size_t size)381 bool _IsBadReadPtr(void *ptr, size_t size)
382 {
383 #if defined(_WIN32) || defined(_WIN64)
384     return !!IsBadReadPtr(ptr, size);
385 #else
386     int fb[2];
387     if (pipe(fb) >= 0)
388     {
389         bool tmp = (write(fb[1], ptr, size) <= 0);
390         close(fb[0]);
391         close(fb[1]);
392         return tmp;
393     }
394     return true;
395 #endif
396 }
397 
398 //mfxcommon
399 DEFINE_GET_TYPE_DEF(mfxBitstream);
400 DEFINE_GET_TYPE_DEF(mfxExtBuffer);
401 DEFINE_GET_TYPE_DEF(mfxIMPL);
402 DEFINE_GET_TYPE_DEF(mfxInitParam);
403 DEFINE_GET_TYPE_DEF(mfxPriority);
404 DEFINE_GET_TYPE_DEF(mfxVersion);
405 DEFINE_GET_TYPE_DEF(mfxSyncPoint);
406 
407 //mfxenc
408 DEFINE_GET_TYPE_DEF(mfxENCInput);
409 DEFINE_GET_TYPE_DEF(mfxENCOutput);
410 
411 //mfxplugin
412 DEFINE_GET_TYPE_DEF(mfxPlugin);
413 
414 //mfxstructures
415 DEFINE_GET_TYPE_DEF(mfxDecodeStat);
416 DEFINE_GET_TYPE_DEF(mfxEncodeCtrl);
417 DEFINE_GET_TYPE_DEF(mfxEncodeStat);
418 DEFINE_GET_TYPE_DEF(mfxExtCodingOption);
419 DEFINE_GET_TYPE_DEF(mfxExtCodingOption2);
420 DEFINE_GET_TYPE_DEF(mfxExtCodingOption3);
421 DEFINE_GET_TYPE_DEF(mfxExtEncoderResetOption);
422 DEFINE_GET_TYPE_DEF(mfxExtVppAuxData);
423 DEFINE_GET_TYPE_DEF(mfxFrameAllocRequest);
424 DEFINE_GET_TYPE_DEF(mfxFrameData);
425 DEFINE_GET_TYPE_DEF(mfxFrameId);
426 DEFINE_GET_TYPE_DEF(mfxFrameInfo);
427 DEFINE_GET_TYPE_DEF(mfxFrameSurface1);
428 DEFINE_GET_TYPE_DEF(mfxHandleType);
429 DEFINE_GET_TYPE_DEF(mfxInfoMFX);
430 DEFINE_GET_TYPE_DEF(mfxInfoVPP);
431 DEFINE_GET_TYPE_DEF(mfxPayload);
432 DEFINE_GET_TYPE_DEF(mfxSkipMode);
433 DEFINE_GET_TYPE_DEF(mfxVideoParam);
434 DEFINE_GET_TYPE_DEF(mfxVPPStat);
435 DEFINE_GET_TYPE_DEF(mfxExtVPPDoNotUse);
436 DEFINE_GET_TYPE_DEF(mfxExtCodingOptionVPS);
437 DEFINE_GET_TYPE_DEF(mfxExtVPPRotation);
438 DEFINE_GET_TYPE_DEF(mfxExtEncodedSlicesInfo);
439 DEFINE_GET_TYPE_DEF(mfxExtVPPScaling);
440 DEFINE_GET_TYPE_DEF(mfxExtVPPMirroring);
441 DEFINE_GET_TYPE_DEF(mfxExtMVOverPicBoundaries);
442 DEFINE_GET_TYPE_DEF(mfxExtVPPColorFill);
443 DEFINE_GET_TYPE_DEF(mfxExtEncoderIPCMArea);
444 DEFINE_GET_TYPE_DEF(mfxExtInsertHeaders);
445 
446 //mfxsession
447 DEFINE_GET_TYPE_DEF(mfxSession);
448 
449 //mfxvideo
450 DEFINE_GET_TYPE_DEF(mfxBufferAllocator);
451 DEFINE_GET_TYPE_DEF(mfxFrameAllocator);
452 
453 //mfxfei
454 DEFINE_GET_TYPE_DEF(mfxExtFeiPreEncCtrl);
455 DEFINE_GET_TYPE_DEF(mfxExtFeiPreEncMV);
456 DEFINE_GET_TYPE_DEF(mfxExtFeiPreEncMBStat);
457 DEFINE_GET_TYPE_DEF(mfxExtFeiEncFrameCtrl);
458 DEFINE_GET_TYPE_DEF(mfxExtFeiEncMVPredictors);
459 DEFINE_GET_TYPE_DEF(mfxExtFeiEncQP);
460 DEFINE_GET_TYPE_DEF(mfxExtFeiEncMBCtrl);
461 DEFINE_GET_TYPE_DEF(mfxExtFeiEncMV);
462 DEFINE_GET_TYPE_DEF(mfxExtFeiEncMBStat);
463 DEFINE_GET_TYPE_DEF(mfxFeiPakMBCtrl);
464 DEFINE_GET_TYPE_DEF(mfxExtFeiPakMBCtrl);
465 DEFINE_GET_TYPE_DEF(mfxExtFeiParam);
466 DEFINE_GET_TYPE_DEF(mfxPAKInput);
467 DEFINE_GET_TYPE_DEF(mfxPAKOutput);
468 DEFINE_GET_TYPE_DEF(mfxExtFeiSPS);
469 DEFINE_GET_TYPE_DEF(mfxExtFeiPPS);
470 DEFINE_GET_TYPE_DEF(mfxExtFeiSliceHeader);
471 DEFINE_GET_TYPE_DEF(mfxExtFeiCodingOption);
472 DEFINE_GET_TYPE_DEF(mfxExtFeiRepackCtrl);
473 DEFINE_GET_TYPE_DEF(mfxFeiDecStreamOutMBCtrl);
474 DEFINE_GET_TYPE_DEF(mfxExtFeiDecStreamOut);
475 
476 
477