#pragma once

#ifndef DX_NOVTABLE
#	if (_MSC_VER >= 1100) && defined(__cplusplus)
#		define DX_NOVTABLE __declspec(novtable)
#	else
#		define DX_NOVTABLE
#	endif
#endif

#define DX_DEFGUID(g, n, data) \
struct DECLSPEC_UUID(#g) DX_NOVTABLE GUID_S_##n {}

#define DX_GUID(n) __uuidof(GUID_S_##n)



//////////////////////////////////////////////////////////////////////////
//
//	DX_DEFGUID({GUID}, NAME, default_value);
//
// example:
//	DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, Pos,			123);     <-- long
//	DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, Pos2,		0x30);	<-- long
//	DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, IsDebug,		true); <-- bool
//	DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, vendorName,	"Cyberlink"); <-- string
//	DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, vendorData,	[FF0123DE40123212]); <-- raw data


// CLDShow
DX_DEFGUID({7870140C-C746-41ba-965F-ADAD41D34478}, UMS21,					0);
DX_DEFGUID({433C8932-1524-476e-8CF5-B21E33344980}, DX_ExposeGraph,			0);
DX_DEFGUID({B1862FC1-5BBB-46eb-B6B6-3E85D17EC270}, DX_ASFReader,			0);
DX_DEFGUID({EE7CF0CB-B4A5-4b95-8BF3-1F8637D9AF21}, DX_UseIVIFilter,			0);
DX_DEFGUID({1DDF179E-4534-4212-9096-256CF6D8E1A5}, DSAUREN,					0);
DX_DEFGUID({C88C018A-5628-4a69-994F-682AC83E8C0F}, AU_REMOVE_IFCAPS,		0);
DX_DEFGUID({2E34D978-6DC1-4e6c-AD80-5987232676FD}, DX_MPEG1_DxVA,			0);
DX_DEFGUID({19FC4F5D-AEE4-4a33-BCC5-9569122BBDFD}, TwinviewVMR,				0);
DX_DEFGUID({96F1FF60-43EE-4f94-91E7-85E2D6F231CC}, DX_VMR_Version,			0);
DX_DEFGUID({5B30D445-7AE3-4071-B0A0-139965B525EC}, DX_DVRMS_CLMMD,			0);
DX_DEFGUID({EFEFFD34-8F76-4dd7-8978-8748381B9D98}, EnableVMR,				1);
DX_DEFGUID({E566C5D1-0AE7-44f8-8C0E-7747A20BF0C8}, EnableVMR9,				1);
DX_DEFGUID({2F613196-C684-4fb3-B7CB-F4BFA0087241}, DX_ResetOnStop,			0);
DX_DEFGUID({B0B8D3CC-3953-43e3-8124-CA0274EDB6D8}, DX_Handle_MPEG1_VMR,		0);
DX_DEFGUID({CB5C0AAF-25C6-4cc0-A57F-E4F60404E941}, DX_ForcedEVR,			1);
DX_DEFGUID({4DFAFF96-75DE-492f-99AC-FA5ABE9F5FDE}, DX_ReconnectMethod,		0);
DX_DEFGUID({C141855C-C8A7-4b67-86F7-DFC294375278}, DX_RetryOverlayMixer,	0);
DX_DEFGUID({4CA8E271-B781-4bcb-A0A1-023B195CE97D}, DX_MethodForDetectMpeg,	0);
DX_DEFGUID({48C5A926-BAE7-4b36-8853-0E017F4C1D10}, DX_BDROM_VideoRenderer,	0);
DX_DEFGUID({5CD9CBD1-639B-42e2-B73F-42DD33E6DF55}, DX_HDDVD_VideoRenderer,	4);
DX_DEFGUID({E5B70E6D-0DA4-4e19-BEE5-36B596ABC9B7}, DX_COPP_EnableDebugString,	0);
DX_DEFGUID({45E72B3F-843A-47c9-B1D7-9DFAE7F26910}, DX_WMF_SourceFilter,			2);
DX_DEFGUID({2D66A43A-632B-4917-888E-8B6E552B5CE6}, DX_MP4_SourceFilter,			0);
DX_DEFGUID({ABACF167-2E22-426b-860D-AF1F398A8FF9}, DX_IgnoreSampleRejected,		0);
DX_DEFGUID({5198514B-088F-4788-B150-7EFD41026685}, DX_H264_UseDxRenderer,		0);
DX_DEFGUID({4A64260B-522D-4c38-BB58-AC6EB86A3183}, DX_CLHBMixer_Config,			1);
DX_DEFGUID({8B0BB46D-4800-43ee-BD3F-2469D0AD3F4A}, DX_MPEG_RequireCLVSD,		0);
DX_DEFGUID({6F7F3FBF-CD81-4db1-9037-F169C50AE249}, DX_AVC_ClockOff,				0);
DX_DEFGUID({DA3CB85C-46B6-4b8e-B8DB-2100E79B39B1}, HDD_SUPPORTSUBV,				1);
DX_DEFGUID({021029FE-F144-4300-B6E2-E04DEB458C7C}, HDD_SUPPORTAMIXER,			2);
DX_DEFGUID({F2C97F49-448A-42a3-BC38-206F9C060A59}, HDD_Rate,					0);
DX_DEFGUID({41165D7F-7CEE-4e47-8D13-54152036AA02}, HDD_SUPPORTDTS,				0);

// DxRender
DX_DEFGUID({D0618E3A-F00C-4e05-8B99-79C34446D897}, DxRenderDebug,			0);
DX_DEFGUID({8C85CC8B-4286-4aaa-80D3-BF71DFD7C120}, DumpAlloc,				0);
DX_DEFGUID({38DADD8B-2256-4d28-8F2D-A382A275A23D}, AntiCapture,				1);
DX_DEFGUID({65380BC5-384C-47f4-A7A1-F87BB164E971}, DxRenderDXVA2,			1);
DX_DEFGUID({3E0F6A7F-9D30-4abd-BAF2-50B6C4AE27FB}, ForceTexture,			0);
DX_DEFGUID({8DD9F911-5456-4280-8E4C-786DD53AA63D}, VMR7OverlayTest,			0);
DX_DEFGUID({9037E969-E16D-4b29-B441-B46E4DB80156}, DxRenderConsole,			0);
DX_DEFGUID({67B81822-F12A-4dc3-A5D5-61DAD7AAA96C}, ShowInfo,				0);
DX_DEFGUID({9B77F9F1-AC01-41e2-BDDC-81C0BF9B4881}, ColorFillBlt,			0);
DX_DEFGUID({4B5CBA84-D14D-4ef1-A77D-BF6B050666B5}, ShowSortInfo,			0);
DX_DEFGUID({75B56A65-8C17-47ae-91E4-767724C0516C}, PreFlipDelayTime,		7887);
DX_DEFGUID({77BF08C1-C1ED-4289-B938-439E2C00A8C7}, TearingTest,				0);
DX_DEFGUID({49587C22-2751-4936-9800-82B5509E532B}, BackBufferCount,			0);
DX_DEFGUID({86581682-6FB4-409c-A23D-2D86667FC828}, EAPI,					1);
DX_DEFGUID({DC520C14-C6B5-4401-8023-614F4ABDABEE}, UseEVR,					0);
DX_DEFGUID({57F80F45-5ECD-4551-91A6-CE2ACCC09732}, LockRT,					1);
DX_DEFGUID({525B1BCF-D987-411d-8B9A-07F326DBA01C}, NoWaitLockRT,			0);
DX_DEFGUID({898AB5A3-0723-467b-A440-C5ECEEB88EAC}, NoVMRSync,				0);
DX_DEFGUID({F4F2C9F9-199D-41b4-9584-40D66F61C0A2}, SortDelayFrameCount,		2);
DX_DEFGUID({AE7B1F2E-C360-4411-A5AD-C5D78BE97E12}, DxRenderVerbose,			0);
DX_DEFGUID({4CF4DCD4-2D2D-49e7-97F4-4E1043813AA3}, ForceOverlay,			0);
DX_DEFGUID({50D82D5B-CA8B-486c-874B-75911161E329}, DumpVideoFrame,			0);
DX_DEFGUID({66DBD446-AC97-4d8a-B7C7-03CFACF805A7}, DefaultColorKey,			0x100010);
DX_DEFGUID({42F60168-ADD8-4ac6-8D15-81378EB2FEA8}, ForceNoCopy,				0);
DX_DEFGUID({B1211D5C-AD8C-44da-B283-9157ED54B9E0}, DumpMemFrame,			0);
DX_DEFGUID({D894CFBD-8E24-4be8-94F0-FE404FEE4759}, DMFStartTime,			0);
DX_DEFGUID({58063D7E-1B23-4e3d-B486-26786C9C2372}, DMFCount,				0);
DX_DEFGUID({7C56EEBD-24EB-449e-BB8E-1BA2644D4C48}, DMFPosX,					0);
DX_DEFGUID({76F5B51A-04FD-4bc6-A3EF-0BAC019820A0}, DMFPosY,					0);
DX_DEFGUID({B6B031E2-A5CE-4683-A450-C5D9556F7BFE}, DMFPosR,					100);
DX_DEFGUID({9C58013F-B61B-46a7-83D8-15D863D92769}, DMFPosB,					100);
DX_DEFGUID({E7830825-E780-41eb-9904-CE60371FFBFF}, CaptureDelay,			1);
DX_DEFGUID({E72A6B22-4B1A-4d09-BE46-FBBAAAF2BF87}, UseOverlay,				1);
DX_DEFGUID({47E1E73A-7CE1-4e4e-9798-88862AF5E825}, DetectSmallOverlay,		0);
DX_DEFGUID({063E565E-3BA9-4ac5-9283-9610ADF7A1BB}, RGBBits,					0);
DX_DEFGUID({D54A23A4-82BD-4a0e-AF18-1821B65A095E}, NVAPI_DD,				0);
DX_DEFGUID({753400A7-290E-4f3d-9A30-2DEAA07EDF91}, NVAPI_FlipRate,			1);
DX_DEFGUID({FAC71DF5-DFB4-4343-BD06-E607213C7FBF}, NV_FlipQueueHint,		2);
DX_DEFGUID({33272A1F-1747-4a6c-BA1F-03DBB3BFA1CD}, NVReCreateMethod,		0);
DX_DEFGUID({2BCAE72C-6207-4760-BFA0-F4EF3234B800}, NO_TRY_DD,				0);
DX_DEFGUID({E7222F63-4A94-430c-B6E1-8523D3331D43}, NV_OVERLAY,				0);
DX_DEFGUID({60BF1ADA-3DDC-49cd-8D40-1911645CE2E4}, UseSORT,					0);
DX_DEFGUID({95D5AB62-17EB-47b2-9547-96503C4741B5}, D3DEX,					1);
DX_DEFGUID({DF311BCC-2887-4f6d-A159-D876A2EC11F9}, SortPreFlip,				1);
DX_DEFGUID({4B11758C-CB3F-4dbb-BBDB-A8A7E2F1CF3A}, SortDelayFrame,			1);
DX_DEFGUID({1E873A3E-5572-4a13-B85D-E6B531EE831F}, StrictHeight,			0);
DX_DEFGUID({F2E7F50B-74FC-4861-9DE1-841DC3858861}, CheckPreFlipStatus,		1);
DX_DEFGUID({37D0FCB5-6EF2-4003-BF36-1ACF0881C69C}, CheckPreFlipTimeOut,		64);
DX_DEFGUID({5920A6FD-065A-454c-B587-0A3216E5599D}, CheckPreFlipSleep,		1);
DX_DEFGUID({5A2FB742-1351-4812-90EA-A304912A9B40}, VSyncBeforeFlip,			0);
DX_DEFGUID({677D8850-4870-43d3-8E93-589AFDC4BAA5}, NVVSyncBeforeFlip,		1);
DX_DEFGUID({59CEC60C-6C74-41b7-B8F7-D5624C15FE08}, ATIVSyncBeforeFlip,		0);
DX_DEFGUID({83D2E024-6607-4b41-BA44-C8B183A15581}, DeviceLostInDisplayChange,	1);
DX_DEFGUID({01CB30DA-237A-4db2-B49C-4C7F9B83A99D}, SplitSize,				256);
DX_DEFGUID({97B2266E-2952-4576-9BA6-E1FE6F53F4CD}, DumpRL,					0);
DX_DEFGUID({540EFF29-0CAD-4507-A5FA-B2EDB72916BB}, StillTimeout,			200);
DX_DEFGUID({3DB0FCE8-4A3A-4685-B71C-740B5A0303AF}, SyncTimeout,				100);
DX_DEFGUID({4C844086-2D74-4b1b-BCA0-A2D948DB3CB2}, DxThreadPriority,		15);
DX_DEFGUID({F8AD7D51-F069-4f84-B491-A2549D3CD170}, DxRenderDx9,				1);
DX_DEFGUID({51A6AB8B-2C67-41ae-ADE3-50997776D908}, YUVMixingMode,			1);
DX_DEFGUID({08EB80D8-7FAC-40ee-A844-27FC0C250993}, PRESENT_IMMEDIATE,		0);
DX_DEFGUID({F8232D53-CBDE-4e37-AC04-586CB0547800}, NO_FAKEAACS,				0);
DX_DEFGUID({FB8830FD-9F18-4094-BD5F-6F4A04764E1D}, NO_QUALITYNOTIFY,		0);
DX_DEFGUID({7A2F1EE8-2048-4ab4-93DB-C618E1A6E3B7}, CaptureRaw,				0);


// BD navigator
DX_DEFGUID({4FC78B3B-71CB-4168-BF76-B0778B2BE653}, DATACENTER_SPEC_REVISION,	0);
DX_DEFGUID({6D82D71D-6CA3-425b-B3E3-710CD2E49712}, DATACENTER_SEND_PAYLOAD,		0);
DX_DEFGUID({8D12EF3A-7D6C-4def-9DB0-7C820BEB211B}, DATACENTER_ADAPT_DISC_FLAGS ,0);
DX_DEFGUID({F13B608E-EF31-4dd6-94EC-47019FAB2FEC}, JAVATRACE_ENABLE,			0);
DX_DEFGUID({040692A7-BC1E-42f0-8262-32A1255FD896}, JAVATRACE_INCLUDE,			0);
DX_DEFGUID({BE269DEF-BBA3-4ffd-BD62-C481F5A64923}, JAVATRACE_EXCLUDE,			0);
DX_DEFGUID({D8B71D11-499F-4bf5-BE6B-33CDD9E74493}, JAVATRACE_CALL,				0);
DX_DEFGUID({7A76B69B-D6CF-45df-90EB-A638213399B7}, JAVATRACE_SHOWSTACK,			0);
DX_DEFGUID({5EB1D01C-F7E3-4bf2-93F3-6F51D8A4A794}, JAVATRACE_SHOWARG,			0);
DX_DEFGUID({C311274A-FE54-49bb-A7F5-7E94425A69C7}, BDJAPPMGR_JAVA_DEBUG,		0);
DX_DEFGUID({7906FEFE-BC92-4500-9FC1-2742070BDCD0}, ENABLE_DD,					0);
DX_DEFGUID({CD0CA599-0FE1-4e74-8845-0A892E700F99}, ENABLE_NOP_SELECTION,		0);
DX_DEFGUID({343F7CAC-686C-4f21-AD82-FF6BE0585D02}, IG_MENU_TIMEOUT_DURATION,	0);
DX_DEFGUID({3591ADD7-0B75-4795-96E3-EE2E212E3A40}, Disable_ContentCert,			0);
DX_DEFGUID({4A38DC3D-CC3C-43c5-B8FD-69FF48DB5EE6}, DUMP_KERNEL_TIMEOUT,			0);
DX_DEFGUID({8BCD70FF-DB89-4628-91EF-2632BC85B979}, BDPLUS_SAMPLE_KEY,			0);
DX_DEFGUID({16198CE3-BD90-4b5a-8AAB-016FA6D58AE8}, FORCE_DIGITAL_ONLY,			0);
DX_DEFGUID({EAB3B5D4-EFD4-4ce9-9EF2-6A3FA46D5324}, REMOTE_ACCESS,				0);
DX_DEFGUID({89DFBF11-FDCF-4f31-A1F9-E38B13D6E03A}, ENABLE_DV_PLAYBACK,			1);

// HDDVD filter
DX_DEFGUID({8384D23C-575B-44f1-B8F4-0C4FE40EA082}, ADV_VM_MT_PREF,			0);
DX_DEFGUID({92C8A9C8-6DB5-46c5-A72A-8B5C449DCD12}, ADV_AM_MT_PREF,			0);
DX_DEFGUID({E2D54B17-1585-4242-801D-9E054EB86B8E}, ADV_VS_MT_PREF,			0);
DX_DEFGUID({F13B608E-EF31-4dd6-94EC-47019FAB2FEC}, ADV_AS_MT_PREF,			0);
DX_DEFGUID({23028B1E-6AFE-442f-BED1-34856B194174}, ADV_SP_MT_PREF,			0);
DX_DEFGUID({F96E13D4-A782-4efb-B9B7-D7C91292B72A}, STD_V_MT_PREF,			0);
DX_DEFGUID({3F3B9A73-65C9-45a3-8A95-3417E10BF249}, STD_A_MT_PREF,			0);
DX_DEFGUID({6251C849-78D3-4903-AE9E-CD05CFFA34AE}, STD_SP_MT_PREF,			0);
DX_DEFGUID({92BB6E85-199F-432e-AFC9-181019620F14}, COLORSPACE_OPTION,		3);
DX_DEFGUID({8A90D1BF-534F-4898-A861-B58B8E3CB60C}, DisplayMode,			0);
DX_DEFGUID({E926FC6F-3435-4491-AD26-27389D2F82FF}, ForceDigitalOnly,		0);
DX_DEFGUID({4068E80C-26CF-40f4-81A8-FF0F1EFB45A5}, DDIdentifier,			0);

// Common
DX_DEFGUID({CE79775A-77FF-4472-AF1D-336FCD2C260B}, DemuxLeadingTime,		2000);
DX_DEFGUID({3C19415B-07F0-4067-91DF-36CE0256D3BB}, DownConvertSD,			0);
DX_DEFGUID({48214579-53E2-4cf2-A8DA-C916AB12583F}, Deliver_AllSP,	0);
DX_DEFGUID({66DBD446-AC97-4d8a-B7C7-03CFACF805A7}, HDDVD_DeliverAudio,			1);
DX_DEFGUID({A2B8B880-8F00-478b-9490-543AE8A455A6}, HDDVD_AdjustAudioPTS,			1);
DX_DEFGUID({CBC94E88-A39A-43c8-BA50-33DC6147F229}, KernelDriver,			"{329F96B6-DF1E-4328-BFDA-39EA953C1312}");

// HDDVD standard kernel
DX_DEFGUID({9337244A-AF7D-48ad-B8F1-2EF265F0888B}, Subpicture_SyncMode,		0);
DX_DEFGUID({1A6FBF31-5C70-4e37-A7FD-138BB2514838}, FastPlayIFPS,			4);
DX_DEFGUID({34549E98-678D-4e89-ABCD-7F29D164FC0C}, SmartSB,					0);
DX_DEFGUID({8EDC3A02-645E-4319-8C43-5013A9916E7D}, JumpNextTitle,			0);

// HDDVD advanced kernel
DX_DEFGUID({AFE3D1AF-B99A-425a-A406-8D5FB7E2324F}, MGesturePeriod,			1000);
DX_DEFGUID({1D78811F-DA50-4693-A355-4A3614B50DFB}, HDDVD_SeekInFirstPlay,	0);
DX_DEFGUID({E2C1B2FA-0B9D-44b7-8F8B-B9523C21558F}, PTSDelayTime,			500);
DX_DEFGUID({9908C6A9-48A1-4e2b-B88D-0BA547B8F554}, MaxDemuxTime,			16);
DX_DEFGUID({027C382E-D390-43e6-B52D-E8597B7ED72B}, SupportDsPause,			1);
DX_DEFGUID({0139021F-8330-4bf2-9112-2BAD64379D83}, EnableRestrictedMode,	0);
DX_DEFGUID({6478058A-0851-42b0-84D5-95DB7C617B44}, EnableAllUOPs,			0);
DX_DEFGUID({EC9ED3B9-BAB0-47e6-B40A-D3EBA8DC4CAF}, MaxKeyDownPeriod,		100);
DX_DEFGUID({8B1C8BEE-3BFD-44cc-9CED-B08060D8AF4D}, HDDVD_AudioAttrFromNav,	1);
DX_DEFGUID({BA01F2ED-6204-4067-81E1-D2253BD6C898}, DefaultCursorEnabled,	0);
DX_DEFGUID({04126442-D749-4f2d-B1D5-7FAD614964CD}, InstantFirstPlay,		0);
DX_DEFGUID({2956C576-4AC3-428c-A5D7-03B3BB0D8351}, PointerAndFocus,			0);
DX_DEFGUID({C18D5CD6-C577-4467-86A4-A3744A940F71}, ClipBlock,				1);
DX_DEFGUID({73DEA3B5-EDAC-4b81-A046-4B2386C04005}, debug_timing,			0);
DX_DEFGUID({E1727C17-AFF5-4da9-A03E-431827E66947}, Resoultion,				1);
DX_DEFGUID({2CCF89E5-2244-4994-A8ED-5350E1F9CF64}, NavigateUseNavIndex,		1);
DX_DEFGUID({72F8BF72-1292-46c4-8CB8-FDF3678E3070}, SkipLoadingLogo,			0);
DX_DEFGUID({97B2266E-2952-4576-9BA6-E1FE6F53F4CD}, PS_ValidateUri,			0);
DX_DEFGUID({C9F9E525-16BB-4387-95DB-1BE4E080BFC8}, HDDVD_NetworkState,		0);
DX_DEFGUID({92C039BF-6CA3-4b16-B0DE-48065E8702AD}, PS_AvailableAdditionalMask,0);
DX_DEFGUID({962BD8F4-E90C-4f60-97F9-CBA9359BC2F7}, ContentHacks,			1);
