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