//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (634)
//--------------------------------------------------------------------------------
pub const IOCTL_KS_PROPERTY = @as(u32, 3080195);
pub const IOCTL_KS_ENABLE_EVENT = @as(u32, 3080199);
pub const IOCTL_KS_DISABLE_EVENT = @as(u32, 3080203);
pub const IOCTL_KS_METHOD = @as(u32, 3080207);
pub const IOCTL_KS_WRITE_STREAM = @as(u32, 3112979);
pub const IOCTL_KS_READ_STREAM = @as(u32, 3096599);
pub const IOCTL_KS_RESET_STATE = @as(u32, 3080219);
pub const KSPRIORITY_LOW = @as(u32, 1);
pub const KSPRIORITY_NORMAL = @as(u32, 1073741824);
pub const KSPRIORITY_HIGH = @as(u32, 2147483648);
pub const KSPRIORITY_EXCLUSIVE = @as(u32, 4294967295);
pub const KSMETHOD_TYPE_NONE = @as(u32, 0);
pub const KSMETHOD_TYPE_READ = @as(u32, 1);
pub const KSMETHOD_TYPE_WRITE = @as(u32, 2);
pub const KSMETHOD_TYPE_MODIFY = @as(u32, 3);
pub const KSMETHOD_TYPE_SOURCE = @as(u32, 4);
pub const KSMETHOD_TYPE_SEND = @as(u32, 1);
pub const KSMETHOD_TYPE_SETSUPPORT = @as(u32, 256);
pub const KSMETHOD_TYPE_BASICSUPPORT = @as(u32, 512);
pub const KSMETHOD_TYPE_TOPOLOGY = @as(u32, 268435456);
pub const KSPROPERTY_TYPE_GET = @as(u32, 1);
pub const KSPROPERTY_TYPE_GETPAYLOADSIZE = @as(u32, 4);
pub const KSPROPERTY_TYPE_SET = @as(u32, 2);
pub const KSPROPERTY_TYPE_SETSUPPORT = @as(u32, 256);
pub const KSPROPERTY_TYPE_BASICSUPPORT = @as(u32, 512);
pub const KSPROPERTY_TYPE_RELATIONS = @as(u32, 1024);
pub const KSPROPERTY_TYPE_SERIALIZESET = @as(u32, 2048);
pub const KSPROPERTY_TYPE_UNSERIALIZESET = @as(u32, 4096);
pub const KSPROPERTY_TYPE_SERIALIZERAW = @as(u32, 8192);
pub const KSPROPERTY_TYPE_UNSERIALIZERAW = @as(u32, 16384);
pub const KSPROPERTY_TYPE_SERIALIZESIZE = @as(u32, 32768);
pub const KSPROPERTY_TYPE_DEFAULTVALUES = @as(u32, 65536);
pub const KSPROPERTY_TYPE_TOPOLOGY = @as(u32, 268435456);
pub const KSPROPERTY_TYPE_HIGHPRIORITY = @as(u32, 134217728);
pub const KSPROPERTY_TYPE_FSFILTERSCOPE = @as(u32, 1073741824);
pub const KSPROPERTY_TYPE_COPYPAYLOAD = @as(u32, 2147483648);
pub const KSPROPERTY_MEMBER_RANGES = @as(u32, 1);
pub const KSPROPERTY_MEMBER_STEPPEDRANGES = @as(u32, 2);
pub const KSPROPERTY_MEMBER_VALUES = @as(u32, 3);
pub const KSPROPERTY_MEMBER_FLAG_DEFAULT = @as(u32, 1);
pub const KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL = @as(u32, 2);
pub const KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM = @as(u32, 4);
pub const KSEVENTF_EVENT_HANDLE = @as(u32, 1);
pub const KSEVENTF_SEMAPHORE_HANDLE = @as(u32, 2);
pub const KSEVENTF_EVENT_OBJECT = @as(u32, 4);
pub const KSEVENTF_SEMAPHORE_OBJECT = @as(u32, 8);
pub const KSEVENTF_DPC = @as(u32, 16);
pub const KSEVENTF_WORKITEM = @as(u32, 32);
pub const KSEVENTF_KSWORKITEM = @as(u32, 128);
pub const KSEVENT_TYPE_ENABLE = @as(u32, 1);
pub const KSEVENT_TYPE_ONESHOT = @as(u32, 2);
pub const KSEVENT_TYPE_ENABLEBUFFERED = @as(u32, 4);
pub const KSEVENT_TYPE_SETSUPPORT = @as(u32, 256);
pub const KSEVENT_TYPE_BASICSUPPORT = @as(u32, 512);
pub const KSEVENT_TYPE_QUERYBUFFER = @as(u32, 1024);
pub const KSEVENT_TYPE_TOPOLOGY = @as(u32, 268435456);
pub const KSRELATIVEEVENT_FLAG_HANDLE = @as(u32, 1);
pub const KSRELATIVEEVENT_FLAG_POINTER = @as(u32, 2);
pub const KSMEDIUM_TYPE_ANYINSTANCE = @as(u32, 0);
pub const KSMEDIUM_STANDARD_DEVIO = @as(u32, 0);
pub const KSPROPERTY_PIN_FLAGS_ATTRIBUTE_RANGE_AWARE = @as(u32, 1);
pub const KSPROPERTY_PIN_FLAGS_MASK = @as(u32, 1);
pub const KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION = @as(u32, 0);
pub const KSDATAFORMAT_BIT_ATTRIBUTES = @as(u32, 1);
pub const KSDATARANGE_BIT_ATTRIBUTES = @as(u32, 1);
pub const KSDATARANGE_BIT_REQUIRED_ATTRIBUTES = @as(u32, 2);
pub const KSATTRIBUTE_REQUIRED = @as(u32, 1);
pub const KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER = @as(u32, 1);
pub const KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY = @as(u32, 2);
pub const KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY = @as(u32, 4);
pub const KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE = @as(u32, 8);
pub const KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY_CUSTOM_ALLOCATION = @as(u32, 16);
pub const KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY = @as(u32, 2147483648);
pub const KSALLOCATOR_OPTIONF_COMPATIBLE = @as(u32, 1);
pub const KSALLOCATOR_OPTIONF_SYSTEM_MEMORY = @as(u32, 2);
pub const KSALLOCATOR_OPTIONF_VALID = @as(u32, 3);
pub const KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT = @as(u32, 16);
pub const KSALLOCATOR_FLAG_DEVICE_SPECIFIC = @as(u32, 32);
pub const KSALLOCATOR_FLAG_CAN_ALLOCATE = @as(u32, 64);
pub const KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO = @as(u32, 128);
pub const KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY = @as(u32, 256);
pub const KSALLOCATOR_FLAG_MULTIPLE_OUTPUT = @as(u32, 512);
pub const KSALLOCATOR_FLAG_CYCLE = @as(u32, 1024);
pub const KSALLOCATOR_FLAG_ALLOCATOR_EXISTS = @as(u32, 2048);
pub const KSALLOCATOR_FLAG_INDEPENDENT_RANGES = @as(u32, 4096);
pub const KSALLOCATOR_FLAG_ATTENTION_STEPPING = @as(u32, 8192);
pub const KSALLOCATOR_FLAG_ENABLE_CACHED_MDL = @as(u32, 16384);
pub const KSALLOCATOR_FLAG_2D_BUFFER_REQUIRED = @as(u32, 32768);
pub const KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT = @as(u32, 1);
pub const KSSTREAM_HEADER_OPTIONSF_PREROLL = @as(u32, 2);
pub const KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY = @as(u32, 4);
pub const KSSTREAM_HEADER_OPTIONSF_TYPECHANGED = @as(u32, 8);
pub const KSSTREAM_HEADER_OPTIONSF_TIMEVALID = @as(u32, 16);
pub const KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY = @as(u32, 64);
pub const KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE = @as(u32, 128);
pub const KSSTREAM_HEADER_OPTIONSF_DURATIONVALID = @as(u32, 256);
pub const KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM = @as(u32, 512);
pub const KSSTREAM_HEADER_OPTIONSF_BUFFEREDTRANSFER = @as(u32, 1024);
pub const KSSTREAM_HEADER_OPTIONSF_VRAM_DATA_TRANSFER = @as(u32, 2048);
pub const KSSTREAM_HEADER_OPTIONSF_METADATA = @as(u32, 4096);
pub const KSSTREAM_HEADER_OPTIONSF_ENDOFPHOTOSEQUENCE = @as(u32, 8192);
pub const KSSTREAM_HEADER_OPTIONSF_FRAMEINFO = @as(u32, 16384);
pub const KSSTREAM_HEADER_OPTIONSF_PERSIST_SAMPLE = @as(u32, 32768);
pub const KSSTREAM_HEADER_OPTIONSF_SAMPLE_PERSISTED = @as(u32, 65536);
pub const KSSTREAM_HEADER_TRACK_COMPLETION_NUMBERS = @as(u32, 131072);
pub const KSSTREAM_HEADER_OPTIONSF_SECUREBUFFERTRANSFER = @as(u32, 262144);
pub const KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA = @as(u32, 2147483648);
pub const KSSTREAM_UVC_SECURE_ATTRIBUTE_SIZE = @as(u32, 8192);
pub const KSFRAMETIME_VARIABLESIZE = @as(u32, 1);
pub const KSRATE_NOPRESENTATIONSTART = @as(u32, 1);
pub const KSRATE_NOPRESENTATIONDURATION = @as(u32, 2);
pub const NANOSECONDS = @as(u32, 10000000);
pub const KSPROBE_STREAMREAD = @as(u32, 0);
pub const KSPROBE_STREAMWRITE = @as(u32, 1);
pub const KSPROBE_ALLOCATEMDL = @as(u32, 16);
pub const KSPROBE_PROBEANDLOCK = @as(u32, 32);
pub const KSPROBE_SYSTEMADDRESS = @as(u32, 64);
pub const KSPROBE_MODIFY = @as(u32, 512);
pub const KSPROBE_ALLOWFORMATCHANGE = @as(u32, 128);
pub const KSSTREAM_READ = @as(u32, 0);
pub const KSSTREAM_WRITE = @as(u32, 1);
pub const KSSTREAM_PAGED_DATA = @as(u32, 0);
pub const KSSTREAM_NONPAGED_DATA = @as(u32, 256);
pub const KSSTREAM_SYNCHRONOUS = @as(u32, 4096);
pub const KSSTREAM_FAILUREEXCEPTION = @as(u32, 8192);
pub const KSEVENT_ENTRY_DELETED = @as(u32, 1);
pub const KSEVENT_ENTRY_ONESHOT = @as(u32, 2);
pub const KSEVENT_ENTRY_BUFFERED = @as(u32, 4);
pub const KSDISPATCH_FASTIO = @as(u32, 2147483648);
pub const KSCREATE_ITEM_SECURITYCHANGED = @as(u32, 1);
pub const KSCREATE_ITEM_WILDCARD = @as(u32, 2);
pub const KSCREATE_ITEM_NOPARAMETERS = @as(u32, 4);
pub const KSCREATE_ITEM_FREEONSTOP = @as(u32, 8);
pub const BUS_INTERFACE_REFERENCE_VERSION = @as(u32, 256);
pub const IOCTL_KS_HANDSHAKE = @as(u32, 3080223);
pub const MIN_DEV_VER_FOR_QI = @as(u32, 256);
pub const KSDEVICE_DESCRIPTOR_VERSION = @as(u32, 256);
pub const KSDEVICE_DESCRIPTOR_VERSION_2 = @as(u32, 272);
pub const MIN_DEV_VER_FOR_FLAGS = @as(u32, 272);
pub const KSDEVICE_FLAG_ENABLE_REMOTE_WAKEUP = @as(u32, 1);
pub const KSDEVICE_FLAG_LOWPOWER_PASSTHROUGH = @as(u32, 2);
pub const KSDEVICE_FLAG_ENABLE_QUERYINTERFACE = @as(u32, 4);
pub const KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING = @as(u32, 1);
pub const KSFILTER_FLAG_CRITICAL_PROCESSING = @as(u32, 2);
pub const KSFILTER_FLAG_HYPERCRITICAL_PROCESSING = @as(u32, 4);
pub const KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES = @as(u32, 8);
pub const KSFILTER_FLAG_DENY_USERMODE_ACCESS = @as(u32, 2147483648);
pub const KSFILTER_FLAG_PRIORITIZE_REFERENCEGUID = @as(u32, 16);
pub const KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING = @as(u32, 1);
pub const KSPIN_FLAG_CRITICAL_PROCESSING = @as(u32, 2);
pub const KSPIN_FLAG_HYPERCRITICAL_PROCESSING = @as(u32, 4);
pub const KSPIN_FLAG_ASYNCHRONOUS_PROCESSING = @as(u32, 8);
pub const KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING = @as(u32, 16);
pub const KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL = @as(u32, 32);
pub const KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING = @as(u32, 64);
pub const KSPIN_FLAG_ENFORCE_FIFO = @as(u32, 128);
pub const KSPIN_FLAG_GENERATE_MAPPINGS = @as(u32, 256);
pub const KSPIN_FLAG_DISTINCT_TRAILING_EDGE = @as(u32, 512);
pub const KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY = @as(u32, 65536);
pub const KSPIN_FLAG_SPLITTER = @as(u32, 131072);
pub const KSPIN_FLAG_USE_STANDARD_TRANSPORT = @as(u32, 262144);
pub const KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT = @as(u32, 524288);
pub const KSPIN_FLAG_FIXED_FORMAT = @as(u32, 1048576);
pub const KSPIN_FLAG_GENERATE_EOS_EVENTS = @as(u32, 2097152);
pub const KSPIN_FLAG_IMPLEMENT_CLOCK = @as(u32, 4194304);
pub const KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING = @as(u32, 8388608);
pub const KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE = @as(u32, 16777216);
pub const KSPIN_FLAG_DENY_USERMODE_ACCESS = @as(u32, 2147483648);
pub const RT_STRING = @import("../zig.zig").typedConst([*:0]const u16, @as(i32, 6));
pub const RT_RCDATA = @import("../zig.zig").typedConst([*:0]const u16, @as(i32, 10));
pub const WAVE_FORMAT_EXTENSIBLE = @as(u32, 65534);
pub const KSDSOUND_BUFFER_PRIMARY = @as(u32, 1);
pub const KSDSOUND_BUFFER_STATIC = @as(u32, 2);
pub const KSDSOUND_BUFFER_LOCHARDWARE = @as(u32, 4);
pub const KSDSOUND_BUFFER_LOCSOFTWARE = @as(u32, 8);
pub const KSDSOUND_BUFFER_CTRL_3D = @as(u32, 1);
pub const KSDSOUND_BUFFER_CTRL_FREQUENCY = @as(u32, 2);
pub const KSDSOUND_BUFFER_CTRL_PAN = @as(u32, 4);
pub const KSDSOUND_BUFFER_CTRL_VOLUME = @as(u32, 8);
pub const KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY = @as(u32, 16);
pub const DEVPKEY_KsAudio_PacketSize_Constraints = PROPERTYKEY{ .fmtid = Guid.initString("13e004d6-b066-43bd-913b-a415cd13da87"), .pid = 2 };
pub const DEVPKEY_KsAudio_Controller_DeviceInterface_Path = PROPERTYKEY{ .fmtid = Guid.initString("13e004d6-b066-43bd-913b-a415cd13da87"), .pid = 3 };
pub const DEVPKEY_KsAudio_PacketSize_Constraints2 = PROPERTYKEY{ .fmtid = Guid.initString("9404f781-7191-409b-8b0b-80bf6ec229ae"), .pid = 2 };
pub const KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE = @as(i32, -1);
pub const KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN = @as(u32, 5);
pub const KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW = @as(u32, 10);
pub const KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE = @as(u32, 20);
pub const KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX = @as(u32, 180);
pub const KSDSOUND_3D_MODE_NORMAL = @as(u32, 0);
pub const KSDSOUND_3D_MODE_HEADRELATIVE = @as(u32, 1);
pub const KSDSOUND_3D_MODE_DISABLE = @as(u32, 2);
pub const KSDSOUND_BUFFER_CTRL_HRTF_3D = @as(u32, 1073741824);
pub const KSAUDIO_QUALITY_WORST = @as(u32, 0);
pub const KSAUDIO_QUALITY_PC = @as(u32, 1);
pub const KSAUDIO_QUALITY_BASIC = @as(u32, 2);
pub const KSAUDIO_QUALITY_ADVANCED = @as(u32, 3);
pub const KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU = @as(u32, 0);
pub const KSAUDIO_CPU_RESOURCES_HOST_CPU = @as(u32, 2147483647);
pub const SPEAKER_FRONT_LEFT = @as(u32, 1);
pub const SPEAKER_FRONT_RIGHT = @as(u32, 2);
pub const SPEAKER_FRONT_CENTER = @as(u32, 4);
pub const SPEAKER_LOW_FREQUENCY = @as(u32, 8);
pub const SPEAKER_BACK_LEFT = @as(u32, 16);
pub const SPEAKER_BACK_RIGHT = @as(u32, 32);
pub const SPEAKER_FRONT_LEFT_OF_CENTER = @as(u32, 64);
pub const SPEAKER_FRONT_RIGHT_OF_CENTER = @as(u32, 128);
pub const SPEAKER_BACK_CENTER = @as(u32, 256);
pub const SPEAKER_SIDE_LEFT = @as(u32, 512);
pub const SPEAKER_SIDE_RIGHT = @as(u32, 1024);
pub const SPEAKER_TOP_CENTER = @as(u32, 2048);
pub const SPEAKER_TOP_FRONT_LEFT = @as(u32, 4096);
pub const SPEAKER_TOP_FRONT_CENTER = @as(u32, 8192);
pub const SPEAKER_TOP_FRONT_RIGHT = @as(u32, 16384);
pub const SPEAKER_TOP_BACK_LEFT = @as(u32, 32768);
pub const SPEAKER_TOP_BACK_CENTER = @as(u32, 65536);
pub const SPEAKER_TOP_BACK_RIGHT = @as(u32, 131072);
pub const SPEAKER_RESERVED = @as(u32, 2147221504);
pub const SPEAKER_ALL = @as(u32, 2147483648);
pub const KSAUDIO_SPEAKER_DIRECTOUT = @as(u32, 0);
pub const KSAUDIO_SPEAKER_MONO = @as(u32, 4);
pub const KSAUDIO_SPEAKER_GROUND_FRONT_LEFT = @as(u32, 1);
pub const KSAUDIO_SPEAKER_GROUND_FRONT_CENTER = @as(u32, 4);
pub const KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT = @as(u32, 2);
pub const KSAUDIO_SPEAKER_GROUND_REAR_LEFT = @as(u32, 16);
pub const KSAUDIO_SPEAKER_GROUND_REAR_RIGHT = @as(u32, 32);
pub const KSAUDIO_SPEAKER_TOP_MIDDLE = @as(u32, 2048);
pub const KSAUDIO_SPEAKER_SUPER_WOOFER = @as(u32, 8);
pub const KSNODEPIN_STANDARD_IN = @as(u32, 1);
pub const KSNODEPIN_STANDARD_OUT = @as(u32, 0);
pub const KSNODEPIN_SUM_MUX_IN = @as(u32, 1);
pub const KSNODEPIN_SUM_MUX_OUT = @as(u32, 0);
pub const KSNODEPIN_DEMUX_IN = @as(u32, 0);
pub const KSNODEPIN_DEMUX_OUT = @as(u32, 1);
pub const KSNODEPIN_AEC_RENDER_IN = @as(u32, 1);
pub const KSNODEPIN_AEC_RENDER_OUT = @as(u32, 0);
pub const KSNODEPIN_AEC_CAPTURE_IN = @as(u32, 2);
pub const KSNODEPIN_AEC_CAPTURE_OUT = @as(u32, 3);
pub const AEC_STATUS_FD_HISTORY_UNINITIALIZED = @as(u32, 0);
pub const AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED = @as(u32, 1);
pub const AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED = @as(u32, 2);
pub const AEC_STATUS_FD_CURRENTLY_CONVERGED = @as(u32, 8);
pub const AEC_MODE_PASS_THROUGH = @as(u32, 0);
pub const AEC_MODE_HALF_DUPLEX = @as(u32, 1);
pub const AEC_MODE_FULL_DUPLEX = @as(u32, 2);
pub const KSPROPERTY_WAVE_QUEUED_POSITION = @as(u32, 1);
pub const KSMETHOD_WAVE_QUEUED_BREAKLOOP = @as(u32, 1);
pub const KSWAVE_COMPATCAPS_INPUT = @as(u32, 0);
pub const KSWAVE_COMPATCAPS_OUTPUT = @as(u32, 1);
pub const KSWAVE_BUFFER_ATTRIBUTEF_LOOPING = @as(u32, 1);
pub const KSWAVE_BUFFER_ATTRIBUTEF_STATIC = @as(u32, 2);
pub const SYSAUDIO_FLAGS_DONT_COMBINE_PINS = @as(u32, 1);
pub const SYSAUDIO_FLAGS_CLEAR_PREFERRED = @as(u32, 2);
pub const KSMPEGVIDMODE_PANSCAN = @as(u32, 1);
pub const KSMPEGVIDMODE_LTRBOX = @as(u32, 2);
pub const KSMPEGVIDMODE_SCALE = @as(u32, 4);
pub const KSAC3_ALTERNATE_AUDIO_1 = @as(u32, 1);
pub const KSAC3_ALTERNATE_AUDIO_2 = @as(u32, 2);
pub const KSAC3_ALTERNATE_AUDIO_BOTH = @as(u32, 3);
pub const KSAC3_SERVICE_MAIN_AUDIO = @as(u32, 0);
pub const KSAC3_SERVICE_NO_DIALOG = @as(u32, 1);
pub const KSAC3_SERVICE_VISUALLY_IMPAIRED = @as(u32, 2);
pub const KSAC3_SERVICE_HEARING_IMPAIRED = @as(u32, 3);
pub const KSAC3_SERVICE_DIALOG_ONLY = @as(u32, 4);
pub const KSAC3_SERVICE_COMMENTARY = @as(u32, 5);
pub const KSAC3_SERVICE_EMERGENCY_FLASH = @as(u32, 6);
pub const KSAC3_SERVICE_VOICE_OVER = @as(u32, 7);
pub const KSAUDDECOUTMODE_STEREO_ANALOG = @as(u32, 1);
pub const KSAUDDECOUTMODE_PCM_51 = @as(u32, 2);
pub const KSAUDDECOUTMODE_SPDIFF = @as(u32, 4);
pub const KS_DVD_CGMS_RESERVED_MASK = @as(u32, 120);
pub const KS_DVD_CGMS_COPY_PROTECT_MASK = @as(u32, 24);
pub const KS_DVD_CGMS_COPY_PERMITTED = @as(u32, 0);
pub const KS_DVD_CGMS_COPY_ONCE = @as(u32, 16);
pub const KS_DVD_CGMS_NO_COPY = @as(u32, 24);
pub const KS_DVD_COPYRIGHT_MASK = @as(u32, 64);
pub const KS_DVD_NOT_COPYRIGHTED = @as(u32, 0);
pub const KS_DVD_COPYRIGHTED = @as(u32, 64);
pub const KS_DVD_SECTOR_PROTECT_MASK = @as(u32, 32);
pub const KS_DVD_SECTOR_NOT_PROTECTED = @as(u32, 0);
pub const KS_DVD_SECTOR_PROTECTED = @as(u32, 32);
pub const KS_BI_RGB = @as(i32, 0);
pub const KS_BI_RLE8 = @as(i32, 1);
pub const KS_BI_RLE4 = @as(i32, 2);
pub const KS_BI_BITFIELDS = @as(i32, 3);
pub const KS_BI_JPEG = @as(i32, 4);
pub const KS_iPALETTE_COLORS = @as(u32, 256);
pub const KS_iEGA_COLORS = @as(u32, 16);
pub const KS_iMASK_COLORS = @as(u32, 3);
pub const KS_iTRUECOLOR = @as(u32, 16);
pub const KS_iRED = @as(u32, 0);
pub const KS_iGREEN = @as(u32, 1);
pub const KS_iBLUE = @as(u32, 2);
pub const KS_iPALETTE = @as(u32, 8);
pub const KS_iMAXBITS = @as(u32, 8);
pub const KS_VBIDATARATE_NABTS = @as(i32, 5727272);
pub const KS_VBIDATARATE_CC = @as(i32, 503493);
pub const KS_TVTUNER_CHANGE_BEGIN_TUNE = @as(i32, 1);
pub const KS_TVTUNER_CHANGE_END_TUNE = @as(i32, 2);
pub const KS_INTERLACE_IsInterlaced = @as(u32, 1);
pub const KS_INTERLACE_1FieldPerSample = @as(u32, 2);
pub const KS_INTERLACE_Field1First = @as(u32, 4);
pub const KS_INTERLACE_UNUSED = @as(u32, 8);
pub const KS_INTERLACE_FieldPatternMask = @as(u32, 48);
pub const KS_INTERLACE_FieldPatField1Only = @as(u32, 0);
pub const KS_INTERLACE_FieldPatField2Only = @as(u32, 16);
pub const KS_INTERLACE_FieldPatBothRegular = @as(u32, 32);
pub const KS_INTERLACE_FieldPatBothIrregular = @as(u32, 48);
pub const KS_INTERLACE_DisplayModeMask = @as(u32, 192);
pub const KS_INTERLACE_DisplayModeBobOnly = @as(u32, 0);
pub const KS_INTERLACE_DisplayModeWeaveOnly = @as(u32, 64);
pub const KS_INTERLACE_DisplayModeBobOrWeave = @as(u32, 128);
pub const KS_COPYPROTECT_RestrictDuplication = @as(u32, 1);
pub const KS_MPEG2_DoPanScan = @as(u32, 1);
pub const KS_MPEG2_DVDLine21Field1 = @as(u32, 2);
pub const KS_MPEG2_DVDLine21Field2 = @as(u32, 4);
pub const KS_MPEG2_SourceIsLetterboxed = @as(u32, 8);
pub const KS_MPEG2_FilmCameraMode = @as(u32, 16);
pub const KS_MPEG2_LetterboxAnalogOut = @as(u32, 32);
pub const KS_MPEG2_DSS_UserData = @as(u32, 64);
pub const KS_MPEG2_DVB_UserData = @as(u32, 128);
pub const KS_MPEG2_27MhzTimebase = @as(u32, 256);
pub const KS_MPEG2_WidescreenAnalogOut = @as(u32, 512);
pub const KS_AMCONTROL_USED = @as(u32, 1);
pub const KS_AMCONTROL_PAD_TO_4x3 = @as(u32, 2);
pub const KS_AMCONTROL_PAD_TO_16x9 = @as(u32, 4);
pub const KS_AMCONTROL_COLORINFO_PRESENT = @as(u32, 128);
pub const KS_MAX_SIZE_MPEG1_SEQUENCE_INFO = @as(u32, 140);
pub const KS_MPEGAUDIOINFO_27MhzTimebase = @as(u32, 1);
pub const KS_VIDEOSTREAM_PREVIEW = @as(u32, 1);
pub const KS_VIDEOSTREAM_CAPTURE = @as(u32, 2);
pub const KS_VIDEOSTREAM_VBI = @as(u32, 16);
pub const KS_VIDEOSTREAM_NABTS = @as(u32, 32);
pub const KS_VIDEOSTREAM_CC = @as(u32, 256);
pub const KS_VIDEOSTREAM_EDS = @as(u32, 512);
pub const KS_VIDEOSTREAM_TELETEXT = @as(u32, 1024);
pub const KS_VIDEOSTREAM_STILL = @as(u32, 4096);
pub const KS_VIDEOSTREAM_IS_VPE = @as(u32, 32768);
pub const KS_VIDEO_ALLOC_VPE_SYSTEM = @as(u32, 1);
pub const KS_VIDEO_ALLOC_VPE_DISPLAY = @as(u32, 2);
pub const KS_VIDEO_ALLOC_VPE_AGP = @as(u32, 4);
pub const KS_VBICAP_PROTECTION_MV_PRESENT = @as(i32, 1);
pub const KS_VBICAP_PROTECTION_MV_HARDWARE = @as(i32, 2);
pub const KS_VBICAP_PROTECTION_MV_DETECTED = @as(i32, 4);
pub const KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE = @as(u32, 2048);
pub const KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE = @as(u32, 2064);
pub const KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE = @as(u32, 2080);
pub const KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE = @as(u32, 2096);
pub const KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE = @as(u32, 2112);
pub const KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE = @as(u32, 2128);
pub const KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE = @as(u32, 2144);
pub const KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE = @as(u32, 2160);
pub const KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE = @as(u32, 2176);
pub const KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE = @as(u32, 2192);
pub const KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE = @as(u32, 2208);
pub const KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE = @as(u32, 2224);
pub const KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE = @as(u32, 2288);
pub const MAX_NABTS_VBI_LINES_PER_FIELD = @as(u32, 11);
pub const NABTS_LINES_PER_BUNDLE = @as(u32, 16);
pub const NABTS_PAYLOAD_PER_LINE = @as(u32, 28);
pub const NABTS_BYTES_PER_LINE = @as(u32, 36);
pub const KS_CC_SUBSTREAM_ODD = @as(i32, 1);
pub const KS_CC_SUBSTREAM_EVEN = @as(i32, 2);
pub const KS_CC_SUBSTREAM_FIELD1_MASK = @as(i32, 240);
pub const KS_CC_SUBSTREAM_SERVICE_CC1 = @as(i32, 16);
pub const KS_CC_SUBSTREAM_SERVICE_CC2 = @as(i32, 32);
pub const KS_CC_SUBSTREAM_SERVICE_T1 = @as(i32, 64);
pub const KS_CC_SUBSTREAM_SERVICE_T2 = @as(i32, 128);
pub const KS_CC_SUBSTREAM_FIELD2_MASK = @as(i32, 7936);
pub const KS_CC_SUBSTREAM_SERVICE_CC3 = @as(i32, 256);
pub const KS_CC_SUBSTREAM_SERVICE_CC4 = @as(i32, 512);
pub const KS_CC_SUBSTREAM_SERVICE_T3 = @as(i32, 1024);
pub const KS_CC_SUBSTREAM_SERVICE_T4 = @as(i32, 2048);
pub const KS_CC_SUBSTREAM_SERVICE_XDS = @as(i32, 4096);
pub const CC_MAX_HW_DECODE_LINES = @as(u32, 12);
pub const NABTS_BUFFER_PICTURENUMBER_SUPPORT = @as(u32, 1);
pub const WST_TVTUNER_CHANGE_BEGIN_TUNE = @as(i32, 4096);
pub const WST_TVTUNER_CHANGE_END_TUNE = @as(i32, 8192);
pub const MAX_WST_VBI_LINES_PER_FIELD = @as(u32, 17);
pub const WST_BYTES_PER_LINE = @as(u32, 42);
pub const KS_VIDEO_FLAG_FIELD_MASK = @as(i32, 3);
pub const KS_VIDEO_FLAG_FRAME = @as(i32, 0);
pub const KS_VIDEO_FLAG_FIELD1 = @as(i32, 1);
pub const KS_VIDEO_FLAG_FIELD2 = @as(i32, 2);
pub const KS_VIDEO_FLAG_FIELD1FIRST = @as(i32, 4);
pub const KS_VIDEO_FLAG_WEAVE = @as(i32, 8);
pub const KS_VIDEO_FLAG_IPB_MASK = @as(i32, 48);
pub const KS_VIDEO_FLAG_I_FRAME = @as(i32, 0);
pub const KS_VIDEO_FLAG_P_FRAME = @as(i32, 16);
pub const KS_VIDEO_FLAG_B_FRAME = @as(i32, 32);
pub const KS_VIDEO_FLAG_REPEAT_FIELD = @as(i32, 64);
pub const KS_VBI_FLAG_FRAME = @as(i32, 0);
pub const KS_VBI_FLAG_FIELD1 = @as(i32, 1);
pub const KS_VBI_FLAG_FIELD2 = @as(i32, 2);
pub const KS_VBI_FLAG_MV_PRESENT = @as(i32, 256);
pub const KS_VBI_FLAG_MV_HARDWARE = @as(i32, 512);
pub const KS_VBI_FLAG_MV_DETECTED = @as(i32, 1024);
pub const KS_VBI_FLAG_TVTUNER_CHANGE = @as(i32, 16);
pub const KS_VBI_FLAG_VBIINFOHEADER_CHANGE = @as(i32, 32);
pub const KS_AnalogVideo_NTSC_Mask = @as(u32, 7);
pub const KS_AnalogVideo_PAL_Mask = @as(u32, 1052656);
pub const KS_AnalogVideo_SECAM_Mask = @as(u32, 1044480);
pub const KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO = @as(i32, 1);
pub const KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_FLAGS_AUTO = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_FLAGS_ASYNCHRONOUS = @as(i32, 4);
pub const KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE = @as(i32, 0);
pub const KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE = @as(i32, 16);
pub const KSPROPERTY_CAMERACONTROL_FLASH_OFF = @as(i32, 0);
pub const KSPROPERTY_CAMERACONTROL_FLASH_ON = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_FLASH_AUTO = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_FLASH_FLAGS_AUTO = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_FLASH_FLAGS_MANUAL = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_OFF = @as(i32, 0);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_HIGH = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_MEDIUM = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_LOW = @as(i32, 3);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_AUTO = @as(i32, 4);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_FLAGS_AUTO = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_FLAGS_MANUAL = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_FLAGS_AUTO = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_FLAGS_MANUAL = @as(i32, 2);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_FLAGS_ASYNC = @as(i32, -2147483648);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_CONFIG_FOCUS = @as(i32, 256);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_CONFIG_EXPOSURE = @as(i32, 512);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_CONFIG_WB = @as(i32, 1024);
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_CONVERGEMODE = @as(i32, 1073741824);
pub const KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_EXCLUSIVE_WITH_RECORD = @as(i32, 1);
pub const KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_SEQUENCE_EXCLUSIVE_WITH_RECORD = @as(i32, 2);
pub const KSCAMERA_EXTENDEDPROP_FILTERSCOPE = @as(u32, 4294967295);
pub const KSCAMERA_EXTENDEDPROP_CAPS_RESERVED = @as(u64, 18374686479671623680);
pub const KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL = @as(u64, 9223372036854775808);
pub const KSCAMERA_EXTENDEDPROP_CAPS_CANCELLABLE = @as(u64, 4611686018427387904);
pub const KSCAMERA_EXTENDEDPROP_FLAG_CANCELOPERATION = @as(u64, 9223372036854775808);
pub const KSCAMERA_EXTENDEDPROP_CAPS_MASK = @as(u64, 18374686479671623680);
pub const KSCAMERA_EXTENDEDPROP_FLAG_MASK = @as(u64, 18374686479671623680);
pub const KSCAMERA_EXTENDEDPROP_PHOTOMODE_NORMAL = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_PHOTOMODE_SEQUENCE = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_WARMSTART_MODE_DISABLED = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_WARMSTART_MODE_ENABLED = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_PHOTOTHUMBNAIL_DISABLE = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_PHOTOTHUMBNAIL_2X = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_PHOTOTHUMBNAIL_4X = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_PHOTOTHUMBNAIL_8X = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_PHOTOTHUMBNAIL_16X = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_AUTO = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_MACRO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_PORTRAIT = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_SPORT = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_SNOW = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_NIGHT = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_BEACH = @as(u64, 32);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_SUNSET = @as(u64, 64);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_CANDLELIGHT = @as(u64, 128);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_LANDSCAPE = @as(u64, 256);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_NIGHTPORTRAIT = @as(u64, 512);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_BACKLIT = @as(u64, 1024);
pub const KSCAMERA_EXTENDEDPROP_SCENEMODE_MANUAL = @as(u64, 36028797018963968);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTORCH_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON_ADJUSTABLEPOWER = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_FLASH_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_FLASH_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_FLASH_ON_ADJUSTABLEPOWER = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_FLASH_AUTO = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_FLASH_AUTO_ADJUSTABLEPOWER = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_FLASH_REDEYEREDUCTION = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_FLASH_SINGLEFLASH = @as(u64, 32);
pub const KSCAMERA_EXTENDEDPROP_FLASH_MULTIFLASHSUPPORTED = @as(u64, 64);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_DEFAULT = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_QUALITY = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_LATENCY = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_OPTIMIZATION_POWER = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_VIDEOPROCFLAG_AUTO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_VIDEOPROCFLAG_MANUAL = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_VIDEOPROCFLAG_LOCK = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_CONTINUOUS = @as(u64, 256);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_RANGE_MACRO = @as(u64, 65536);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_RANGE_NORMAL = @as(u64, 131072);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_RANGE_FULLRANGE = @as(u64, 262144);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_RANGE_INFINITY = @as(u64, 524288);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_RANGE_HYPERFOCAL = @as(u64, 1048576);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_DISTANCE_INFINITY = @as(u64, 16777216);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_DISTANCE_HYPERFOCAL = @as(u64, 33554432);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_DISTANCE_NEAREST = @as(u64, 67108864);
pub const KSCAMERA_EXTENDEDPROP_ISO_AUTO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_ISO_50 = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_ISO_80 = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_ISO_100 = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_ISO_200 = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_ISO_400 = @as(u64, 32);
pub const KSCAMERA_EXTENDEDPROP_ISO_800 = @as(u64, 64);
pub const KSCAMERA_EXTENDEDPROP_ISO_1600 = @as(u64, 128);
pub const KSCAMERA_EXTENDEDPROP_ISO_3200 = @as(u64, 256);
pub const KSCAMERA_EXTENDEDPROP_ISO_6400 = @as(u64, 512);
pub const KSCAMERA_EXTENDEDPROP_ISO_12800 = @as(u64, 1024);
pub const KSCAMERA_EXTENDEDPROP_ISO_25600 = @as(u64, 2048);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_CONTINUOUSLOCK = @as(u64, 512);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_UNLOCK = @as(u64, 1024);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_DRIVERFALLBACK_OFF = @as(u64, 2048);
pub const KSCAMERA_EXTENDEDPROP_FOCUS_REGIONBASED = @as(u64, 4096);
pub const KSCAMERA_EXTENDEDPROP_ISO_MANUAL = @as(u64, 36028797018963968);
pub const KSCAMERA_EXTENDEDPROP_FLASH_ASSISTANT_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_FLASH_ASSISTANT_ON = @as(u64, 128);
pub const KSCAMERA_EXTENDEDPROP_FLASH_ASSISTANT_AUTO = @as(u64, 256);
pub const KSCAMERA_EXTENDEDPROP_EVCOMP_SIXTHSTEP = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_EVCOMP_QUARTERSTEP = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_EVCOMP_THIRDSTEP = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_EVCOMP_HALFSTEP = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_EVCOMP_FULLSTEP = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_PHOTOMODE_SEQUENCE_SUB_NONE = @as(u32, 0);
pub const KSCAMERA_EXTENDEDPROP_PHOTOMODE_SEQUENCE_SUB_VARIABLE = @as(u32, 1);
pub const KSCAMERA_EXTENDEDPROP_METADATA_MEMORYTYPE_MASK = @as(u64, 255);
pub const KSCAMERA_EXTENDEDPROP_METADATA_SYSTEMMEMORY = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_METADATA_ALIGNMENTREQUIRED = @as(u64, 256);
pub const KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON = @as(u32, 1);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURETIME = @as(u32, 1);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURECOMPENSATION = @as(u32, 2);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_ISOSPEED = @as(u32, 4);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_FOCUSSTATE = @as(u32, 8);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_LENSPOSITION = @as(u32, 16);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_WHITEBALANCE = @as(u32, 32);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASH = @as(u32, 64);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASHPOWER = @as(u32, 128);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_ZOOMFACTOR = @as(u32, 256);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_SCENEMODE = @as(u32, 512);
pub const KSCAMERA_METADATA_CAPTURESTATS_FLAG_SENSORFRAMERATE = @as(u32, 1024);
pub const KSCAMERA_EXTENDEDPROP_FOCUSPRIORITY_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_FOCUSPRIORITY_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_PHOTOCONFIRMATION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_PHOTOCONFIRMATION_ON = @as(u64, 1);
pub const KSCAMERA_PERFRAMESETTING_AUTO = @as(u64, 4294967296);
pub const KSCAMERA_PERFRAMESETTING_MANUAL = @as(u64, 8589934592);
pub const KSCAMERA_EXTENDEDPROP_VIDEOSTABILIZATION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_VIDEOSTABILIZATION_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_VIDEOSTABILIZATION_AUTO = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_VFR_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_VFR_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_PREVIEW = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_VIDEO = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_PHOTO = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_BLINK = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_FACEDETECTION_SMILE = @as(u64, 16);
pub const KSCAMERA_EXTENDEDPROP_VIDEOHDR_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_VIDEOHDR_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_VIDEOHDR_AUTO = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_HISTOGRAM_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_HISTOGRAM_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_OIS_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_OIS_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_OIS_AUTO = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_ADVANCEDPHOTO_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_ADVANCEDPHOTO_AUTO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_ADVANCEDPHOTO_HDR = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_ADVANCEDPHOTO_FNF = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_ADVANCEDPHOTO_ULTRALOWLIGHT = @as(u64, 8);
pub const KSCAMERA_EXTENDEDPROP_ZOOM_DEFAULT = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_ZOOM_DIRECT = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_ZOOM_SMOOTH = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_DISABLED = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_BACKGROUND_SUBTRACTION = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_SECUREMODE_DISABLED = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_SECUREMODE_ENABLED = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTEMPORALDENOISING_AUTO = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTEMPORALDENOISING_OFF = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_VIDEOTEMPORALDENOISING_ON = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_IRTORCHMODE_OFF = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALWAYS_ON = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALTERNATING_FRAME_ILLUMINATION = @as(u64, 4);
pub const KSCAMERA_EXTENDEDPROP_RELATIVEPANELOPTIMIZATION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_RELATIVEPANELOPTIMIZATION_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_RELATIVEPANELOPTIMIZATION_DYNAMIC = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_EYEGAZECORRECTION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_EYEGAZECORRECTION_ON = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_BACKGROUNDSEGMENTATION_OFF = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_BACKGROUNDSEGMENTATION_BLUR = @as(u64, 1);
pub const KSCAMERA_EXTENDEDPROP_BACKGROUNDSEGMENTATION_MASK = @as(u64, 2);
pub const KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_MANUAL = @as(u64, 0);
pub const KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_AUTOFACEFRAMING = @as(u64, 1);
pub const KSCAMERAPROFILE_FLAGS_VIDEOSTABLIZATION = @as(u64, 1);
pub const KSCAMERAPROFILE_FLAGS_VIDEOHDR = @as(u64, 2);
pub const KSCAMERAPROFILE_FLAGS_PHOTOHDR = @as(u64, 4);
pub const KSCAMERAPROFILE_FLAGS_FACEDETECTION = @as(u64, 8);
pub const KSCAMERAPROFILE_FLAGS_VARIABLEPHOTOSEQUENCE = @as(u64, 16);
pub const KSCAMERAPROFILE_FLAGS_PREVIEW_RES_MUSTMATCH = @as(u64, 32);
pub const KSDEVICE_PROFILE_TYPE_UNKNOWN = @as(u32, 0);
pub const KSDEVICE_PROFILE_TYPE_CAMERA = @as(u32, 1);
pub const KSCameraProfileSensorType_RGB = @as(u32, 1);
pub const KSCameraProfileSensorType_Infrared = @as(u32, 2);
pub const KSCameraProfileSensorType_Depth = @as(u32, 4);
pub const KSCameraProfileSensorType_PoseTracking = @as(u32, 8);
pub const KSCameraProfileSensorType_ImageSegmentation = @as(u32, 16);
pub const KSCameraProfileSensorType_Custom = @as(u32, 128);
pub const KS_TVAUDIO_MODE_MONO = @as(u32, 1);
pub const KS_TVAUDIO_MODE_STEREO = @as(u32, 2);
pub const KS_TVAUDIO_MODE_LANG_A = @as(u32, 16);
pub const KS_TVAUDIO_MODE_LANG_B = @as(u32, 32);
pub const KS_TVAUDIO_MODE_LANG_C = @as(u32, 64);
pub const KS_TVAUDIO_PRESET_STEREO = @as(u32, 512);
pub const KS_TVAUDIO_PRESET_LANG_A = @as(u32, 4096);
pub const KS_TVAUDIO_PRESET_LANG_B = @as(u32, 8192);
pub const KS_TVAUDIO_PRESET_LANG_C = @as(u32, 16384);
pub const KS_AM_UseNewCSSKey = @as(i32, 1);
pub const MAX_SINK_DESCRIPTION_NAME_LENGTH = @as(u32, 32);
pub const JACKDESC2_PRESENCE_DETECT_CAPABILITY = @as(u32, 1);
pub const JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY = @as(u32, 2);
pub const KSPROPERTY_AUDIO_BUFFER_DURATION = @as(u32, 1);
pub const MAX_RESOURCEGROUPID_LENGTH = @as(u32, 256);
pub const AUDIOMODULE_MAX_DATA_SIZE = @as(u32, 64000);
pub const AUDIOMODULE_MAX_NAME_CCH_SIZE = @as(u32, 128);
pub const AllocatorStrategy_DontCare = @as(u32, 0);
pub const AllocatorStrategy_MinimizeNumberOfFrames = @as(u32, 1);
pub const AllocatorStrategy_MinimizeFrameSize = @as(u32, 2);
pub const AllocatorStrategy_MinimizeNumberOfAllocators = @as(u32, 4);
pub const AllocatorStrategy_MaximizeSpeed = @as(u32, 8);
pub const PipeFactor_None = @as(u32, 0);
pub const PipeFactor_UserModeUpstream = @as(u32, 1);
pub const PipeFactor_UserModeDownstream = @as(u32, 2);
pub const PipeFactor_MemoryTypes = @as(u32, 4);
pub const PipeFactor_Flags = @as(u32, 8);
pub const PipeFactor_PhysicalRanges = @as(u32, 16);
pub const PipeFactor_OptimalRanges = @as(u32, 32);
pub const PipeFactor_FixedCompression = @as(u32, 64);
pub const PipeFactor_UnknownCompression = @as(u32, 128);
pub const PipeFactor_Buffers = @as(u32, 256);
pub const PipeFactor_Align = @as(u32, 512);
pub const PipeFactor_PhysicalEnd = @as(u32, 1024);
pub const PipeFactor_LogicalEnd = @as(u32, 2048);
pub const KSPROPERTY_MEMORY_TRANSPORT = @as(i32, 1);

//--------------------------------------------------------------------------------
// Section: Types (1034)
//--------------------------------------------------------------------------------
pub const IKsPin = extern struct {
    placeholder: usize, // TODO: why is this type empty?
};

pub const IKsAllocator = extern struct {
    placeholder: usize, // TODO: why is this type empty?
};

pub const IKsAllocatorEx = extern struct {
    placeholder: usize, // TODO: why is this type empty?
};

const IID_IKsControl_Value = Guid.initString("28f54685-06fd-11d2-b27a-00a0c9223196");
pub const IID_IKsControl = &IID_IKsControl_Value;
pub const IKsControl = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        KsProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsControl,
                Property: ?*KSIDENTIFIER,
                PropertyLength: u32,
                PropertyData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsControl,
                Property: ?*KSIDENTIFIER,
                PropertyLength: u32,
                PropertyData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        KsMethod: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsControl,
                Method: ?*KSIDENTIFIER,
                MethodLength: u32,
                MethodData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsControl,
                Method: ?*KSIDENTIFIER,
                MethodLength: u32,
                MethodData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        KsEvent: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsControl,
                Event: ?*KSIDENTIFIER,
                EventLength: u32,
                EventData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsControl,
                Event: ?*KSIDENTIFIER,
                EventLength: u32,
                EventData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsControl_KsProperty(self: *const T, Property: ?*KSIDENTIFIER, PropertyLength: u32, PropertyData: ?*anyopaque, DataLength: u32, BytesReturned: ?*u32) HRESULT {
                return @as(*const IKsControl.VTable, @ptrCast(self.vtable)).KsProperty(@as(*const IKsControl, @ptrCast(self)), Property, PropertyLength, PropertyData, DataLength, BytesReturned);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsControl_KsMethod(self: *const T, Method: ?*KSIDENTIFIER, MethodLength: u32, MethodData: ?*anyopaque, DataLength: u32, BytesReturned: ?*u32) HRESULT {
                return @as(*const IKsControl.VTable, @ptrCast(self.vtable)).KsMethod(@as(*const IKsControl, @ptrCast(self)), Method, MethodLength, MethodData, DataLength, BytesReturned);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsControl_KsEvent(self: *const T, Event: ?*KSIDENTIFIER, EventLength: u32, EventData: ?*anyopaque, DataLength: u32, BytesReturned: ?*u32) HRESULT {
                return @as(*const IKsControl.VTable, @ptrCast(self.vtable)).KsEvent(@as(*const IKsControl, @ptrCast(self)), Event, EventLength, EventData, DataLength, BytesReturned);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IKsFormatSupport_Value = Guid.initString("3cb4a69d-bb6f-4d2b-95b7-452d2c155db5");
pub const IID_IKsFormatSupport = &IID_IKsFormatSupport_Value;
pub const IKsFormatSupport = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        IsFormatSupported: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsFormatSupport,
                pKsFormat: ?*KSDATAFORMAT,
                cbFormat: u32,
                pbSupported: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsFormatSupport,
                pKsFormat: ?*KSDATAFORMAT,
                cbFormat: u32,
                pbSupported: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDevicePreferredFormat: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsFormatSupport,
                ppKsFormat: ?*?*KSDATAFORMAT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsFormatSupport,
                ppKsFormat: ?*?*KSDATAFORMAT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsFormatSupport_IsFormatSupported(self: *const T, pKsFormat: ?*KSDATAFORMAT, cbFormat: u32, pbSupported: ?*BOOL) HRESULT {
                return @as(*const IKsFormatSupport.VTable, @ptrCast(self.vtable)).IsFormatSupported(@as(*const IKsFormatSupport, @ptrCast(self)), pKsFormat, cbFormat, pbSupported);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsFormatSupport_GetDevicePreferredFormat(self: *const T, ppKsFormat: ?*?*KSDATAFORMAT) HRESULT {
                return @as(*const IKsFormatSupport.VTable, @ptrCast(self.vtable)).GetDevicePreferredFormat(@as(*const IKsFormatSupport, @ptrCast(self)), ppKsFormat);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IKsJackDescription_Value = Guid.initString("4509f757-2d46-4637-8e62-ce7db944f57b");
pub const IID_IKsJackDescription = &IID_IKsJackDescription_Value;
pub const IKsJackDescription = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetJackCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackDescription,
                pcJacks: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackDescription,
                pcJacks: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJackDescription: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackDescription,
                nJack: u32,
                pDescription: ?*KSJACK_DESCRIPTION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackDescription,
                nJack: u32,
                pDescription: ?*KSJACK_DESCRIPTION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackDescription_GetJackCount(self: *const T, pcJacks: ?*u32) HRESULT {
                return @as(*const IKsJackDescription.VTable, @ptrCast(self.vtable)).GetJackCount(@as(*const IKsJackDescription, @ptrCast(self)), pcJacks);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackDescription_GetJackDescription(self: *const T, nJack: u32, pDescription: ?*KSJACK_DESCRIPTION) HRESULT {
                return @as(*const IKsJackDescription.VTable, @ptrCast(self.vtable)).GetJackDescription(@as(*const IKsJackDescription, @ptrCast(self)), nJack, pDescription);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IKsJackDescription2_Value = Guid.initString("478f3a9b-e0c9-4827-9228-6f5505ffe76a");
pub const IID_IKsJackDescription2 = &IID_IKsJackDescription2_Value;
pub const IKsJackDescription2 = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetJackCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackDescription2,
                pcJacks: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackDescription2,
                pcJacks: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJackDescription2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackDescription2,
                nJack: u32,
                pDescription2: ?*KSJACK_DESCRIPTION2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackDescription2,
                nJack: u32,
                pDescription2: ?*KSJACK_DESCRIPTION2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackDescription2_GetJackCount(self: *const T, pcJacks: ?*u32) HRESULT {
                return @as(*const IKsJackDescription2.VTable, @ptrCast(self.vtable)).GetJackCount(@as(*const IKsJackDescription2, @ptrCast(self)), pcJacks);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackDescription2_GetJackDescription2(self: *const T, nJack: u32, pDescription2: ?*KSJACK_DESCRIPTION2) HRESULT {
                return @as(*const IKsJackDescription2.VTable, @ptrCast(self.vtable)).GetJackDescription2(@as(*const IKsJackDescription2, @ptrCast(self)), nJack, pDescription2);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IKsJackSinkInformation_Value = Guid.initString("d9bd72ed-290f-4581-9ff3-61027a8fe532");
pub const IID_IKsJackSinkInformation = &IID_IKsJackSinkInformation_Value;
pub const IKsJackSinkInformation = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetJackSinkInformation: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackSinkInformation,
                pJackSinkInformation: ?*KSJACK_SINK_INFORMATION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackSinkInformation,
                pJackSinkInformation: ?*KSJACK_SINK_INFORMATION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackSinkInformation_GetJackSinkInformation(self: *const T, pJackSinkInformation: ?*KSJACK_SINK_INFORMATION) HRESULT {
                return @as(*const IKsJackSinkInformation.VTable, @ptrCast(self.vtable)).GetJackSinkInformation(@as(*const IKsJackSinkInformation, @ptrCast(self)), pJackSinkInformation);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IKsJackContainerId_Value = Guid.initString("c99af463-d629-4ec4-8c00-e54d68154248");
pub const IID_IKsJackContainerId = &IID_IKsJackContainerId_Value;
pub const IKsJackContainerId = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetJackContainerId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsJackContainerId,
                pJackContainerId: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsJackContainerId,
                pJackContainerId: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsJackContainerId_GetJackContainerId(self: *const T, pJackContainerId: ?*Guid) HRESULT {
                return @as(*const IKsJackContainerId.VTable, @ptrCast(self.vtable)).GetJackContainerId(@as(*const IKsJackContainerId, @ptrCast(self)), pJackContainerId);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const CLSID_GUID_NULL_Value = Guid.initString("00000000-0000-0000-0000-000000000000");
pub const CLSID_GUID_NULL = &CLSID_GUID_NULL_Value;

pub const KSRESET = enum(i32) {
    BEGIN = 0,
    END = 1,
};
pub const KSRESET_BEGIN = KSRESET.BEGIN;
pub const KSRESET_END = KSRESET.END;

pub const KSSTATE = enum(i32) {
    STOP = 0,
    ACQUIRE = 1,
    PAUSE = 2,
    RUN = 3,
};
pub const KSSTATE_STOP = KSSTATE.STOP;
pub const KSSTATE_ACQUIRE = KSSTATE.ACQUIRE;
pub const KSSTATE_PAUSE = KSSTATE.PAUSE;
pub const KSSTATE_RUN = KSSTATE.RUN;

pub const KSPRIORITY = extern struct {
    PriorityClass: u32,
    PrioritySubClass: u32,
};

pub const KSIDENTIFIER = extern struct {
    Anonymous: extern union {
        Anonymous: extern struct {
            Set: Guid,
            Id: u32,
            Flags: u32,
        },
        Alignment: i64,
    },
};

pub const KSP_NODE = extern struct {
    Property: KSIDENTIFIER,
    NodeId: u32,
    Reserved: u32,
};

pub const KSM_NODE = extern struct {
    Method: KSIDENTIFIER,
    NodeId: u32,
    Reserved: u32,
};

pub const KSE_NODE = extern struct {
    Event: KSIDENTIFIER,
    NodeId: u32,
    Reserved: u32,
};

const CLSID_KSPROPTYPESETID_General_Value = Guid.initString("97e99ba0-bdea-11cf-a5d6-28db04c10000");
pub const CLSID_KSPROPTYPESETID_General = &CLSID_KSPROPTYPESETID_General_Value;

pub const KSMULTIPLE_ITEM = extern struct {
    Size: u32,
    Count: u32,
};

pub const KSPROPERTY_DESCRIPTION = extern struct {
    AccessFlags: u32,
    DescriptionSize: u32,
    PropTypeSet: KSIDENTIFIER,
    MembersListCount: u32,
    Reserved: u32,
};

pub const KSPROPERTY_MEMBERSHEADER = extern struct {
    MembersFlags: u32,
    MembersSize: u32,
    MembersCount: u32,
    Flags: u32,
};

pub const KSPROPERTY_BOUNDS_LONG = extern union {
    Anonymous1: extern struct {
        SignedMinimum: i32,
        SignedMaximum: i32,
    },
    Anonymous2: extern struct {
        UnsignedMinimum: u32,
        UnsignedMaximum: u32,
    },
};

pub const KSPROPERTY_BOUNDS_LONGLONG = extern union {
    Anonymous1: extern struct {
        SignedMinimum: i64,
        SignedMaximum: i64,
    },
    Anonymous2: extern struct {
        UnsignedMinimum: u64,
        UnsignedMaximum: u64,
    },
};

pub const KSPROPERTY_STEPPING_LONG = extern struct {
    SteppingDelta: u32,
    Reserved: u32,
    Bounds: KSPROPERTY_BOUNDS_LONG,
};

pub const KSPROPERTY_STEPPING_LONGLONG = extern struct {
    SteppingDelta: u64,
    Bounds: KSPROPERTY_BOUNDS_LONGLONG,
};

pub const KSEVENTDATA = extern struct {
    NotificationType: u32,
    Anonymous: extern union {
        EventHandle: extern struct {
            Event: ?HANDLE,
            Reserved: [2]usize,
        },
        SemaphoreHandle: extern struct {
            Semaphore: ?HANDLE,
            Reserved: u32,
            Adjustment: i32,
        },
        Alignment: extern struct {
            Unused: ?*anyopaque,
            Alignment: [2]isize,
        },
    },
};

pub const KSQUERYBUFFER = extern struct {
    Event: KSIDENTIFIER,
    EventData: ?*KSEVENTDATA,
    Reserved: ?*anyopaque,
};

pub const KSRELATIVEEVENT = extern struct {
    Size: u32,
    Flags: u32,
    Anonymous: extern union {
        ObjectHandle: ?HANDLE,
        ObjectPointer: ?*anyopaque,
    },
    Reserved: ?*anyopaque,
    Event: KSIDENTIFIER,
    EventData: KSEVENTDATA,
};

pub const KSEVENT_TIME_MARK = extern struct {
    EventData: KSEVENTDATA,
    MarkTime: i64,
};

pub const KSEVENT_TIME_INTERVAL = extern struct {
    EventData: KSEVENTDATA,
    TimeBase: i64,
    Interval: i64,
};

pub const KSINTERVAL = extern struct {
    TimeBase: i64,
    Interval: i64,
};

const CLSID_KSPROPSETID_General_Value = Guid.initString("1464eda5-6a8f-11d1-9aa7-00a0c9223196");
pub const CLSID_KSPROPSETID_General = &CLSID_KSPROPSETID_General_Value;

pub const KSPROPERTY_GENERAL = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_GENERAL_COMPONENTID = KSPROPERTY_GENERAL.D;

pub const KSCOMPONENTID = extern struct {
    Manufacturer: Guid,
    Product: Guid,
    Component: Guid,
    Name: Guid,
    Version: u32,
    Revision: u32,
};

const CLSID_KSMETHODSETID_StreamIo_Value = Guid.initString("65d003ca-1523-11d2-b27a-00a0c9223196");
pub const CLSID_KSMETHODSETID_StreamIo = &CLSID_KSMETHODSETID_StreamIo_Value;

pub const KSMETHOD_STREAMIO = enum(i32) {
    READ = 0,
    WRITE = 1,
};
pub const KSMETHOD_STREAMIO_READ = KSMETHOD_STREAMIO.READ;
pub const KSMETHOD_STREAMIO_WRITE = KSMETHOD_STREAMIO.WRITE;

const CLSID_KSPROPSETID_MediaSeeking_Value = Guid.initString("ee904f0c-d09b-11d0-abe9-00a0c9223196");
pub const CLSID_KSPROPSETID_MediaSeeking = &CLSID_KSPROPSETID_MediaSeeking_Value;

pub const KSPROPERTY_MEDIASEEKING = enum(i32) {
    CAPABILITIES = 0,
    FORMATS = 1,
    TIMEFORMAT = 2,
    POSITION = 3,
    STOPPOSITION = 4,
    POSITIONS = 5,
    DURATION = 6,
    AVAILABLE = 7,
    PREROLL = 8,
    CONVERTTIMEFORMAT = 9,
};
pub const KSPROPERTY_MEDIASEEKING_CAPABILITIES = KSPROPERTY_MEDIASEEKING.CAPABILITIES;
pub const KSPROPERTY_MEDIASEEKING_FORMATS = KSPROPERTY_MEDIASEEKING.FORMATS;
pub const KSPROPERTY_MEDIASEEKING_TIMEFORMAT = KSPROPERTY_MEDIASEEKING.TIMEFORMAT;
pub const KSPROPERTY_MEDIASEEKING_POSITION = KSPROPERTY_MEDIASEEKING.POSITION;
pub const KSPROPERTY_MEDIASEEKING_STOPPOSITION = KSPROPERTY_MEDIASEEKING.STOPPOSITION;
pub const KSPROPERTY_MEDIASEEKING_POSITIONS = KSPROPERTY_MEDIASEEKING.POSITIONS;
pub const KSPROPERTY_MEDIASEEKING_DURATION = KSPROPERTY_MEDIASEEKING.DURATION;
pub const KSPROPERTY_MEDIASEEKING_AVAILABLE = KSPROPERTY_MEDIASEEKING.AVAILABLE;
pub const KSPROPERTY_MEDIASEEKING_PREROLL = KSPROPERTY_MEDIASEEKING.PREROLL;
pub const KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT = KSPROPERTY_MEDIASEEKING.CONVERTTIMEFORMAT;

pub const KS_SEEKING_FLAGS = enum(i32) {
    NoPositioning = 0,
    AbsolutePositioning = 1,
    RelativePositioning = 2,
    IncrementalPositioning = 3,
    // PositioningBitsMask = 3, this enum value conflicts with IncrementalPositioning
    SeekToKeyFrame = 4,
    ReturnTime = 8,
};
pub const KS_SEEKING_NoPositioning = KS_SEEKING_FLAGS.NoPositioning;
pub const KS_SEEKING_AbsolutePositioning = KS_SEEKING_FLAGS.AbsolutePositioning;
pub const KS_SEEKING_RelativePositioning = KS_SEEKING_FLAGS.RelativePositioning;
pub const KS_SEEKING_IncrementalPositioning = KS_SEEKING_FLAGS.IncrementalPositioning;
pub const KS_SEEKING_PositioningBitsMask = KS_SEEKING_FLAGS.IncrementalPositioning;
pub const KS_SEEKING_SeekToKeyFrame = KS_SEEKING_FLAGS.SeekToKeyFrame;
pub const KS_SEEKING_ReturnTime = KS_SEEKING_FLAGS.ReturnTime;

pub const KS_SEEKING_CAPABILITIES = enum(i32) {
    SeekAbsolute = 1,
    SeekForwards = 2,
    SeekBackwards = 4,
    GetCurrentPos = 8,
    GetStopPos = 16,
    GetDuration = 32,
    PlayBackwards = 64,
};
pub const KS_SEEKING_CanSeekAbsolute = KS_SEEKING_CAPABILITIES.SeekAbsolute;
pub const KS_SEEKING_CanSeekForwards = KS_SEEKING_CAPABILITIES.SeekForwards;
pub const KS_SEEKING_CanSeekBackwards = KS_SEEKING_CAPABILITIES.SeekBackwards;
pub const KS_SEEKING_CanGetCurrentPos = KS_SEEKING_CAPABILITIES.GetCurrentPos;
pub const KS_SEEKING_CanGetStopPos = KS_SEEKING_CAPABILITIES.GetStopPos;
pub const KS_SEEKING_CanGetDuration = KS_SEEKING_CAPABILITIES.GetDuration;
pub const KS_SEEKING_CanPlayBackwards = KS_SEEKING_CAPABILITIES.PlayBackwards;

pub const KSPROPERTY_POSITIONS = extern struct {
    Current: i64,
    Stop: i64,
    CurrentFlags: KS_SEEKING_FLAGS,
    StopFlags: KS_SEEKING_FLAGS,
};

pub const KSPROPERTY_MEDIAAVAILABLE = extern struct {
    Earliest: i64,
    Latest: i64,
};

pub const KSP_TIMEFORMAT = extern struct {
    Property: KSIDENTIFIER,
    SourceFormat: Guid,
    TargetFormat: Guid,
    Time: i64,
};

const CLSID_KSPROPSETID_Topology_Value = Guid.initString("720d4ac0-7533-11d0-a5d6-28db04c10000");
pub const CLSID_KSPROPSETID_Topology = &CLSID_KSPROPSETID_Topology_Value;

pub const KSPROPERTY_TOPOLOGY = enum(i32) {
    CATEGORIES = 0,
    NODES = 1,
    CONNECTIONS = 2,
    NAME = 3,
};
pub const KSPROPERTY_TOPOLOGY_CATEGORIES = KSPROPERTY_TOPOLOGY.CATEGORIES;
pub const KSPROPERTY_TOPOLOGY_NODES = KSPROPERTY_TOPOLOGY.NODES;
pub const KSPROPERTY_TOPOLOGY_CONNECTIONS = KSPROPERTY_TOPOLOGY.CONNECTIONS;
pub const KSPROPERTY_TOPOLOGY_NAME = KSPROPERTY_TOPOLOGY.NAME;

const CLSID_KSCATEGORY_BRIDGE_Value = Guid.initString("085aff00-62ce-11cf-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_BRIDGE = &CLSID_KSCATEGORY_BRIDGE_Value;

const CLSID_KSCATEGORY_CAPTURE_Value = Guid.initString("65e8773d-8f56-11d0-a3b9-00a0c9223196");
pub const CLSID_KSCATEGORY_CAPTURE = &CLSID_KSCATEGORY_CAPTURE_Value;

const CLSID_KSCATEGORY_VIDEO_CAMERA_Value = Guid.initString("e5323777-f976-4f5b-9b55-b94699c46e44");
pub const CLSID_KSCATEGORY_VIDEO_CAMERA = &CLSID_KSCATEGORY_VIDEO_CAMERA_Value;

const CLSID_KSCATEGORY_SENSOR_CAMERA_Value = Guid.initString("24e552d7-6523-47f7-a647-d3465bf1f5ca");
pub const CLSID_KSCATEGORY_SENSOR_CAMERA = &CLSID_KSCATEGORY_SENSOR_CAMERA_Value;

const CLSID_KSCATEGORY_NETWORK_CAMERA_Value = Guid.initString("b8238652-b500-41eb-b4f3-4234f7f5ae99");
pub const CLSID_KSCATEGORY_NETWORK_CAMERA = &CLSID_KSCATEGORY_NETWORK_CAMERA_Value;

const CLSID_KSCATEGORY_SENSOR_GROUP_Value = Guid.initString("669c7214-0a88-4311-a7f3-4e79820e33bd");
pub const CLSID_KSCATEGORY_SENSOR_GROUP = &CLSID_KSCATEGORY_SENSOR_GROUP_Value;

const CLSID_KSCATEGORY_RENDER_Value = Guid.initString("65e8773e-8f56-11d0-a3b9-00a0c9223196");
pub const CLSID_KSCATEGORY_RENDER = &CLSID_KSCATEGORY_RENDER_Value;

const CLSID_KSCATEGORY_MIXER_Value = Guid.initString("ad809c00-7b88-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_MIXER = &CLSID_KSCATEGORY_MIXER_Value;

const CLSID_KSCATEGORY_SPLITTER_Value = Guid.initString("0a4252a0-7e70-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_SPLITTER = &CLSID_KSCATEGORY_SPLITTER_Value;

const CLSID_KSCATEGORY_DATACOMPRESSOR_Value = Guid.initString("1e84c900-7e70-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_DATACOMPRESSOR = &CLSID_KSCATEGORY_DATACOMPRESSOR_Value;

const CLSID_KSCATEGORY_DATADECOMPRESSOR_Value = Guid.initString("2721ae20-7e70-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_DATADECOMPRESSOR = &CLSID_KSCATEGORY_DATADECOMPRESSOR_Value;

const CLSID_KSCATEGORY_DATATRANSFORM_Value = Guid.initString("2eb07ea0-7e70-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_DATATRANSFORM = &CLSID_KSCATEGORY_DATATRANSFORM_Value;

const CLSID_KSMFT_CATEGORY_VIDEO_DECODER_Value = Guid.initString("d6c02d4b-6833-45b4-971a-05a4b04bab91");
pub const CLSID_KSMFT_CATEGORY_VIDEO_DECODER = &CLSID_KSMFT_CATEGORY_VIDEO_DECODER_Value;

const CLSID_KSMFT_CATEGORY_VIDEO_ENCODER_Value = Guid.initString("f79eac7d-e545-4387-bdee-d647d7bde42a");
pub const CLSID_KSMFT_CATEGORY_VIDEO_ENCODER = &CLSID_KSMFT_CATEGORY_VIDEO_ENCODER_Value;

const CLSID_KSMFT_CATEGORY_VIDEO_EFFECT_Value = Guid.initString("12e17c21-532c-4a6e-8a1c-40825a736397");
pub const CLSID_KSMFT_CATEGORY_VIDEO_EFFECT = &CLSID_KSMFT_CATEGORY_VIDEO_EFFECT_Value;

const CLSID_KSMFT_CATEGORY_MULTIPLEXER_Value = Guid.initString("059c561e-05ae-4b61-b69d-55b61ee54a7b");
pub const CLSID_KSMFT_CATEGORY_MULTIPLEXER = &CLSID_KSMFT_CATEGORY_MULTIPLEXER_Value;

const CLSID_KSMFT_CATEGORY_DEMULTIPLEXER_Value = Guid.initString("a8700a7a-939b-44c5-99d7-76226b23b3f1");
pub const CLSID_KSMFT_CATEGORY_DEMULTIPLEXER = &CLSID_KSMFT_CATEGORY_DEMULTIPLEXER_Value;

const CLSID_KSMFT_CATEGORY_AUDIO_DECODER_Value = Guid.initString("9ea73fb4-ef7a-4559-8d5d-719d8f0426c7");
pub const CLSID_KSMFT_CATEGORY_AUDIO_DECODER = &CLSID_KSMFT_CATEGORY_AUDIO_DECODER_Value;

const CLSID_KSMFT_CATEGORY_AUDIO_ENCODER_Value = Guid.initString("91c64bd0-f91e-4d8c-9276-db248279d975");
pub const CLSID_KSMFT_CATEGORY_AUDIO_ENCODER = &CLSID_KSMFT_CATEGORY_AUDIO_ENCODER_Value;

const CLSID_KSMFT_CATEGORY_AUDIO_EFFECT_Value = Guid.initString("11064c48-3648-4ed0-932e-05ce8ac811b7");
pub const CLSID_KSMFT_CATEGORY_AUDIO_EFFECT = &CLSID_KSMFT_CATEGORY_AUDIO_EFFECT_Value;

const CLSID_KSMFT_CATEGORY_VIDEO_PROCESSOR_Value = Guid.initString("302ea3fc-aa5f-47f9-9f7a-c2188bb16302");
pub const CLSID_KSMFT_CATEGORY_VIDEO_PROCESSOR = &CLSID_KSMFT_CATEGORY_VIDEO_PROCESSOR_Value;

const CLSID_KSMFT_CATEGORY_OTHER_Value = Guid.initString("90175d57-b7ea-4901-aeb3-933a8747756f");
pub const CLSID_KSMFT_CATEGORY_OTHER = &CLSID_KSMFT_CATEGORY_OTHER_Value;

const CLSID_KSCATEGORY_COMMUNICATIONSTRANSFORM_Value = Guid.initString("cf1dda2c-9743-11d0-a3ee-00a0c9223196");
pub const CLSID_KSCATEGORY_COMMUNICATIONSTRANSFORM = &CLSID_KSCATEGORY_COMMUNICATIONSTRANSFORM_Value;

const CLSID_KSCATEGORY_INTERFACETRANSFORM_Value = Guid.initString("cf1dda2d-9743-11d0-a3ee-00a0c9223196");
pub const CLSID_KSCATEGORY_INTERFACETRANSFORM = &CLSID_KSCATEGORY_INTERFACETRANSFORM_Value;

const CLSID_KSCATEGORY_MEDIUMTRANSFORM_Value = Guid.initString("cf1dda2e-9743-11d0-a3ee-00a0c9223196");
pub const CLSID_KSCATEGORY_MEDIUMTRANSFORM = &CLSID_KSCATEGORY_MEDIUMTRANSFORM_Value;

const CLSID_KSCATEGORY_FILESYSTEM_Value = Guid.initString("760fed5e-9357-11d0-a3cc-00a0c9223196");
pub const CLSID_KSCATEGORY_FILESYSTEM = &CLSID_KSCATEGORY_FILESYSTEM_Value;

const CLSID_KSCATEGORY_CLOCK_Value = Guid.initString("53172480-4791-11d0-a5d6-28db04c10000");
pub const CLSID_KSCATEGORY_CLOCK = &CLSID_KSCATEGORY_CLOCK_Value;

const CLSID_KSCATEGORY_PROXY_Value = Guid.initString("97ebaaca-95bd-11d0-a3ea-00a0c9223196");
pub const CLSID_KSCATEGORY_PROXY = &CLSID_KSCATEGORY_PROXY_Value;

const CLSID_KSCATEGORY_QUALITY_Value = Guid.initString("97ebaacb-95bd-11d0-a3ea-00a0c9223196");
pub const CLSID_KSCATEGORY_QUALITY = &CLSID_KSCATEGORY_QUALITY_Value;

pub const KSTOPOLOGY_CONNECTION = extern struct {
    FromNode: u32,
    FromNodePin: u32,
    ToNode: u32,
    ToNodePin: u32,
};

pub const KSTOPOLOGY = extern struct {
    CategoriesCount: u32,
    Categories: ?*const Guid,
    TopologyNodesCount: u32,
    TopologyNodes: ?*const Guid,
    TopologyConnectionsCount: u32,
    TopologyConnections: ?*const KSTOPOLOGY_CONNECTION,
    TopologyNodesNames: ?*const Guid,
    Reserved: u32,
};

pub const KSNODE_CREATE = extern struct {
    CreateFlags: u32,
    Node: u32,
};

const CLSID_KSTIME_FORMAT_FRAME_Value = Guid.initString("7b785570-8c82-11cf-bc0c-00aa00ac74f6");
pub const CLSID_KSTIME_FORMAT_FRAME = &CLSID_KSTIME_FORMAT_FRAME_Value;

const CLSID_KSTIME_FORMAT_BYTE_Value = Guid.initString("7b785571-8c82-11cf-bc0c-00aa00ac74f6");
pub const CLSID_KSTIME_FORMAT_BYTE = &CLSID_KSTIME_FORMAT_BYTE_Value;

const CLSID_KSTIME_FORMAT_SAMPLE_Value = Guid.initString("7b785572-8c82-11cf-bc0c-00aa00ac74f6");
pub const CLSID_KSTIME_FORMAT_SAMPLE = &CLSID_KSTIME_FORMAT_SAMPLE_Value;

const CLSID_KSTIME_FORMAT_FIELD_Value = Guid.initString("7b785573-8c82-11cf-bc0c-00aa00ac74f6");
pub const CLSID_KSTIME_FORMAT_FIELD = &CLSID_KSTIME_FORMAT_FIELD_Value;

const CLSID_KSTIME_FORMAT_MEDIA_TIME_Value = Guid.initString("7b785574-8c82-11cf-bc0c-00aa00ac74f6");
pub const CLSID_KSTIME_FORMAT_MEDIA_TIME = &CLSID_KSTIME_FORMAT_MEDIA_TIME_Value;

const CLSID_KSINTERFACESETID_Standard_Value = Guid.initString("1a8766a0-62ce-11cf-a5d6-28db04c10000");
pub const CLSID_KSINTERFACESETID_Standard = &CLSID_KSINTERFACESETID_Standard_Value;

pub const KSINTERFACE_STANDARD = enum(i32) {
    STREAMING = 0,
    LOOPED_STREAMING = 1,
    CONTROL = 2,
};
pub const KSINTERFACE_STANDARD_STREAMING = KSINTERFACE_STANDARD.STREAMING;
pub const KSINTERFACE_STANDARD_LOOPED_STREAMING = KSINTERFACE_STANDARD.LOOPED_STREAMING;
pub const KSINTERFACE_STANDARD_CONTROL = KSINTERFACE_STANDARD.CONTROL;

const CLSID_KSINTERFACESETID_FileIo_Value = Guid.initString("8c6f932c-e771-11d0-b8ff-00a0c9223196");
pub const CLSID_KSINTERFACESETID_FileIo = &CLSID_KSINTERFACESETID_FileIo_Value;

pub const KSINTERFACE_FILEIO = enum(i32) {
    G = 0,
};
pub const KSINTERFACE_FILEIO_STREAMING = KSINTERFACE_FILEIO.G;

const CLSID_KSMEDIUMSETID_Standard_Value = Guid.initString("4747b320-62ce-11cf-a5d6-28db04c10000");
pub const CLSID_KSMEDIUMSETID_Standard = &CLSID_KSMEDIUMSETID_Standard_Value;

const CLSID_KSPROPSETID_Pin_Value = Guid.initString("8c134960-51ad-11cf-878a-94f801c10000");
pub const CLSID_KSPROPSETID_Pin = &CLSID_KSPROPSETID_Pin_Value;

pub const KSPROPERTY_PIN = enum(i32) {
    CINSTANCES = 0,
    CTYPES = 1,
    DATAFLOW = 2,
    DATARANGES = 3,
    DATAINTERSECTION = 4,
    INTERFACES = 5,
    MEDIUMS = 6,
    COMMUNICATION = 7,
    GLOBALCINSTANCES = 8,
    NECESSARYINSTANCES = 9,
    PHYSICALCONNECTION = 10,
    CATEGORY = 11,
    NAME = 12,
    CONSTRAINEDDATARANGES = 13,
    PROPOSEDATAFORMAT = 14,
    PROPOSEDATAFORMAT2 = 15,
    MODEDATAFORMATS = 16,
};
pub const KSPROPERTY_PIN_CINSTANCES = KSPROPERTY_PIN.CINSTANCES;
pub const KSPROPERTY_PIN_CTYPES = KSPROPERTY_PIN.CTYPES;
pub const KSPROPERTY_PIN_DATAFLOW = KSPROPERTY_PIN.DATAFLOW;
pub const KSPROPERTY_PIN_DATARANGES = KSPROPERTY_PIN.DATARANGES;
pub const KSPROPERTY_PIN_DATAINTERSECTION = KSPROPERTY_PIN.DATAINTERSECTION;
pub const KSPROPERTY_PIN_INTERFACES = KSPROPERTY_PIN.INTERFACES;
pub const KSPROPERTY_PIN_MEDIUMS = KSPROPERTY_PIN.MEDIUMS;
pub const KSPROPERTY_PIN_COMMUNICATION = KSPROPERTY_PIN.COMMUNICATION;
pub const KSPROPERTY_PIN_GLOBALCINSTANCES = KSPROPERTY_PIN.GLOBALCINSTANCES;
pub const KSPROPERTY_PIN_NECESSARYINSTANCES = KSPROPERTY_PIN.NECESSARYINSTANCES;
pub const KSPROPERTY_PIN_PHYSICALCONNECTION = KSPROPERTY_PIN.PHYSICALCONNECTION;
pub const KSPROPERTY_PIN_CATEGORY = KSPROPERTY_PIN.CATEGORY;
pub const KSPROPERTY_PIN_NAME = KSPROPERTY_PIN.NAME;
pub const KSPROPERTY_PIN_CONSTRAINEDDATARANGES = KSPROPERTY_PIN.CONSTRAINEDDATARANGES;
pub const KSPROPERTY_PIN_PROPOSEDATAFORMAT = KSPROPERTY_PIN.PROPOSEDATAFORMAT;
pub const KSPROPERTY_PIN_PROPOSEDATAFORMAT2 = KSPROPERTY_PIN.PROPOSEDATAFORMAT2;
pub const KSPROPERTY_PIN_MODEDATAFORMATS = KSPROPERTY_PIN.MODEDATAFORMATS;

pub const KSP_PIN = extern struct {
    Property: KSIDENTIFIER,
    PinId: u32,
    Anonymous: extern union {
        Reserved: u32,
        Flags: u32,
    },
};

pub const KSE_PIN = extern struct {
    Event: KSIDENTIFIER,
    PinId: u32,
    Reserved: u32,
};

pub const KSPIN_CINSTANCES = extern struct {
    PossibleCount: u32,
    CurrentCount: u32,
};

pub const KSPIN_DATAFLOW = enum(i32) {
    IN = 1,
    OUT = 2,
};
pub const KSPIN_DATAFLOW_IN = KSPIN_DATAFLOW.IN;
pub const KSPIN_DATAFLOW_OUT = KSPIN_DATAFLOW.OUT;

pub const KSDATAFORMAT = extern union {
    Anonymous: extern struct {
        FormatSize: u32,
        Flags: u32,
        SampleSize: u32,
        Reserved: u32,
        MajorFormat: Guid,
        SubFormat: Guid,
        Specifier: Guid,
    },
    Alignment: i64,
};

pub const KSATTRIBUTE = extern struct {
    Size: u32,
    Flags: u32,
    Attribute: Guid,
};

pub const KSPIN_COMMUNICATION = enum(i32) {
    NONE = 0,
    SINK = 1,
    SOURCE = 2,
    BOTH = 3,
    BRIDGE = 4,
};
pub const KSPIN_COMMUNICATION_NONE = KSPIN_COMMUNICATION.NONE;
pub const KSPIN_COMMUNICATION_SINK = KSPIN_COMMUNICATION.SINK;
pub const KSPIN_COMMUNICATION_SOURCE = KSPIN_COMMUNICATION.SOURCE;
pub const KSPIN_COMMUNICATION_BOTH = KSPIN_COMMUNICATION.BOTH;
pub const KSPIN_COMMUNICATION_BRIDGE = KSPIN_COMMUNICATION.BRIDGE;

pub const KSPIN_CONNECT = extern struct {
    Interface: KSIDENTIFIER,
    Medium: KSIDENTIFIER,
    PinId: u32,
    PinToHandle: ?HANDLE,
    Priority: KSPRIORITY,
};

pub const KSPIN_PHYSICALCONNECTION = extern struct {
    Size: u32,
    Pin: u32,
    SymbolicLinkName: [1]u16,
};

const CLSID_KSEVENTSETID_PinCapsChange_Value = Guid.initString("dd4f192e-3b78-49ad-a534-2c315b822000");
pub const CLSID_KSEVENTSETID_PinCapsChange = &CLSID_KSEVENTSETID_PinCapsChange_Value;

pub const KSEVENT_PINCAPS_CHANGENOTIFICATIONS = enum(i32) {
    FORMATCHANGE = 0,
    JACKINFOCHANGE = 1,
};
pub const KSEVENT_PINCAPS_FORMATCHANGE = KSEVENT_PINCAPS_CHANGENOTIFICATIONS.FORMATCHANGE;
pub const KSEVENT_PINCAPS_JACKINFOCHANGE = KSEVENT_PINCAPS_CHANGENOTIFICATIONS.JACKINFOCHANGE;

const CLSID_KSEVENTSETID_VolumeLimit_Value = Guid.initString("da168465-3a7c-4858-9d4a-3e8e24701aef");
pub const CLSID_KSEVENTSETID_VolumeLimit = &CLSID_KSEVENTSETID_VolumeLimit_Value;

pub const KSEVENT_VOLUMELIMIT = enum(i32) {
    D = 0,
};
pub const KSEVENT_VOLUMELIMIT_CHANGED = KSEVENT_VOLUMELIMIT.D;

const CLSID_KSNAME_Filter_Value = Guid.initString("9b365890-165f-11d0-a195-0020afd156e4");
pub const CLSID_KSNAME_Filter = &CLSID_KSNAME_Filter_Value;

const CLSID_KSNAME_Pin_Value = Guid.initString("146f1a80-4791-11d0-a5d6-28db04c10000");
pub const CLSID_KSNAME_Pin = &CLSID_KSNAME_Pin_Value;

const CLSID_KSNAME_Clock_Value = Guid.initString("53172480-4791-11d0-a5d6-28db04c10000");
pub const CLSID_KSNAME_Clock = &CLSID_KSNAME_Clock_Value;

const CLSID_KSNAME_Allocator_Value = Guid.initString("642f5d00-4791-11d0-a5d6-28db04c10000");
pub const CLSID_KSNAME_Allocator = &CLSID_KSNAME_Allocator_Value;

const CLSID_KSNAME_TopologyNode_Value = Guid.initString("0621061a-ee75-11d0-b915-00a0c9223196");
pub const CLSID_KSNAME_TopologyNode = &CLSID_KSNAME_TopologyNode_Value;

const CLSID_KSDATAFORMAT_TYPE_STREAM_Value = Guid.initString("e436eb83-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_TYPE_STREAM = &CLSID_KSDATAFORMAT_TYPE_STREAM_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_NONE_Value = Guid.initString("e436eb8e-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_NONE = &CLSID_KSDATAFORMAT_SUBTYPE_NONE_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_FILENAME_Value = Guid.initString("aa797b40-e974-11cf-a5d6-28db04c10000");
pub const CLSID_KSDATAFORMAT_SPECIFIER_FILENAME = &CLSID_KSDATAFORMAT_SPECIFIER_FILENAME_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_FILEHANDLE_Value = Guid.initString("65e8773c-8f56-11d0-a3b9-00a0c9223196");
pub const CLSID_KSDATAFORMAT_SPECIFIER_FILEHANDLE = &CLSID_KSDATAFORMAT_SPECIFIER_FILEHANDLE_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_NONE_Value = Guid.initString("0f6417d6-c318-11d0-a43f-00a0c9223196");
pub const CLSID_KSDATAFORMAT_SPECIFIER_NONE = &CLSID_KSDATAFORMAT_SPECIFIER_NONE_Value;

const CLSID_KSPROPSETID_Quality_Value = Guid.initString("d16ad380-ac1a-11cf-a5d6-28db04c10000");
pub const CLSID_KSPROPSETID_Quality = &CLSID_KSPROPSETID_Quality_Value;

pub const KSPROPERTY_QUALITY = enum(i32) {
    REPORT = 0,
    ERROR = 1,
};
pub const KSPROPERTY_QUALITY_REPORT = KSPROPERTY_QUALITY.REPORT;
pub const KSPROPERTY_QUALITY_ERROR = KSPROPERTY_QUALITY.ERROR;

const CLSID_KSPROPSETID_Connection_Value = Guid.initString("1d58c920-ac9b-11cf-a5d6-28db04c10000");
pub const CLSID_KSPROPSETID_Connection = &CLSID_KSPROPSETID_Connection_Value;

pub const KSPROPERTY_CONNECTION = enum(i32) {
    STATE = 0,
    PRIORITY = 1,
    DATAFORMAT = 2,
    ALLOCATORFRAMING = 3,
    PROPOSEDATAFORMAT = 4,
    ACQUIREORDERING = 5,
    ALLOCATORFRAMING_EX = 6,
    STARTAT = 7,
};
pub const KSPROPERTY_CONNECTION_STATE = KSPROPERTY_CONNECTION.STATE;
pub const KSPROPERTY_CONNECTION_PRIORITY = KSPROPERTY_CONNECTION.PRIORITY;
pub const KSPROPERTY_CONNECTION_DATAFORMAT = KSPROPERTY_CONNECTION.DATAFORMAT;
pub const KSPROPERTY_CONNECTION_ALLOCATORFRAMING = KSPROPERTY_CONNECTION.ALLOCATORFRAMING;
pub const KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT = KSPROPERTY_CONNECTION.PROPOSEDATAFORMAT;
pub const KSPROPERTY_CONNECTION_ACQUIREORDERING = KSPROPERTY_CONNECTION.ACQUIREORDERING;
pub const KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX = KSPROPERTY_CONNECTION.ALLOCATORFRAMING_EX;
pub const KSPROPERTY_CONNECTION_STARTAT = KSPROPERTY_CONNECTION.STARTAT;

const CLSID_KSPROPSETID_MemoryTransport_Value = Guid.initString("0a3d1c5d-5243-4819-9ed0-aee8044cee2b");
pub const CLSID_KSPROPSETID_MemoryTransport = &CLSID_KSPROPSETID_MemoryTransport_Value;

pub const KSALLOCATOR_FRAMING = extern struct {
    Anonymous1: extern union {
        OptionsFlags: u32,
        RequirementsFlags: u32,
    },
    PoolType: u32,
    Frames: u32,
    FrameSize: u32,
    Anonymous2: extern union {
        FileAlignment: u32,
        FramePitch: i32,
    },
    Reserved: u32,
};

pub const KS_FRAMING_RANGE = extern struct {
    MinFrameSize: u32,
    MaxFrameSize: u32,
    Stepping: u32,
};

pub const KS_FRAMING_RANGE_WEIGHTED = extern struct {
    Range: KS_FRAMING_RANGE,
    InPlaceWeight: u32,
    NotInPlaceWeight: u32,
};

pub const KS_COMPRESSION = extern struct {
    RatioNumerator: u32,
    RatioDenominator: u32,
    RatioConstantMargin: u32,
};

pub const KS_FRAMING_ITEM = extern struct {
    MemoryType: Guid,
    BusType: Guid,
    MemoryFlags: u32,
    BusFlags: u32,
    Flags: u32,
    Frames: u32,
    Anonymous: extern union {
        FileAlignment: u32,
        FramePitch: i32,
    },
    MemoryTypeWeight: u32,
    PhysicalRange: KS_FRAMING_RANGE,
    FramingRange: KS_FRAMING_RANGE_WEIGHTED,
};

pub const KSALLOCATOR_FRAMING_EX = extern struct {
    CountItems: u32,
    PinFlags: u32,
    OutputCompression: KS_COMPRESSION,
    PinWeight: u32,
    FramingItem: [1]KS_FRAMING_ITEM,
};

const CLSID_KSMEMORY_TYPE_SYSTEM_Value = Guid.initString("091bb638-603f-11d1-b067-00a0c9062802");
pub const CLSID_KSMEMORY_TYPE_SYSTEM = &CLSID_KSMEMORY_TYPE_SYSTEM_Value;

const CLSID_KSMEMORY_TYPE_USER_Value = Guid.initString("8cb0fc28-7893-11d1-b069-00a0c9062802");
pub const CLSID_KSMEMORY_TYPE_USER = &CLSID_KSMEMORY_TYPE_USER_Value;

const CLSID_KSMEMORY_TYPE_KERNEL_PAGED_Value = Guid.initString("d833f8f8-7894-11d1-b069-00a0c9062802");
pub const CLSID_KSMEMORY_TYPE_KERNEL_PAGED = &CLSID_KSMEMORY_TYPE_KERNEL_PAGED_Value;

const CLSID_KSMEMORY_TYPE_KERNEL_NONPAGED_Value = Guid.initString("4a6d5fc4-7895-11d1-b069-00a0c9062802");
pub const CLSID_KSMEMORY_TYPE_KERNEL_NONPAGED = &CLSID_KSMEMORY_TYPE_KERNEL_NONPAGED_Value;

const CLSID_KSMEMORY_TYPE_DEVICE_UNKNOWN_Value = Guid.initString("091bb639-603f-11d1-b067-00a0c9062802");
pub const CLSID_KSMEMORY_TYPE_DEVICE_UNKNOWN = &CLSID_KSMEMORY_TYPE_DEVICE_UNKNOWN_Value;

const CLSID_KSEVENTSETID_StreamAllocator_Value = Guid.initString("75d95571-073c-11d0-a161-0020afd156e4");
pub const CLSID_KSEVENTSETID_StreamAllocator = &CLSID_KSEVENTSETID_StreamAllocator_Value;

pub const KSEVENT_STREAMALLOCATOR = enum(i32) {
    INTERNAL_FREEFRAME = 0,
    FREEFRAME = 1,
};
pub const KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME = KSEVENT_STREAMALLOCATOR.INTERNAL_FREEFRAME;
pub const KSEVENT_STREAMALLOCATOR_FREEFRAME = KSEVENT_STREAMALLOCATOR.FREEFRAME;

const CLSID_KSMETHODSETID_StreamAllocator_Value = Guid.initString("cf6e4341-ec87-11cf-a130-0020afd156e4");
pub const CLSID_KSMETHODSETID_StreamAllocator = &CLSID_KSMETHODSETID_StreamAllocator_Value;

pub const KSMETHOD_STREAMALLOCATOR = enum(i32) {
    ALLOC = 0,
    FREE = 1,
};
pub const KSMETHOD_STREAMALLOCATOR_ALLOC = KSMETHOD_STREAMALLOCATOR.ALLOC;
pub const KSMETHOD_STREAMALLOCATOR_FREE = KSMETHOD_STREAMALLOCATOR.FREE;

const CLSID_KSPROPSETID_StreamAllocator_Value = Guid.initString("cf6e4342-ec87-11cf-a130-0020afd156e4");
pub const CLSID_KSPROPSETID_StreamAllocator = &CLSID_KSPROPSETID_StreamAllocator_Value;

pub const KSSTREAMALLOCATOR_STATUS = extern struct {
    Framing: KSALLOCATOR_FRAMING,
    AllocatedFrames: u32,
    Reserved: u32,
};

pub const KSSTREAMALLOCATOR_STATUS_EX = extern struct {
    Framing: KSALLOCATOR_FRAMING_EX,
    AllocatedFrames: u32,
    Reserved: u32,
};

pub const KSTIME = extern struct {
    Time: i64,
    Numerator: u32,
    Denominator: u32,
};

pub const KSSTREAM_METADATA_INFO = extern struct {
    BufferSize: u32,
    UsedSize: u32,
    Data: ?*anyopaque,
    SystemVa: ?*anyopaque,
    Flags: u32,
    Reserved: u32,
};

pub const KSSTREAM_UVC_METADATATYPE_TIMESTAMP = extern struct {
    PresentationTimeStamp: u32,
    SourceClockReference: u32,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u16,
        },
        SCRToken: u16,
    },
    Reserved0: u16,
    Reserved1: u32,
};

pub const KSSTREAM_UVC_METADATA = extern struct {
    StartOfFrameTimestamp: KSSTREAM_UVC_METADATATYPE_TIMESTAMP,
    EndOfFrameTimestamp: KSSTREAM_UVC_METADATATYPE_TIMESTAMP,
};

pub const KSPIN_MDL_CACHING_EVENT = enum(i32) {
    CLEANUP = 0,
    CLEANALL_WAIT = 1,
    CLEANALL_NOWAIT = 2,
    ADDSAMPLE = 3,
};
pub const KSPIN_MDL_CACHING_NOTIFY_CLEANUP = KSPIN_MDL_CACHING_EVENT.CLEANUP;
pub const KSPIN_MDL_CACHING_NOTIFY_CLEANALL_WAIT = KSPIN_MDL_CACHING_EVENT.CLEANALL_WAIT;
pub const KSPIN_MDL_CACHING_NOTIFY_CLEANALL_NOWAIT = KSPIN_MDL_CACHING_EVENT.CLEANALL_NOWAIT;
pub const KSPIN_MDL_CACHING_NOTIFY_ADDSAMPLE = KSPIN_MDL_CACHING_EVENT.ADDSAMPLE;

pub const KSPIN_MDL_CACHING_NOTIFICATION = extern struct {
    Event: KSPIN_MDL_CACHING_EVENT,
    Buffer: ?*anyopaque,
};

pub const KSPIN_MDL_CACHING_NOTIFICATION32 = extern struct {
    Event: KSPIN_MDL_CACHING_EVENT,
    Buffer: u32,
};

const CLSID_KSPROPSETID_StreamInterface_Value = Guid.initString("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a");
pub const CLSID_KSPROPSETID_StreamInterface = &CLSID_KSPROPSETID_StreamInterface_Value;

pub const KSPROPERTY_STREAMINTERFACE = enum(i32) {
    E = 0,
};
pub const KSPROPERTY_STREAMINTERFACE_HEADERSIZE = KSPROPERTY_STREAMINTERFACE.E;

const CLSID_KSPROPSETID_Stream_Value = Guid.initString("65aaba60-98ae-11cf-a10d-0020afd156e4");
pub const CLSID_KSPROPSETID_Stream = &CLSID_KSPROPSETID_Stream_Value;

pub const KSPROPERTY_STREAM = enum(i32) {
    ALLOCATOR = 0,
    QUALITY = 1,
    DEGRADATION = 2,
    MASTERCLOCK = 3,
    TIMEFORMAT = 4,
    PRESENTATIONTIME = 5,
    PRESENTATIONEXTENT = 6,
    FRAMETIME = 7,
    RATECAPABILITY = 8,
    RATE = 9,
    PIPE_ID = 10,
};
pub const KSPROPERTY_STREAM_ALLOCATOR = KSPROPERTY_STREAM.ALLOCATOR;
pub const KSPROPERTY_STREAM_QUALITY = KSPROPERTY_STREAM.QUALITY;
pub const KSPROPERTY_STREAM_DEGRADATION = KSPROPERTY_STREAM.DEGRADATION;
pub const KSPROPERTY_STREAM_MASTERCLOCK = KSPROPERTY_STREAM.MASTERCLOCK;
pub const KSPROPERTY_STREAM_TIMEFORMAT = KSPROPERTY_STREAM.TIMEFORMAT;
pub const KSPROPERTY_STREAM_PRESENTATIONTIME = KSPROPERTY_STREAM.PRESENTATIONTIME;
pub const KSPROPERTY_STREAM_PRESENTATIONEXTENT = KSPROPERTY_STREAM.PRESENTATIONEXTENT;
pub const KSPROPERTY_STREAM_FRAMETIME = KSPROPERTY_STREAM.FRAMETIME;
pub const KSPROPERTY_STREAM_RATECAPABILITY = KSPROPERTY_STREAM.RATECAPABILITY;
pub const KSPROPERTY_STREAM_RATE = KSPROPERTY_STREAM.RATE;
pub const KSPROPERTY_STREAM_PIPE_ID = KSPROPERTY_STREAM.PIPE_ID;

pub const KSPPROPERTY_ALLOCATOR_MDLCACHING = enum(i32) {
    S = 1,
};
pub const KSPROPERTY_ALLOCATOR_CLEANUP_CACHEDMDLPAGES = KSPPROPERTY_ALLOCATOR_MDLCACHING.S;

const CLSID_KSPROPSETID_PinMDLCacheClearProp_Value = Guid.initString("bd718a7b-97fc-40c7-88ce-d3ff06f55b16");
pub const CLSID_KSPROPSETID_PinMDLCacheClearProp = &CLSID_KSPROPSETID_PinMDLCacheClearProp_Value;

pub const KSQUALITY_MANAGER = extern struct {
    QualityManager: ?HANDLE,
    Context: ?*anyopaque,
};

pub const KSFRAMETIME = extern struct {
    Duration: i64,
    FrameFlags: u32,
    Reserved: u32,
};

pub const KSRATE = extern struct {
    PresentationStart: i64,
    Duration: i64,
    Interface: KSIDENTIFIER,
    Rate: i32,
    Flags: u32,
};

pub const KSRATE_CAPABILITY = extern struct {
    Property: KSIDENTIFIER,
    Rate: KSRATE,
};

const CLSID_KSPROPSETID_Clock_Value = Guid.initString("df12a4c0-ac17-11cf-a5d6-28db04c10000");
pub const CLSID_KSPROPSETID_Clock = &CLSID_KSPROPSETID_Clock_Value;

pub const KSCLOCK_CREATE = extern struct {
    CreateFlags: u32,
};

pub const KSCORRELATED_TIME = extern struct {
    Time: i64,
    SystemTime: i64,
};

pub const KSRESOLUTION = extern struct {
    Granularity: i64,
    Error: i64,
};

pub const KSPROPERTY_CLOCK = enum(i32) {
    TIME = 0,
    PHYSICALTIME = 1,
    CORRELATEDTIME = 2,
    CORRELATEDPHYSICALTIME = 3,
    RESOLUTION = 4,
    STATE = 5,
};
pub const KSPROPERTY_CLOCK_TIME = KSPROPERTY_CLOCK.TIME;
pub const KSPROPERTY_CLOCK_PHYSICALTIME = KSPROPERTY_CLOCK.PHYSICALTIME;
pub const KSPROPERTY_CLOCK_CORRELATEDTIME = KSPROPERTY_CLOCK.CORRELATEDTIME;
pub const KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME = KSPROPERTY_CLOCK.CORRELATEDPHYSICALTIME;
pub const KSPROPERTY_CLOCK_RESOLUTION = KSPROPERTY_CLOCK.RESOLUTION;
pub const KSPROPERTY_CLOCK_STATE = KSPROPERTY_CLOCK.STATE;

const CLSID_KSEVENTSETID_Clock_Value = Guid.initString("364d8e20-62c7-11cf-a5d6-28db04c10000");
pub const CLSID_KSEVENTSETID_Clock = &CLSID_KSEVENTSETID_Clock_Value;

pub const KSEVENT_CLOCK_POSITION = enum(i32) {
    INTERVAL_MARK = 0,
    POSITION_MARK = 1,
};
pub const KSEVENT_CLOCK_INTERVAL_MARK = KSEVENT_CLOCK_POSITION.INTERVAL_MARK;
pub const KSEVENT_CLOCK_POSITION_MARK = KSEVENT_CLOCK_POSITION.POSITION_MARK;

const CLSID_KSEVENTSETID_Connection_Value = Guid.initString("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000");
pub const CLSID_KSEVENTSETID_Connection = &CLSID_KSEVENTSETID_Connection_Value;

pub const KSEVENT_CONNECTION = enum(i32) {
    POSITIONUPDATE = 0,
    DATADISCONTINUITY = 1,
    TIMEDISCONTINUITY = 2,
    PRIORITY = 3,
    ENDOFSTREAM = 4,
};
pub const KSEVENT_CONNECTION_POSITIONUPDATE = KSEVENT_CONNECTION.POSITIONUPDATE;
pub const KSEVENT_CONNECTION_DATADISCONTINUITY = KSEVENT_CONNECTION.DATADISCONTINUITY;
pub const KSEVENT_CONNECTION_TIMEDISCONTINUITY = KSEVENT_CONNECTION.TIMEDISCONTINUITY;
pub const KSEVENT_CONNECTION_PRIORITY = KSEVENT_CONNECTION.PRIORITY;
pub const KSEVENT_CONNECTION_ENDOFSTREAM = KSEVENT_CONNECTION.ENDOFSTREAM;

pub const KSQUALITY = extern struct {
    Context: ?*anyopaque,
    Proportion: u32,
    DeltaTime: i64,
};

pub const KSERROR = extern struct {
    Context: ?*anyopaque,
    Status: u32,
};

pub const KSDEVICE_THERMAL_STATE = enum(i32) {
    LOW = 0,
    HIGH = 1,
};
pub const KSDEVICE_THERMAL_STATE_LOW = KSDEVICE_THERMAL_STATE.LOW;
pub const KSDEVICE_THERMAL_STATE_HIGH = KSDEVICE_THERMAL_STATE.HIGH;

const CLSID_KSEVENTSETID_Device_Value = Guid.initString("288296ec-9f94-41b4-a153-aa31aeecb33f");
pub const CLSID_KSEVENTSETID_Device = &CLSID_KSEVENTSETID_Device_Value;

pub const KSEVENT_DEVICE = enum(i32) {
    LOST = 0,
    PREEMPTED = 1,
    THERMAL_HIGH = 2,
    THERMAL_LOW = 3,
};
pub const KSEVENT_DEVICE_LOST = KSEVENT_DEVICE.LOST;
pub const KSEVENT_DEVICE_PREEMPTED = KSEVENT_DEVICE.PREEMPTED;
pub const KSEVENT_DEVICE_THERMAL_HIGH = KSEVENT_DEVICE.THERMAL_HIGH;
pub const KSEVENT_DEVICE_THERMAL_LOW = KSEVENT_DEVICE.THERMAL_LOW;

const CLSID_KSDEGRADESETID_Standard_Value = Guid.initString("9f564180-704c-11d0-a5d6-28db04c10000");
pub const CLSID_KSDEGRADESETID_Standard = &CLSID_KSDEGRADESETID_Standard_Value;

pub const KSDEGRADE_STANDARD = enum(i32) {
    SAMPLE = 0,
    QUALITY = 1,
    COMPUTATION = 2,
    SKIP = 3,
};
pub const KSDEGRADE_STANDARD_SAMPLE = KSDEGRADE_STANDARD.SAMPLE;
pub const KSDEGRADE_STANDARD_QUALITY = KSDEGRADE_STANDARD.QUALITY;
pub const KSDEGRADE_STANDARD_COMPUTATION = KSDEGRADE_STANDARD.COMPUTATION;
pub const KSDEGRADE_STANDARD_SKIP = KSDEGRADE_STANDARD.SKIP;

pub const KSPROPERTY_SERIALHDR = extern struct {
    PropertySet: Guid align(1),
    Count: u32 align(1),
};

pub const KSPROPERTY_SERIAL = extern struct {
    PropTypeSet: KSIDENTIFIER,
    Id: u32,
    PropertyLength: u32,
};

pub const MF_MDL_SHARED_PAYLOAD_KEY = extern union {
    combined: extern struct {
        pHandle: u32,
        fHandle: u32,
        uPayload: u64,
    },
    GMDLHandle: Guid,
};

pub const KSMULTIPLE_DATA_PROP = extern struct {
    Property: KSIDENTIFIER,
    MultipleItem: KSMULTIPLE_ITEM,
};

const CLSID_KSMEDIUMSETID_MidiBus_Value = Guid.initString("05908040-3246-11d0-a5d6-28db04c10000");
pub const CLSID_KSMEDIUMSETID_MidiBus = &CLSID_KSMEDIUMSETID_MidiBus_Value;

const CLSID_KSMEDIUMSETID_VPBus_Value = Guid.initString("a18c15ec-ce43-11d0-abe7-00a0c9223196");
pub const CLSID_KSMEDIUMSETID_VPBus = &CLSID_KSMEDIUMSETID_VPBus_Value;

const CLSID_KSINTERFACESETID_Media_Value = Guid.initString("3a13eb40-30a7-11d0-a5d6-28db04c10000");
pub const CLSID_KSINTERFACESETID_Media = &CLSID_KSINTERFACESETID_Media_Value;

pub const KSINTERFACE_MEDIA = enum(i32) {
    MUSIC = 0,
    WAVE_BUFFERED = 1,
    WAVE_QUEUED = 2,
};
pub const KSINTERFACE_MEDIA_MUSIC = KSINTERFACE_MEDIA.MUSIC;
pub const KSINTERFACE_MEDIA_WAVE_BUFFERED = KSINTERFACE_MEDIA.WAVE_BUFFERED;
pub const KSINTERFACE_MEDIA_WAVE_QUEUED = KSINTERFACE_MEDIA.WAVE_QUEUED;

const CLSID_KSCOMPONENTID_USBAUDIO_Value = Guid.initString("8f1275f0-26e9-4264-ba4d-39fff01d94aa");
pub const CLSID_KSCOMPONENTID_USBAUDIO = &CLSID_KSCOMPONENTID_USBAUDIO_Value;

const CLSID_KSNODETYPE_INPUT_UNDEFINED_Value = Guid.initString("dff21be0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_INPUT_UNDEFINED = &CLSID_KSNODETYPE_INPUT_UNDEFINED_Value;

const CLSID_KSNODETYPE_MICROPHONE_Value = Guid.initString("dff21be1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_MICROPHONE = &CLSID_KSNODETYPE_MICROPHONE_Value;

const CLSID_KSNODETYPE_DESKTOP_MICROPHONE_Value = Guid.initString("dff21be2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DESKTOP_MICROPHONE = &CLSID_KSNODETYPE_DESKTOP_MICROPHONE_Value;

const CLSID_KSNODETYPE_PERSONAL_MICROPHONE_Value = Guid.initString("dff21be3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_PERSONAL_MICROPHONE = &CLSID_KSNODETYPE_PERSONAL_MICROPHONE_Value;

const CLSID_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE_Value = Guid.initString("dff21be4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE = &CLSID_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE_Value;

const CLSID_KSNODETYPE_MICROPHONE_ARRAY_Value = Guid.initString("dff21be5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_MICROPHONE_ARRAY = &CLSID_KSNODETYPE_MICROPHONE_ARRAY_Value;

const CLSID_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY_Value = Guid.initString("dff21be6-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY = &CLSID_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY_Value;

const CLSID_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR_Value = Guid.initString("830a44f2-a32d-476b-be97-42845673b35a");
pub const CLSID_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR = &CLSID_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR_Value;

const CLSID_KSNODETYPE_OUTPUT_UNDEFINED_Value = Guid.initString("dff21ce0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_OUTPUT_UNDEFINED = &CLSID_KSNODETYPE_OUTPUT_UNDEFINED_Value;

const CLSID_KSNODETYPE_SPEAKER_Value = Guid.initString("dff21ce1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_SPEAKER = &CLSID_KSNODETYPE_SPEAKER_Value;

const CLSID_KSNODETYPE_HEADPHONES_Value = Guid.initString("dff21ce2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_HEADPHONES = &CLSID_KSNODETYPE_HEADPHONES_Value;

const CLSID_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO_Value = Guid.initString("dff21ce3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO = &CLSID_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO_Value;

const CLSID_KSNODETYPE_DESKTOP_SPEAKER_Value = Guid.initString("dff21ce4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DESKTOP_SPEAKER = &CLSID_KSNODETYPE_DESKTOP_SPEAKER_Value;

const CLSID_KSNODETYPE_ROOM_SPEAKER_Value = Guid.initString("dff21ce5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_ROOM_SPEAKER = &CLSID_KSNODETYPE_ROOM_SPEAKER_Value;

const CLSID_KSNODETYPE_COMMUNICATION_SPEAKER_Value = Guid.initString("dff21ce6-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_COMMUNICATION_SPEAKER = &CLSID_KSNODETYPE_COMMUNICATION_SPEAKER_Value;

const CLSID_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER_Value = Guid.initString("dff21ce7-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER = &CLSID_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER_Value;

const CLSID_KSNODETYPE_BIDIRECTIONAL_UNDEFINED_Value = Guid.initString("dff21de0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_BIDIRECTIONAL_UNDEFINED = &CLSID_KSNODETYPE_BIDIRECTIONAL_UNDEFINED_Value;

const CLSID_KSNODETYPE_HANDSET_Value = Guid.initString("dff21de1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_HANDSET = &CLSID_KSNODETYPE_HANDSET_Value;

const CLSID_KSNODETYPE_HEADSET_Value = Guid.initString("dff21de2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_HEADSET = &CLSID_KSNODETYPE_HEADSET_Value;

const CLSID_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION_Value = Guid.initString("dff21de3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION = &CLSID_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION_Value;

const CLSID_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE_Value = Guid.initString("dff21de4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE = &CLSID_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE_Value;

const CLSID_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE_Value = Guid.initString("dff21de5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE = &CLSID_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE_Value;

const CLSID_KSNODETYPE_TELEPHONY_UNDEFINED_Value = Guid.initString("dff21ee0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_TELEPHONY_UNDEFINED = &CLSID_KSNODETYPE_TELEPHONY_UNDEFINED_Value;

const CLSID_KSNODETYPE_PHONE_LINE_Value = Guid.initString("dff21ee1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_PHONE_LINE = &CLSID_KSNODETYPE_PHONE_LINE_Value;

const CLSID_KSNODETYPE_TELEPHONE_Value = Guid.initString("dff21ee2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_TELEPHONE = &CLSID_KSNODETYPE_TELEPHONE_Value;

const CLSID_KSNODETYPE_DOWN_LINE_PHONE_Value = Guid.initString("dff21ee3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DOWN_LINE_PHONE = &CLSID_KSNODETYPE_DOWN_LINE_PHONE_Value;

const CLSID_KSNODETYPE_EXTERNAL_UNDEFINED_Value = Guid.initString("dff21fe0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_EXTERNAL_UNDEFINED = &CLSID_KSNODETYPE_EXTERNAL_UNDEFINED_Value;

const CLSID_KSNODETYPE_ANALOG_CONNECTOR_Value = Guid.initString("dff21fe1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_ANALOG_CONNECTOR = &CLSID_KSNODETYPE_ANALOG_CONNECTOR_Value;

const CLSID_KSNODETYPE_DIGITAL_AUDIO_INTERFACE_Value = Guid.initString("dff21fe2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DIGITAL_AUDIO_INTERFACE = &CLSID_KSNODETYPE_DIGITAL_AUDIO_INTERFACE_Value;

const CLSID_KSNODETYPE_LINE_CONNECTOR_Value = Guid.initString("dff21fe3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_LINE_CONNECTOR = &CLSID_KSNODETYPE_LINE_CONNECTOR_Value;

const CLSID_KSNODETYPE_LEGACY_AUDIO_CONNECTOR_Value = Guid.initString("dff21fe4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_LEGACY_AUDIO_CONNECTOR = &CLSID_KSNODETYPE_LEGACY_AUDIO_CONNECTOR_Value;

const CLSID_KSNODETYPE_SPDIF_INTERFACE_Value = Guid.initString("dff21fe5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_SPDIF_INTERFACE = &CLSID_KSNODETYPE_SPDIF_INTERFACE_Value;

const CLSID_KSNODETYPE_1394_DA_STREAM_Value = Guid.initString("dff21fe6-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_1394_DA_STREAM = &CLSID_KSNODETYPE_1394_DA_STREAM_Value;

const CLSID_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK_Value = Guid.initString("dff21fe7-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK = &CLSID_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK_Value;

const CLSID_KSNODETYPE_EMBEDDED_UNDEFINED_Value = Guid.initString("dff220e0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_EMBEDDED_UNDEFINED = &CLSID_KSNODETYPE_EMBEDDED_UNDEFINED_Value;

const CLSID_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE_Value = Guid.initString("dff220e1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE = &CLSID_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE_Value;

const CLSID_KSNODETYPE_EQUALIZATION_NOISE_Value = Guid.initString("dff220e2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_EQUALIZATION_NOISE = &CLSID_KSNODETYPE_EQUALIZATION_NOISE_Value;

const CLSID_KSNODETYPE_CD_PLAYER_Value = Guid.initString("dff220e3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_CD_PLAYER = &CLSID_KSNODETYPE_CD_PLAYER_Value;

const CLSID_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE_Value = Guid.initString("dff220e4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE = &CLSID_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE_Value;

const CLSID_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE_Value = Guid.initString("dff220e5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE = &CLSID_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE_Value;

const CLSID_KSNODETYPE_MINIDISK_Value = Guid.initString("dff220e6-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_MINIDISK = &CLSID_KSNODETYPE_MINIDISK_Value;

const CLSID_KSNODETYPE_ANALOG_TAPE_Value = Guid.initString("dff220e7-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_ANALOG_TAPE = &CLSID_KSNODETYPE_ANALOG_TAPE_Value;

const CLSID_KSNODETYPE_PHONOGRAPH_Value = Guid.initString("dff220e8-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_PHONOGRAPH = &CLSID_KSNODETYPE_PHONOGRAPH_Value;

const CLSID_KSNODETYPE_VCR_AUDIO_Value = Guid.initString("dff220e9-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VCR_AUDIO = &CLSID_KSNODETYPE_VCR_AUDIO_Value;

const CLSID_KSNODETYPE_VIDEO_DISC_AUDIO_Value = Guid.initString("dff220ea-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_DISC_AUDIO = &CLSID_KSNODETYPE_VIDEO_DISC_AUDIO_Value;

const CLSID_KSNODETYPE_DVD_AUDIO_Value = Guid.initString("dff220eb-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DVD_AUDIO = &CLSID_KSNODETYPE_DVD_AUDIO_Value;

const CLSID_KSNODETYPE_TV_TUNER_AUDIO_Value = Guid.initString("dff220ec-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_TV_TUNER_AUDIO = &CLSID_KSNODETYPE_TV_TUNER_AUDIO_Value;

const CLSID_KSNODETYPE_SATELLITE_RECEIVER_AUDIO_Value = Guid.initString("dff220ed-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_SATELLITE_RECEIVER_AUDIO = &CLSID_KSNODETYPE_SATELLITE_RECEIVER_AUDIO_Value;

const CLSID_KSNODETYPE_CABLE_TUNER_AUDIO_Value = Guid.initString("dff220ee-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_CABLE_TUNER_AUDIO = &CLSID_KSNODETYPE_CABLE_TUNER_AUDIO_Value;

const CLSID_KSNODETYPE_DSS_AUDIO_Value = Guid.initString("dff220ef-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_DSS_AUDIO = &CLSID_KSNODETYPE_DSS_AUDIO_Value;

const CLSID_KSNODETYPE_RADIO_RECEIVER_Value = Guid.initString("dff220f0-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_RADIO_RECEIVER = &CLSID_KSNODETYPE_RADIO_RECEIVER_Value;

const CLSID_KSNODETYPE_RADIO_TRANSMITTER_Value = Guid.initString("dff220f1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_RADIO_TRANSMITTER = &CLSID_KSNODETYPE_RADIO_TRANSMITTER_Value;

const CLSID_KSNODETYPE_MULTITRACK_RECORDER_Value = Guid.initString("dff220f2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_MULTITRACK_RECORDER = &CLSID_KSNODETYPE_MULTITRACK_RECORDER_Value;

const CLSID_KSNODETYPE_SYNTHESIZER_Value = Guid.initString("dff220f3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_SYNTHESIZER = &CLSID_KSNODETYPE_SYNTHESIZER_Value;

const CLSID_KSNODETYPE_HDMI_INTERFACE_Value = Guid.initString("d1b9cc2a-f519-417f-91c9-55fa65481001");
pub const CLSID_KSNODETYPE_HDMI_INTERFACE = &CLSID_KSNODETYPE_HDMI_INTERFACE_Value;

const CLSID_KSNODETYPE_DISPLAYPORT_INTERFACE_Value = Guid.initString("e47e4031-3ea6-418d-8f9b-b73843ccba97");
pub const CLSID_KSNODETYPE_DISPLAYPORT_INTERFACE = &CLSID_KSNODETYPE_DISPLAYPORT_INTERFACE_Value;

const CLSID_KSNODETYPE_AUDIO_LOOPBACK_Value = Guid.initString("8f42c0b2-91ce-4bcf-9ccd-0e599037ab35");
pub const CLSID_KSNODETYPE_AUDIO_LOOPBACK = &CLSID_KSNODETYPE_AUDIO_LOOPBACK_Value;

const CLSID_KSNODETYPE_AUDIO_KEYWORDDETECTOR_Value = Guid.initString("3817e0b8-df58-4375-b669-c49634331f9d");
pub const CLSID_KSNODETYPE_AUDIO_KEYWORDDETECTOR = &CLSID_KSNODETYPE_AUDIO_KEYWORDDETECTOR_Value;

const CLSID_KSNODETYPE_AUDIO_MODULE_Value = Guid.initString("45aab42e-caeb-4052-8aa9-b38cb5109619");
pub const CLSID_KSNODETYPE_AUDIO_MODULE = &CLSID_KSNODETYPE_AUDIO_MODULE_Value;

const CLSID_KSNODETYPE_MIDI_JACK_Value = Guid.initString("265e0c3f-fa39-4df3-ab04-be01b91e299a");
pub const CLSID_KSNODETYPE_MIDI_JACK = &CLSID_KSNODETYPE_MIDI_JACK_Value;

const CLSID_KSNODETYPE_MIDI_ELEMENT_Value = Guid.initString("01c6fe66-6e48-4c65-ac9b-52db5d656c7e");
pub const CLSID_KSNODETYPE_MIDI_ELEMENT = &CLSID_KSNODETYPE_MIDI_ELEMENT_Value;

const CLSID_KSNODETYPE_AUDIO_ENGINE_Value = Guid.initString("35caf6e4-f3b3-4168-bb4b-55e77a461c7e");
pub const CLSID_KSNODETYPE_AUDIO_ENGINE = &CLSID_KSNODETYPE_AUDIO_ENGINE_Value;

const CLSID_KSNODETYPE_SPEAKERS_STATIC_JACK_Value = Guid.initString("28e04f87-4dbe-4f8d-8589-025d209dfb4a");
pub const CLSID_KSNODETYPE_SPEAKERS_STATIC_JACK = &CLSID_KSNODETYPE_SPEAKERS_STATIC_JACK_Value;

const CLSID_PINNAME_SPDIF_OUT_Value = Guid.initString("3a264481-e52c-4b82-8e7a-c8e2f91dc380");
pub const CLSID_PINNAME_SPDIF_OUT = &CLSID_PINNAME_SPDIF_OUT_Value;

const CLSID_PINNAME_SPDIF_IN_Value = Guid.initString("15dc9025-22ad-41b3-8875-f4ceb0299e20");
pub const CLSID_PINNAME_SPDIF_IN = &CLSID_PINNAME_SPDIF_IN_Value;

const CLSID_PINNAME_HDMI_OUT_Value = Guid.initString("387bfc03-e7ef-4901-86e0-35b7c32b00ef");
pub const CLSID_PINNAME_HDMI_OUT = &CLSID_PINNAME_HDMI_OUT_Value;

const CLSID_PINNAME_DISPLAYPORT_OUT_Value = Guid.initString("21fbb329-1a4a-48da-a076-2318a3c59b26");
pub const CLSID_PINNAME_DISPLAYPORT_OUT = &CLSID_PINNAME_DISPLAYPORT_OUT_Value;

const CLSID_KSNODETYPE_DRM_DESCRAMBLE_Value = Guid.initString("ffbb6e3f-ccfe-4d84-90d9-421418b03a8e");
pub const CLSID_KSNODETYPE_DRM_DESCRAMBLE = &CLSID_KSNODETYPE_DRM_DESCRAMBLE_Value;

const CLSID_KSNODETYPE_TELEPHONY_BIDI_Value = Guid.initString("686d7cc0-d903-4258-b443-3a3d3580741c");
pub const CLSID_KSNODETYPE_TELEPHONY_BIDI = &CLSID_KSNODETYPE_TELEPHONY_BIDI_Value;

const CLSID_KSNODETYPE_FM_RX_Value = Guid.initString("834a733c-f485-41c0-a62b-513025014e40");
pub const CLSID_KSNODETYPE_FM_RX = &CLSID_KSNODETYPE_FM_RX_Value;

const CLSID_KSCATEGORY_AUDIO_Value = Guid.initString("6994ad04-93ef-11d0-a3cc-00a0c9223196");
pub const CLSID_KSCATEGORY_AUDIO = &CLSID_KSCATEGORY_AUDIO_Value;

const CLSID_KSCATEGORY_VIDEO_Value = Guid.initString("6994ad05-93ef-11d0-a3cc-00a0c9223196");
pub const CLSID_KSCATEGORY_VIDEO = &CLSID_KSCATEGORY_VIDEO_Value;

const CLSID_KSCATEGORY_REALTIME_Value = Guid.initString("eb115ffc-10c8-4964-831d-6dcb02e6f23f");
pub const CLSID_KSCATEGORY_REALTIME = &CLSID_KSCATEGORY_REALTIME_Value;

const CLSID_KSCATEGORY_TEXT_Value = Guid.initString("6994ad06-93ef-11d0-a3cc-00a0c9223196");
pub const CLSID_KSCATEGORY_TEXT = &CLSID_KSCATEGORY_TEXT_Value;

const CLSID_KSCATEGORY_NETWORK_Value = Guid.initString("67c9cc3c-69c4-11d2-8759-00a0c9223196");
pub const CLSID_KSCATEGORY_NETWORK = &CLSID_KSCATEGORY_NETWORK_Value;

const CLSID_KSCATEGORY_TOPOLOGY_Value = Guid.initString("dda54a40-1e4c-11d1-a050-405705c10000");
pub const CLSID_KSCATEGORY_TOPOLOGY = &CLSID_KSCATEGORY_TOPOLOGY_Value;

const CLSID_KSCATEGORY_VIRTUAL_Value = Guid.initString("3503eac4-1f26-11d1-8ab0-00a0c9223196");
pub const CLSID_KSCATEGORY_VIRTUAL = &CLSID_KSCATEGORY_VIRTUAL_Value;

const CLSID_KSCATEGORY_ACOUSTIC_ECHO_CANCEL_Value = Guid.initString("bf963d80-c559-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSCATEGORY_ACOUSTIC_ECHO_CANCEL = &CLSID_KSCATEGORY_ACOUSTIC_ECHO_CANCEL_Value;

const CLSID_KSCATEGORY_WDMAUD_USE_PIN_NAME_Value = Guid.initString("47a4fa20-a251-11d1-a050-0000f8004788");
pub const CLSID_KSCATEGORY_WDMAUD_USE_PIN_NAME = &CLSID_KSCATEGORY_WDMAUD_USE_PIN_NAME_Value;

const CLSID_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER_Value = Guid.initString("74f3aea8-9768-11d1-8e07-00a0c95ec22e");
pub const CLSID_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER = &CLSID_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER_Value;

const CLSID_KSDATAFORMAT_TYPE_VIDEO_Value = Guid.initString("73646976-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_TYPE_VIDEO = &CLSID_KSDATAFORMAT_TYPE_VIDEO_Value;

const CLSID_KSDATAFORMAT_TYPE_AUDIO_Value = Guid.initString("73647561-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_TYPE_AUDIO = &CLSID_KSDATAFORMAT_TYPE_AUDIO_Value;

const CLSID_KSDATAFORMAT_TYPE_TEXT_Value = Guid.initString("73747874-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_TYPE_TEXT = &CLSID_KSDATAFORMAT_TYPE_TEXT_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX_Value = Guid.initString("00000000-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX = &CLSID_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_ANALOG_Value = Guid.initString("6dba3190-67bd-11cf-a0f7-0020afd156e4");
pub const CLSID_KSDATAFORMAT_SUBTYPE_ANALOG = &CLSID_KSDATAFORMAT_SUBTYPE_ANALOG_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_PCM_Value = Guid.initString("00000001-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_PCM = &CLSID_KSDATAFORMAT_SUBTYPE_PCM_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_VC_ID_Value = Guid.initString("ad98d184-aac3-11d0-a41c-00a0c9223196");
pub const CLSID_KSDATAFORMAT_SPECIFIER_VC_ID = &CLSID_KSDATAFORMAT_SPECIFIER_VC_ID_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX_Value = Guid.initString("05589f81-c356-11ce-bf01-00aa0055595a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX = &CLSID_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DSOUND_Value = Guid.initString("518590a2-a184-11d0-8522-00c04fd9baf3");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DSOUND = &CLSID_KSDATAFORMAT_SPECIFIER_DSOUND_Value;

pub const KSAUDIO_POSITION = extern struct {
    PlayOffset: u64,
    WriteOffset: u64,
};

pub const KSAUDIO_PRESENTATION_POSITION = extern struct {
    u64PositionInBlocks: u64,
    u64QPCPosition: u64,
};

pub const CONSTRICTOR_OPTION = enum(i32) {
    DISABLE = 0,
    MUTE = 1,
};
pub const CONSTRICTOR_OPTION_DISABLE = CONSTRICTOR_OPTION.DISABLE;
pub const CONSTRICTOR_OPTION_MUTE = CONSTRICTOR_OPTION.MUTE;

pub const _KSAUDIO_PACKETSIZE_SIGNALPROCESSINGMODE_CONSTRAINT = extern struct {
    ProcessingMode: Guid,
    SamplesPerProcessingPacket: u32,
    ProcessingPacketDurationInHns: u32,
};

pub const KSAUDIO_PACKETSIZE_CONSTRAINTS = extern struct {
    MinPacketPeriodInHns: u32,
    PacketSizeFileAlignment: u32,
    Reserved: u32,
    NumProcessingModeConstraints: u32,
    ProcessingModeConstraints: [1]_KSAUDIO_PACKETSIZE_SIGNALPROCESSINGMODE_CONSTRAINT,
};

pub const KSAUDIO_PACKETSIZE_CONSTRAINTS2 = extern struct {
    MinPacketPeriodInHns: u32,
    PacketSizeFileAlignment: u32,
    MaxPacketSizeInBytes: u32,
    NumProcessingModeConstraints: u32,
    ProcessingModeConstraints: [1]_KSAUDIO_PACKETSIZE_SIGNALPROCESSINGMODE_CONSTRAINT,
};

pub const KSMICARRAY_MICTYPE = enum(i32) {
    OMNIDIRECTIONAL = 0,
    SUBCARDIOID = 1,
    CARDIOID = 2,
    SUPERCARDIOID = 3,
    HYPERCARDIOID = 4,
    @"8SHAPED" = 5,
    VENDORDEFINED = 15,
};
pub const KSMICARRAY_MICTYPE_OMNIDIRECTIONAL = KSMICARRAY_MICTYPE.OMNIDIRECTIONAL;
pub const KSMICARRAY_MICTYPE_SUBCARDIOID = KSMICARRAY_MICTYPE.SUBCARDIOID;
pub const KSMICARRAY_MICTYPE_CARDIOID = KSMICARRAY_MICTYPE.CARDIOID;
pub const KSMICARRAY_MICTYPE_SUPERCARDIOID = KSMICARRAY_MICTYPE.SUPERCARDIOID;
pub const KSMICARRAY_MICTYPE_HYPERCARDIOID = KSMICARRAY_MICTYPE.HYPERCARDIOID;
pub const KSMICARRAY_MICTYPE_8SHAPED = KSMICARRAY_MICTYPE.@"8SHAPED";
pub const KSMICARRAY_MICTYPE_VENDORDEFINED = KSMICARRAY_MICTYPE.VENDORDEFINED;

pub const KSAUDIO_MICROPHONE_COORDINATES = extern struct {
    usType: u16,
    wXCoord: i16,
    wYCoord: i16,
    wZCoord: i16,
    wVerticalAngle: i16,
    wHorizontalAngle: i16,
};

pub const KSMICARRAY_MICARRAYTYPE = enum(i32) {
    LINEAR = 0,
    PLANAR = 1,
    @"3D" = 2,
};
pub const KSMICARRAY_MICARRAYTYPE_LINEAR = KSMICARRAY_MICARRAYTYPE.LINEAR;
pub const KSMICARRAY_MICARRAYTYPE_PLANAR = KSMICARRAY_MICARRAYTYPE.PLANAR;
pub const KSMICARRAY_MICARRAYTYPE_3D = KSMICARRAY_MICARRAYTYPE.@"3D";

pub const KSAUDIO_MIC_ARRAY_GEOMETRY = extern struct {
    usVersion: u16,
    usMicArrayType: u16,
    wVerticalAngleBegin: i16,
    wVerticalAngleEnd: i16,
    wHorizontalAngleBegin: i16,
    wHorizontalAngleEnd: i16,
    usFrequencyBandLo: u16,
    usFrequencyBandHi: u16,
    usNumberOfMicrophones: u16,
    KsMicCoord: [1]KSAUDIO_MICROPHONE_COORDINATES,
};

pub const DS3DVECTOR = extern struct {
    Anonymous1: extern union {
        x: f32,
        dvX: f32,
    },
    Anonymous2: extern union {
        y: f32,
        dvY: f32,
    },
    Anonymous3: extern union {
        z: f32,
        dvZ: f32,
    },
};

const CLSID_KSPROPSETID_DirectSound3DListener_Value = Guid.initString("437b3414-d060-11d0-8583-00c04fd9baf3");
pub const CLSID_KSPROPSETID_DirectSound3DListener = &CLSID_KSPROPSETID_DirectSound3DListener_Value;

pub const KSPROPERTY_DIRECTSOUND3DLISTENER = enum(i32) {
    ALL = 0,
    POSITION = 1,
    VELOCITY = 2,
    ORIENTATION = 3,
    DISTANCEFACTOR = 4,
    ROLLOFFFACTOR = 5,
    DOPPLERFACTOR = 6,
    BATCH = 7,
    ALLOCATION = 8,
};
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_ALL = KSPROPERTY_DIRECTSOUND3DLISTENER.ALL;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION = KSPROPERTY_DIRECTSOUND3DLISTENER.POSITION;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY = KSPROPERTY_DIRECTSOUND3DLISTENER.VELOCITY;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION = KSPROPERTY_DIRECTSOUND3DLISTENER.ORIENTATION;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR = KSPROPERTY_DIRECTSOUND3DLISTENER.DISTANCEFACTOR;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR = KSPROPERTY_DIRECTSOUND3DLISTENER.ROLLOFFFACTOR;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR = KSPROPERTY_DIRECTSOUND3DLISTENER.DOPPLERFACTOR;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH = KSPROPERTY_DIRECTSOUND3DLISTENER.BATCH;
pub const KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION = KSPROPERTY_DIRECTSOUND3DLISTENER.ALLOCATION;

pub const KSDS3D_LISTENER_ALL = extern struct {
    Position: DS3DVECTOR,
    Velocity: DS3DVECTOR,
    OrientFront: DS3DVECTOR,
    OrientTop: DS3DVECTOR,
    DistanceFactor: f32,
    RolloffFactor: f32,
    DopplerFactor: f32,
};

pub const KSDS3D_LISTENER_ORIENTATION = extern struct {
    Front: DS3DVECTOR,
    Top: DS3DVECTOR,
};

const CLSID_KSPROPSETID_DirectSound3DBuffer_Value = Guid.initString("437b3411-d060-11d0-8583-00c04fd9baf3");
pub const CLSID_KSPROPSETID_DirectSound3DBuffer = &CLSID_KSPROPSETID_DirectSound3DBuffer_Value;

pub const KSPROPERTY_DIRECTSOUND3DBUFFER = enum(i32) {
    ALL = 0,
    POSITION = 1,
    VELOCITY = 2,
    CONEANGLES = 3,
    CONEORIENTATION = 4,
    CONEOUTSIDEVOLUME = 5,
    MINDISTANCE = 6,
    MAXDISTANCE = 7,
    MODE = 8,
};
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_ALL = KSPROPERTY_DIRECTSOUND3DBUFFER.ALL;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION = KSPROPERTY_DIRECTSOUND3DBUFFER.POSITION;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY = KSPROPERTY_DIRECTSOUND3DBUFFER.VELOCITY;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES = KSPROPERTY_DIRECTSOUND3DBUFFER.CONEANGLES;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION = KSPROPERTY_DIRECTSOUND3DBUFFER.CONEORIENTATION;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME = KSPROPERTY_DIRECTSOUND3DBUFFER.CONEOUTSIDEVOLUME;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE = KSPROPERTY_DIRECTSOUND3DBUFFER.MINDISTANCE;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE = KSPROPERTY_DIRECTSOUND3DBUFFER.MAXDISTANCE;
pub const KSPROPERTY_DIRECTSOUND3DBUFFER_MODE = KSPROPERTY_DIRECTSOUND3DBUFFER.MODE;

pub const KSDS3D_BUFFER_ALL = extern struct {
    Position: DS3DVECTOR,
    Velocity: DS3DVECTOR,
    InsideConeAngle: u32,
    OutsideConeAngle: u32,
    ConeOrientation: DS3DVECTOR,
    ConeOutsideVolume: i32,
    MinDistance: f32,
    MaxDistance: f32,
    Mode: u32,
};

pub const KSDS3D_BUFFER_CONE_ANGLES = extern struct {
    InsideConeAngle: u32,
    OutsideConeAngle: u32,
};

pub const KSDS3D_HRTF_PARAMS_MSG = extern struct {
    Size: u32,
    Enabled: u32,
    SwapChannels: BOOL,
    ZeroAzimuth: BOOL,
    CrossFadeOutput: BOOL,
    FilterSize: u32,
};

pub const KSDS3D_HRTF_FILTER_QUALITY = enum(i32) {
    FULL_FILTER = 0,
    LIGHT_FILTER = 1,
    KSDS3D_FILTER_QUALITY_COUNT = 2,
};
pub const FULL_FILTER = KSDS3D_HRTF_FILTER_QUALITY.FULL_FILTER;
pub const LIGHT_FILTER = KSDS3D_HRTF_FILTER_QUALITY.LIGHT_FILTER;
pub const KSDS3D_FILTER_QUALITY_COUNT = KSDS3D_HRTF_FILTER_QUALITY.KSDS3D_FILTER_QUALITY_COUNT;

pub const KSDS3D_HRTF_INIT_MSG = extern struct {
    Size: u32,
    Quality: KSDS3D_HRTF_FILTER_QUALITY,
    SampleRate: f32,
    MaxFilterSize: u32,
    FilterTransientMuteLength: u32,
    FilterOverlapBufferLength: u32,
    OutputOverlapBufferLength: u32,
    Reserved: u32,
};

pub const KSDS3D_HRTF_COEFF_FORMAT = enum(i32) {
    FLOAT_COEFF = 0,
    SHORT_COEFF = 1,
    KSDS3D_COEFF_COUNT = 2,
};
pub const FLOAT_COEFF = KSDS3D_HRTF_COEFF_FORMAT.FLOAT_COEFF;
pub const SHORT_COEFF = KSDS3D_HRTF_COEFF_FORMAT.SHORT_COEFF;
pub const KSDS3D_COEFF_COUNT = KSDS3D_HRTF_COEFF_FORMAT.KSDS3D_COEFF_COUNT;

pub const KSDS3D_HRTF_FILTER_METHOD = enum(i32) {
    DIRECT_FORM = 0,
    CASCADE_FORM = 1,
    KSDS3D_FILTER_METHOD_COUNT = 2,
};
pub const DIRECT_FORM = KSDS3D_HRTF_FILTER_METHOD.DIRECT_FORM;
pub const CASCADE_FORM = KSDS3D_HRTF_FILTER_METHOD.CASCADE_FORM;
pub const KSDS3D_FILTER_METHOD_COUNT = KSDS3D_HRTF_FILTER_METHOD.KSDS3D_FILTER_METHOD_COUNT;

pub const KSDS3D_HRTF_FILTER_VERSION = enum(i32) {
    @"1" = 0,
};
pub const DS3D_HRTF_VERSION_1 = KSDS3D_HRTF_FILTER_VERSION.@"1";

pub const KSDS3D_HRTF_FILTER_FORMAT_MSG = extern struct {
    FilterMethod: KSDS3D_HRTF_FILTER_METHOD,
    CoeffFormat: KSDS3D_HRTF_COEFF_FORMAT,
    Version: KSDS3D_HRTF_FILTER_VERSION,
    Reserved: u32,
};

const CLSID_KSPROPSETID_Hrtf3d_Value = Guid.initString("b66decb0-a083-11d0-851e-00c04fd9baf3");
pub const CLSID_KSPROPSETID_Hrtf3d = &CLSID_KSPROPSETID_Hrtf3d_Value;

pub const KSPROPERTY_HRTF3D = enum(i32) {
    PARAMS = 0,
    INITIALIZE = 1,
    FILTER_FORMAT = 2,
};
pub const KSPROPERTY_HRTF3D_PARAMS = KSPROPERTY_HRTF3D.PARAMS;
pub const KSPROPERTY_HRTF3D_INITIALIZE = KSPROPERTY_HRTF3D.INITIALIZE;
pub const KSPROPERTY_HRTF3D_FILTER_FORMAT = KSPROPERTY_HRTF3D.FILTER_FORMAT;

pub const KSDS3D_ITD_PARAMS = extern struct {
    Channel: i32,
    VolSmoothScale: f32,
    TotalDryAttenuation: f32,
    TotalWetAttenuation: f32,
    SmoothFrequency: i32,
    Delay: i32,
};

pub const KSDS3D_ITD_PARAMS_MSG = extern struct {
    Enabled: u32,
    LeftParams: KSDS3D_ITD_PARAMS,
    RightParams: KSDS3D_ITD_PARAMS,
    Reserved: u32,
};

const CLSID_KSPROPSETID_Itd3d_Value = Guid.initString("6429f090-9fd9-11d0-a75b-00a0c90365e3");
pub const CLSID_KSPROPSETID_Itd3d = &CLSID_KSPROPSETID_Itd3d_Value;

pub const KSPROPERTY_ITD3D = enum(i32) {
    S = 0,
};
pub const KSPROPERTY_ITD3D_PARAMS = KSPROPERTY_ITD3D.S;

pub const KSDATARANGE_AUDIO = extern struct {
    DataRange: KSDATAFORMAT,
    MaximumChannels: u32,
    MinimumBitsPerSample: u32,
    MaximumBitsPerSample: u32,
    MinimumSampleFrequency: u32,
    MaximumSampleFrequency: u32,
};

const CLSID_KSDATAFORMAT_SUBTYPE_RIFF_Value = Guid.initString("4995daee-9ee6-11d0-a40e-00a0c9223196");
pub const CLSID_KSDATAFORMAT_SUBTYPE_RIFF = &CLSID_KSDATAFORMAT_SUBTYPE_RIFF_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_RIFFWAVE_Value = Guid.initString("e436eb8b-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_RIFFWAVE = &CLSID_KSDATAFORMAT_SUBTYPE_RIFFWAVE_Value;

const CLSID_KSPROPSETID_Bibliographic_Value = Guid.initString("07ba150e-e2b1-11d0-ac17-00a0c9223196");
pub const CLSID_KSPROPSETID_Bibliographic = &CLSID_KSPROPSETID_Bibliographic_Value;

pub const KSPROPERTY_BIBLIOGRAPHIC = enum(i32) {
    LEADER = 1380207648,
    LCCN = 808529952,
    ISBN = 808595488,
    ISSN = 842149920,
    CATALOGINGSOURCE = 808726560,
    MAINPERSONALNAME = 808464672,
    MAINCORPORATEBODY = 808530208,
    MAINMEETINGNAME = 825307424,
    MAINUNIFORMTITLE = 808661280,
    UNIFORMTITLE = 808727072,
    TITLESTATEMENT = 892613152,
    VARYINGFORMTITLE = 909390368,
    PUBLICATION = 808858144,
    PHYSICALDESCRIPTION = 808465184,
    ADDEDENTRYTITLE = 808727584,
    SERIESSTATEMENT = 809055264,
    GENERALNOTE = 808465696,
    BIBLIOGRAPHYNOTE = 875574560,
    CONTENTSNOTE = 892351776,
    CREATIONCREDIT = 942683424,
    CITATION = 808531232,
    PARTICIPANT = 825308448,
    SUMMARY = 808596768,
    TARGETAUDIENCE = 825373984,
    ADDEDFORMAVAILABLE = 808662304,
    SYSTEMDETAILS = 942880032,
    AWARDS = 909653280,
    ADDEDENTRYPERSONALNAME = 808465952,
    ADDEDENTRYTOPICALTERM = 808793632,
    ADDEDENTRYGEOGRAPHIC = 825570848,
    INDEXTERMGENRE = 892679712,
    INDEXTERMCURRICULUM = 943011360,
    ADDEDENTRYUNIFORMTITLE = 808662816,
    ADDEDENTRYRELATED = 808728352,
    SERIESSTATEMENTPERSONALNAME = 808466464,
    SERIESSTATEMENTUNIFORMTITLE = 808663072,
};
pub const KSPROPERTY_BIBLIOGRAPHIC_LEADER = KSPROPERTY_BIBLIOGRAPHIC.LEADER;
pub const KSPROPERTY_BIBLIOGRAPHIC_LCCN = KSPROPERTY_BIBLIOGRAPHIC.LCCN;
pub const KSPROPERTY_BIBLIOGRAPHIC_ISBN = KSPROPERTY_BIBLIOGRAPHIC.ISBN;
pub const KSPROPERTY_BIBLIOGRAPHIC_ISSN = KSPROPERTY_BIBLIOGRAPHIC.ISSN;
pub const KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = KSPROPERTY_BIBLIOGRAPHIC.CATALOGINGSOURCE;
pub const KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = KSPROPERTY_BIBLIOGRAPHIC.MAINPERSONALNAME;
pub const KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = KSPROPERTY_BIBLIOGRAPHIC.MAINCORPORATEBODY;
pub const KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = KSPROPERTY_BIBLIOGRAPHIC.MAINMEETINGNAME;
pub const KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = KSPROPERTY_BIBLIOGRAPHIC.MAINUNIFORMTITLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = KSPROPERTY_BIBLIOGRAPHIC.UNIFORMTITLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = KSPROPERTY_BIBLIOGRAPHIC.TITLESTATEMENT;
pub const KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = KSPROPERTY_BIBLIOGRAPHIC.VARYINGFORMTITLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = KSPROPERTY_BIBLIOGRAPHIC.PUBLICATION;
pub const KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = KSPROPERTY_BIBLIOGRAPHIC.PHYSICALDESCRIPTION;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYTITLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = KSPROPERTY_BIBLIOGRAPHIC.SERIESSTATEMENT;
pub const KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = KSPROPERTY_BIBLIOGRAPHIC.GENERALNOTE;
pub const KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = KSPROPERTY_BIBLIOGRAPHIC.BIBLIOGRAPHYNOTE;
pub const KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = KSPROPERTY_BIBLIOGRAPHIC.CONTENTSNOTE;
pub const KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = KSPROPERTY_BIBLIOGRAPHIC.CREATIONCREDIT;
pub const KSPROPERTY_BIBLIOGRAPHIC_CITATION = KSPROPERTY_BIBLIOGRAPHIC.CITATION;
pub const KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = KSPROPERTY_BIBLIOGRAPHIC.PARTICIPANT;
pub const KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = KSPROPERTY_BIBLIOGRAPHIC.SUMMARY;
pub const KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = KSPROPERTY_BIBLIOGRAPHIC.TARGETAUDIENCE;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = KSPROPERTY_BIBLIOGRAPHIC.ADDEDFORMAVAILABLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = KSPROPERTY_BIBLIOGRAPHIC.SYSTEMDETAILS;
pub const KSPROPERTY_BIBLIOGRAPHIC_AWARDS = KSPROPERTY_BIBLIOGRAPHIC.AWARDS;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYPERSONALNAME;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYTOPICALTERM;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYGEOGRAPHIC;
pub const KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = KSPROPERTY_BIBLIOGRAPHIC.INDEXTERMGENRE;
pub const KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = KSPROPERTY_BIBLIOGRAPHIC.INDEXTERMCURRICULUM;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYUNIFORMTITLE;
pub const KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = KSPROPERTY_BIBLIOGRAPHIC.ADDEDENTRYRELATED;
pub const KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = KSPROPERTY_BIBLIOGRAPHIC.SERIESSTATEMENTPERSONALNAME;
pub const KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = KSPROPERTY_BIBLIOGRAPHIC.SERIESSTATEMENTUNIFORMTITLE;

const CLSID_KSPROPSETID_TopologyNode_Value = Guid.initString("45ffaaa1-6e1b-11d0-bcf2-444553540000");
pub const CLSID_KSPROPSETID_TopologyNode = &CLSID_KSPROPSETID_TopologyNode_Value;

pub const KSPROPERTY_TOPOLOGYNODE = enum(i32) {
    ENABLE = 1,
    RESET = 2,
};
pub const KSPROPERTY_TOPOLOGYNODE_ENABLE = KSPROPERTY_TOPOLOGYNODE.ENABLE;
pub const KSPROPERTY_TOPOLOGYNODE_RESET = KSPROPERTY_TOPOLOGYNODE.RESET;

const CLSID_KSPROPSETID_RtAudio_Value = Guid.initString("a855a48c-2f78-4729-9051-1968746b9eef");
pub const CLSID_KSPROPSETID_RtAudio = &CLSID_KSPROPSETID_RtAudio_Value;

pub const KSPROPERTY_RTAUDIO = enum(i32) {
    GETPOSITIONFUNCTION = 0,
    BUFFER = 1,
    HWLATENCY = 2,
    POSITIONREGISTER = 3,
    CLOCKREGISTER = 4,
    BUFFER_WITH_NOTIFICATION = 5,
    REGISTER_NOTIFICATION_EVENT = 6,
    UNREGISTER_NOTIFICATION_EVENT = 7,
    QUERY_NOTIFICATION_SUPPORT = 8,
    PACKETCOUNT = 9,
    PRESENTATION_POSITION = 10,
    GETREADPACKET = 11,
    SETWRITEPACKET = 12,
    PACKETVREGISTER = 13,
};
pub const KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION = KSPROPERTY_RTAUDIO.GETPOSITIONFUNCTION;
pub const KSPROPERTY_RTAUDIO_BUFFER = KSPROPERTY_RTAUDIO.BUFFER;
pub const KSPROPERTY_RTAUDIO_HWLATENCY = KSPROPERTY_RTAUDIO.HWLATENCY;
pub const KSPROPERTY_RTAUDIO_POSITIONREGISTER = KSPROPERTY_RTAUDIO.POSITIONREGISTER;
pub const KSPROPERTY_RTAUDIO_CLOCKREGISTER = KSPROPERTY_RTAUDIO.CLOCKREGISTER;
pub const KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION = KSPROPERTY_RTAUDIO.BUFFER_WITH_NOTIFICATION;
pub const KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT = KSPROPERTY_RTAUDIO.REGISTER_NOTIFICATION_EVENT;
pub const KSPROPERTY_RTAUDIO_UNREGISTER_NOTIFICATION_EVENT = KSPROPERTY_RTAUDIO.UNREGISTER_NOTIFICATION_EVENT;
pub const KSPROPERTY_RTAUDIO_QUERY_NOTIFICATION_SUPPORT = KSPROPERTY_RTAUDIO.QUERY_NOTIFICATION_SUPPORT;
pub const KSPROPERTY_RTAUDIO_PACKETCOUNT = KSPROPERTY_RTAUDIO.PACKETCOUNT;
pub const KSPROPERTY_RTAUDIO_PRESENTATION_POSITION = KSPROPERTY_RTAUDIO.PRESENTATION_POSITION;
pub const KSPROPERTY_RTAUDIO_GETREADPACKET = KSPROPERTY_RTAUDIO.GETREADPACKET;
pub const KSPROPERTY_RTAUDIO_SETWRITEPACKET = KSPROPERTY_RTAUDIO.SETWRITEPACKET;
pub const KSPROPERTY_RTAUDIO_PACKETVREGISTER = KSPROPERTY_RTAUDIO.PACKETVREGISTER;

pub const KSRTAUDIO_BUFFER_PROPERTY = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: ?*anyopaque,
    RequestedBufferSize: u32,
};

pub const KSRTAUDIO_BUFFER_PROPERTY32 = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: u32,
    RequestedBufferSize: u32,
};

pub const KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: ?*anyopaque,
    RequestedBufferSize: u32,
    NotificationCount: u32,
};

pub const KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION32 = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: u32,
    RequestedBufferSize: u32,
    NotificationCount: u32,
};

pub const KSRTAUDIO_BUFFER = extern struct {
    BufferAddress: ?*anyopaque,
    ActualBufferSize: u32,
    CallMemoryBarrier: BOOL,
};

pub const KSRTAUDIO_BUFFER32 = extern struct {
    BufferAddress: u32,
    ActualBufferSize: u32,
    CallMemoryBarrier: BOOL,
};

pub const KSRTAUDIO_HWLATENCY = extern struct {
    FifoSize: u32,
    ChipsetDelay: u32,
    CodecDelay: u32,
};

pub const KSRTAUDIO_HWREGISTER_PROPERTY = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: ?*anyopaque,
};

pub const KSRTAUDIO_HWREGISTER_PROPERTY32 = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: u32,
};

pub const KSRTAUDIO_HWREGISTER = extern struct {
    Register: ?*anyopaque,
    Width: u32,
    Numerator: u64,
    Denominator: u64,
    Accuracy: u32,
};

pub const KSRTAUDIO_HWREGISTER32 = extern struct {
    Register: u32,
    Width: u32,
    Numerator: u64,
    Denominator: u64,
    Accuracy: u32,
};

pub const KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY = extern struct {
    Property: KSIDENTIFIER,
    NotificationEvent: ?HANDLE,
};

pub const KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY32 = extern struct {
    Property: KSIDENTIFIER,
    NotificationEvent: u32,
};

pub const KSRTAUDIO_GETREADPACKET_INFO = extern struct {
    PacketNumber: u32,
    Flags: u32,
    PerformanceCounterValue: u64,
    MoreData: BOOL,
};

pub const KSRTAUDIO_SETWRITEPACKET_INFO = extern struct {
    PacketNumber: u32,
    Flags: u32,
    EosPacketLength: u32,
};

pub const KSRTAUDIO_PACKETVREGISTER_PROPERTY = extern struct {
    Property: KSIDENTIFIER,
    BaseAddress: ?*anyopaque,
};

pub const KSRTAUDIO_PACKETVREGISTER = extern struct {
    CompletedPacketCount: ?*u64,
    CompletedPacketQPC: ?*u64,
    CompletedPacketHash: ?*u64,
};

const CLSID_KSPROPSETID_BtAudio_Value = Guid.initString("7fa06c40-b8f6-4c7e-8556-e8c33a12e54d");
pub const CLSID_KSPROPSETID_BtAudio = &CLSID_KSPROPSETID_BtAudio_Value;

pub const KSPROPERTY_BTAUDIO = enum(i32) {
    RECONNECT = 0,
    DISCONNECT = 1,
};
pub const KSPROPERTY_ONESHOT_RECONNECT = KSPROPERTY_BTAUDIO.RECONNECT;
pub const KSPROPERTY_ONESHOT_DISCONNECT = KSPROPERTY_BTAUDIO.DISCONNECT;

const CLSID_KSPROPSETID_DrmAudioStream_Value = Guid.initString("2f2c8ddd-4198-4fac-ba29-61bb05b7de06");
pub const CLSID_KSPROPSETID_DrmAudioStream = &CLSID_KSPROPSETID_DrmAudioStream_Value;

pub const KSPROPERTY_DRMAUDIOSTREAM = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_DRMAUDIOSTREAM_CONTENTID = KSPROPERTY_DRMAUDIOSTREAM.D;

const CLSID_KSPROPSETID_SoundDetector_Value = Guid.initString("113c425e-fd17-4057-b422-ed4074f1afdf");
pub const CLSID_KSPROPSETID_SoundDetector = &CLSID_KSPROPSETID_SoundDetector_Value;

const CLSID_KSPROPSETID_SoundDetector2_Value = Guid.initString("fe07e322-450c-4bd5-84ca-a948500ea6aa");
pub const CLSID_KSPROPSETID_SoundDetector2 = &CLSID_KSPROPSETID_SoundDetector2_Value;

const CLSID_KSPROPSETID_InterleavedAudio_Value = Guid.initString("e9ebe550-d619-4c0a-976b-7062322b3006");
pub const CLSID_KSPROPSETID_InterleavedAudio = &CLSID_KSPROPSETID_InterleavedAudio_Value;

pub const KSPROPERTY_INTERLEAVEDAUDIO = enum(i32) {
    N = 1,
};
pub const KSPROPERTY_INTERLEAVEDAUDIO_FORMATINFORMATION = KSPROPERTY_INTERLEAVEDAUDIO.N;

pub const INTERLEAVED_AUDIO_FORMAT_INFORMATION = extern struct {
    Size: u32,
    PrimaryChannelCount: u32,
    PrimaryChannelStartPosition: u32,
    PrimaryChannelMask: u32,
    InterleavedChannelCount: u32,
    InterleavedChannelStartPosition: u32,
    InterleavedChannelMask: u32,
};

pub const KSSOUNDDETECTORPROPERTY = extern struct {
    Property: KSIDENTIFIER,
    EventId: Guid,
};

pub const KSPROPERTY_SOUNDDETECTOR = enum(i32) {
    SUPPORTEDPATTERNS = 1,
    PATTERNS = 2,
    ARMED = 3,
    MATCHRESULT = 4,
    RESET = 5,
    STREAMINGSUPPORT = 6,
};
pub const KSPROPERTY_SOUNDDETECTOR_SUPPORTEDPATTERNS = KSPROPERTY_SOUNDDETECTOR.SUPPORTEDPATTERNS;
pub const KSPROPERTY_SOUNDDETECTOR_PATTERNS = KSPROPERTY_SOUNDDETECTOR.PATTERNS;
pub const KSPROPERTY_SOUNDDETECTOR_ARMED = KSPROPERTY_SOUNDDETECTOR.ARMED;
pub const KSPROPERTY_SOUNDDETECTOR_MATCHRESULT = KSPROPERTY_SOUNDDETECTOR.MATCHRESULT;
pub const KSPROPERTY_SOUNDDETECTOR_RESET = KSPROPERTY_SOUNDDETECTOR.RESET;
pub const KSPROPERTY_SOUNDDETECTOR_STREAMINGSUPPORT = KSPROPERTY_SOUNDDETECTOR.STREAMINGSUPPORT;

pub const SOUNDDETECTOR_PATTERNHEADER = extern struct {
    Size: u32,
    PatternType: Guid,
};

const CLSID_KSEVENTSETID_SoundDetector_Value = Guid.initString("69785c9b-fc2d-49d6-ac32-4799f87de9f6");
pub const CLSID_KSEVENTSETID_SoundDetector = &CLSID_KSEVENTSETID_SoundDetector_Value;

pub const KSEVENT_SOUNDDETECTOR = enum(i32) {
    D = 1,
};
pub const KSEVENT_SOUNDDETECTOR_MATCHDETECTED = KSEVENT_SOUNDDETECTOR.D;

const CLSID_KSNOTIFICATIONID_SoundDetector_Value = Guid.initString("6389d844-bb32-4c4c-a802-f4b4b77afead");
pub const CLSID_KSNOTIFICATIONID_SoundDetector = &CLSID_KSNOTIFICATIONID_SoundDetector_Value;

const CLSID_KSPROPSETID_Audio_Value = Guid.initString("45ffaaa0-6e1b-11d0-bcf2-444553540000");
pub const CLSID_KSPROPSETID_Audio = &CLSID_KSPROPSETID_Audio_Value;

pub const KSPROPERTY_AUDIO = enum(i32) {
    LATENCY = 1,
    COPY_PROTECTION = 2,
    CHANNEL_CONFIG = 3,
    VOLUMELEVEL = 4,
    POSITION = 5,
    DYNAMIC_RANGE = 6,
    QUALITY = 7,
    SAMPLING_RATE = 8,
    DYNAMIC_SAMPLING_RATE = 9,
    MIX_LEVEL_TABLE = 10,
    MIX_LEVEL_CAPS = 11,
    MUX_SOURCE = 12,
    MUTE = 13,
    BASS = 14,
    MID = 15,
    TREBLE = 16,
    BASS_BOOST = 17,
    EQ_LEVEL = 18,
    NUM_EQ_BANDS = 19,
    EQ_BANDS = 20,
    AGC = 21,
    DELAY = 22,
    LOUDNESS = 23,
    WIDE_MODE = 24,
    WIDENESS = 25,
    REVERB_LEVEL = 26,
    CHORUS_LEVEL = 27,
    DEV_SPECIFIC = 28,
    DEMUX_DEST = 29,
    STEREO_ENHANCE = 30,
    MANUFACTURE_GUID = 31,
    PRODUCT_GUID = 32,
    CPU_RESOURCES = 33,
    STEREO_SPEAKER_GEOMETRY = 34,
    SURROUND_ENCODE = 35,
    @"3D_INTERFACE" = 36,
    PEAKMETER = 37,
    ALGORITHM_INSTANCE = 38,
    FILTER_STATE = 39,
    PREFERRED_STATUS = 40,
    PEQ_MAX_BANDS = 41,
    PEQ_NUM_BANDS = 42,
    PEQ_BAND_CENTER_FREQ = 43,
    PEQ_BAND_Q_FACTOR = 44,
    PEQ_BAND_LEVEL = 45,
    CHORUS_MODULATION_RATE = 46,
    CHORUS_MODULATION_DEPTH = 47,
    REVERB_TIME = 48,
    REVERB_DELAY_FEEDBACK = 49,
    POSITIONEX = 50,
    MIC_ARRAY_GEOMETRY = 51,
    PRESENTATION_POSITION = 52,
    WAVERT_CURRENT_WRITE_POSITION = 53,
    LINEAR_BUFFER_POSITION = 54,
    PEAKMETER2 = 55,
    WAVERT_CURRENT_WRITE_LASTBUFFER_POSITION = 56,
    VOLUMELIMIT_ENGAGED = 57,
    MIC_SENSITIVITY = 58,
    MIC_SNR = 59,
    MIC_SENSITIVITY2 = 60,
};
pub const KSPROPERTY_AUDIO_LATENCY = KSPROPERTY_AUDIO.LATENCY;
pub const KSPROPERTY_AUDIO_COPY_PROTECTION = KSPROPERTY_AUDIO.COPY_PROTECTION;
pub const KSPROPERTY_AUDIO_CHANNEL_CONFIG = KSPROPERTY_AUDIO.CHANNEL_CONFIG;
pub const KSPROPERTY_AUDIO_VOLUMELEVEL = KSPROPERTY_AUDIO.VOLUMELEVEL;
pub const KSPROPERTY_AUDIO_POSITION = KSPROPERTY_AUDIO.POSITION;
pub const KSPROPERTY_AUDIO_DYNAMIC_RANGE = KSPROPERTY_AUDIO.DYNAMIC_RANGE;
pub const KSPROPERTY_AUDIO_QUALITY = KSPROPERTY_AUDIO.QUALITY;
pub const KSPROPERTY_AUDIO_SAMPLING_RATE = KSPROPERTY_AUDIO.SAMPLING_RATE;
pub const KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE = KSPROPERTY_AUDIO.DYNAMIC_SAMPLING_RATE;
pub const KSPROPERTY_AUDIO_MIX_LEVEL_TABLE = KSPROPERTY_AUDIO.MIX_LEVEL_TABLE;
pub const KSPROPERTY_AUDIO_MIX_LEVEL_CAPS = KSPROPERTY_AUDIO.MIX_LEVEL_CAPS;
pub const KSPROPERTY_AUDIO_MUX_SOURCE = KSPROPERTY_AUDIO.MUX_SOURCE;
pub const KSPROPERTY_AUDIO_MUTE = KSPROPERTY_AUDIO.MUTE;
pub const KSPROPERTY_AUDIO_BASS = KSPROPERTY_AUDIO.BASS;
pub const KSPROPERTY_AUDIO_MID = KSPROPERTY_AUDIO.MID;
pub const KSPROPERTY_AUDIO_TREBLE = KSPROPERTY_AUDIO.TREBLE;
pub const KSPROPERTY_AUDIO_BASS_BOOST = KSPROPERTY_AUDIO.BASS_BOOST;
pub const KSPROPERTY_AUDIO_EQ_LEVEL = KSPROPERTY_AUDIO.EQ_LEVEL;
pub const KSPROPERTY_AUDIO_NUM_EQ_BANDS = KSPROPERTY_AUDIO.NUM_EQ_BANDS;
pub const KSPROPERTY_AUDIO_EQ_BANDS = KSPROPERTY_AUDIO.EQ_BANDS;
pub const KSPROPERTY_AUDIO_AGC = KSPROPERTY_AUDIO.AGC;
pub const KSPROPERTY_AUDIO_DELAY = KSPROPERTY_AUDIO.DELAY;
pub const KSPROPERTY_AUDIO_LOUDNESS = KSPROPERTY_AUDIO.LOUDNESS;
pub const KSPROPERTY_AUDIO_WIDE_MODE = KSPROPERTY_AUDIO.WIDE_MODE;
pub const KSPROPERTY_AUDIO_WIDENESS = KSPROPERTY_AUDIO.WIDENESS;
pub const KSPROPERTY_AUDIO_REVERB_LEVEL = KSPROPERTY_AUDIO.REVERB_LEVEL;
pub const KSPROPERTY_AUDIO_CHORUS_LEVEL = KSPROPERTY_AUDIO.CHORUS_LEVEL;
pub const KSPROPERTY_AUDIO_DEV_SPECIFIC = KSPROPERTY_AUDIO.DEV_SPECIFIC;
pub const KSPROPERTY_AUDIO_DEMUX_DEST = KSPROPERTY_AUDIO.DEMUX_DEST;
pub const KSPROPERTY_AUDIO_STEREO_ENHANCE = KSPROPERTY_AUDIO.STEREO_ENHANCE;
pub const KSPROPERTY_AUDIO_MANUFACTURE_GUID = KSPROPERTY_AUDIO.MANUFACTURE_GUID;
pub const KSPROPERTY_AUDIO_PRODUCT_GUID = KSPROPERTY_AUDIO.PRODUCT_GUID;
pub const KSPROPERTY_AUDIO_CPU_RESOURCES = KSPROPERTY_AUDIO.CPU_RESOURCES;
pub const KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY = KSPROPERTY_AUDIO.STEREO_SPEAKER_GEOMETRY;
pub const KSPROPERTY_AUDIO_SURROUND_ENCODE = KSPROPERTY_AUDIO.SURROUND_ENCODE;
pub const KSPROPERTY_AUDIO_3D_INTERFACE = KSPROPERTY_AUDIO.@"3D_INTERFACE";
pub const KSPROPERTY_AUDIO_PEAKMETER = KSPROPERTY_AUDIO.PEAKMETER;
pub const KSPROPERTY_AUDIO_ALGORITHM_INSTANCE = KSPROPERTY_AUDIO.ALGORITHM_INSTANCE;
pub const KSPROPERTY_AUDIO_FILTER_STATE = KSPROPERTY_AUDIO.FILTER_STATE;
pub const KSPROPERTY_AUDIO_PREFERRED_STATUS = KSPROPERTY_AUDIO.PREFERRED_STATUS;
pub const KSPROPERTY_AUDIO_PEQ_MAX_BANDS = KSPROPERTY_AUDIO.PEQ_MAX_BANDS;
pub const KSPROPERTY_AUDIO_PEQ_NUM_BANDS = KSPROPERTY_AUDIO.PEQ_NUM_BANDS;
pub const KSPROPERTY_AUDIO_PEQ_BAND_CENTER_FREQ = KSPROPERTY_AUDIO.PEQ_BAND_CENTER_FREQ;
pub const KSPROPERTY_AUDIO_PEQ_BAND_Q_FACTOR = KSPROPERTY_AUDIO.PEQ_BAND_Q_FACTOR;
pub const KSPROPERTY_AUDIO_PEQ_BAND_LEVEL = KSPROPERTY_AUDIO.PEQ_BAND_LEVEL;
pub const KSPROPERTY_AUDIO_CHORUS_MODULATION_RATE = KSPROPERTY_AUDIO.CHORUS_MODULATION_RATE;
pub const KSPROPERTY_AUDIO_CHORUS_MODULATION_DEPTH = KSPROPERTY_AUDIO.CHORUS_MODULATION_DEPTH;
pub const KSPROPERTY_AUDIO_REVERB_TIME = KSPROPERTY_AUDIO.REVERB_TIME;
pub const KSPROPERTY_AUDIO_REVERB_DELAY_FEEDBACK = KSPROPERTY_AUDIO.REVERB_DELAY_FEEDBACK;
pub const KSPROPERTY_AUDIO_POSITIONEX = KSPROPERTY_AUDIO.POSITIONEX;
pub const KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY = KSPROPERTY_AUDIO.MIC_ARRAY_GEOMETRY;
pub const KSPROPERTY_AUDIO_PRESENTATION_POSITION = KSPROPERTY_AUDIO.PRESENTATION_POSITION;
pub const KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION = KSPROPERTY_AUDIO.WAVERT_CURRENT_WRITE_POSITION;
pub const KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION = KSPROPERTY_AUDIO.LINEAR_BUFFER_POSITION;
pub const KSPROPERTY_AUDIO_PEAKMETER2 = KSPROPERTY_AUDIO.PEAKMETER2;
pub const KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_LASTBUFFER_POSITION = KSPROPERTY_AUDIO.WAVERT_CURRENT_WRITE_LASTBUFFER_POSITION;
pub const KSPROPERTY_AUDIO_VOLUMELIMIT_ENGAGED = KSPROPERTY_AUDIO.VOLUMELIMIT_ENGAGED;
pub const KSPROPERTY_AUDIO_MIC_SENSITIVITY = KSPROPERTY_AUDIO.MIC_SENSITIVITY;
pub const KSPROPERTY_AUDIO_MIC_SNR = KSPROPERTY_AUDIO.MIC_SNR;
pub const KSPROPERTY_AUDIO_MIC_SENSITIVITY2 = KSPROPERTY_AUDIO.MIC_SENSITIVITY2;

pub const KSAUDIO_COPY_PROTECTION = extern struct {
    fCopyrighted: BOOL,
    fOriginal: BOOL,
};

pub const KSAUDIO_CHANNEL_CONFIG = extern struct {
    ActiveSpeakerPositions: i32,
};

pub const KSAUDIO_DYNAMIC_RANGE = extern struct {
    QuietCompression: u32,
    LoudCompression: u32,
};

pub const KSAUDIO_MIXLEVEL = extern struct {
    Mute: BOOL,
    Level: i32,
};

pub const KSAUDIO_MIX_CAPS = extern struct {
    Mute: BOOL,
    Minimum: i32,
    Maximum: i32,
    Anonymous: extern union {
        Reset: i32,
        Resolution: i32,
    },
};

pub const KSAUDIO_MIXCAP_TABLE = extern struct {
    InputChannels: u32,
    OutputChannels: u32,
    Capabilities: [1]KSAUDIO_MIX_CAPS,
};

pub const KSAUDIO_POSITIONEX = extern struct {
    TimerFrequency: LARGE_INTEGER,
    TimeStamp1: LARGE_INTEGER,
    Position: KSAUDIO_POSITION,
    TimeStamp2: LARGE_INTEGER,
};

const CLSID_KSPROPSETID_TelephonyControl_Value = Guid.initString("b6df7eb1-d099-489f-a6a0-c0106f0887a7");
pub const CLSID_KSPROPSETID_TelephonyControl = &CLSID_KSPROPSETID_TelephonyControl_Value;

pub const KSPROPERTY_TELEPHONY_CONTROL = enum(i32) {
    PROVIDERID = 0,
    CALLINFO = 1,
    CALLCONTROL = 2,
    PROVIDERCHANGE = 3,
    CALLHOLD = 4,
    MUTE_TX = 5,
};
pub const KSPROPERTY_TELEPHONY_PROVIDERID = KSPROPERTY_TELEPHONY_CONTROL.PROVIDERID;
pub const KSPROPERTY_TELEPHONY_CALLINFO = KSPROPERTY_TELEPHONY_CONTROL.CALLINFO;
pub const KSPROPERTY_TELEPHONY_CALLCONTROL = KSPROPERTY_TELEPHONY_CONTROL.CALLCONTROL;
pub const KSPROPERTY_TELEPHONY_PROVIDERCHANGE = KSPROPERTY_TELEPHONY_CONTROL.PROVIDERCHANGE;
pub const KSPROPERTY_TELEPHONY_CALLHOLD = KSPROPERTY_TELEPHONY_CONTROL.CALLHOLD;
pub const KSPROPERTY_TELEPHONY_MUTE_TX = KSPROPERTY_TELEPHONY_CONTROL.MUTE_TX;

pub const TELEPHONY_CALLTYPE = enum(i32) {
    CIRCUITSWITCHED = 0,
    PACKETSWITCHED_LTE = 1,
    PACKETSWITCHED_WLAN = 2,
};
pub const TELEPHONY_CALLTYPE_CIRCUITSWITCHED = TELEPHONY_CALLTYPE.CIRCUITSWITCHED;
pub const TELEPHONY_CALLTYPE_PACKETSWITCHED_LTE = TELEPHONY_CALLTYPE.PACKETSWITCHED_LTE;
pub const TELEPHONY_CALLTYPE_PACKETSWITCHED_WLAN = TELEPHONY_CALLTYPE.PACKETSWITCHED_WLAN;

pub const TELEPHONY_CALLCONTROLOP = enum(i32) {
    DISABLE = 0,
    ENABLE = 1,
};
pub const TELEPHONY_CALLCONTROLOP_DISABLE = TELEPHONY_CALLCONTROLOP.DISABLE;
pub const TELEPHONY_CALLCONTROLOP_ENABLE = TELEPHONY_CALLCONTROLOP.ENABLE;

pub const KSTELEPHONY_CALLCONTROL = extern struct {
    CallType: TELEPHONY_CALLTYPE,
    CallControlOp: TELEPHONY_CALLCONTROLOP,
};

pub const TELEPHONY_PROVIDERCHANGEOP = enum(i32) {
    END = 0,
    BEGIN = 1,
    CANCEL = 2,
};
pub const TELEPHONY_PROVIDERCHANGEOP_END = TELEPHONY_PROVIDERCHANGEOP.END;
pub const TELEPHONY_PROVIDERCHANGEOP_BEGIN = TELEPHONY_PROVIDERCHANGEOP.BEGIN;
pub const TELEPHONY_PROVIDERCHANGEOP_CANCEL = TELEPHONY_PROVIDERCHANGEOP.CANCEL;

pub const KSTELEPHONY_PROVIDERCHANGE = extern struct {
    CallType: TELEPHONY_CALLTYPE,
    ProviderChangeOp: TELEPHONY_PROVIDERCHANGEOP,
};

pub const TELEPHONY_CALLSTATE = enum(i32) {
    DISABLED = 0,
    ENABLED = 1,
    HOLD = 2,
    PROVIDERTRANSITION = 3,
};
pub const TELEPHONY_CALLSTATE_DISABLED = TELEPHONY_CALLSTATE.DISABLED;
pub const TELEPHONY_CALLSTATE_ENABLED = TELEPHONY_CALLSTATE.ENABLED;
pub const TELEPHONY_CALLSTATE_HOLD = TELEPHONY_CALLSTATE.HOLD;
pub const TELEPHONY_CALLSTATE_PROVIDERTRANSITION = TELEPHONY_CALLSTATE.PROVIDERTRANSITION;

pub const KSTELEPHONY_CALLINFO = extern struct {
    CallType: TELEPHONY_CALLTYPE,
    CallState: TELEPHONY_CALLSTATE,
};

const CLSID_KSPROPSETID_TelephonyTopology_Value = Guid.initString("abf25c7e-0e64-4e32-b190-d0f6d7c53e97");
pub const CLSID_KSPROPSETID_TelephonyTopology = &CLSID_KSPROPSETID_TelephonyTopology_Value;

pub const KSPROPERTY_TELEPHONY_TOPOLOGY = enum(i32) {
    ENDPOINTIDPAIR = 0,
    VOLUME = 1,
};
pub const KSPROPERTY_TELEPHONY_ENDPOINTIDPAIR = KSPROPERTY_TELEPHONY_TOPOLOGY.ENDPOINTIDPAIR;
pub const KSPROPERTY_TELEPHONY_VOLUME = KSPROPERTY_TELEPHONY_TOPOLOGY.VOLUME;

pub const KSTOPOLOGY_ENDPOINTID = extern struct {
    TopologyName: [260]u16,
    PinId: u32,
};

pub const KSTOPOLOGY_ENDPOINTIDPAIR = extern struct {
    RenderEndpoint: KSTOPOLOGY_ENDPOINTID,
    CaptureEndpoint: KSTOPOLOGY_ENDPOINTID,
};

const CLSID_KSPROPSETID_FMRXTopology_Value = Guid.initString("0c46ce8f-dc2d-4204-9dc9-f58963366563");
pub const CLSID_KSPROPSETID_FMRXTopology = &CLSID_KSPROPSETID_FMRXTopology_Value;

pub const KSPROPERTY_FMRX_TOPOLOGY = enum(i32) {
    ENDPOINTID = 0,
    VOLUME = 1,
    ANTENNAENDPOINTID = 2,
};
pub const KSPROPERTY_FMRX_ENDPOINTID = KSPROPERTY_FMRX_TOPOLOGY.ENDPOINTID;
pub const KSPROPERTY_FMRX_VOLUME = KSPROPERTY_FMRX_TOPOLOGY.VOLUME;
pub const KSPROPERTY_FMRX_ANTENNAENDPOINTID = KSPROPERTY_FMRX_TOPOLOGY.ANTENNAENDPOINTID;

const CLSID_KSPROPSETID_FMRXControl_Value = Guid.initString("947bba3a-e8ee-4786-90c4-8428185f05be");
pub const CLSID_KSPROPSETID_FMRXControl = &CLSID_KSPROPSETID_FMRXControl_Value;

pub const KSPROPERTY_FMRX_CONTROL = enum(i32) {
    E = 0,
};
pub const KSPROPERTY_FMRX_STATE = KSPROPERTY_FMRX_CONTROL.E;

const CLSID_KSEVENTSETID_Telephony_Value = Guid.initString("b77f12b4-ceb4-4484-8d5e-52c1e7d8762d");
pub const CLSID_KSEVENTSETID_Telephony = &CLSID_KSEVENTSETID_Telephony_Value;

pub const KSEVENT_TELEPHONY = enum(i32) {
    D = 0,
};
pub const KSEVENT_TELEPHONY_ENDPOINTPAIRS_CHANGED = KSEVENT_TELEPHONY.D;

const CLSID_KSNODETYPE_DAC_Value = Guid.initString("507ae360-c554-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_DAC = &CLSID_KSNODETYPE_DAC_Value;

const CLSID_KSNODETYPE_ADC_Value = Guid.initString("4d837fe0-c555-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_ADC = &CLSID_KSNODETYPE_ADC_Value;

const CLSID_KSNODETYPE_SRC_Value = Guid.initString("9db7b9e0-c555-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_SRC = &CLSID_KSNODETYPE_SRC_Value;

const CLSID_KSNODETYPE_SUPERMIX_Value = Guid.initString("e573adc0-c555-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_SUPERMIX = &CLSID_KSNODETYPE_SUPERMIX_Value;

const CLSID_KSNODETYPE_MUX_Value = Guid.initString("2ceaf780-c556-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_MUX = &CLSID_KSNODETYPE_MUX_Value;

const CLSID_KSNODETYPE_DEMUX_Value = Guid.initString("c0eb67d4-e807-11d0-958a-00c04fb925d3");
pub const CLSID_KSNODETYPE_DEMUX = &CLSID_KSNODETYPE_DEMUX_Value;

const CLSID_KSNODETYPE_SUM_Value = Guid.initString("da441a60-c556-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_SUM = &CLSID_KSNODETYPE_SUM_Value;

const CLSID_KSNODETYPE_MUTE_Value = Guid.initString("02b223c0-c557-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_MUTE = &CLSID_KSNODETYPE_MUTE_Value;

const CLSID_KSNODETYPE_VOLUME_Value = Guid.initString("3a5acc00-c557-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_VOLUME = &CLSID_KSNODETYPE_VOLUME_Value;

const CLSID_KSNODETYPE_TONE_Value = Guid.initString("7607e580-c557-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_TONE = &CLSID_KSNODETYPE_TONE_Value;

const CLSID_KSNODETYPE_EQUALIZER_Value = Guid.initString("9d41b4a0-c557-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_EQUALIZER = &CLSID_KSNODETYPE_EQUALIZER_Value;

const CLSID_KSNODETYPE_AGC_Value = Guid.initString("e88c9ba0-c557-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_AGC = &CLSID_KSNODETYPE_AGC_Value;

const CLSID_KSNODETYPE_NOISE_SUPPRESS_Value = Guid.initString("e07f903f-62fd-4e60-8cdd-dea7236665b5");
pub const CLSID_KSNODETYPE_NOISE_SUPPRESS = &CLSID_KSNODETYPE_NOISE_SUPPRESS_Value;

const CLSID_KSNODETYPE_DELAY_Value = Guid.initString("144981e0-c558-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_DELAY = &CLSID_KSNODETYPE_DELAY_Value;

const CLSID_KSNODETYPE_LOUDNESS_Value = Guid.initString("41887440-c558-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_LOUDNESS = &CLSID_KSNODETYPE_LOUDNESS_Value;

const CLSID_KSNODETYPE_PROLOGIC_DECODER_Value = Guid.initString("831c2c80-c558-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_PROLOGIC_DECODER = &CLSID_KSNODETYPE_PROLOGIC_DECODER_Value;

const CLSID_KSNODETYPE_STEREO_WIDE_Value = Guid.initString("a9e69800-c558-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_STEREO_WIDE = &CLSID_KSNODETYPE_STEREO_WIDE_Value;

const CLSID_KSNODETYPE_REVERB_Value = Guid.initString("ef0328e0-c558-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_REVERB = &CLSID_KSNODETYPE_REVERB_Value;

const CLSID_KSNODETYPE_CHORUS_Value = Guid.initString("20173f20-c559-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_CHORUS = &CLSID_KSNODETYPE_CHORUS_Value;

const CLSID_KSNODETYPE_3D_EFFECTS_Value = Guid.initString("55515860-c559-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_3D_EFFECTS = &CLSID_KSNODETYPE_3D_EFFECTS_Value;

const CLSID_KSNODETYPE_PARAMETRIC_EQUALIZER_Value = Guid.initString("19bb3a6a-ce2b-4442-87ec-6727c3cab477");
pub const CLSID_KSNODETYPE_PARAMETRIC_EQUALIZER = &CLSID_KSNODETYPE_PARAMETRIC_EQUALIZER_Value;

const CLSID_KSNODETYPE_UPDOWN_MIX_Value = Guid.initString("b7edc5cf-7b63-4ee2-a100-29ee2cb6b2de");
pub const CLSID_KSNODETYPE_UPDOWN_MIX = &CLSID_KSNODETYPE_UPDOWN_MIX_Value;

const CLSID_KSNODETYPE_DYN_RANGE_COMPRESSOR_Value = Guid.initString("08c8a6a8-601f-4af8-8793-d905ff4ca97d");
pub const CLSID_KSNODETYPE_DYN_RANGE_COMPRESSOR = &CLSID_KSNODETYPE_DYN_RANGE_COMPRESSOR_Value;

const CLSID_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL_Value = Guid.initString("1c22c56d-9879-4f5b-a389-27996ddc2810");
pub const CLSID_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL = &CLSID_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL_Value;

const CLSID_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS_Value = Guid.initString("5ab0882e-7274-4516-877d-4eee99ba4fd0");
pub const CLSID_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS = &CLSID_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS_Value;

const CLSID_KSALGORITHMINSTANCE_SYSTEM_AGC_Value = Guid.initString("950e55b9-877c-4c67-be08-e47b5611130a");
pub const CLSID_KSALGORITHMINSTANCE_SYSTEM_AGC = &CLSID_KSALGORITHMINSTANCE_SYSTEM_AGC_Value;

const CLSID_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR_Value = Guid.initString("b6f5a0a0-9e61-4f8c-91e3-76cf0f3c471f");
pub const CLSID_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR = &CLSID_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR_Value;

const CLSID_KSNODETYPE_DEV_SPECIFIC_Value = Guid.initString("941c7ac0-c559-11d0-8a2b-00a0c9255ac1");
pub const CLSID_KSNODETYPE_DEV_SPECIFIC = &CLSID_KSNODETYPE_DEV_SPECIFIC_Value;

const CLSID_KSNODETYPE_PROLOGIC_ENCODER_Value = Guid.initString("8074c5b2-3c66-11d2-b45a-3078302c2030");
pub const CLSID_KSNODETYPE_PROLOGIC_ENCODER = &CLSID_KSNODETYPE_PROLOGIC_ENCODER_Value;

const CLSID_KSNODETYPE_PEAKMETER_Value = Guid.initString("a085651e-5f0d-4b36-a869-d195d6ab4b9e");
pub const CLSID_KSNODETYPE_PEAKMETER = &CLSID_KSNODETYPE_PEAKMETER_Value;

const CLSID_KSAUDFNAME_BASS_Value = Guid.initString("185fede0-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_BASS = &CLSID_KSAUDFNAME_BASS_Value;

const CLSID_KSAUDFNAME_TREBLE_Value = Guid.initString("185fede1-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_TREBLE = &CLSID_KSAUDFNAME_TREBLE_Value;

const CLSID_KSAUDFNAME_MIDRANGE_Value = Guid.initString("a2cbe478-ae84-49a1-8b72-4ad09b78ed34");
pub const CLSID_KSAUDFNAME_MIDRANGE = &CLSID_KSAUDFNAME_MIDRANGE_Value;

const CLSID_KSAUDFNAME_3D_STEREO_Value = Guid.initString("185fede2-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_3D_STEREO = &CLSID_KSAUDFNAME_3D_STEREO_Value;

const CLSID_KSAUDFNAME_MASTER_VOLUME_Value = Guid.initString("185fede3-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MASTER_VOLUME = &CLSID_KSAUDFNAME_MASTER_VOLUME_Value;

const CLSID_KSAUDFNAME_MASTER_MUTE_Value = Guid.initString("185fede4-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MASTER_MUTE = &CLSID_KSAUDFNAME_MASTER_MUTE_Value;

const CLSID_KSAUDFNAME_WAVE_VOLUME_Value = Guid.initString("185fede5-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_WAVE_VOLUME = &CLSID_KSAUDFNAME_WAVE_VOLUME_Value;

const CLSID_KSAUDFNAME_WAVE_MUTE_Value = Guid.initString("185fede6-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_WAVE_MUTE = &CLSID_KSAUDFNAME_WAVE_MUTE_Value;

const CLSID_KSAUDFNAME_MIDI_VOLUME_Value = Guid.initString("185fede7-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIDI_VOLUME = &CLSID_KSAUDFNAME_MIDI_VOLUME_Value;

const CLSID_KSAUDFNAME_MIDI_MUTE_Value = Guid.initString("185fede8-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIDI_MUTE = &CLSID_KSAUDFNAME_MIDI_MUTE_Value;

const CLSID_KSAUDFNAME_CD_VOLUME_Value = Guid.initString("185fede9-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_CD_VOLUME = &CLSID_KSAUDFNAME_CD_VOLUME_Value;

const CLSID_KSAUDFNAME_CD_MUTE_Value = Guid.initString("185fedea-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_CD_MUTE = &CLSID_KSAUDFNAME_CD_MUTE_Value;

const CLSID_KSAUDFNAME_LINE_VOLUME_Value = Guid.initString("185fedeb-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_LINE_VOLUME = &CLSID_KSAUDFNAME_LINE_VOLUME_Value;

const CLSID_KSAUDFNAME_LINE_MUTE_Value = Guid.initString("185fedec-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_LINE_MUTE = &CLSID_KSAUDFNAME_LINE_MUTE_Value;

const CLSID_KSAUDFNAME_MIC_VOLUME_Value = Guid.initString("185feded-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIC_VOLUME = &CLSID_KSAUDFNAME_MIC_VOLUME_Value;

const CLSID_KSAUDFNAME_MIC_MUTE_Value = Guid.initString("185fedee-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIC_MUTE = &CLSID_KSAUDFNAME_MIC_MUTE_Value;

const CLSID_KSAUDFNAME_RECORDING_SOURCE_Value = Guid.initString("185fedef-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_RECORDING_SOURCE = &CLSID_KSAUDFNAME_RECORDING_SOURCE_Value;

const CLSID_KSAUDFNAME_PC_SPEAKER_VOLUME_Value = Guid.initString("185fedf0-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_PC_SPEAKER_VOLUME = &CLSID_KSAUDFNAME_PC_SPEAKER_VOLUME_Value;

const CLSID_KSAUDFNAME_PC_SPEAKER_MUTE_Value = Guid.initString("185fedf1-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_PC_SPEAKER_MUTE = &CLSID_KSAUDFNAME_PC_SPEAKER_MUTE_Value;

const CLSID_KSAUDFNAME_MIDI_IN_VOLUME_Value = Guid.initString("185fedf2-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIDI_IN_VOLUME = &CLSID_KSAUDFNAME_MIDI_IN_VOLUME_Value;

const CLSID_KSAUDFNAME_CD_IN_VOLUME_Value = Guid.initString("185fedf3-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_CD_IN_VOLUME = &CLSID_KSAUDFNAME_CD_IN_VOLUME_Value;

const CLSID_KSAUDFNAME_LINE_IN_VOLUME_Value = Guid.initString("185fedf4-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_LINE_IN_VOLUME = &CLSID_KSAUDFNAME_LINE_IN_VOLUME_Value;

const CLSID_KSAUDFNAME_MIC_IN_VOLUME_Value = Guid.initString("185fedf5-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIC_IN_VOLUME = &CLSID_KSAUDFNAME_MIC_IN_VOLUME_Value;

const CLSID_KSAUDFNAME_WAVE_IN_VOLUME_Value = Guid.initString("185fedf6-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_WAVE_IN_VOLUME = &CLSID_KSAUDFNAME_WAVE_IN_VOLUME_Value;

const CLSID_KSAUDFNAME_VOLUME_CONTROL_Value = Guid.initString("185fedf7-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_VOLUME_CONTROL = &CLSID_KSAUDFNAME_VOLUME_CONTROL_Value;

const CLSID_KSAUDFNAME_MIDI_Value = Guid.initString("185fedf8-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_MIDI = &CLSID_KSAUDFNAME_MIDI_Value;

const CLSID_KSAUDFNAME_LINE_IN_Value = Guid.initString("185fedf9-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_LINE_IN = &CLSID_KSAUDFNAME_LINE_IN_Value;

const CLSID_KSAUDFNAME_RECORDING_CONTROL_Value = Guid.initString("185fedfa-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_RECORDING_CONTROL = &CLSID_KSAUDFNAME_RECORDING_CONTROL_Value;

const CLSID_KSAUDFNAME_CD_AUDIO_Value = Guid.initString("185fedfb-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_CD_AUDIO = &CLSID_KSAUDFNAME_CD_AUDIO_Value;

const CLSID_KSAUDFNAME_AUX_VOLUME_Value = Guid.initString("185fedfc-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_AUX_VOLUME = &CLSID_KSAUDFNAME_AUX_VOLUME_Value;

const CLSID_KSAUDFNAME_AUX_MUTE_Value = Guid.initString("185fedfd-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_AUX_MUTE = &CLSID_KSAUDFNAME_AUX_MUTE_Value;

const CLSID_KSAUDFNAME_AUX_Value = Guid.initString("185fedfe-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_AUX = &CLSID_KSAUDFNAME_AUX_Value;

const CLSID_KSAUDFNAME_PC_SPEAKER_Value = Guid.initString("185fedff-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_PC_SPEAKER = &CLSID_KSAUDFNAME_PC_SPEAKER_Value;

const CLSID_KSAUDFNAME_WAVE_OUT_MIX_Value = Guid.initString("185fee00-9905-11d1-95a9-00c04fb925d3");
pub const CLSID_KSAUDFNAME_WAVE_OUT_MIX = &CLSID_KSAUDFNAME_WAVE_OUT_MIX_Value;

const CLSID_KSAUDFNAME_MONO_OUT_Value = Guid.initString("f9b41dc3-96e2-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_OUT = &CLSID_KSAUDFNAME_MONO_OUT_Value;

const CLSID_KSAUDFNAME_STEREO_MIX_Value = Guid.initString("00dff077-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_STEREO_MIX = &CLSID_KSAUDFNAME_STEREO_MIX_Value;

const CLSID_KSAUDFNAME_MONO_MIX_Value = Guid.initString("00dff078-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_MIX = &CLSID_KSAUDFNAME_MONO_MIX_Value;

const CLSID_KSAUDFNAME_MONO_OUT_VOLUME_Value = Guid.initString("1ad247eb-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_OUT_VOLUME = &CLSID_KSAUDFNAME_MONO_OUT_VOLUME_Value;

const CLSID_KSAUDFNAME_MONO_OUT_MUTE_Value = Guid.initString("1ad247ec-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_OUT_MUTE = &CLSID_KSAUDFNAME_MONO_OUT_MUTE_Value;

const CLSID_KSAUDFNAME_STEREO_MIX_VOLUME_Value = Guid.initString("1ad247ed-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_STEREO_MIX_VOLUME = &CLSID_KSAUDFNAME_STEREO_MIX_VOLUME_Value;

const CLSID_KSAUDFNAME_STEREO_MIX_MUTE_Value = Guid.initString("22b0eafd-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_STEREO_MIX_MUTE = &CLSID_KSAUDFNAME_STEREO_MIX_MUTE_Value;

const CLSID_KSAUDFNAME_MONO_MIX_VOLUME_Value = Guid.initString("22b0eafe-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_MIX_VOLUME = &CLSID_KSAUDFNAME_MONO_MIX_VOLUME_Value;

const CLSID_KSAUDFNAME_MONO_MIX_MUTE_Value = Guid.initString("2bc31d69-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MONO_MIX_MUTE = &CLSID_KSAUDFNAME_MONO_MIX_MUTE_Value;

const CLSID_KSAUDFNAME_MICROPHONE_BOOST_Value = Guid.initString("2bc31d6a-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_MICROPHONE_BOOST = &CLSID_KSAUDFNAME_MICROPHONE_BOOST_Value;

const CLSID_KSAUDFNAME_ALTERNATE_MICROPHONE_Value = Guid.initString("2bc31d6b-96e3-11d2-ac4c-00c04f8efb68");
pub const CLSID_KSAUDFNAME_ALTERNATE_MICROPHONE = &CLSID_KSAUDFNAME_ALTERNATE_MICROPHONE_Value;

const CLSID_KSAUDFNAME_3D_DEPTH_Value = Guid.initString("63ff5747-991f-11d2-ac4d-00c04f8efb68");
pub const CLSID_KSAUDFNAME_3D_DEPTH = &CLSID_KSAUDFNAME_3D_DEPTH_Value;

const CLSID_KSAUDFNAME_3D_CENTER_Value = Guid.initString("9f0670b4-991f-11d2-ac4d-00c04f8efb68");
pub const CLSID_KSAUDFNAME_3D_CENTER = &CLSID_KSAUDFNAME_3D_CENTER_Value;

const CLSID_KSAUDFNAME_VIDEO_VOLUME_Value = Guid.initString("9b46e708-992a-11d2-ac4d-00c04f8efb68");
pub const CLSID_KSAUDFNAME_VIDEO_VOLUME = &CLSID_KSAUDFNAME_VIDEO_VOLUME_Value;

const CLSID_KSAUDFNAME_VIDEO_MUTE_Value = Guid.initString("9b46e709-992a-11d2-ac4d-00c04f8efb68");
pub const CLSID_KSAUDFNAME_VIDEO_MUTE = &CLSID_KSAUDFNAME_VIDEO_MUTE_Value;

const CLSID_KSAUDFNAME_VIDEO_Value = Guid.initString("915daec4-a434-11d2-ac52-00c04f8efb68");
pub const CLSID_KSAUDFNAME_VIDEO = &CLSID_KSAUDFNAME_VIDEO_Value;

const CLSID_KSAUDFNAME_PEAKMETER_Value = Guid.initString("57e24340-fc5b-4612-a562-72b11a29dfae");
pub const CLSID_KSAUDFNAME_PEAKMETER = &CLSID_KSAUDFNAME_PEAKMETER_Value;

const CLSID_KSMETHODSETID_Wavetable_Value = Guid.initString("dcef31eb-d907-11d0-9583-00c04fb925d3");
pub const CLSID_KSMETHODSETID_Wavetable = &CLSID_KSMETHODSETID_Wavetable_Value;

pub const KSMETHOD_WAVETABLE = enum(i32) {
    ALLOC = 0,
    FREE = 1,
    FIND = 2,
    WRITE = 3,
};
pub const KSMETHOD_WAVETABLE_WAVE_ALLOC = KSMETHOD_WAVETABLE.ALLOC;
pub const KSMETHOD_WAVETABLE_WAVE_FREE = KSMETHOD_WAVETABLE.FREE;
pub const KSMETHOD_WAVETABLE_WAVE_FIND = KSMETHOD_WAVETABLE.FIND;
pub const KSMETHOD_WAVETABLE_WAVE_WRITE = KSMETHOD_WAVETABLE.WRITE;

pub const KSWAVETABLE_WAVE_DESC = extern struct {
    Identifier: KSIDENTIFIER,
    Size: u32,
    Looped: BOOL,
    LoopPoint: u32,
    InROM: BOOL,
    Format: KSDATAFORMAT,
};

const CLSID_KSPROPSETID_Wave_Value = Guid.initString("924e54b0-630f-11cf-ada7-08003e30494a");
pub const CLSID_KSPROPSETID_Wave = &CLSID_KSPROPSETID_Wave_Value;

pub const KSPROPERTY_WAVE = enum(i32) {
    COMPATIBLE_CAPABILITIES = 0,
    INPUT_CAPABILITIES = 1,
    OUTPUT_CAPABILITIES = 2,
    BUFFER = 3,
    FREQUENCY = 4,
    VOLUME = 5,
    PAN = 6,
};
pub const KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES = KSPROPERTY_WAVE.COMPATIBLE_CAPABILITIES;
pub const KSPROPERTY_WAVE_INPUT_CAPABILITIES = KSPROPERTY_WAVE.INPUT_CAPABILITIES;
pub const KSPROPERTY_WAVE_OUTPUT_CAPABILITIES = KSPROPERTY_WAVE.OUTPUT_CAPABILITIES;
pub const KSPROPERTY_WAVE_BUFFER = KSPROPERTY_WAVE.BUFFER;
pub const KSPROPERTY_WAVE_FREQUENCY = KSPROPERTY_WAVE.FREQUENCY;
pub const KSPROPERTY_WAVE_VOLUME = KSPROPERTY_WAVE.VOLUME;
pub const KSPROPERTY_WAVE_PAN = KSPROPERTY_WAVE.PAN;

pub const KSWAVE_COMPATCAPS = extern struct {
    ulDeviceType: u32,
};

pub const KSWAVE_INPUT_CAPABILITIES = extern struct {
    MaximumChannelsPerConnection: u32,
    MinimumBitsPerSample: u32,
    MaximumBitsPerSample: u32,
    MinimumSampleFrequency: u32,
    MaximumSampleFrequency: u32,
    TotalConnections: u32,
    ActiveConnections: u32,
};

pub const KSWAVE_OUTPUT_CAPABILITIES = extern struct {
    MaximumChannelsPerConnection: u32,
    MinimumBitsPerSample: u32,
    MaximumBitsPerSample: u32,
    MinimumSampleFrequency: u32,
    MaximumSampleFrequency: u32,
    TotalConnections: u32,
    StaticConnections: u32,
    StreamingConnections: u32,
    ActiveConnections: u32,
    ActiveStaticConnections: u32,
    ActiveStreamingConnections: u32,
    Total3DConnections: u32,
    Static3DConnections: u32,
    Streaming3DConnections: u32,
    Active3DConnections: u32,
    ActiveStatic3DConnections: u32,
    ActiveStreaming3DConnections: u32,
    TotalSampleMemory: u32,
    FreeSampleMemory: u32,
    LargestFreeContiguousSampleMemory: u32,
};

pub const KSWAVE_VOLUME = extern struct {
    LeftAttenuation: i32,
    RightAttenuation: i32,
};

pub const KSWAVE_BUFFER = extern struct {
    Attributes: u32,
    BufferSize: u32,
    BufferAddress: ?*anyopaque,
};

const CLSID_KSMUSIC_TECHNOLOGY_PORT_Value = Guid.initString("86c92e60-62e8-11cf-a5d6-28db04c10000");
pub const CLSID_KSMUSIC_TECHNOLOGY_PORT = &CLSID_KSMUSIC_TECHNOLOGY_PORT_Value;

const CLSID_KSMUSIC_TECHNOLOGY_SQSYNTH_Value = Guid.initString("0ecf4380-62e9-11cf-a5d6-28db04c10000");
pub const CLSID_KSMUSIC_TECHNOLOGY_SQSYNTH = &CLSID_KSMUSIC_TECHNOLOGY_SQSYNTH_Value;

const CLSID_KSMUSIC_TECHNOLOGY_FMSYNTH_Value = Guid.initString("252c5c80-62e9-11cf-a5d6-28db04c10000");
pub const CLSID_KSMUSIC_TECHNOLOGY_FMSYNTH = &CLSID_KSMUSIC_TECHNOLOGY_FMSYNTH_Value;

const CLSID_KSMUSIC_TECHNOLOGY_WAVETABLE_Value = Guid.initString("394ec7c0-62e9-11cf-a5d6-28db04c10000");
pub const CLSID_KSMUSIC_TECHNOLOGY_WAVETABLE = &CLSID_KSMUSIC_TECHNOLOGY_WAVETABLE_Value;

const CLSID_KSMUSIC_TECHNOLOGY_SWSYNTH_Value = Guid.initString("37407736-3620-11d1-85d3-0000f8754380");
pub const CLSID_KSMUSIC_TECHNOLOGY_SWSYNTH = &CLSID_KSMUSIC_TECHNOLOGY_SWSYNTH_Value;

pub const KSDATARANGE_MUSIC = extern struct {
    DataRange: KSDATAFORMAT,
    Technology: Guid,
    Channels: u32,
    Notes: u32,
    ChannelMask: u32,
};

const CLSID_KSPROPSETID_Cyclic_Value = Guid.initString("3ffeaea0-2bee-11cf-a5d6-28db04c10000");
pub const CLSID_KSPROPSETID_Cyclic = &CLSID_KSPROPSETID_Cyclic_Value;

pub const KSPROPERTY_CYCLIC = enum(i32) {
    N = 0,
};
pub const KSPROPERTY_CYCLIC_POSITION = KSPROPERTY_CYCLIC.N;

const CLSID_KSEVENTSETID_AudioControlChange_Value = Guid.initString("e85e9698-fa2f-11d1-95bd-00c04fb925d3");
pub const CLSID_KSEVENTSETID_AudioControlChange = &CLSID_KSEVENTSETID_AudioControlChange_Value;

pub const KSEVENT_AUDIO_CONTROL_CHANGE = enum(i32) {
    E = 0,
};
pub const KSEVENT_CONTROL_CHANGE = KSEVENT_AUDIO_CONTROL_CHANGE.E;

const CLSID_KSEVENTSETID_LoopedStreaming_Value = Guid.initString("4682b940-c6ef-11d0-96d8-00aa0051e51d");
pub const CLSID_KSEVENTSETID_LoopedStreaming = &CLSID_KSEVENTSETID_LoopedStreaming_Value;

pub const KSEVENT_LOOPEDSTREAMING = enum(i32) {
    N = 0,
};
pub const KSEVENT_LOOPEDSTREAMING_POSITION = KSEVENT_LOOPEDSTREAMING.N;

pub const LOOPEDSTREAMING_POSITION_EVENT_DATA = extern struct {
    KsEventData: KSEVENTDATA,
    Position: u64,
};

pub const KSNODEPROPERTY = extern struct {
    Property: KSIDENTIFIER,
    NodeId: u32,
    Reserved: u32,
};

pub const KSNODEPROPERTY_AUDIO_CHANNEL = extern struct {
    NodeProperty: KSNODEPROPERTY,
    Channel: i32,
    Reserved: u32,
};

pub const KSNODEPROPERTY_AUDIO_DEV_SPECIFIC = extern struct {
    NodeProperty: KSNODEPROPERTY,
    DevSpecificId: u32,
    DeviceInfo: u32,
    Length: u32,
};

const CLSID_KSDATAFORMAT_TYPE_MUSIC_Value = Guid.initString("e725d360-62cc-11cf-a5d6-28db04c10000");
pub const CLSID_KSDATAFORMAT_TYPE_MUSIC = &CLSID_KSDATAFORMAT_TYPE_MUSIC_Value;

const CLSID_KSDATAFORMAT_TYPE_MIDI_Value = Guid.initString("7364696d-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_TYPE_MIDI = &CLSID_KSDATAFORMAT_TYPE_MIDI_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MIDI_Value = Guid.initString("1d262760-e957-11cf-a5d6-28db04c10000");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MIDI = &CLSID_KSDATAFORMAT_SUBTYPE_MIDI_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MIDI_BUS_Value = Guid.initString("2ca15fa0-6cfe-11cf-a5d6-28db04c10000");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MIDI_BUS = &CLSID_KSDATAFORMAT_SUBTYPE_MIDI_BUS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_RIFFMIDI_Value = Guid.initString("4995daf0-9ee6-11d0-a40e-00a0c9223196");
pub const CLSID_KSDATAFORMAT_SUBTYPE_RIFFMIDI = &CLSID_KSDATAFORMAT_SUBTYPE_RIFFMIDI_Value;

pub const KSMUSICFORMAT = extern struct {
    TimeDeltaMs: u32,
    ByteCount: u32,
};

const CLSID_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM_Value = Guid.initString("36523b11-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM = &CLSID_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM_Value;

const CLSID_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET_Value = Guid.initString("36523b12-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET = &CLSID_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET_Value;

const CLSID_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER_Value = Guid.initString("36523b13-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER = &CLSID_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO_Value = Guid.initString("36523b21-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO = &CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO_Value = Guid.initString("36523b22-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO_Value = Guid.initString("36523b23-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO = &CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO_Value = Guid.initString("36523b24-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO_Value = Guid.initString("36523b25-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO_Value = Guid.initString("36523b31-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO_Value = Guid.initString("36523b32-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO_Value = Guid.initString("36523b33-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO_Value = Guid.initString("36523b34-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO_Value = Guid.initString("36523b35-8ee5-11d1-8ca3-0060b057664a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_DSS_VIDEO_Value = Guid.initString("a0af4f81-e163-11d0-bad9-00609744111a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_DSS_VIDEO = &CLSID_KSDATAFORMAT_SUBTYPE_DSS_VIDEO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_DSS_AUDIO_Value = Guid.initString("a0af4f82-e163-11d0-bad9-00609744111a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_DSS_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_DSS_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Packet_Value = Guid.initString("e436eb80-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Packet = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Packet_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Payload_Value = Guid.initString("e436eb81-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Payload = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Payload_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Video_Value = Guid.initString("e436eb86-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Video = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG1Video_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO_Value = Guid.initString("05589f82-c356-11ce-bf01-00aa0055595a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO_Value;

const CLSID_KSDATAFORMAT_TYPE_MPEG2_PES_Value = Guid.initString("e06d8020-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_TYPE_MPEG2_PES = &CLSID_KSDATAFORMAT_TYPE_MPEG2_PES_Value;

const CLSID_KSDATAFORMAT_TYPE_MPEG2_PROGRAM_Value = Guid.initString("e06d8022-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_TYPE_MPEG2_PROGRAM = &CLSID_KSDATAFORMAT_TYPE_MPEG2_PROGRAM_Value;

const CLSID_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT_Value = Guid.initString("e06d8023-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT = &CLSID_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO_Value = Guid.initString("e06d8026-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO_Value = Guid.initString("e06d80e3-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO_Value;

const CLSID_KSPROPSETID_Mpeg2Vid_Value = Guid.initString("c8e11b60-0cc9-11d0-bd69-003505c103a9");
pub const CLSID_KSPROPSETID_Mpeg2Vid = &CLSID_KSPROPSETID_Mpeg2Vid_Value;

pub const KSPROPERTY_MPEG2VID = enum(i32) {
    MODES = 0,
    CUR_MODE = 1,
    @"4_3_RECT" = 2,
    @"16_9_RECT" = 3,
    @"16_9_PANSCAN" = 4,
};
pub const KSPROPERTY_MPEG2VID_MODES = KSPROPERTY_MPEG2VID.MODES;
pub const KSPROPERTY_MPEG2VID_CUR_MODE = KSPROPERTY_MPEG2VID.CUR_MODE;
pub const KSPROPERTY_MPEG2VID_4_3_RECT = KSPROPERTY_MPEG2VID.@"4_3_RECT";
pub const KSPROPERTY_MPEG2VID_16_9_RECT = KSPROPERTY_MPEG2VID.@"16_9_RECT";
pub const KSPROPERTY_MPEG2VID_16_9_PANSCAN = KSPROPERTY_MPEG2VID.@"16_9_PANSCAN";

pub const KSMPEGVID_RECT = extern struct {
    StartX: u32,
    StartY: u32,
    EndX: u32,
    EndY: u32,
};

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO_Value = Guid.initString("e06d802b-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO_Value = Guid.initString("e06d80e5-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO_Value = Guid.initString("e06d8032-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO_Value = Guid.initString("e06d80e6-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_AC3_AUDIO_Value = Guid.initString("e06d802c-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_AC3_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_AC3_AUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_AC3_AUDIO_Value = Guid.initString("e06d80e4-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SPECIFIER_AC3_AUDIO = &CLSID_KSDATAFORMAT_SPECIFIER_AC3_AUDIO_Value;

const CLSID_KSPROPSETID_AC3_Value = Guid.initString("bfabe720-6e1f-11d0-bcf2-444553540000");
pub const CLSID_KSPROPSETID_AC3 = &CLSID_KSPROPSETID_AC3_Value;

pub const KSPROPERTY_AC3 = enum(i32) {
    ERROR_CONCEALMENT = 1,
    ALTERNATE_AUDIO = 2,
    DOWNMIX = 3,
    BIT_STREAM_MODE = 4,
    DIALOGUE_LEVEL = 5,
    LANGUAGE_CODE = 6,
    ROOM_TYPE = 7,
};
pub const KSPROPERTY_AC3_ERROR_CONCEALMENT = KSPROPERTY_AC3.ERROR_CONCEALMENT;
pub const KSPROPERTY_AC3_ALTERNATE_AUDIO = KSPROPERTY_AC3.ALTERNATE_AUDIO;
pub const KSPROPERTY_AC3_DOWNMIX = KSPROPERTY_AC3.DOWNMIX;
pub const KSPROPERTY_AC3_BIT_STREAM_MODE = KSPROPERTY_AC3.BIT_STREAM_MODE;
pub const KSPROPERTY_AC3_DIALOGUE_LEVEL = KSPROPERTY_AC3.DIALOGUE_LEVEL;
pub const KSPROPERTY_AC3_LANGUAGE_CODE = KSPROPERTY_AC3.LANGUAGE_CODE;
pub const KSPROPERTY_AC3_ROOM_TYPE = KSPROPERTY_AC3.ROOM_TYPE;

pub const KSAC3_ERROR_CONCEALMENT = extern struct {
    fRepeatPreviousBlock: BOOL,
    fErrorInCurrentBlock: BOOL,
};

pub const KSAC3_ALTERNATE_AUDIO = extern struct {
    fStereo: BOOL,
    DualMode: u32,
};

pub const KSAC3_DOWNMIX = extern struct {
    fDownMix: BOOL,
    fDolbySurround: BOOL,
};

pub const KSAC3_BIT_STREAM_MODE = extern struct {
    BitStreamMode: i32,
};

pub const KSAC3_DIALOGUE_LEVEL = extern struct {
    DialogueLevel: u32,
};

pub const KSAC3_ROOM_TYPE = extern struct {
    fLargeRoom: BOOL,
};

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_Value = Guid.initString("00000092-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO_Value = Guid.initString("00000164-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS_Value = Guid.initString("00000008-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1_Value = Guid.initString("00000003-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2_Value = Guid.initString("00000004-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3_Value = Guid.initString("00000005-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_AAC_Value = Guid.initString("00000006-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_AAC = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_AAC_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC_Value = Guid.initString("00000008-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO_Value = Guid.initString("00000009-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_Value = Guid.initString("0000000a-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS_Value = Guid.initString("0000010a-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD_Value = Guid.initString("0000000b-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1_Value = Guid.initString("0000010b-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2_Value = Guid.initString("0000030b-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP_Value = Guid.initString("0000000c-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20_Value = Guid.initString("0000010c-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21_Value = Guid.initString("0000030c-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21 = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DST_Value = Guid.initString("0000000d-0cea-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DST = &CLSID_KSDATAFORMAT_SUBTYPE_IEC61937_DST_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEGLAYER3_Value = Guid.initString("00000055-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEGLAYER3 = &CLSID_KSDATAFORMAT_SUBTYPE_MPEGLAYER3_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MPEG_HEAAC_Value = Guid.initString("00001610-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MPEG_HEAAC = &CLSID_KSDATAFORMAT_SUBTYPE_MPEG_HEAAC_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO2_Value = Guid.initString("00000161-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO2 = &CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO2_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO3_Value = Guid.initString("00000162-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO3 = &CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO3_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO_LOSSLESS_Value = Guid.initString("00000163-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO_LOSSLESS = &CLSID_KSDATAFORMAT_SUBTYPE_WMAUDIO_LOSSLESS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_DTS_AUDIO_Value = Guid.initString("e06d8033-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_DTS_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_DTS_AUDIO_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO_Value = Guid.initString("e06d8034-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO = &CLSID_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO_Value;

const CLSID_KSPROPSETID_AudioDecoderOut_Value = Guid.initString("6ca6e020-43bd-11d0-bd6a-003505c103a9");
pub const CLSID_KSPROPSETID_AudioDecoderOut = &CLSID_KSPROPSETID_AudioDecoderOut_Value;

pub const KSPROPERTY_AUDDECOUT = enum(i32) {
    MODES = 0,
    CUR_MODE = 1,
};
pub const KSPROPERTY_AUDDECOUT_MODES = KSPROPERTY_AUDDECOUT.MODES;
pub const KSPROPERTY_AUDDECOUT_CUR_MODE = KSPROPERTY_AUDDECOUT.CUR_MODE;

const CLSID_KSDATAFORMAT_SUBTYPE_SUBPICTURE_Value = Guid.initString("e06d802d-db46-11cf-b4d1-00805f6cbbea");
pub const CLSID_KSDATAFORMAT_SUBTYPE_SUBPICTURE = &CLSID_KSDATAFORMAT_SUBTYPE_SUBPICTURE_Value;

const CLSID_KSPROPSETID_DvdSubPic_Value = Guid.initString("ac390460-43af-11d0-bd6a-003505c103a9");
pub const CLSID_KSPROPSETID_DvdSubPic = &CLSID_KSPROPSETID_DvdSubPic_Value;

pub const KSPROPERTY_DVDSUBPIC = enum(i32) {
    PALETTE = 0,
    HLI = 1,
    COMPOSIT_ON = 2,
};
pub const KSPROPERTY_DVDSUBPIC_PALETTE = KSPROPERTY_DVDSUBPIC.PALETTE;
pub const KSPROPERTY_DVDSUBPIC_HLI = KSPROPERTY_DVDSUBPIC.HLI;
pub const KSPROPERTY_DVDSUBPIC_COMPOSIT_ON = KSPROPERTY_DVDSUBPIC.COMPOSIT_ON;

pub const KS_DVD_YCrCb = extern struct {
    Reserved: u8,
    Y: u8,
    Cr: u8,
    Cb: u8,
};

pub const KS_DVD_YUV = extern struct {
    Reserved: u8,
    Y: u8,
    V: u8,
    U: u8,
};

pub const KSPROPERTY_SPPAL = extern struct {
    sppal: [16]KS_DVD_YUV,
};

pub const KS_COLCON = extern struct {
    _bitfield1: u8,
    _bitfield2: u8,
    _bitfield3: u8,
    _bitfield4: u8,
};

pub const KSPROPERTY_SPHLI = extern struct {
    HLISS: u16,
    Reserved: u16,
    StartPTM: u32,
    EndPTM: u32,
    StartX: u16,
    StartY: u16,
    StopX: u16,
    StopY: u16,
    ColCon: KS_COLCON,
};

const CLSID_KSPROPSETID_CopyProt_Value = Guid.initString("0e8a0a40-6aef-11d0-9ed0-00a024ca19b3");
pub const CLSID_KSPROPSETID_CopyProt = &CLSID_KSPROPSETID_CopyProt_Value;

pub const KSPROPERTY_COPYPROT = enum(i32) {
    DVDCOPY_CHLG_KEY = 1,
    DVDCOPY_DVD_KEY1 = 2,
    DVDCOPY_DEC_KEY2 = 3,
    DVDCOPY_TITLE_KEY = 4,
    COPY_MACROVISION = 5,
    DVDCOPY_REGION = 6,
    DVDCOPY_SET_COPY_STATE = 7,
    DVDCOPY_DISC_KEY = 128,
};
pub const KSPROPERTY_DVDCOPY_CHLG_KEY = KSPROPERTY_COPYPROT.DVDCOPY_CHLG_KEY;
pub const KSPROPERTY_DVDCOPY_DVD_KEY1 = KSPROPERTY_COPYPROT.DVDCOPY_DVD_KEY1;
pub const KSPROPERTY_DVDCOPY_DEC_KEY2 = KSPROPERTY_COPYPROT.DVDCOPY_DEC_KEY2;
pub const KSPROPERTY_DVDCOPY_TITLE_KEY = KSPROPERTY_COPYPROT.DVDCOPY_TITLE_KEY;
pub const KSPROPERTY_COPY_MACROVISION = KSPROPERTY_COPYPROT.COPY_MACROVISION;
pub const KSPROPERTY_DVDCOPY_REGION = KSPROPERTY_COPYPROT.DVDCOPY_REGION;
pub const KSPROPERTY_DVDCOPY_SET_COPY_STATE = KSPROPERTY_COPYPROT.DVDCOPY_SET_COPY_STATE;
pub const KSPROPERTY_DVDCOPY_DISC_KEY = KSPROPERTY_COPYPROT.DVDCOPY_DISC_KEY;

pub const KS_DVDCOPY_CHLGKEY = extern struct {
    ChlgKey: [10]u8,
    Reserved: [2]u8,
};

pub const KS_DVDCOPY_BUSKEY = extern struct {
    BusKey: [5]u8,
    Reserved: [1]u8,
};

pub const KS_DVDCOPY_DISCKEY = extern struct {
    DiscKey: [2048]u8,
};

pub const KS_DVDCOPY_REGION = extern struct {
    Reserved: u8,
    RegionData: u8,
    Reserved2: [2]u8,
};

pub const KS_DVDCOPY_TITLEKEY = extern struct {
    KeyFlags: u32,
    ReservedNT: [2]u32,
    TitleKey: [6]u8,
    Reserved: [2]u8,
};

pub const KS_COPY_MACROVISION = extern struct {
    MACROVISIONLevel: u32,
};

pub const KS_DVDCOPY_SET_COPY_STATE = extern struct {
    DVDCopyState: u32,
};

pub const KS_DVDCOPYSTATE = enum(i32) {
    INITIALIZE = 0,
    INITIALIZE_TITLE = 1,
    AUTHENTICATION_NOT_REQUIRED = 2,
    AUTHENTICATION_REQUIRED = 3,
    DONE = 4,
};
pub const KS_DVDCOPYSTATE_INITIALIZE = KS_DVDCOPYSTATE.INITIALIZE;
pub const KS_DVDCOPYSTATE_INITIALIZE_TITLE = KS_DVDCOPYSTATE.INITIALIZE_TITLE;
pub const KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED = KS_DVDCOPYSTATE.AUTHENTICATION_NOT_REQUIRED;
pub const KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED = KS_DVDCOPYSTATE.AUTHENTICATION_REQUIRED;
pub const KS_DVDCOPYSTATE_DONE = KS_DVDCOPYSTATE.DONE;

pub const KS_COPY_MACROVISION_LEVEL = enum(i32) {
    DISABLED = 0,
    LEVEL1 = 1,
    LEVEL2 = 2,
    LEVEL3 = 3,
};
pub const KS_MACROVISION_DISABLED = KS_COPY_MACROVISION_LEVEL.DISABLED;
pub const KS_MACROVISION_LEVEL1 = KS_COPY_MACROVISION_LEVEL.LEVEL1;
pub const KS_MACROVISION_LEVEL2 = KS_COPY_MACROVISION_LEVEL.LEVEL2;
pub const KS_MACROVISION_LEVEL3 = KS_COPY_MACROVISION_LEVEL.LEVEL3;

const CLSID_KSCATEGORY_TVTUNER_Value = Guid.initString("a799a800-a46d-11d0-a18c-00a02401dcd4");
pub const CLSID_KSCATEGORY_TVTUNER = &CLSID_KSCATEGORY_TVTUNER_Value;

const CLSID_KSCATEGORY_CROSSBAR_Value = Guid.initString("a799a801-a46d-11d0-a18c-00a02401dcd4");
pub const CLSID_KSCATEGORY_CROSSBAR = &CLSID_KSCATEGORY_CROSSBAR_Value;

const CLSID_KSCATEGORY_TVAUDIO_Value = Guid.initString("a799a802-a46d-11d0-a18c-00a02401dcd4");
pub const CLSID_KSCATEGORY_TVAUDIO = &CLSID_KSCATEGORY_TVAUDIO_Value;

const CLSID_KSCATEGORY_VPMUX_Value = Guid.initString("a799a803-a46d-11d0-a18c-00a02401dcd4");
pub const CLSID_KSCATEGORY_VPMUX = &CLSID_KSCATEGORY_VPMUX_Value;

const CLSID_KSCATEGORY_VBICODEC_Value = Guid.initString("07dad660-22f1-11d1-a9f4-00c04fbbde8f");
pub const CLSID_KSCATEGORY_VBICODEC = &CLSID_KSCATEGORY_VBICODEC_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_VPVideo_Value = Guid.initString("5a9b6a40-1a22-11d1-bad9-00609744111a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_VPVideo = &CLSID_KSDATAFORMAT_SUBTYPE_VPVideo_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_VPVBI_Value = Guid.initString("5a9b6a41-1a22-11d1-bad9-00609744111a");
pub const CLSID_KSDATAFORMAT_SUBTYPE_VPVBI = &CLSID_KSDATAFORMAT_SUBTYPE_VPVBI_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO_Value = Guid.initString("05589f80-c356-11ce-bf01-00aa0055595a");
pub const CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO = &CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO2_Value = Guid.initString("f72a76a0-eb0a-11d0-ace4-0000c0cc16ba");
pub const CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO2 = &CLSID_KSDATAFORMAT_SPECIFIER_VIDEOINFO2_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_H264_VIDEO_Value = Guid.initString("2017be05-6629-4248-aaed-7e1a47bc9b9c");
pub const CLSID_KSDATAFORMAT_SPECIFIER_H264_VIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_H264_VIDEO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_JPEG_IMAGE_Value = Guid.initString("692fa379-d3e8-4651-b5b4-0b94b013eeaf");
pub const CLSID_KSDATAFORMAT_SPECIFIER_JPEG_IMAGE = &CLSID_KSDATAFORMAT_SPECIFIER_JPEG_IMAGE_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_IMAGE_Value = Guid.initString("692fa379-d3e8-4651-b5b4-0b94b013eeaf");
pub const CLSID_KSDATAFORMAT_SPECIFIER_IMAGE = &CLSID_KSDATAFORMAT_SPECIFIER_IMAGE_Value;

const CLSID_KSDATAFORMAT_TYPE_IMAGE_Value = Guid.initString("72178c23-e45b-11d5-bc2a-00b0d0f3f4ab");
pub const CLSID_KSDATAFORMAT_TYPE_IMAGE = &CLSID_KSDATAFORMAT_TYPE_IMAGE_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_JPEG_Value = Guid.initString("19e4a5aa-5662-4fc5-a0c0-1758028e1057");
pub const CLSID_KSDATAFORMAT_SUBTYPE_JPEG = &CLSID_KSDATAFORMAT_SUBTYPE_JPEG_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_IMAGE_RGB32_Value = Guid.initString("00000016-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_IMAGE_RGB32 = &CLSID_KSDATAFORMAT_SUBTYPE_IMAGE_RGB32_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L8_Value = Guid.initString("00000032-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L8 = &CLSID_KSDATAFORMAT_SUBTYPE_L8_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L8_IR_Value = Guid.initString("00000032-0002-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L8_IR = &CLSID_KSDATAFORMAT_SUBTYPE_L8_IR_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L8_CUSTOM_Value = Guid.initString("00000032-8000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L8_CUSTOM = &CLSID_KSDATAFORMAT_SUBTYPE_L8_CUSTOM_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L16_Value = Guid.initString("00000051-0000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L16 = &CLSID_KSDATAFORMAT_SUBTYPE_L16_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L16_IR_Value = Guid.initString("00000051-0002-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L16_IR = &CLSID_KSDATAFORMAT_SUBTYPE_L16_IR_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_D16_Value = Guid.initString("00000050-0004-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_D16 = &CLSID_KSDATAFORMAT_SUBTYPE_D16_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_L16_CUSTOM_Value = Guid.initString("00000051-8000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_L16_CUSTOM = &CLSID_KSDATAFORMAT_SUBTYPE_L16_CUSTOM_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_IR_Value = Guid.initString("47504a4d-0002-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_IR = &CLSID_KSDATAFORMAT_SUBTYPE_MJPG_IR_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_DEPTH_Value = Guid.initString("47504a4d-0004-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_DEPTH = &CLSID_KSDATAFORMAT_SUBTYPE_MJPG_DEPTH_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_CUSTOM_Value = Guid.initString("47504a4d-8000-0010-8000-00aa00389b71");
pub const CLSID_KSDATAFORMAT_SUBTYPE_MJPG_CUSTOM = &CLSID_KSDATAFORMAT_SUBTYPE_MJPG_CUSTOM_Value;

const CLSID_KSDATAFORMAT_TYPE_ANALOGVIDEO_Value = Guid.initString("0482dde1-7817-11cf-8a03-00aa006ecb65");
pub const CLSID_KSDATAFORMAT_TYPE_ANALOGVIDEO = &CLSID_KSDATAFORMAT_TYPE_ANALOGVIDEO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO_Value = Guid.initString("0482dde0-7817-11cf-8a03-00aa006ecb65");
pub const CLSID_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO = &CLSID_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO_Value;

const CLSID_KSDATAFORMAT_TYPE_ANALOGAUDIO_Value = Guid.initString("0482dee1-7817-11cf-8a03-00aa006ecb65");
pub const CLSID_KSDATAFORMAT_TYPE_ANALOGAUDIO = &CLSID_KSDATAFORMAT_TYPE_ANALOGAUDIO_Value;

const CLSID_KSDATAFORMAT_SPECIFIER_VBI_Value = Guid.initString("f72a76e0-eb0a-11d0-ace4-0000c0cc16ba");
pub const CLSID_KSDATAFORMAT_SPECIFIER_VBI = &CLSID_KSDATAFORMAT_SPECIFIER_VBI_Value;

const CLSID_KSDATAFORMAT_TYPE_VBI_Value = Guid.initString("f72a76e1-eb0a-11d0-ace4-0000c0cc16ba");
pub const CLSID_KSDATAFORMAT_TYPE_VBI = &CLSID_KSDATAFORMAT_TYPE_VBI_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_RAW8_Value = Guid.initString("ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf");
pub const CLSID_KSDATAFORMAT_SUBTYPE_RAW8 = &CLSID_KSDATAFORMAT_SUBTYPE_RAW8_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_CC_Value = Guid.initString("33214cc1-011f-11d2-b4b1-00a0d102cfbe");
pub const CLSID_KSDATAFORMAT_SUBTYPE_CC = &CLSID_KSDATAFORMAT_SUBTYPE_CC_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_NABTS_Value = Guid.initString("f72a76e2-eb0a-11d0-ace4-0000c0cc16ba");
pub const CLSID_KSDATAFORMAT_SUBTYPE_NABTS = &CLSID_KSDATAFORMAT_SUBTYPE_NABTS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_TELETEXT_Value = Guid.initString("f72a76e3-eb0a-11d0-ace4-0000c0cc16ba");
pub const CLSID_KSDATAFORMAT_SUBTYPE_TELETEXT = &CLSID_KSDATAFORMAT_SUBTYPE_TELETEXT_Value;

pub const KS_RGBQUAD = extern struct {
    rgbBlue: u8,
    rgbGreen: u8,
    rgbRed: u8,
    rgbReserved: u8,
};

pub const KS_BITMAPINFOHEADER = extern struct {
    biSize: u32,
    biWidth: i32,
    biHeight: i32,
    biPlanes: u16,
    biBitCount: u16,
    biCompression: u32,
    biSizeImage: u32,
    biXPelsPerMeter: i32,
    biYPelsPerMeter: i32,
    biClrUsed: u32,
    biClrImportant: u32,
};

pub const KS_TRUECOLORINFO = extern struct {
    dwBitMasks: [3]u32,
    bmiColors: [256]KS_RGBQUAD,
};

pub const KS_VIDEOINFOHEADER = extern struct {
    rcSource: RECT,
    rcTarget: RECT,
    dwBitRate: u32,
    dwBitErrorRate: u32,
    AvgTimePerFrame: i64,
    bmiHeader: KS_BITMAPINFOHEADER,
};

pub const KS_VIDEOINFO = extern struct {
    rcSource: RECT,
    rcTarget: RECT,
    dwBitRate: u32,
    dwBitErrorRate: u32,
    AvgTimePerFrame: i64,
    bmiHeader: KS_BITMAPINFOHEADER,
    Anonymous: extern union {
        bmiColors: [256]KS_RGBQUAD,
        dwBitMasks: [3]u32,
        TrueColorInfo: KS_TRUECOLORINFO,
    },
};

pub const KS_VBIINFOHEADER = extern struct {
    StartLine: u32,
    EndLine: u32,
    SamplingFrequency: u32,
    MinLineStartTime: u32,
    MaxLineStartTime: u32,
    ActualLineStartTime: u32,
    ActualLineEndTime: u32,
    VideoStandard: u32,
    SamplesPerLine: u32,
    StrideInBytes: u32,
    BufferSize: u32,
};

pub const KS_AnalogVideoInfo = extern struct {
    rcSource: RECT,
    rcTarget: RECT,
    dwActiveWidth: u32,
    dwActiveHeight: u32,
    AvgTimePerFrame: i64,
};

pub const KS_TVTUNER_CHANGE_INFO = extern struct {
    dwFlags: u32,
    dwCountryCode: u32,
    dwAnalogVideoStandard: u32,
    dwChannel: u32,
};

pub const KS_MPEG2Level = enum(i32) {
    Low = 0,
    Main = 1,
    High1440 = 2,
    High = 3,
};
pub const KS_MPEG2Level_Low = KS_MPEG2Level.Low;
pub const KS_MPEG2Level_Main = KS_MPEG2Level.Main;
pub const KS_MPEG2Level_High1440 = KS_MPEG2Level.High1440;
pub const KS_MPEG2Level_High = KS_MPEG2Level.High;

pub const KS_MPEG2Profile = enum(i32) {
    Simple = 0,
    Main = 1,
    SNRScalable = 2,
    SpatiallyScalable = 3,
    High = 4,
};
pub const KS_MPEG2Profile_Simple = KS_MPEG2Profile.Simple;
pub const KS_MPEG2Profile_Main = KS_MPEG2Profile.Main;
pub const KS_MPEG2Profile_SNRScalable = KS_MPEG2Profile.SNRScalable;
pub const KS_MPEG2Profile_SpatiallyScalable = KS_MPEG2Profile.SpatiallyScalable;
pub const KS_MPEG2Profile_High = KS_MPEG2Profile.High;

pub const KS_VIDEOINFOHEADER2 = extern struct {
    rcSource: RECT,
    rcTarget: RECT,
    dwBitRate: u32,
    dwBitErrorRate: u32,
    AvgTimePerFrame: i64,
    dwInterlaceFlags: u32,
    dwCopyProtectFlags: u32,
    dwPictAspectRatioX: u32,
    dwPictAspectRatioY: u32,
    Anonymous: extern union {
        dwControlFlags: u32,
        dwReserved1: u32,
    },
    dwReserved2: u32,
    bmiHeader: KS_BITMAPINFOHEADER,
};

pub const KS_MPEG1VIDEOINFO = extern struct {
    hdr: KS_VIDEOINFOHEADER,
    dwStartTimeCode: u32,
    cbSequenceHeader: u32,
    bSequenceHeader: [1]u8,
};

pub const KS_MPEGVIDEOINFO2 = extern struct {
    hdr: KS_VIDEOINFOHEADER2,
    dwStartTimeCode: u32,
    cbSequenceHeader: u32,
    dwProfile: u32,
    dwLevel: u32,
    dwFlags: u32,
    bSequenceHeader: [1]u32,
};

pub const KS_H264VIDEOINFO = extern struct {
    wWidth: u16,
    wHeight: u16,
    wSARwidth: u16,
    wSARheight: u16,
    wProfile: u16,
    bLevelIDC: u8,
    wConstrainedToolset: u16,
    bmSupportedUsages: u32,
    bmCapabilities: u16,
    bmSVCCapabilities: u32,
    bmMVCCapabilities: u32,
    dwFrameInterval: u32,
    bMaxCodecConfigDelay: u8,
    bmSupportedSliceModes: u8,
    bmSupportedSyncFrameTypes: u8,
    bResolutionScaling: u8,
    bSimulcastSupport: u8,
    bmSupportedRateControlModes: u8,
    wMaxMBperSecOneResolutionNoScalability: u16,
    wMaxMBperSecTwoResolutionsNoScalability: u16,
    wMaxMBperSecThreeResolutionsNoScalability: u16,
    wMaxMBperSecFourResolutionsNoScalability: u16,
    wMaxMBperSecOneResolutionTemporalScalability: u16,
    wMaxMBperSecTwoResolutionsTemporalScalablility: u16,
    wMaxMBperSecThreeResolutionsTemporalScalability: u16,
    wMaxMBperSecFourResolutionsTemporalScalability: u16,
    wMaxMBperSecOneResolutionTemporalQualityScalability: u16,
    wMaxMBperSecTwoResolutionsTemporalQualityScalability: u16,
    wMaxMBperSecThreeResolutionsTemporalQualityScalablity: u16,
    wMaxMBperSecFourResolutionsTemporalQualityScalability: u16,
    wMaxMBperSecOneResolutionTemporalSpatialScalability: u16,
    wMaxMBperSecTwoResolutionsTemporalSpatialScalability: u16,
    wMaxMBperSecThreeResolutionsTemporalSpatialScalablity: u16,
    wMaxMBperSecFourResolutionsTemporalSpatialScalability: u16,
    wMaxMBperSecOneResolutionFullScalability: u16,
    wMaxMBperSecTwoResolutionsFullScalability: u16,
    wMaxMBperSecThreeResolutionsFullScalability: u16,
    wMaxMBperSecFourResolutionsFullScalability: u16,
};

pub const KS_MPEAUDIOINFO = extern struct {
    dwFlags: u32,
    dwReserved1: u32,
    dwReserved2: u32,
    dwReserved3: u32,
};

pub const KS_DATAFORMAT_VIDEOINFOHEADER = extern struct {
    DataFormat: KSDATAFORMAT,
    VideoInfoHeader: KS_VIDEOINFOHEADER,
};

pub const KS_DATAFORMAT_VIDEOINFOHEADER2 = extern struct {
    DataFormat: KSDATAFORMAT,
    VideoInfoHeader2: KS_VIDEOINFOHEADER2,
};

pub const KS_DATAFORMAT_MPEGVIDEOINFO2 = extern struct {
    DataFormat: KSDATAFORMAT,
    MpegVideoInfoHeader2: KS_MPEGVIDEOINFO2,
};

pub const KS_DATAFORMAT_H264VIDEOINFO = extern struct {
    DataFormat: KSDATAFORMAT,
    H264VideoInfoHeader: KS_H264VIDEOINFO,
};

pub const KS_DATAFORMAT_IMAGEINFO = extern struct {
    DataFormat: KSDATAFORMAT,
    ImageInfoHeader: KS_BITMAPINFOHEADER,
};

pub const KS_DATAFORMAT_VIDEOINFO_PALETTE = extern struct {
    DataFormat: KSDATAFORMAT,
    VideoInfo: KS_VIDEOINFO,
};

pub const KS_DATAFORMAT_VBIINFOHEADER = extern struct {
    DataFormat: KSDATAFORMAT,
    VBIInfoHeader: KS_VBIINFOHEADER,
};

pub const KS_VIDEO_STREAM_CONFIG_CAPS = extern struct {
    guid: Guid,
    VideoStandard: u32,
    InputSize: SIZE,
    MinCroppingSize: SIZE,
    MaxCroppingSize: SIZE,
    CropGranularityX: i32,
    CropGranularityY: i32,
    CropAlignX: i32,
    CropAlignY: i32,
    MinOutputSize: SIZE,
    MaxOutputSize: SIZE,
    OutputGranularityX: i32,
    OutputGranularityY: i32,
    StretchTapsX: i32,
    StretchTapsY: i32,
    ShrinkTapsX: i32,
    ShrinkTapsY: i32,
    MinFrameInterval: i64,
    MaxFrameInterval: i64,
    MinBitsPerSecond: i32,
    MaxBitsPerSecond: i32,
};

pub const KS_DATARANGE_VIDEO = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfoHeader: KS_VIDEOINFOHEADER,
};

pub const KS_DATARANGE_VIDEO2 = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfoHeader: KS_VIDEOINFOHEADER2,
};

pub const KS_DATARANGE_MPEG1_VIDEO = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfoHeader: KS_MPEG1VIDEOINFO,
};

pub const KS_DATARANGE_MPEG2_VIDEO = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfoHeader: KS_MPEGVIDEOINFO2,
};

pub const KS_DATARANGE_H264_VIDEO = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfoHeader: KS_H264VIDEOINFO,
};

pub const KS_DATARANGE_IMAGE = extern struct {
    DataRange: KSDATAFORMAT,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    ImageInfoHeader: KS_BITMAPINFOHEADER,
};

pub const KS_DATARANGE_VIDEO_PALETTE = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VideoInfo: KS_VIDEOINFO,
};

pub const KS_DATARANGE_VIDEO_VBI = extern struct {
    DataRange: KSDATAFORMAT,
    bFixedSizeSamples: BOOL,
    bTemporalCompression: BOOL,
    StreamDescriptionFlags: u32,
    MemoryAllocationFlags: u32,
    ConfigCaps: KS_VIDEO_STREAM_CONFIG_CAPS,
    VBIInfoHeader: KS_VBIINFOHEADER,
};

pub const KS_DATARANGE_ANALOGVIDEO = extern struct {
    DataRange: KSDATAFORMAT,
    AnalogVideoInfo: KS_AnalogVideoInfo,
};

const CLSID_KSPROPSETID_VBICAP_PROPERTIES_Value = Guid.initString("f162c607-7b35-496f-ad7f-2dca3b46b718");
pub const CLSID_KSPROPSETID_VBICAP_PROPERTIES = &CLSID_KSPROPSETID_VBICAP_PROPERTIES_Value;

pub const KSPROPERTY_VBICAP = enum(i32) {
    N = 1,
};
pub const KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = KSPROPERTY_VBICAP.N;

pub const VBICAP_PROPERTIES_PROTECTION_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    Status: u32,
};

const CLSID_KSDATAFORMAT_TYPE_NABTS_Value = Guid.initString("e757bca0-39ac-11d1-a9f5-00c04fbbde8f");
pub const CLSID_KSDATAFORMAT_TYPE_NABTS = &CLSID_KSDATAFORMAT_TYPE_NABTS_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_NABTS_FEC_Value = Guid.initString("e757bca1-39ac-11d1-a9f5-00c04fbbde8f");
pub const CLSID_KSDATAFORMAT_SUBTYPE_NABTS_FEC = &CLSID_KSDATAFORMAT_SUBTYPE_NABTS_FEC_Value;

pub const NABTSFEC_BUFFER = extern struct {
    dataSize: u32,
    groupID: u16,
    Reserved: u16,
    data: [448]u8,
};

const CLSID_KSPROPSETID_VBICodecFiltering_Value = Guid.initString("cafeb0ca-8715-11d0-bd6a-0035c0edbabe");
pub const CLSID_KSPROPSETID_VBICodecFiltering = &CLSID_KSPROPSETID_VBICodecFiltering_Value;

pub const KSPROPERTY_VBICODECFILTERING = enum(i32) {
    CANLINES_REQUESTED_BIT_ARRAY = 1,
    CANLINES_DISCOVERED_BIT_ARRAY = 2,
    UBSTREAMS_REQUESTED_BIT_ARRAY = 3,
    UBSTREAMS_DISCOVERED_BIT_ARRAY = 4,
    TATISTICS = 5,
};
pub const KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = KSPROPERTY_VBICODECFILTERING.CANLINES_REQUESTED_BIT_ARRAY;
pub const KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY = KSPROPERTY_VBICODECFILTERING.CANLINES_DISCOVERED_BIT_ARRAY;
pub const KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY = KSPROPERTY_VBICODECFILTERING.UBSTREAMS_REQUESTED_BIT_ARRAY;
pub const KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY = KSPROPERTY_VBICODECFILTERING.UBSTREAMS_DISCOVERED_BIT_ARRAY;
pub const KSPROPERTY_VBICODECFILTERING_STATISTICS = KSPROPERTY_VBICODECFILTERING.TATISTICS;

pub const VBICODECFILTERING_SCANLINES = extern struct {
    DwordBitArray: [32]u32,
};

pub const VBICODECFILTERING_NABTS_SUBSTREAMS = extern struct {
    SubstreamMask: [128]u32,
};

pub const VBICODECFILTERING_CC_SUBSTREAMS = extern struct {
    SubstreamMask: u32,
};

pub const CC_BYTE_PAIR = extern struct {
    Decoded: [2]u8,
    Reserved: u16,
};

pub const CC_HW_FIELD = extern struct {
    ScanlinesRequested: VBICODECFILTERING_SCANLINES,
    fieldFlags: u32,
    PictureNumber: i64,
    Lines: [12]CC_BYTE_PAIR,
};

pub const NABTS_BUFFER_LINE = extern struct {
    Confidence: u8,
    Bytes: [36]u8,
};

pub const NABTS_BUFFER = extern struct {
    ScanlinesRequested: VBICODECFILTERING_SCANLINES align(1),
    PictureNumber: i64 align(1),
    NabtsLines: [11]NABTS_BUFFER_LINE align(1),
};

pub const WST_BUFFER_LINE = extern struct {
    Confidence: u8,
    Bytes: [42]u8,
};

pub const WST_BUFFER = extern struct {
    ScanlinesRequested: VBICODECFILTERING_SCANLINES,
    WstLines: [17]WST_BUFFER_LINE,
};

pub const VBICODECFILTERING_STATISTICS_COMMON = extern struct {
    InputSRBsProcessed: u32,
    OutputSRBsProcessed: u32,
    SRBsIgnored: u32,
    InputSRBsMissing: u32,
    OutputSRBsMissing: u32,
    OutputFailures: u32,
    InternalErrors: u32,
    ExternalErrors: u32,
    InputDiscontinuities: u32,
    DSPFailures: u32,
    TvTunerChanges: u32,
    VBIHeaderChanges: u32,
    LineConfidenceAvg: u32,
    BytesOutput: u32,
};

pub const VBICODECFILTERING_STATISTICS_COMMON_PIN = extern struct {
    SRBsProcessed: u32,
    SRBsIgnored: u32,
    SRBsMissing: u32,
    InternalErrors: u32,
    ExternalErrors: u32,
    Discontinuities: u32,
    LineConfidenceAvg: u32,
    BytesOutput: u32,
};

pub const VBICODECFILTERING_STATISTICS_NABTS = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON,
    FECBundleBadLines: u32,
    FECQueueOverflows: u32,
    FECCorrectedLines: u32,
    FECUncorrectableLines: u32,
    BundlesProcessed: u32,
    BundlesSent2IP: u32,
    FilteredLines: u32,
};

pub const VBICODECFILTERING_STATISTICS_NABTS_PIN = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON_PIN,
};

pub const VBICODECFILTERING_STATISTICS_CC = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON,
};

pub const VBICODECFILTERING_STATISTICS_CC_PIN = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON_PIN,
};

pub const VBICODECFILTERING_STATISTICS_TELETEXT = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON,
};

pub const VBICODECFILTERING_STATISTICS_TELETEXT_PIN = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON_PIN,
};

pub const KSPROPERTY_VBICODECFILTERING_SCANLINES_S = extern struct {
    Property: KSIDENTIFIER,
    Scanlines: VBICODECFILTERING_SCANLINES,
};

pub const KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S = extern struct {
    Property: KSIDENTIFIER,
    Substreams: VBICODECFILTERING_NABTS_SUBSTREAMS,
};

pub const KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S = extern struct {
    Property: KSIDENTIFIER,
    Substreams: VBICODECFILTERING_CC_SUBSTREAMS,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_COMMON,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_COMMON_PIN,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_NABTS,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_NABTS_PIN,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_CC,
};

pub const KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_CC_PIN,
};

const CLSID_PINNAME_VIDEO_CAPTURE_Value = Guid.initString("fb6c4281-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_CAPTURE = &CLSID_PINNAME_VIDEO_CAPTURE_Value;

const CLSID_PINNAME_VIDEO_CC_CAPTURE_Value = Guid.initString("1aad8061-012d-11d2-b4b1-00a0d102cfbe");
pub const CLSID_PINNAME_VIDEO_CC_CAPTURE = &CLSID_PINNAME_VIDEO_CC_CAPTURE_Value;

const CLSID_PINNAME_VIDEO_NABTS_CAPTURE_Value = Guid.initString("29703660-498a-11d2-b4b1-00a0d102cfbe");
pub const CLSID_PINNAME_VIDEO_NABTS_CAPTURE = &CLSID_PINNAME_VIDEO_NABTS_CAPTURE_Value;

const CLSID_PINNAME_VIDEO_PREVIEW_Value = Guid.initString("fb6c4282-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_PREVIEW = &CLSID_PINNAME_VIDEO_PREVIEW_Value;

const CLSID_PINNAME_VIDEO_ANALOGVIDEOIN_Value = Guid.initString("fb6c4283-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_ANALOGVIDEOIN = &CLSID_PINNAME_VIDEO_ANALOGVIDEOIN_Value;

const CLSID_PINNAME_VIDEO_VBI_Value = Guid.initString("fb6c4284-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_VBI = &CLSID_PINNAME_VIDEO_VBI_Value;

const CLSID_PINNAME_VIDEO_VIDEOPORT_Value = Guid.initString("fb6c4285-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_VIDEOPORT = &CLSID_PINNAME_VIDEO_VIDEOPORT_Value;

const CLSID_PINNAME_VIDEO_NABTS_Value = Guid.initString("fb6c4286-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_NABTS = &CLSID_PINNAME_VIDEO_NABTS_Value;

const CLSID_PINNAME_VIDEO_EDS_Value = Guid.initString("fb6c4287-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_EDS = &CLSID_PINNAME_VIDEO_EDS_Value;

const CLSID_PINNAME_VIDEO_TELETEXT_Value = Guid.initString("fb6c4288-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_TELETEXT = &CLSID_PINNAME_VIDEO_TELETEXT_Value;

const CLSID_PINNAME_VIDEO_CC_Value = Guid.initString("fb6c4289-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_CC = &CLSID_PINNAME_VIDEO_CC_Value;

const CLSID_PINNAME_VIDEO_STILL_Value = Guid.initString("fb6c428a-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_STILL = &CLSID_PINNAME_VIDEO_STILL_Value;

const CLSID_PINNAME_IMAGE_Value = Guid.initString("38a0cd98-d49b-4ce8-b48a-344667a17830");
pub const CLSID_PINNAME_IMAGE = &CLSID_PINNAME_IMAGE_Value;

const CLSID_PINNAME_VIDEO_TIMECODE_Value = Guid.initString("fb6c428b-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_TIMECODE = &CLSID_PINNAME_VIDEO_TIMECODE_Value;

const CLSID_PINNAME_VIDEO_VIDEOPORT_VBI_Value = Guid.initString("fb6c428c-0353-11d1-905f-0000c0cc16ba");
pub const CLSID_PINNAME_VIDEO_VIDEOPORT_VBI = &CLSID_PINNAME_VIDEO_VIDEOPORT_VBI_Value;

pub const CAPTURE_MEMORY_ALLOCATION_FLAGS = enum(i32) {
    INVALID = 0,
    SYSTEM = 1,
    VRAM = 2,
    SYSTEM_AGP = 4,
    VRAM_MAPPED = 8,
    SECURE_BUFFER = 16,
};
pub const KS_CAPTURE_ALLOC_INVALID = CAPTURE_MEMORY_ALLOCATION_FLAGS.INVALID;
pub const KS_CAPTURE_ALLOC_SYSTEM = CAPTURE_MEMORY_ALLOCATION_FLAGS.SYSTEM;
pub const KS_CAPTURE_ALLOC_VRAM = CAPTURE_MEMORY_ALLOCATION_FLAGS.VRAM;
pub const KS_CAPTURE_ALLOC_SYSTEM_AGP = CAPTURE_MEMORY_ALLOCATION_FLAGS.SYSTEM_AGP;
pub const KS_CAPTURE_ALLOC_VRAM_MAPPED = CAPTURE_MEMORY_ALLOCATION_FLAGS.VRAM_MAPPED;
pub const KS_CAPTURE_ALLOC_SECURE_BUFFER = CAPTURE_MEMORY_ALLOCATION_FLAGS.SECURE_BUFFER;

const CLSID_KSPROPSETID_VramCapture_Value = Guid.initString("e73face3-2880-4902-b799-88d0cd634e0f");
pub const CLSID_KSPROPSETID_VramCapture = &CLSID_KSPROPSETID_VramCapture_Value;

pub const KSPROPERTY_VIDMEM_TRANSPORT = enum(i32) {
    DISPLAY_ADAPTER_GUID = 1,
    PREFERRED_CAPTURE_SURFACE = 2,
    CURRENT_CAPTURE_SURFACE = 3,
    MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS = 4,
};
pub const KSPROPERTY_DISPLAY_ADAPTER_GUID = KSPROPERTY_VIDMEM_TRANSPORT.DISPLAY_ADAPTER_GUID;
pub const KSPROPERTY_PREFERRED_CAPTURE_SURFACE = KSPROPERTY_VIDMEM_TRANSPORT.PREFERRED_CAPTURE_SURFACE;
pub const KSPROPERTY_CURRENT_CAPTURE_SURFACE = KSPROPERTY_VIDMEM_TRANSPORT.CURRENT_CAPTURE_SURFACE;
pub const KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS = KSPROPERTY_VIDMEM_TRANSPORT.MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS;

pub const VRAM_SURFACE_INFO = extern struct {
    hSurface: usize,
    VramPhysicalAddress: i64,
    cbCaptured: u32,
    dwWidth: u32,
    dwHeight: u32,
    dwLinearSize: u32,
    lPitch: i32,
    ullReserved: [16]u64,
};

pub const VRAM_SURFACE_INFO_PROPERTY_S = extern struct {
    Property: KSIDENTIFIER,
    pVramSurfaceInfo: ?*VRAM_SURFACE_INFO,
};

pub const SECURE_BUFFER_INFO = extern struct {
    guidBufferIdentifier: Guid,
    cbBufferSize: u32,
    cbCaptured: u32,
    ullReserved: [16]u64,
};

const CLSID_KS_SECURE_CAMERA_SCENARIO_ID_Value = Guid.initString("ae53fc6e-8d89-4488-9d2e-4d008731c5fd");
pub const CLSID_KS_SECURE_CAMERA_SCENARIO_ID = &CLSID_KS_SECURE_CAMERA_SCENARIO_ID_Value;

const CLSID_KSPROPSETID_MPEG4_MediaType_Attributes_Value = Guid.initString("ff6c4bfa-07a9-4c7b-a237-672f9d68065f");
pub const CLSID_KSPROPSETID_MPEG4_MediaType_Attributes = &CLSID_KSPROPSETID_MPEG4_MediaType_Attributes_Value;

pub const KSPROPERTY_MPEG4_MEDIATYPE_ATTRIBUTES = enum(i32) {
    X = 1,
};
pub const KSPROPERTY_MPEG4_MEDIATYPE_SD_BOX = KSPROPERTY_MPEG4_MEDIATYPE_ATTRIBUTES.X;

const CLSID_KSEVENTSETID_DynamicFormatChange_Value = Guid.initString("162ac456-83d7-4239-96df-c75ffa138bc6");
pub const CLSID_KSEVENTSETID_DynamicFormatChange = &CLSID_KSEVENTSETID_DynamicFormatChange_Value;

pub const KSEVENT_DYNAMICFORMATCHANGE = enum(i32) {
    E = 0,
};
pub const KSEVENT_DYNAMIC_FORMAT_CHANGE = KSEVENT_DYNAMICFORMATCHANGE.E;

pub const KS_FRAME_INFO = extern struct {
    ExtendedHeaderSize: u32,
    dwFrameFlags: u32,
    PictureNumber: i64,
    DropCount: i64,
    hDirectDraw: ?HANDLE,
    hSurfaceHandle: ?HANDLE,
    DirectDrawRect: RECT,
    Anonymous1: extern union {
        lSurfacePitch: i32,
        Reserved1: u32,
    },
    Reserved2: u32,
    Anonymous2: extern union {
        Anonymous: extern struct {
            Reserved3: u32,
            Reserved4: u32,
        },
        FrameCompletionNumber: u64,
    },
};

pub const KS_VBI_FRAME_INFO = extern struct {
    ExtendedHeaderSize: u32,
    dwFrameFlags: u32,
    PictureNumber: i64,
    DropCount: i64,
    dwSamplingFrequency: u32,
    TvTunerChangeInfo: KS_TVTUNER_CHANGE_INFO,
    VBIInfoHeader: KS_VBIINFOHEADER,
};

pub const KS_AnalogVideoStandard = enum(i32) {
    None = 0,
    NTSC_M = 1,
    NTSC_M_J = 2,
    NTSC_433 = 4,
    PAL_B = 16,
    PAL_D = 32,
    PAL_G = 64,
    PAL_H = 128,
    PAL_I = 256,
    PAL_M = 512,
    PAL_N = 1024,
    PAL_60 = 2048,
    SECAM_B = 4096,
    SECAM_D = 8192,
    SECAM_G = 16384,
    SECAM_H = 32768,
    SECAM_K = 65536,
    SECAM_K1 = 131072,
    SECAM_L = 262144,
    SECAM_L1 = 524288,
    PAL_N_COMBO = 1048576,
};
pub const KS_AnalogVideo_None = KS_AnalogVideoStandard.None;
pub const KS_AnalogVideo_NTSC_M = KS_AnalogVideoStandard.NTSC_M;
pub const KS_AnalogVideo_NTSC_M_J = KS_AnalogVideoStandard.NTSC_M_J;
pub const KS_AnalogVideo_NTSC_433 = KS_AnalogVideoStandard.NTSC_433;
pub const KS_AnalogVideo_PAL_B = KS_AnalogVideoStandard.PAL_B;
pub const KS_AnalogVideo_PAL_D = KS_AnalogVideoStandard.PAL_D;
pub const KS_AnalogVideo_PAL_G = KS_AnalogVideoStandard.PAL_G;
pub const KS_AnalogVideo_PAL_H = KS_AnalogVideoStandard.PAL_H;
pub const KS_AnalogVideo_PAL_I = KS_AnalogVideoStandard.PAL_I;
pub const KS_AnalogVideo_PAL_M = KS_AnalogVideoStandard.PAL_M;
pub const KS_AnalogVideo_PAL_N = KS_AnalogVideoStandard.PAL_N;
pub const KS_AnalogVideo_PAL_60 = KS_AnalogVideoStandard.PAL_60;
pub const KS_AnalogVideo_SECAM_B = KS_AnalogVideoStandard.SECAM_B;
pub const KS_AnalogVideo_SECAM_D = KS_AnalogVideoStandard.SECAM_D;
pub const KS_AnalogVideo_SECAM_G = KS_AnalogVideoStandard.SECAM_G;
pub const KS_AnalogVideo_SECAM_H = KS_AnalogVideoStandard.SECAM_H;
pub const KS_AnalogVideo_SECAM_K = KS_AnalogVideoStandard.SECAM_K;
pub const KS_AnalogVideo_SECAM_K1 = KS_AnalogVideoStandard.SECAM_K1;
pub const KS_AnalogVideo_SECAM_L = KS_AnalogVideoStandard.SECAM_L;
pub const KS_AnalogVideo_SECAM_L1 = KS_AnalogVideoStandard.SECAM_L1;
pub const KS_AnalogVideo_PAL_N_COMBO = KS_AnalogVideoStandard.PAL_N_COMBO;

const CLSID_PROPSETID_ALLOCATOR_CONTROL_Value = Guid.initString("53171960-148e-11d2-9979-0000c0cc16ba");
pub const CLSID_PROPSETID_ALLOCATOR_CONTROL = &CLSID_PROPSETID_ALLOCATOR_CONTROL_Value;

pub const KSPROPERTY_ALLOCATOR_CONTROL = enum(i32) {
    HONOR_COUNT = 0,
    SURFACE_SIZE = 1,
    CAPTURE_CAPS = 2,
    CAPTURE_INTERLEAVE = 3,
};
pub const KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT = KSPROPERTY_ALLOCATOR_CONTROL.HONOR_COUNT;
pub const KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE = KSPROPERTY_ALLOCATOR_CONTROL.SURFACE_SIZE;
pub const KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS = KSPROPERTY_ALLOCATOR_CONTROL.CAPTURE_CAPS;
pub const KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE = KSPROPERTY_ALLOCATOR_CONTROL.CAPTURE_INTERLEAVE;

pub const KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S = extern struct {
    CX: u32,
    CY: u32,
};

pub const KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S = extern struct {
    InterleavedCapSupported: u32,
};

pub const KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S = extern struct {
    InterleavedCapPossible: u32,
};

const CLSID_PROPSETID_VIDCAP_VIDEOPROCAMP_Value = Guid.initString("c6e13360-30ac-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_VIDEOPROCAMP = &CLSID_PROPSETID_VIDCAP_VIDEOPROCAMP_Value;

pub const KSPROPERTY_VIDCAP_VIDEOPROCAMP = enum(i32) {
    BRIGHTNESS = 0,
    CONTRAST = 1,
    HUE = 2,
    SATURATION = 3,
    SHARPNESS = 4,
    GAMMA = 5,
    COLORENABLE = 6,
    WHITEBALANCE = 7,
    BACKLIGHT_COMPENSATION = 8,
    GAIN = 9,
    DIGITAL_MULTIPLIER = 10,
    DIGITAL_MULTIPLIER_LIMIT = 11,
    WHITEBALANCE_COMPONENT = 12,
    POWERLINE_FREQUENCY = 13,
};
pub const KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS = KSPROPERTY_VIDCAP_VIDEOPROCAMP.BRIGHTNESS;
pub const KSPROPERTY_VIDEOPROCAMP_CONTRAST = KSPROPERTY_VIDCAP_VIDEOPROCAMP.CONTRAST;
pub const KSPROPERTY_VIDEOPROCAMP_HUE = KSPROPERTY_VIDCAP_VIDEOPROCAMP.HUE;
pub const KSPROPERTY_VIDEOPROCAMP_SATURATION = KSPROPERTY_VIDCAP_VIDEOPROCAMP.SATURATION;
pub const KSPROPERTY_VIDEOPROCAMP_SHARPNESS = KSPROPERTY_VIDCAP_VIDEOPROCAMP.SHARPNESS;
pub const KSPROPERTY_VIDEOPROCAMP_GAMMA = KSPROPERTY_VIDCAP_VIDEOPROCAMP.GAMMA;
pub const KSPROPERTY_VIDEOPROCAMP_COLORENABLE = KSPROPERTY_VIDCAP_VIDEOPROCAMP.COLORENABLE;
pub const KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE = KSPROPERTY_VIDCAP_VIDEOPROCAMP.WHITEBALANCE;
pub const KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION = KSPROPERTY_VIDCAP_VIDEOPROCAMP.BACKLIGHT_COMPENSATION;
pub const KSPROPERTY_VIDEOPROCAMP_GAIN = KSPROPERTY_VIDCAP_VIDEOPROCAMP.GAIN;
pub const KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER = KSPROPERTY_VIDCAP_VIDEOPROCAMP.DIGITAL_MULTIPLIER;
pub const KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT = KSPROPERTY_VIDCAP_VIDEOPROCAMP.DIGITAL_MULTIPLIER_LIMIT;
pub const KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT = KSPROPERTY_VIDCAP_VIDEOPROCAMP.WHITEBALANCE_COMPONENT;
pub const KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY = KSPROPERTY_VIDCAP_VIDEOPROCAMP.POWERLINE_FREQUENCY;

pub const KSPROPERTY_VIDEOPROCAMP_S = extern struct {
    Property: KSIDENTIFIER,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

pub const KSPROPERTY_VIDEOPROCAMP_NODE_S = extern struct {
    NodeProperty: KSP_NODE,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

pub const KSPROPERTY_VIDEOPROCAMP_S2 = extern struct {
    Property: KSIDENTIFIER,
    Value1: i32,
    Flags: u32,
    Capabilities: u32,
    Value2: i32,
};

pub const KSPROPERTY_VIDEOPROCAMP_NODE_S2 = extern struct {
    NodeProperty: KSP_NODE,
    Value1: i32,
    Flags: u32,
    Capabilities: u32,
    Value2: i32,
};

const CLSID_PROPSETID_VIDCAP_SELECTOR_Value = Guid.initString("1abdaeca-68b6-4f83-9371-b413907c7b9f");
pub const CLSID_PROPSETID_VIDCAP_SELECTOR = &CLSID_PROPSETID_VIDCAP_SELECTOR_Value;

pub const KSPROPERTY_VIDCAP_SELECTOR = enum(i32) {
    SOURCE_NODE_ID = 0,
    NUM_SOURCES = 1,
};
pub const KSPROPERTY_SELECTOR_SOURCE_NODE_ID = KSPROPERTY_VIDCAP_SELECTOR.SOURCE_NODE_ID;
pub const KSPROPERTY_SELECTOR_NUM_SOURCES = KSPROPERTY_VIDCAP_SELECTOR.NUM_SOURCES;

pub const KSPROPERTY_SELECTOR_S = extern struct {
    Property: KSIDENTIFIER,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

pub const KSPROPERTY_SELECTOR_NODE_S = extern struct {
    NodeProperty: KSP_NODE,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

const CLSID_PROPSETID_TUNER_Value = Guid.initString("6a2e0605-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_TUNER = &CLSID_PROPSETID_TUNER_Value;

pub const KSPROPERTY_TUNER = enum(i32) {
    CAPS = 0,
    MODE_CAPS = 1,
    MODE = 2,
    STANDARD = 3,
    FREQUENCY = 4,
    INPUT = 5,
    STATUS = 6,
    IF_MEDIUM = 7,
    SCAN_CAPS = 8,
    SCAN_STATUS = 9,
    STANDARD_MODE = 10,
    NETWORKTYPE_SCAN_CAPS = 11,
};
pub const KSPROPERTY_TUNER_CAPS = KSPROPERTY_TUNER.CAPS;
pub const KSPROPERTY_TUNER_MODE_CAPS = KSPROPERTY_TUNER.MODE_CAPS;
pub const KSPROPERTY_TUNER_MODE = KSPROPERTY_TUNER.MODE;
pub const KSPROPERTY_TUNER_STANDARD = KSPROPERTY_TUNER.STANDARD;
pub const KSPROPERTY_TUNER_FREQUENCY = KSPROPERTY_TUNER.FREQUENCY;
pub const KSPROPERTY_TUNER_INPUT = KSPROPERTY_TUNER.INPUT;
pub const KSPROPERTY_TUNER_STATUS = KSPROPERTY_TUNER.STATUS;
pub const KSPROPERTY_TUNER_IF_MEDIUM = KSPROPERTY_TUNER.IF_MEDIUM;
pub const KSPROPERTY_TUNER_SCAN_CAPS = KSPROPERTY_TUNER.SCAN_CAPS;
pub const KSPROPERTY_TUNER_SCAN_STATUS = KSPROPERTY_TUNER.SCAN_STATUS;
pub const KSPROPERTY_TUNER_STANDARD_MODE = KSPROPERTY_TUNER.STANDARD_MODE;
pub const KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS = KSPROPERTY_TUNER.NETWORKTYPE_SCAN_CAPS;

pub const KSPROPERTY_TUNER_MODES = enum(i32) {
    TV = 1,
    FM_RADIO = 2,
    AM_RADIO = 4,
    DSS = 8,
    ATSC = 16,
};
pub const KSPROPERTY_TUNER_MODE_TV = KSPROPERTY_TUNER_MODES.TV;
pub const KSPROPERTY_TUNER_MODE_FM_RADIO = KSPROPERTY_TUNER_MODES.FM_RADIO;
pub const KSPROPERTY_TUNER_MODE_AM_RADIO = KSPROPERTY_TUNER_MODES.AM_RADIO;
pub const KSPROPERTY_TUNER_MODE_DSS = KSPROPERTY_TUNER_MODES.DSS;
pub const KSPROPERTY_TUNER_MODE_ATSC = KSPROPERTY_TUNER_MODES.ATSC;

pub const KS_TUNER_TUNING_FLAGS = enum(i32) {
    EXACT = 1,
    FINE = 2,
    COARSE = 3,
};
pub const KS_TUNER_TUNING_EXACT = KS_TUNER_TUNING_FLAGS.EXACT;
pub const KS_TUNER_TUNING_FINE = KS_TUNER_TUNING_FLAGS.FINE;
pub const KS_TUNER_TUNING_COARSE = KS_TUNER_TUNING_FLAGS.COARSE;

pub const KS_TUNER_STRATEGY = enum(i32) {
    PLL = 1,
    SIGNAL_STRENGTH = 2,
    DRIVER_TUNES = 4,
};
pub const KS_TUNER_STRATEGY_PLL = KS_TUNER_STRATEGY.PLL;
pub const KS_TUNER_STRATEGY_SIGNAL_STRENGTH = KS_TUNER_STRATEGY.SIGNAL_STRENGTH;
pub const KS_TUNER_STRATEGY_DRIVER_TUNES = KS_TUNER_STRATEGY.DRIVER_TUNES;

pub const KSPROPERTY_TUNER_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    ModesSupported: u32,
    VideoMedium: KSIDENTIFIER,
    TVAudioMedium: KSIDENTIFIER,
    RadioAudioMedium: KSIDENTIFIER,
};

pub const KSPROPERTY_TUNER_IF_MEDIUM_S = extern struct {
    Property: KSIDENTIFIER,
    IFMedium: KSIDENTIFIER,
};

pub const KSPROPERTY_TUNER_MODE_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    Mode: u32,
    StandardsSupported: u32,
    MinFrequency: u32,
    MaxFrequency: u32,
    TuningGranularity: u32,
    NumberOfInputs: u32,
    SettlingTime: u32,
    Strategy: u32,
};

pub const KSPROPERTY_TUNER_MODE_S = extern struct {
    Property: KSIDENTIFIER,
    Mode: u32,
};

pub const KSPROPERTY_TUNER_FREQUENCY_S = extern struct {
    Property: KSIDENTIFIER,
    Frequency: u32,
    LastFrequency: u32,
    TuningFlags: u32,
    VideoSubChannel: u32,
    AudioSubChannel: u32,
    Channel: u32,
    Country: u32,
};

pub const KSPROPERTY_TUNER_STANDARD_S = extern struct {
    Property: KSIDENTIFIER,
    Standard: u32,
};

pub const KSPROPERTY_TUNER_STANDARD_MODE_S = extern struct {
    Property: KSIDENTIFIER,
    AutoDetect: BOOL,
};

pub const KSPROPERTY_TUNER_INPUT_S = extern struct {
    Property: KSIDENTIFIER,
    InputIndex: u32,
};

pub const KSPROPERTY_TUNER_STATUS_S = extern struct {
    Property: KSIDENTIFIER,
    CurrentFrequency: u32,
    PLLOffset: u32,
    SignalStrength: u32,
    Busy: u32,
};

pub const _TunerDecoderLockType = enum(i32) {
    None = 0,
    Within_Scan_Sensing_Range = 1,
    Locked = 2,
};
pub const Tuner_LockType_None = _TunerDecoderLockType.None;
pub const Tuner_LockType_Within_Scan_Sensing_Range = _TunerDecoderLockType.Within_Scan_Sensing_Range;
pub const Tuner_LockType_Locked = _TunerDecoderLockType.Locked;

pub const TUNER_ANALOG_CAPS_S = extern struct {
    Mode: u32,
    StandardsSupported: u32,
    MinFrequency: u32,
    MaxFrequency: u32,
    TuningGranularity: u32,
    SettlingTime: u32,
    ScanSensingRange: u32,
    FineTuneSensingRange: u32,
};

const CLSID_EVENTSETID_TUNER_Value = Guid.initString("6a2e0606-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_EVENTSETID_TUNER = &CLSID_EVENTSETID_TUNER_Value;

pub const KSEVENT_TUNER = enum(i32) {
    CHANGED = 0,
    INITIATE_SCAN = 1,
};
pub const KSEVENT_TUNER_CHANGED = KSEVENT_TUNER.CHANGED;
pub const KSEVENT_TUNER_INITIATE_SCAN = KSEVENT_TUNER.INITIATE_SCAN;

pub const KSPROPERTY_TUNER_SCAN_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    fSupportsHardwareAssistedScanning: BOOL,
    SupportedBroadcastStandards: u32,
    GUIDBucket: ?*anyopaque,
    lengthofBucket: u32,
};

pub const KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    NetworkType: Guid,
    BufferSize: u32,
    NetworkTunerCapabilities: ?*anyopaque,
};

pub const KSPROPERTY_TUNER_SCAN_STATUS_S = extern struct {
    Property: KSIDENTIFIER,
    LockStatus: _TunerDecoderLockType,
    CurrentFrequency: u32,
};

pub const KSEVENT_TUNER_INITIATE_SCAN_S = extern struct {
    EventData: KSEVENTDATA,
    StartFrequency: u32,
    EndFrequency: u32,
};

const CLSID_KSNODETYPE_VIDEO_STREAMING_Value = Guid.initString("dff229e1-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_STREAMING = &CLSID_KSNODETYPE_VIDEO_STREAMING_Value;

const CLSID_KSNODETYPE_VIDEO_INPUT_TERMINAL_Value = Guid.initString("dff229e2-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_INPUT_TERMINAL = &CLSID_KSNODETYPE_VIDEO_INPUT_TERMINAL_Value;

const CLSID_KSNODETYPE_VIDEO_OUTPUT_TERMINAL_Value = Guid.initString("dff229e3-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_OUTPUT_TERMINAL = &CLSID_KSNODETYPE_VIDEO_OUTPUT_TERMINAL_Value;

const CLSID_KSNODETYPE_VIDEO_SELECTOR_Value = Guid.initString("dff229e4-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_SELECTOR = &CLSID_KSNODETYPE_VIDEO_SELECTOR_Value;

const CLSID_KSNODETYPE_VIDEO_PROCESSING_Value = Guid.initString("dff229e5-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_PROCESSING = &CLSID_KSNODETYPE_VIDEO_PROCESSING_Value;

const CLSID_KSNODETYPE_VIDEO_CAMERA_TERMINAL_Value = Guid.initString("dff229e6-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_CAMERA_TERMINAL = &CLSID_KSNODETYPE_VIDEO_CAMERA_TERMINAL_Value;

const CLSID_KSNODETYPE_VIDEO_INPUT_MTT_Value = Guid.initString("dff229e7-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_INPUT_MTT = &CLSID_KSNODETYPE_VIDEO_INPUT_MTT_Value;

const CLSID_KSNODETYPE_VIDEO_OUTPUT_MTT_Value = Guid.initString("dff229e8-f70f-11d0-b917-00a0c9223196");
pub const CLSID_KSNODETYPE_VIDEO_OUTPUT_MTT = &CLSID_KSNODETYPE_VIDEO_OUTPUT_MTT_Value;

const CLSID_PROPSETID_VIDCAP_VIDEOENCODER_Value = Guid.initString("6a2e0610-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_VIDEOENCODER = &CLSID_PROPSETID_VIDCAP_VIDEOENCODER_Value;

pub const KSPROPERTY_VIDCAP_VIDEOENCODER = enum(i32) {
    CAPS = 0,
    STANDARD = 1,
    COPYPROTECTION = 2,
    CC_ENABLE = 3,
};
pub const KSPROPERTY_VIDEOENCODER_CAPS = KSPROPERTY_VIDCAP_VIDEOENCODER.CAPS;
pub const KSPROPERTY_VIDEOENCODER_STANDARD = KSPROPERTY_VIDCAP_VIDEOENCODER.STANDARD;
pub const KSPROPERTY_VIDEOENCODER_COPYPROTECTION = KSPROPERTY_VIDCAP_VIDEOENCODER.COPYPROTECTION;
pub const KSPROPERTY_VIDEOENCODER_CC_ENABLE = KSPROPERTY_VIDCAP_VIDEOENCODER.CC_ENABLE;

pub const KSPROPERTY_VIDEOENCODER_S = extern struct {
    Property: KSIDENTIFIER,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

const CLSID_PROPSETID_VIDCAP_VIDEODECODER_Value = Guid.initString("c6e13350-30ac-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_VIDEODECODER = &CLSID_PROPSETID_VIDCAP_VIDEODECODER_Value;

pub const KSPROPERTY_VIDCAP_VIDEODECODER = enum(i32) {
    CAPS = 0,
    STANDARD = 1,
    STATUS = 2,
    OUTPUT_ENABLE = 3,
    VCR_TIMING = 4,
    STATUS2 = 5,
};
pub const KSPROPERTY_VIDEODECODER_CAPS = KSPROPERTY_VIDCAP_VIDEODECODER.CAPS;
pub const KSPROPERTY_VIDEODECODER_STANDARD = KSPROPERTY_VIDCAP_VIDEODECODER.STANDARD;
pub const KSPROPERTY_VIDEODECODER_STATUS = KSPROPERTY_VIDCAP_VIDEODECODER.STATUS;
pub const KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE = KSPROPERTY_VIDCAP_VIDEODECODER.OUTPUT_ENABLE;
pub const KSPROPERTY_VIDEODECODER_VCR_TIMING = KSPROPERTY_VIDCAP_VIDEODECODER.VCR_TIMING;
pub const KSPROPERTY_VIDEODECODER_STATUS2 = KSPROPERTY_VIDCAP_VIDEODECODER.STATUS2;

pub const KS_VIDEODECODER_FLAGS = enum(i32) {
    DISABLE_OUTPUT = 1,
    USE_VCR_LOCKING = 2,
    INDICATE_LOCKED = 4,
};
pub const KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = KS_VIDEODECODER_FLAGS.DISABLE_OUTPUT;
pub const KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = KS_VIDEODECODER_FLAGS.USE_VCR_LOCKING;
pub const KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = KS_VIDEODECODER_FLAGS.INDICATE_LOCKED;

pub const KSPROPERTY_VIDEODECODER_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    StandardsSupported: u32,
    Capabilities: u32,
    SettlingTime: u32,
    HSyncPerVSync: u32,
};

pub const KSPROPERTY_VIDEODECODER_STATUS_S = extern struct {
    Property: KSIDENTIFIER,
    NumberOfLines: u32,
    SignalLocked: u32,
};

pub const KSPROPERTY_VIDEODECODER_STATUS2_S = extern struct {
    Property: KSIDENTIFIER,
    NumberOfLines: u32,
    SignalLocked: u32,
    ChromaLock: u32,
};

pub const KSPROPERTY_VIDEODECODER_S = extern struct {
    Property: KSIDENTIFIER,
    Value: u32,
};

const CLSID_EVENTSETID_VIDEODECODER_Value = Guid.initString("6a2e0621-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_EVENTSETID_VIDEODECODER = &CLSID_EVENTSETID_VIDEODECODER_Value;

pub const KSEVENT_VIDEODECODER = enum(i32) {
    D = 0,
};
pub const KSEVENT_VIDEODECODER_CHANGED = KSEVENT_VIDEODECODER.D;

const CLSID_KSEVENTSETID_CameraAsyncControl_Value = Guid.initString("22a11754-9701-4088-b33f-6b9cbc52df5e");
pub const CLSID_KSEVENTSETID_CameraAsyncControl = &CLSID_KSEVENTSETID_CameraAsyncControl_Value;

pub const KSEVENT_CAMERACONTROL = enum(i32) {
    FOCUS = 0,
    ZOOM = 1,
};
pub const KSEVENT_CAMERACONTROL_FOCUS = KSEVENT_CAMERACONTROL.FOCUS;
pub const KSEVENT_CAMERACONTROL_ZOOM = KSEVENT_CAMERACONTROL.ZOOM;

const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_Value = Guid.initString("c6e13370-30ac-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_CAMERACONTROL = &CLSID_PROPSETID_VIDCAP_CAMERACONTROL_Value;

pub const KSPROPERTY_VIDCAP_CAMERACONTROL = enum(i32) {
    PAN = 0,
    TILT = 1,
    ROLL = 2,
    ZOOM = 3,
    EXPOSURE = 4,
    IRIS = 5,
    FOCUS = 6,
    SCANMODE = 7,
    PRIVACY = 8,
    PANTILT = 9,
    PAN_RELATIVE = 10,
    TILT_RELATIVE = 11,
    ROLL_RELATIVE = 12,
    ZOOM_RELATIVE = 13,
    EXPOSURE_RELATIVE = 14,
    IRIS_RELATIVE = 15,
    FOCUS_RELATIVE = 16,
    PANTILT_RELATIVE = 17,
    FOCAL_LENGTH = 18,
    AUTO_EXPOSURE_PRIORITY = 19,
};
pub const KSPROPERTY_CAMERACONTROL_PAN = KSPROPERTY_VIDCAP_CAMERACONTROL.PAN;
pub const KSPROPERTY_CAMERACONTROL_TILT = KSPROPERTY_VIDCAP_CAMERACONTROL.TILT;
pub const KSPROPERTY_CAMERACONTROL_ROLL = KSPROPERTY_VIDCAP_CAMERACONTROL.ROLL;
pub const KSPROPERTY_CAMERACONTROL_ZOOM = KSPROPERTY_VIDCAP_CAMERACONTROL.ZOOM;
pub const KSPROPERTY_CAMERACONTROL_EXPOSURE = KSPROPERTY_VIDCAP_CAMERACONTROL.EXPOSURE;
pub const KSPROPERTY_CAMERACONTROL_IRIS = KSPROPERTY_VIDCAP_CAMERACONTROL.IRIS;
pub const KSPROPERTY_CAMERACONTROL_FOCUS = KSPROPERTY_VIDCAP_CAMERACONTROL.FOCUS;
pub const KSPROPERTY_CAMERACONTROL_SCANMODE = KSPROPERTY_VIDCAP_CAMERACONTROL.SCANMODE;
pub const KSPROPERTY_CAMERACONTROL_PRIVACY = KSPROPERTY_VIDCAP_CAMERACONTROL.PRIVACY;
pub const KSPROPERTY_CAMERACONTROL_PANTILT = KSPROPERTY_VIDCAP_CAMERACONTROL.PANTILT;
pub const KSPROPERTY_CAMERACONTROL_PAN_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.PAN_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_TILT_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.TILT_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.ROLL_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.ZOOM_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.EXPOSURE_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.IRIS_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.FOCUS_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE = KSPROPERTY_VIDCAP_CAMERACONTROL.PANTILT_RELATIVE;
pub const KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH = KSPROPERTY_VIDCAP_CAMERACONTROL.FOCAL_LENGTH;
pub const KSPROPERTY_CAMERACONTROL_AUTO_EXPOSURE_PRIORITY = KSPROPERTY_VIDCAP_CAMERACONTROL.AUTO_EXPOSURE_PRIORITY;

pub const KS_CameraControlAsyncOperation = enum(i32) {
    START = 1,
    STOP = 2,
    RESET = 3,
};
pub const KS_CAMERACONTROL_ASYNC_START = KS_CameraControlAsyncOperation.START;
pub const KS_CAMERACONTROL_ASYNC_STOP = KS_CameraControlAsyncOperation.STOP;
pub const KS_CAMERACONTROL_ASYNC_RESET = KS_CameraControlAsyncOperation.RESET;

pub const KSPROPERTY_CAMERACONTROL_S_EX = extern struct {
    Property: KSIDENTIFIER,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
    FocusRect: RECT,
};

pub const KSPROPERTY_CAMERACONTROL_S = extern struct {
    Property: KSIDENTIFIER,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

pub const KSPROPERTY_CAMERACONTROL_NODE_S = extern struct {
    NodeProperty: KSP_NODE,
    Value: i32,
    Flags: u32,
    Capabilities: u32,
};

pub const KSPROPERTY_CAMERACONTROL_S2 = extern struct {
    Property: KSIDENTIFIER,
    Value1: i32,
    Flags: u32,
    Capabilities: u32,
    Value2: i32,
};

pub const KSPROPERTY_CAMERACONTROL_NODE_S2 = extern struct {
    NodeProperty: KSP_NODE,
    Value1: i32,
    Flags: u32,
    Capabilities: u32,
    Value2: i32,
};

pub const KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S = extern struct {
    Property: KSIDENTIFIER,
    lOcularFocalLength: i32,
    lObjectiveFocalLengthMin: i32,
    lObjectiveFocalLengthMax: i32,
};

pub const KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S = extern struct {
    NodeProperty: KSNODEPROPERTY,
    lOcularFocalLength: i32,
    lObjectiveFocalLengthMin: i32,
    lObjectiveFocalLengthMax: i32,
};

const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_FLASH_Value = Guid.initString("785e8f49-63a2-4144-ab70-ffb278fa26ce");
pub const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_FLASH = &CLSID_PROPSETID_VIDCAP_CAMERACONTROL_FLASH_Value;

pub const KSPROPERTY_CAMERACONTROL_FLASH = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_CAMERACONTROL_FLASH_PROPERTY_ID = KSPROPERTY_CAMERACONTROL_FLASH.D;

pub const KSPROPERTY_CAMERACONTROL_FLASH_S = extern struct {
    Flash: u32,
    Capabilities: u32,
};

const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_VIDEO_STABILIZATION_Value = Guid.initString("43964bd3-7716-404e-8be1-d299b20e50fd");
pub const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_VIDEO_STABILIZATION = &CLSID_PROPSETID_VIDCAP_CAMERACONTROL_VIDEO_STABILIZATION_Value;

pub const KSPROPERTY_CAMERACONTROL_VIDEO_STABILIZATION_MODE = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_CAMERACONTROL_VIDEO_STABILIZATION_MODE_PROPERTY_ID = KSPROPERTY_CAMERACONTROL_VIDEO_STABILIZATION_MODE.D;

pub const KSPROPERTY_CAMERACONTROL_VIDEOSTABILIZATION_MODE_S = extern struct {
    VideoStabilizationMode: u32,
    Capabilities: u32,
};

const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST_Value = Guid.initString("9d12d198-f86c-4fed-b023-5d87653da793");
pub const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST = &CLSID_PROPSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST_Value;

pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID = KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST.D;

const CLSID_EVENTSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST_Value = Guid.initString("2fdffc5d-c732-4ba6-b5df-6b4d7fc88b8b");
pub const CLSID_EVENTSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST = &CLSID_EVENTSETID_VIDCAP_CAMERACONTROL_REGION_OF_INTEREST_Value;

pub const KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_S = extern struct {
    FocusRect: RECT,
    AutoFocusLock: BOOL,
    AutoExposureLock: BOOL,
    AutoWhitebalanceLock: BOOL,
    Anonymous: extern union {
        Capabilities: u32,
        Configuration: u32,
    },
};

const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_IMAGE_PIN_CAPABILITY_Value = Guid.initString("9d3d7bbf-5c6d-4138-bb00-584edd20f7c5");
pub const CLSID_PROPSETID_VIDCAP_CAMERACONTROL_IMAGE_PIN_CAPABILITY = &CLSID_PROPSETID_VIDCAP_CAMERACONTROL_IMAGE_PIN_CAPABILITY_Value;

pub const KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY = enum(i32) {
    D = 0,
};
pub const KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_PROPERTY_ID = KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY.D;

pub const KSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_S = extern struct {
    Capabilities: u32,
    Reserved0: u32,
};

pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY = enum(i32) {
    PHOTOMODE = 0,
    PHOTOFRAMERATE = 1,
    PHOTOMAXFRAMERATE = 2,
    PHOTOTRIGGERTIME = 3,
    WARMSTART = 4,
    MAXVIDFPS_PHOTORES = 5,
    PHOTOTHUMBNAIL = 6,
    SCENEMODE = 7,
    TORCHMODE = 8,
    FLASHMODE = 9,
    OPTIMIZATIONHINT = 10,
    WHITEBALANCEMODE = 11,
    EXPOSUREMODE = 12,
    FOCUSMODE = 13,
    ISO = 14,
    FIELDOFVIEW = 15,
    EVCOMPENSATION = 16,
    CAMERAANGLEOFFSET = 17,
    METADATA = 18,
    FOCUSPRIORITY = 19,
    FOCUSSTATE = 20,
    ROI_CONFIGCAPS = 21,
    ROI_ISPCONTROL = 22,
    PHOTOCONFIRMATION = 23,
    ZOOM = 24,
    MCC = 25,
    ISO_ADVANCED = 26,
    VIDEOSTABILIZATION = 27,
    VFR = 28,
    FACEDETECTION = 29,
    VIDEOHDR = 30,
    HISTOGRAM = 31,
    OIS = 32,
    ADVANCEDPHOTO = 33,
    PROFILE = 34,
    FACEAUTH_MODE = 35,
    SECURE_MODE = 36,
    VIDEOTEMPORALDENOISING = 37,
    IRTORCHMODE = 38,
    RELATIVEPANELOPTIMIZATION = 39,
    EYEGAZECORRECTION = 40,
    BACKGROUNDSEGMENTATION = 41,
    DIGITALWINDOW_CONFIGCAPS = 42,
    DIGITALWINDOW = 43,
    END = 44,
    // END2 = 44, this enum value conflicts with END
};
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOFRAMERATE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOFRAMERATE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMAXFRAMERATE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOMAXFRAMERATE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOTRIGGERTIME = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOTRIGGERTIME;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_WARMSTART = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.WARMSTART;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_MAXVIDFPS_PHOTORES = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.MAXVIDFPS_PHOTORES;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOTHUMBNAIL = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOTHUMBNAIL;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_SCENEMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.SCENEMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_TORCHMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.TORCHMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FLASHMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FLASHMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_OPTIMIZATIONHINT = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.OPTIMIZATIONHINT;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_WHITEBALANCEMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.WHITEBALANCEMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_EXPOSUREMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.EXPOSUREMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUSMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FOCUSMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ISO = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ISO;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FIELDOFVIEW = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FIELDOFVIEW;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.EVCOMPENSATION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_CAMERAANGLEOFFSET = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.CAMERAANGLEOFFSET;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.METADATA;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUSPRIORITY = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FOCUSPRIORITY;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUSSTATE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FOCUSSTATE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ROI_CONFIGCAPS;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ROI_ISPCONTROL;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOCONFIRMATION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PHOTOCONFIRMATION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ZOOM = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ZOOM;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_MCC = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.MCC;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ISO_ADVANCED = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ISO_ADVANCED;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOSTABILIZATION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.VIDEOSTABILIZATION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_VFR = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.VFR;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FACEDETECTION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FACEDETECTION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOHDR = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.VIDEOHDR;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.HISTOGRAM;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_OIS = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.OIS;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_ADVANCEDPHOTO = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.ADVANCEDPHOTO;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_PROFILE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.PROFILE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.FACEAUTH_MODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_SECURE_MODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.SECURE_MODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOTEMPORALDENOISING = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.VIDEOTEMPORALDENOISING;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_IRTORCHMODE = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.IRTORCHMODE;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_RELATIVEPANELOPTIMIZATION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.RELATIVEPANELOPTIMIZATION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_EYEGAZECORRECTION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.EYEGAZECORRECTION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_BACKGROUNDSEGMENTATION = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.BACKGROUNDSEGMENTATION;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.DIGITALWINDOW_CONFIGCAPS;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.DIGITALWINDOW;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_END = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.END;
pub const KSPROPERTY_CAMERACONTROL_EXTENDED_END2 = KSPROPERTY_CAMERACONTROL_EXTENDED_PROPERTY.END;

const CLSID_KSPROPERTYSETID_ExtendedCameraControl_Value = Guid.initString("1cb79112-c0d2-4213-9ca6-cd4fdb927972");
pub const CLSID_KSPROPERTYSETID_ExtendedCameraControl = &CLSID_KSPROPERTYSETID_ExtendedCameraControl_Value;

const CLSID_KSEVENTSETID_ExtendedCameraControl_Value = Guid.initString("571c92c9-13a2-47e3-a649-d2a778166384");
pub const CLSID_KSEVENTSETID_ExtendedCameraControl = &CLSID_KSEVENTSETID_ExtendedCameraControl_Value;

const CLSID_KSEVENTSETID_CameraEvent_Value = Guid.initString("7899b2e0-6b43-4964-9d2a-a21f4061f576");
pub const CLSID_KSEVENTSETID_CameraEvent = &CLSID_KSEVENTSETID_CameraEvent_Value;

pub const KSEVENT_CAMERAEVENT = enum(i32) {
    D = 0,
};
pub const KSEVENT_PHOTO_SAMPLE_SCANNED = KSEVENT_CAMERAEVENT.D;

pub const KSCAMERA_EXTENDEDPROP_WHITEBALANCE_MODE = enum(i32) {
    TEMPERATURE = 1,
    PRESET = 2,
};
pub const KSCAMERA_EXTENDEDPROP_WHITEBALANCE_TEMPERATURE = KSCAMERA_EXTENDEDPROP_WHITEBALANCE_MODE.TEMPERATURE;
pub const KSCAMERA_EXTENDEDPROP_WHITEBALANCE_PRESET = KSCAMERA_EXTENDEDPROP_WHITEBALANCE_MODE.PRESET;

pub const KSCAMERA_EXTENDEDPROP_WBPRESET = enum(i32) {
    CLOUDY = 1,
    DAYLIGHT = 2,
    FLASH = 3,
    FLUORESCENT = 4,
    TUNGSTEN = 5,
    CANDLELIGHT = 6,
};
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_CLOUDY = KSCAMERA_EXTENDEDPROP_WBPRESET.CLOUDY;
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_DAYLIGHT = KSCAMERA_EXTENDEDPROP_WBPRESET.DAYLIGHT;
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_FLASH = KSCAMERA_EXTENDEDPROP_WBPRESET.FLASH;
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_FLUORESCENT = KSCAMERA_EXTENDEDPROP_WBPRESET.FLUORESCENT;
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_TUNGSTEN = KSCAMERA_EXTENDEDPROP_WBPRESET.TUNGSTEN;
pub const KSCAMERA_EXTENDEDPROP_WBPRESET_CANDLELIGHT = KSCAMERA_EXTENDEDPROP_WBPRESET.CANDLELIGHT;

pub const KSPROPERTY_CAMERA_PHOTOTRIGGERTIME_FLAGS = enum(i32) {
    CLEAR = 0,
    SET = 1,
};
pub const KSPROPERTY_CAMERA_PHOTOTRIGGERTIME_CLEAR = KSPROPERTY_CAMERA_PHOTOTRIGGERTIME_FLAGS.CLEAR;
pub const KSPROPERTY_CAMERA_PHOTOTRIGGERTIME_SET = KSPROPERTY_CAMERA_PHOTOTRIGGERTIME_FLAGS.SET;

pub const KSCAMERA_EXTENDEDPROP_HEADER = extern struct {
    Version: u32,
    PinId: u32,
    Size: u32,
    Result: u32,
    Flags: u64,
    Capability: u64,
};

pub const KSCAMERA_EXTENDEDPROP_VALUE = extern struct {
    Value: extern union {
        dbl: f64,
        ull: u64,
        ul: u32,
        ratio: ULARGE_INTEGER,
        l: i32,
        ll: i64,
    },
};

pub const KSCAMERA_MAXVIDEOFPS_FORPHOTORES = extern struct {
    PhotoResWidth: u32,
    PhotoResHeight: u32,
    PreviewFPSNum: u32,
    PreviewFPSDenom: u32,
    CaptureFPSNum: u32,
    CaptureFPSDenom: u32,
};

pub const KSCAMERA_EXTENDEDPROP_PHOTOMODE = extern struct {
    RequestedHistoryFrames: u32,
    MaxHistoryFrames: u32,
    SubMode: u32,
    Reserved: u32,
};

pub const KSCAMERA_EXTENDEDPROP_VIDEOPROCSETTING = extern struct {
    Mode: u32,
    Min: i32,
    Max: i32,
    Step: i32,
    VideoProc: KSCAMERA_EXTENDEDPROP_VALUE,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_EVCOMPENSATION = extern struct {
    Mode: u32,
    Min: i32,
    Max: i32,
    Value: i32,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_FIELDOFVIEW = extern struct {
    NormalizedFocalLengthX: u32,
    NormalizedFocalLengthY: u32,
    Flag: u32,
    Reserved: u32,
};

pub const KSCAMERA_EXTENDEDPROP_CAMERAOFFSET = extern struct {
    PitchAngle: i32,
    YawAngle: i32,
    Flag: u32,
    Reserved: u32,
};

pub const KSCAMERA_EXTENDEDPROP_METADATAINFO = extern struct {
    BufferAlignment: i32,
    MaxMetadataBufferSize: u32,
};

pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment = enum(i32) {
    @"16" = 4,
    @"32" = 5,
    @"64" = 6,
    @"128" = 7,
    @"256" = 8,
    @"512" = 9,
    @"1024" = 10,
    @"2048" = 11,
    @"4096" = 12,
    @"8192" = 13,
};
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_16 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"16";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_32 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"32";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_64 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"64";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_128 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"128";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_256 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"256";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_512 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"512";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_1024 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"1024";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_2048 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"2048";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_4096 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"4096";
pub const KSCAMERA_EXTENDEDPROP_MetadataAlignment_8192 = KSCAMERA_EXTENDEDPROP_MetadataAlignment.@"8192";

pub const KSCAMERA_MetadataId = enum(i32) {
    Standard_Start = 1,
    // PhotoConfirmation = 1, this enum value conflicts with Standard_Start
    UsbVideoHeader = 2,
    CaptureStats = 3,
    CameraExtrinsics = 4,
    CameraIntrinsics = 5,
    FrameIllumination = 6,
    DigitalWindow = 7,
    BackgroundSegmentationMask = 8,
    // Standard_End = 8, this enum value conflicts with BackgroundSegmentationMask
    Custom_Start = -2147483648,
};
pub const MetadataId_Standard_Start = KSCAMERA_MetadataId.Standard_Start;
pub const MetadataId_PhotoConfirmation = KSCAMERA_MetadataId.Standard_Start;
pub const MetadataId_UsbVideoHeader = KSCAMERA_MetadataId.UsbVideoHeader;
pub const MetadataId_CaptureStats = KSCAMERA_MetadataId.CaptureStats;
pub const MetadataId_CameraExtrinsics = KSCAMERA_MetadataId.CameraExtrinsics;
pub const MetadataId_CameraIntrinsics = KSCAMERA_MetadataId.CameraIntrinsics;
pub const MetadataId_FrameIllumination = KSCAMERA_MetadataId.FrameIllumination;
pub const MetadataId_DigitalWindow = KSCAMERA_MetadataId.DigitalWindow;
pub const MetadataId_BackgroundSegmentationMask = KSCAMERA_MetadataId.BackgroundSegmentationMask;
pub const MetadataId_Standard_End = KSCAMERA_MetadataId.BackgroundSegmentationMask;
pub const MetadataId_Custom_Start = KSCAMERA_MetadataId.Custom_Start;

pub const KSCAMERA_METADATA_ITEMHEADER = extern struct {
    MetadataId: u32,
    Size: u32,
};

pub const KSCAMERA_METADATA_PHOTOCONFIRMATION = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    PhotoConfirmationIndex: u32,
    Reserved: u32,
};

pub const KSCAMERA_METADATA_FRAMEILLUMINATION = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    Flags: u32,
    Reserved: u32,
};

pub const KSCAMERA_METADATA_CAPTURESTATS = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    Flags: u32,
    Reserved: u32,
    ExposureTime: u64,
    ExposureCompensationFlags: u64,
    ExposureCompensationValue: i32,
    IsoSpeed: u32,
    FocusState: u32,
    LensPosition: u32,
    WhiteBalance: u32,
    Flash: u32,
    FlashPower: u32,
    ZoomFactor: u32,
    SceneMode: u64,
    SensorFramerate: u64,
};

pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE = enum(i32) {
    UNINITIALIZED = 0,
    LOST = 1,
    SEARCHING = 2,
    FOCUSED = 3,
    FAILED = 4,
};
pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE_UNINITIALIZED = KSCAMERA_EXTENDEDPROP_FOCUSSTATE.UNINITIALIZED;
pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE_LOST = KSCAMERA_EXTENDEDPROP_FOCUSSTATE.LOST;
pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE_SEARCHING = KSCAMERA_EXTENDEDPROP_FOCUSSTATE.SEARCHING;
pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE_FOCUSED = KSCAMERA_EXTENDEDPROP_FOCUSSTATE.FOCUSED;
pub const KSCAMERA_EXTENDEDPROP_FOCUSSTATE_FAILED = KSCAMERA_EXTENDEDPROP_FOCUSSTATE.FAILED;

pub const KSCAMERA_EXTENDEDPROP_ROI_CONFIGCAPSHEADER = extern struct {
    Size: u32,
    ConfigCapCount: u32,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_CONFIGCAPS = extern struct {
    ControlId: u32,
    MaxNumberOfROIs: u32,
    Capability: u64,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_ISPCONTROLHEADER = extern struct {
    Size: u32,
    ControlCount: u32,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_ISPCONTROL = extern struct {
    ControlId: u32,
    ROICount: u32,
    Result: u32,
    Reserved: u32,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_INFO = extern struct {
    Region: RECT,
    Flags: u64,
    Weight: i32,
    RegionOfInterestType: i32,
};

pub const KSCAMERA_EXTENDEDPROP_ROITYPE = enum(i32) {
    UNKNOWN = 0,
    FACE = 1,
};
pub const KSCAMERA_EXTENDEDPROP_ROITYPE_UNKNOWN = KSCAMERA_EXTENDEDPROP_ROITYPE.UNKNOWN;
pub const KSCAMERA_EXTENDEDPROP_ROITYPE_FACE = KSCAMERA_EXTENDEDPROP_ROITYPE.FACE;

pub const KSCAMERA_EXTENDEDPROP_ROI_WHITEBALANCE = extern struct {
    ROIInfo: KSCAMERA_EXTENDEDPROP_ROI_INFO,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_EXPOSURE = extern struct {
    ROIInfo: KSCAMERA_EXTENDEDPROP_ROI_INFO,
    Reserved: u64,
};

pub const KSCAMERA_EXTENDEDPROP_ROI_FOCUS = extern struct {
    ROIInfo: KSCAMERA_EXTENDEDPROP_ROI_INFO,
    Reserved: u64,
};

const CLSID_KSPROPERTYSETID_PerFrameSettingControl_Value = Guid.initString("f1f3e261-dee6-4537-bff5-ee206db54aac");
pub const CLSID_KSPROPERTYSETID_PerFrameSettingControl = &CLSID_KSPROPERTYSETID_PerFrameSettingControl_Value;

pub const KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY = enum(i32) {
    CAPABILITY = 0,
    SET = 1,
    CLEAR = 2,
};
pub const KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY = KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY.CAPABILITY;
pub const KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET = KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY.SET;
pub const KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CLEAR = KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY.CLEAR;

pub const KSCAMERA_PERFRAMESETTING_ITEM_TYPE = enum(i32) {
    EXPOSURE_TIME = 1,
    FLASH = 2,
    EXPOSURE_COMPENSATION = 3,
    ISO = 4,
    FOCUS = 5,
    PHOTOCONFIRMATION = 6,
    CUSTOM = 7,
};
pub const KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_TIME = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.EXPOSURE_TIME;
pub const KSCAMERA_PERFRAMESETTING_ITEM_FLASH = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.FLASH;
pub const KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_COMPENSATION = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.EXPOSURE_COMPENSATION;
pub const KSCAMERA_PERFRAMESETTING_ITEM_ISO = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.ISO;
pub const KSCAMERA_PERFRAMESETTING_ITEM_FOCUS = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.FOCUS;
pub const KSCAMERA_PERFRAMESETTING_ITEM_PHOTOCONFIRMATION = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.PHOTOCONFIRMATION;
pub const KSCAMERA_PERFRAMESETTING_ITEM_CUSTOM = KSCAMERA_PERFRAMESETTING_ITEM_TYPE.CUSTOM;

pub const KSCAMERA_PERFRAMESETTING_CAP_ITEM_HEADER = extern struct {
    Size: u32,
    Type: u32,
    Flags: u64,
};

pub const KSCAMERA_PERFRAMESETTING_CAP_HEADER = extern struct {
    Size: u32,
    ItemCount: u32,
    Flags: u64,
};

pub const KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM = extern struct {
    Size: u32,
    Reserved: u32,
    Id: Guid,
};

pub const KSCAMERA_PERFRAMESETTING_ITEM_HEADER = extern struct {
    Size: u32,
    Type: u32,
    Flags: u64,
};

pub const KSCAMERA_PERFRAMESETTING_FRAME_HEADER = extern struct {
    Size: u32,
    Id: u32,
    ItemCount: u32,
    Reserved: u32,
};

pub const KSCAMERA_PERFRAMESETTING_HEADER = extern struct {
    Size: u32,
    FrameCount: u32,
    Id: Guid,
    Flags: u64,
    LoopCount: u32,
    Reserved: u32,
};

pub const KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING = extern struct {
    OriginX: i32,
    OriginY: i32,
    WindowSize: i32,
    Reserved: u32,
};

pub const KSCAMERA_METADATA_DIGITALWINDOW = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    Window: KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING,
};

pub const KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER = extern struct {
    Size: u32,
    Count: u32,
};

pub const KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS = extern struct {
    ResolutionX: i32,
    ResolutionY: i32,
    PorchTop: i32,
    PorchLeft: i32,
    PorchBottom: i32,
    PorchRight: i32,
    NonUpscalingWindowSize: i32,
    MinWindowSize: i32,
    MaxWindowSize: i32,
    Reserved: i32,
};

pub const KSCAMERA_EXTENDEDPROP_BACKGROUNDSEGMENTATION_CONFIGCAPS = extern struct {
    Resolution: SIZE,
    MaxFrameRate: extern struct {
        Numerator: i32,
        Denominator: i32,
    },
    MaskResolution: SIZE,
    SubType: Guid,
};

pub const KSCAMERA_METADATA_BACKGROUNDSEGMENTATIONMASK = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    MaskCoverageBoundingBox: RECT,
    MaskResolution: SIZE,
    ForegroundBoundingBox: RECT,
    MaskData: [1]u8,
};

pub const KSCAMERA_EXTENDEDPROP_PROFILE = extern struct {
    ProfileId: Guid,
    Index: u32,
    Reserved: u32,
};

const CLSID_KSCAMERAPROFILE_Legacy_Value = Guid.initString("b4894d81-62b7-4eec-8740-80658c4a9d3e");
pub const CLSID_KSCAMERAPROFILE_Legacy = &CLSID_KSCAMERAPROFILE_Legacy_Value;

const CLSID_KSCAMERAPROFILE_VideoRecording_Value = Guid.initString("a0e517e8-8f8c-4f6f-9a57-46fc2f647ec0");
pub const CLSID_KSCAMERAPROFILE_VideoRecording = &CLSID_KSCAMERAPROFILE_VideoRecording_Value;

const CLSID_KSCAMERAPROFILE_HighQualityPhoto_Value = Guid.initString("32440725-961b-4ca3-b5b2-854e719d9e1b");
pub const CLSID_KSCAMERAPROFILE_HighQualityPhoto = &CLSID_KSCAMERAPROFILE_HighQualityPhoto_Value;

const CLSID_KSCAMERAPROFILE_BalancedVideoAndPhoto_Value = Guid.initString("6b52b017-42c7-4a21-bfe3-23f009149887");
pub const CLSID_KSCAMERAPROFILE_BalancedVideoAndPhoto = &CLSID_KSCAMERAPROFILE_BalancedVideoAndPhoto_Value;

const CLSID_KSCAMERAPROFILE_VideoConferencing_Value = Guid.initString("c5444a88-e1bf-4597-b2dd-9e1ead864bb8");
pub const CLSID_KSCAMERAPROFILE_VideoConferencing = &CLSID_KSCAMERAPROFILE_VideoConferencing_Value;

const CLSID_KSCAMERAPROFILE_PhotoSequence_Value = Guid.initString("02399d9d-4ee8-49ba-bc07-5ff156531413");
pub const CLSID_KSCAMERAPROFILE_PhotoSequence = &CLSID_KSCAMERAPROFILE_PhotoSequence_Value;

const CLSID_KSCAMERAPROFILE_FaceAuth_Mode_Value = Guid.initString("81361b22-700b-4546-a2d4-c52e907bfc27");
pub const CLSID_KSCAMERAPROFILE_FaceAuth_Mode = &CLSID_KSCAMERAPROFILE_FaceAuth_Mode_Value;

const CLSID_KSCAMERAPROFILE_HighFrameRate_Value = Guid.initString("566e6113-8c35-48e7-b89f-d23fdc1219dc");
pub const CLSID_KSCAMERAPROFILE_HighFrameRate = &CLSID_KSCAMERAPROFILE_HighFrameRate_Value;

const CLSID_KSCAMERAPROFILE_HDRWithWCGVideo_Value = Guid.initString("4b27c336-4924-4989-b994-fdaf1dc7cd85");
pub const CLSID_KSCAMERAPROFILE_HDRWithWCGVideo = &CLSID_KSCAMERAPROFILE_HDRWithWCGVideo_Value;

const CLSID_KSCAMERAPROFILE_HDRWithWCGPhoto_Value = Guid.initString("9bf6f1ff-b555-4625-b326-a46def318fb7");
pub const CLSID_KSCAMERAPROFILE_HDRWithWCGPhoto = &CLSID_KSCAMERAPROFILE_HDRWithWCGPhoto_Value;

const CLSID_KSCAMERAPROFILE_VariablePhotoSequence_Value = Guid.initString("9ff2cb56-e75a-49b1-a928-9985d5946f87");
pub const CLSID_KSCAMERAPROFILE_VariablePhotoSequence = &CLSID_KSCAMERAPROFILE_VariablePhotoSequence_Value;

const CLSID_KSCAMERAPROFILE_VideoHDR8_Value = Guid.initString("d4f3f4ec-bdff-4314-b1d4-008e281f74e7");
pub const CLSID_KSCAMERAPROFILE_VideoHDR8 = &CLSID_KSCAMERAPROFILE_VideoHDR8_Value;

const CLSID_KSCAMERAPROFILE_CompressedCamera_Value = Guid.initString("0e34cdc1-27ad-437f-abde-02b629f37b44");
pub const CLSID_KSCAMERAPROFILE_CompressedCamera = &CLSID_KSCAMERAPROFILE_CompressedCamera_Value;

pub const KSCAMERA_PROFILE_MEDIAINFO = extern struct {
    Resolution: extern struct {
        X: u32,
        Y: u32,
    },
    MaxFrameRate: extern struct {
        Numerator: u32,
        Denominator: u32,
    },
    Flags: u64,
    Data0: u32,
    Data1: u32,
    Data2: u32,
    Data3: u32,
};

pub const KSCAMERA_PROFILE_PININFO = extern struct {
    PinCategory: Guid,
    Anonymous: extern union {
        Anonymous: extern struct {
            PinIndex: u16,
            ProfileSensorType: u16,
        },
        Reserved: u32,
    },
    MediaInfoCount: u32,
    MediaInfos: ?*KSCAMERA_PROFILE_MEDIAINFO,
};

pub const KSCAMERA_PROFILE_INFO = extern struct {
    ProfileId: Guid,
    Index: u32,
    PinCount: u32,
    Pins: ?*KSCAMERA_PROFILE_PININFO,
};

pub const KSCAMERA_PROFILE_CONCURRENCYINFO = extern struct {
    ReferenceGuid: Guid,
    Reserved: u32,
    ProfileCount: u32,
    Profiles: ?*KSCAMERA_PROFILE_INFO,
};

pub const KSDEVICE_PROFILE_INFO = extern struct {
    Type: u32,
    Size: u32,
    Anonymous: extern union {
        Camera: extern struct {
            Info: KSCAMERA_PROFILE_INFO,
            Reserved: u32,
            ConcurrencyCount: u32,
            Concurrency: ?*KSCAMERA_PROFILE_CONCURRENCYINFO,
        },
    },
};

pub const WNF_KSCAMERA_STREAMSTATE_INFO = extern struct {
    ProcessId: u32,
    SessionId: u32,
    StreamState: u32,
    Reserved: u32,
};

pub const KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE = enum(i32) {
    TY_NETWORKCAMERACONTROL_NTPINFO_TYPE_DISABLE = 0,
    TY_NETWORKCAMERACONTROL_NTPINFO_TYPE_HOSTNTP = 1,
    YT_NETWORKCAMERACONTROL_NTPINFO_TYPE_CUSTOM = 2,
};
pub const KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE_DISABLE = KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE.TY_NETWORKCAMERACONTROL_NTPINFO_TYPE_DISABLE;
pub const KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE_HOSTNTP = KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE.TY_NETWORKCAMERACONTROL_NTPINFO_TYPE_HOSTNTP;
pub const KSPROPERYT_NETWORKCAMERACONTROL_NTPINFO_TYPE_CUSTOM = KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE.YT_NETWORKCAMERACONTROL_NTPINFO_TYPE_CUSTOM;

pub const KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_HEADER = extern struct {
    Size: u32,
    Type: KSPROPERTY_NETWORKCAMERACONTROL_NTPINFO_TYPE,
};

const CLSID_KSPROPERTYSETID_NetworkCameraControl_Value = Guid.initString("0e780f09-5745-4e3a-bc9f-f226ea43a6ec");
pub const CLSID_KSPROPERTYSETID_NetworkCameraControl = &CLSID_KSPROPERTYSETID_NetworkCameraControl_Value;

pub const KSPROPERTY_NETWORKCAMERACONTROL_PROPERTY = enum(i32) {
    NTP = 0,
    URI = 1,
    METADATA = 2,
    EVENTTOPICS_XML = 3,
};
pub const KSPROPERTY_NETWORKCAMERACONTROL_NTP = KSPROPERTY_NETWORKCAMERACONTROL_PROPERTY.NTP;
pub const KSPROPERTY_NETWORKCAMERACONTROL_URI = KSPROPERTY_NETWORKCAMERACONTROL_PROPERTY.URI;
pub const KSPROPERTY_NETWORKCAMERACONTROL_METADATA = KSPROPERTY_NETWORKCAMERACONTROL_PROPERTY.METADATA;
pub const KSPROPERTY_NETWORKCAMERACONTROL_EVENTTOPICS_XML = KSPROPERTY_NETWORKCAMERACONTROL_PROPERTY.EVENTTOPICS_XML;

pub const KSPROPERTY_NETWORKCAMERACONTROL_METADATA_TYPE = enum(i32) {
    O = 0,
};
pub const KSPROPERTY_NETWORKCAMERACONTROL_METADATA_TYPE_EVENTSINFO = KSPROPERTY_NETWORKCAMERACONTROL_METADATA_TYPE.O;

pub const KSPROPERTY_NETWORKCAMERACONTROL_METADATA_INFO = extern struct {
    MetadataItems: u32,
    Size: u32,
    PTZStatus: BOOL,
    Events: BOOL,
    Analytics: BOOL,
    Reserved: BOOL,
};

pub const KSPROPERTY_NETWORKCAMERACONTROL_EVENT_INFO = extern struct {
    Header: KSCAMERA_METADATA_ITEMHEADER,
    EventFilter: [1]u16,
};

const CLSID_PROPSETID_EXT_DEVICE_Value = Guid.initString("b5730a90-1a2c-11cf-8c23-00aa006b6814");
pub const CLSID_PROPSETID_EXT_DEVICE = &CLSID_PROPSETID_EXT_DEVICE_Value;

pub const KSPROPERTY_EXTDEVICE = enum(i32) {
    ID = 0,
    VERSION = 1,
    POWER_STATE = 2,
    PORT = 3,
    CAPABILITIES = 4,
};
pub const KSPROPERTY_EXTDEVICE_ID = KSPROPERTY_EXTDEVICE.ID;
pub const KSPROPERTY_EXTDEVICE_VERSION = KSPROPERTY_EXTDEVICE.VERSION;
pub const KSPROPERTY_EXTDEVICE_POWER_STATE = KSPROPERTY_EXTDEVICE.POWER_STATE;
pub const KSPROPERTY_EXTDEVICE_PORT = KSPROPERTY_EXTDEVICE.PORT;
pub const KSPROPERTY_EXTDEVICE_CAPABILITIES = KSPROPERTY_EXTDEVICE.CAPABILITIES;

pub const DEVCAPS = extern struct {
    CanRecord: i32,
    CanRecordStrobe: i32,
    HasAudio: i32,
    HasVideo: i32,
    UsesFiles: i32,
    CanSave: i32,
    DeviceType: i32,
    TCRead: i32,
    TCWrite: i32,
    CTLRead: i32,
    IndexRead: i32,
    Preroll: i32,
    Postroll: i32,
    SyncAcc: i32,
    NormRate: i32,
    CanPreview: i32,
    CanMonitorSrc: i32,
    CanTest: i32,
    VideoIn: i32,
    AudioIn: i32,
    Calibrate: i32,
    SeekType: i32,
    SimulatedHardware: i32,
};

pub const KSPROPERTY_EXTDEVICE_S = extern struct {
    Property: KSIDENTIFIER,
    u: extern union {
        Capabilities: DEVCAPS,
        DevPort: u32,
        PowerState: u32,
        pawchString: [260]u16,
        NodeUniqueID: [2]u32,
    },
};

const CLSID_PROPSETID_EXT_TRANSPORT_Value = Guid.initString("a03cd5f0-3045-11cf-8c44-00aa006b6814");
pub const CLSID_PROPSETID_EXT_TRANSPORT = &CLSID_PROPSETID_EXT_TRANSPORT_Value;

pub const KSPROPERTY_EXTXPORT = enum(i32) {
    EXTXPORT_CAPABILITIES = 0,
    EXTXPORT_INPUT_SIGNAL_MODE = 1,
    EXTXPORT_OUTPUT_SIGNAL_MODE = 2,
    EXTXPORT_LOAD_MEDIUM = 3,
    EXTXPORT_MEDIUM_INFO = 4,
    EXTXPORT_STATE = 5,
    EXTXPORT_STATE_NOTIFY = 6,
    EXTXPORT_TIMECODE_SEARCH = 7,
    EXTXPORT_ATN_SEARCH = 8,
    EXTXPORT_RTC_SEARCH = 9,
    RAW_AVC_CMD = 10,
};
pub const KSPROPERTY_EXTXPORT_CAPABILITIES = KSPROPERTY_EXTXPORT.EXTXPORT_CAPABILITIES;
pub const KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE = KSPROPERTY_EXTXPORT.EXTXPORT_INPUT_SIGNAL_MODE;
pub const KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE = KSPROPERTY_EXTXPORT.EXTXPORT_OUTPUT_SIGNAL_MODE;
pub const KSPROPERTY_EXTXPORT_LOAD_MEDIUM = KSPROPERTY_EXTXPORT.EXTXPORT_LOAD_MEDIUM;
pub const KSPROPERTY_EXTXPORT_MEDIUM_INFO = KSPROPERTY_EXTXPORT.EXTXPORT_MEDIUM_INFO;
pub const KSPROPERTY_EXTXPORT_STATE = KSPROPERTY_EXTXPORT.EXTXPORT_STATE;
pub const KSPROPERTY_EXTXPORT_STATE_NOTIFY = KSPROPERTY_EXTXPORT.EXTXPORT_STATE_NOTIFY;
pub const KSPROPERTY_EXTXPORT_TIMECODE_SEARCH = KSPROPERTY_EXTXPORT.EXTXPORT_TIMECODE_SEARCH;
pub const KSPROPERTY_EXTXPORT_ATN_SEARCH = KSPROPERTY_EXTXPORT.EXTXPORT_ATN_SEARCH;
pub const KSPROPERTY_EXTXPORT_RTC_SEARCH = KSPROPERTY_EXTXPORT.EXTXPORT_RTC_SEARCH;
pub const KSPROPERTY_RAW_AVC_CMD = KSPROPERTY_EXTXPORT.RAW_AVC_CMD;

pub const TRANSPORTSTATUS = extern struct {
    Mode: i32,
    LastError: i32,
    RecordInhibit: i32,
    ServoLock: i32,
    MediaPresent: i32,
    MediaLength: i32,
    MediaSize: i32,
    MediaTrackCount: i32,
    MediaTrackLength: i32,
    MediaTrackSide: i32,
    MediaType: i32,
    LinkMode: i32,
    NotifyOn: i32,
};

pub const TRANSPORTBASICPARMS = extern struct {
    TimeFormat: i32,
    TimeReference: i32,
    Superimpose: i32,
    EndStopAction: i32,
    RecordFormat: i32,
    StepFrames: i32,
    SetpField: i32,
    Preroll: i32,
    RecPreroll: i32,
    Postroll: i32,
    EditDelay: i32,
    PlayTCDelay: i32,
    RecTCDelay: i32,
    EditField: i32,
    FrameServo: i32,
    ColorFrameServo: i32,
    ServoRef: i32,
    WarnGenlock: i32,
    SetTracking: i32,
    VolumeName: [40]i8,
    Ballistic: [20]i32,
    Speed: i32,
    CounterFormat: i32,
    TunerChannel: i32,
    TunerNumber: i32,
    TimerEvent: i32,
    TimerStartDay: i32,
    TimerStartTime: i32,
    TimerStopDay: i32,
    TimerStopTime: i32,
};

pub const TRANSPORTVIDEOPARMS = extern struct {
    OutputMode: i32,
    Input: i32,
};

pub const TRANSPORTAUDIOPARMS = extern struct {
    EnableOutput: i32,
    EnableRecord: i32,
    EnableSelsync: i32,
    Input: i32,
    MonitorSource: i32,
};

pub const MEDIUM_INFO = extern struct {
    MediaPresent: BOOL,
    MediaType: u32,
    RecordInhibit: BOOL,
};

pub const TRANSPORT_STATE = extern struct {
    Mode: u32,
    State: u32,
};

pub const KSPROPERTY_EXTXPORT_S = extern struct {
    Property: KSIDENTIFIER,
    u: extern union {
        Capabilities: u32,
        SignalMode: u32,
        LoadMedium: u32,
        MediumInfo: MEDIUM_INFO,
        XPrtState: TRANSPORT_STATE,
        Timecode: extern struct {
            frame: u8,
            second: u8,
            minute: u8,
            hour: u8,
        },
        dwTimecode: u32,
        dwAbsTrackNumber: u32,
        RawAVC: extern struct {
            PayloadSize: u32,
            Payload: [512]u8,
        },
    },
};

pub const KSPROPERTY_EXTXPORT_NODE_S = extern struct {
    NodeProperty: KSP_NODE,
    u: extern union {
        Capabilities: u32,
        SignalMode: u32,
        LoadMedium: u32,
        MediumInfo: MEDIUM_INFO,
        XPrtState: TRANSPORT_STATE,
        Timecode: extern struct {
            frame: u8,
            second: u8,
            minute: u8,
            hour: u8,
        },
        dwTimecode: u32,
        dwAbsTrackNumber: u32,
        RawAVC: extern struct {
            PayloadSize: u32,
            Payload: [512]u8,
        },
    },
};

const CLSID_PROPSETID_TIMECODE_READER_Value = Guid.initString("9b496ce1-811b-11cf-8c77-00aa006b6814");
pub const CLSID_PROPSETID_TIMECODE_READER = &CLSID_PROPSETID_TIMECODE_READER_Value;

pub const KSPROPERTY_TIMECODE = enum(i32) {
    TIMECODE_READER = 0,
    ATN_READER = 1,
    RTC_READER = 2,
};
pub const KSPROPERTY_TIMECODE_READER = KSPROPERTY_TIMECODE.TIMECODE_READER;
pub const KSPROPERTY_ATN_READER = KSPROPERTY_TIMECODE.ATN_READER;
pub const KSPROPERTY_RTC_READER = KSPROPERTY_TIMECODE.RTC_READER;

pub const KSPROPERTY_TIMECODE_S = extern struct {
    Property: KSIDENTIFIER,
    TimecodeSamp: TIMECODE_SAMPLE,
};

pub const KSPROPERTY_TIMECODE_NODE_S = extern struct {
    NodeProperty: KSP_NODE,
    TimecodeSamp: TIMECODE_SAMPLE,
};

const CLSID_KSEVENTSETID_EXTDEV_Command_Value = Guid.initString("109c7988-b3cb-11d2-b48e-006097b3391b");
pub const CLSID_KSEVENTSETID_EXTDEV_Command = &CLSID_KSEVENTSETID_EXTDEV_Command_Value;

pub const KSEVENT_DEVCMD = enum(i32) {
    COMMAND_NOTIFY_INTERIM_READY = 0,
    COMMAND_CONTROL_INTERIM_READY = 1,
    COMMAND_BUSRESET = 2,
    TIMECODE_UPDATE = 3,
    OPERATION_MODE_UPDATE = 4,
    TRANSPORT_STATE_UPDATE = 5,
    NOTIFY_REMOVAL = 6,
    NOTIFY_MEDIUM_CHANGE = 7,
};
pub const KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY = KSEVENT_DEVCMD.COMMAND_NOTIFY_INTERIM_READY;
pub const KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY = KSEVENT_DEVCMD.COMMAND_CONTROL_INTERIM_READY;
pub const KSEVENT_EXTDEV_COMMAND_BUSRESET = KSEVENT_DEVCMD.COMMAND_BUSRESET;
pub const KSEVENT_EXTDEV_TIMECODE_UPDATE = KSEVENT_DEVCMD.TIMECODE_UPDATE;
pub const KSEVENT_EXTDEV_OPERATION_MODE_UPDATE = KSEVENT_DEVCMD.OPERATION_MODE_UPDATE;
pub const KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE = KSEVENT_DEVCMD.TRANSPORT_STATE_UPDATE;
pub const KSEVENT_EXTDEV_NOTIFY_REMOVAL = KSEVENT_DEVCMD.NOTIFY_REMOVAL;
pub const KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE = KSEVENT_DEVCMD.NOTIFY_MEDIUM_CHANGE;

const CLSID_PROPSETID_VIDCAP_CROSSBAR_Value = Guid.initString("6a2e0640-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_CROSSBAR = &CLSID_PROPSETID_VIDCAP_CROSSBAR_Value;

pub const KSPROPERTY_VIDCAP_CROSSBAR = enum(i32) {
    CAPS = 0,
    PININFO = 1,
    CAN_ROUTE = 2,
    ROUTE = 3,
    INPUT_ACTIVE = 4,
};
pub const KSPROPERTY_CROSSBAR_CAPS = KSPROPERTY_VIDCAP_CROSSBAR.CAPS;
pub const KSPROPERTY_CROSSBAR_PININFO = KSPROPERTY_VIDCAP_CROSSBAR.PININFO;
pub const KSPROPERTY_CROSSBAR_CAN_ROUTE = KSPROPERTY_VIDCAP_CROSSBAR.CAN_ROUTE;
pub const KSPROPERTY_CROSSBAR_ROUTE = KSPROPERTY_VIDCAP_CROSSBAR.ROUTE;
pub const KSPROPERTY_CROSSBAR_INPUT_ACTIVE = KSPROPERTY_VIDCAP_CROSSBAR.INPUT_ACTIVE;

pub const KSPROPERTY_CROSSBAR_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    NumberOfInputs: u32,
    NumberOfOutputs: u32,
};

pub const KSPROPERTY_CROSSBAR_PININFO_S = extern struct {
    Property: KSIDENTIFIER,
    Direction: KSPIN_DATAFLOW,
    Index: u32,
    PinType: u32,
    RelatedPinIndex: u32,
    Medium: KSIDENTIFIER,
};

pub const KSPROPERTY_CROSSBAR_ROUTE_S = extern struct {
    Property: KSIDENTIFIER,
    IndexInputPin: u32,
    IndexOutputPin: u32,
    CanRoute: u32,
};

pub const KSPROPERTY_CROSSBAR_ACTIVE_S = extern struct {
    Property: KSIDENTIFIER,
    IndexInputPin: u32,
    Active: u32,
};

const CLSID_EVENTSETID_CROSSBAR_Value = Guid.initString("6a2e0641-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_EVENTSETID_CROSSBAR = &CLSID_EVENTSETID_CROSSBAR_Value;

pub const KSEVENT_CROSSBAR = enum(i32) {
    D = 0,
};
pub const KSEVENT_CROSSBAR_CHANGED = KSEVENT_CROSSBAR.D;

pub const KS_PhysicalConnectorType = enum(i32) {
    Video_Tuner = 1,
    Video_Composite = 2,
    Video_SVideo = 3,
    Video_RGB = 4,
    Video_YRYBY = 5,
    Video_SerialDigital = 6,
    Video_ParallelDigital = 7,
    Video_SCSI = 8,
    Video_AUX = 9,
    Video_1394 = 10,
    Video_USB = 11,
    Video_VideoDecoder = 12,
    Video_VideoEncoder = 13,
    Video_SCART = 14,
    Audio_Tuner = 4096,
    Audio_Line = 4097,
    Audio_Mic = 4098,
    Audio_AESDigital = 4099,
    Audio_SPDIFDigital = 4100,
    Audio_SCSI = 4101,
    Audio_AUX = 4102,
    Audio_1394 = 4103,
    Audio_USB = 4104,
    Audio_AudioDecoder = 4105,
};
pub const KS_PhysConn_Video_Tuner = KS_PhysicalConnectorType.Video_Tuner;
pub const KS_PhysConn_Video_Composite = KS_PhysicalConnectorType.Video_Composite;
pub const KS_PhysConn_Video_SVideo = KS_PhysicalConnectorType.Video_SVideo;
pub const KS_PhysConn_Video_RGB = KS_PhysicalConnectorType.Video_RGB;
pub const KS_PhysConn_Video_YRYBY = KS_PhysicalConnectorType.Video_YRYBY;
pub const KS_PhysConn_Video_SerialDigital = KS_PhysicalConnectorType.Video_SerialDigital;
pub const KS_PhysConn_Video_ParallelDigital = KS_PhysicalConnectorType.Video_ParallelDigital;
pub const KS_PhysConn_Video_SCSI = KS_PhysicalConnectorType.Video_SCSI;
pub const KS_PhysConn_Video_AUX = KS_PhysicalConnectorType.Video_AUX;
pub const KS_PhysConn_Video_1394 = KS_PhysicalConnectorType.Video_1394;
pub const KS_PhysConn_Video_USB = KS_PhysicalConnectorType.Video_USB;
pub const KS_PhysConn_Video_VideoDecoder = KS_PhysicalConnectorType.Video_VideoDecoder;
pub const KS_PhysConn_Video_VideoEncoder = KS_PhysicalConnectorType.Video_VideoEncoder;
pub const KS_PhysConn_Video_SCART = KS_PhysicalConnectorType.Video_SCART;
pub const KS_PhysConn_Audio_Tuner = KS_PhysicalConnectorType.Audio_Tuner;
pub const KS_PhysConn_Audio_Line = KS_PhysicalConnectorType.Audio_Line;
pub const KS_PhysConn_Audio_Mic = KS_PhysicalConnectorType.Audio_Mic;
pub const KS_PhysConn_Audio_AESDigital = KS_PhysicalConnectorType.Audio_AESDigital;
pub const KS_PhysConn_Audio_SPDIFDigital = KS_PhysicalConnectorType.Audio_SPDIFDigital;
pub const KS_PhysConn_Audio_SCSI = KS_PhysicalConnectorType.Audio_SCSI;
pub const KS_PhysConn_Audio_AUX = KS_PhysicalConnectorType.Audio_AUX;
pub const KS_PhysConn_Audio_1394 = KS_PhysicalConnectorType.Audio_1394;
pub const KS_PhysConn_Audio_USB = KS_PhysicalConnectorType.Audio_USB;
pub const KS_PhysConn_Audio_AudioDecoder = KS_PhysicalConnectorType.Audio_AudioDecoder;

const CLSID_PROPSETID_VIDCAP_TVAUDIO_Value = Guid.initString("6a2e0650-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_TVAUDIO = &CLSID_PROPSETID_VIDCAP_TVAUDIO_Value;

pub const KSPROPERTY_VIDCAP_TVAUDIO = enum(i32) {
    CAPS = 0,
    MODE = 1,
    CURRENTLY_AVAILABLE_MODES = 2,
};
pub const KSPROPERTY_TVAUDIO_CAPS = KSPROPERTY_VIDCAP_TVAUDIO.CAPS;
pub const KSPROPERTY_TVAUDIO_MODE = KSPROPERTY_VIDCAP_TVAUDIO.MODE;
pub const KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES = KSPROPERTY_VIDCAP_TVAUDIO.CURRENTLY_AVAILABLE_MODES;

pub const KSPROPERTY_TVAUDIO_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    Capabilities: u32,
    InputMedium: KSIDENTIFIER,
    OutputMedium: KSIDENTIFIER,
};

pub const KSPROPERTY_TVAUDIO_S = extern struct {
    Property: KSIDENTIFIER,
    Mode: u32,
};

const CLSID_KSEVENTSETID_VIDCAP_TVAUDIO_Value = Guid.initString("6a2e0651-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_KSEVENTSETID_VIDCAP_TVAUDIO = &CLSID_KSEVENTSETID_VIDCAP_TVAUDIO_Value;

pub const KSEVENT_TVAUDIO = enum(i32) {
    D = 0,
};
pub const KSEVENT_TVAUDIO_CHANGED = KSEVENT_TVAUDIO.D;

const CLSID_PROPSETID_VIDCAP_VIDEOCOMPRESSION_Value = Guid.initString("c6e13343-30ac-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_VIDEOCOMPRESSION = &CLSID_PROPSETID_VIDCAP_VIDEOCOMPRESSION_Value;

pub const KSPROPERTY_VIDCAP_VIDEOCOMPRESSION = enum(i32) {
    GETINFO = 0,
    KEYFRAME_RATE = 1,
    PFRAMES_PER_KEYFRAME = 2,
    QUALITY = 3,
    OVERRIDE_KEYFRAME = 4,
    OVERRIDE_FRAME_SIZE = 5,
    WINDOWSIZE = 6,
};
pub const KSPROPERTY_VIDEOCOMPRESSION_GETINFO = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.GETINFO;
pub const KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.KEYFRAME_RATE;
pub const KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.PFRAMES_PER_KEYFRAME;
pub const KSPROPERTY_VIDEOCOMPRESSION_QUALITY = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.QUALITY;
pub const KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.OVERRIDE_KEYFRAME;
pub const KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.OVERRIDE_FRAME_SIZE;
pub const KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION.WINDOWSIZE;

pub const KS_CompressionCaps = enum(i32) {
    Quality = 1,
    Crunch = 2,
    KeyFrame = 4,
    BFrame = 8,
    Window = 16,
};
pub const KS_CompressionCaps_CanQuality = KS_CompressionCaps.Quality;
pub const KS_CompressionCaps_CanCrunch = KS_CompressionCaps.Crunch;
pub const KS_CompressionCaps_CanKeyFrame = KS_CompressionCaps.KeyFrame;
pub const KS_CompressionCaps_CanBFrame = KS_CompressionCaps.BFrame;
pub const KS_CompressionCaps_CanWindow = KS_CompressionCaps.Window;

pub const KS_VideoStreamingHints = enum(i32) {
    FrameInterval = 256,
    KeyFrameRate = 512,
    PFrameRate = 1024,
    CompQuality = 2048,
    CompWindowSize = 4096,
};
pub const KS_StreamingHint_FrameInterval = KS_VideoStreamingHints.FrameInterval;
pub const KS_StreamingHint_KeyFrameRate = KS_VideoStreamingHints.KeyFrameRate;
pub const KS_StreamingHint_PFrameRate = KS_VideoStreamingHints.PFrameRate;
pub const KS_StreamingHint_CompQuality = KS_VideoStreamingHints.CompQuality;
pub const KS_StreamingHint_CompWindowSize = KS_VideoStreamingHints.CompWindowSize;

pub const KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    DefaultKeyFrameRate: i32,
    DefaultPFrameRate: i32,
    DefaultQuality: i32,
    NumberOfQualitySettings: i32,
    Capabilities: i32,
};

pub const KSPROPERTY_VIDEOCOMPRESSION_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    Value: i32,
};

pub const KSPROPERTY_VIDEOCOMPRESSION_S1 = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    Value: i32,
    Flags: u32,
};

const CLSID_KSDATAFORMAT_SUBTYPE_OVERLAY_Value = Guid.initString("e436eb7f-524f-11ce-9f53-0020af0ba770");
pub const CLSID_KSDATAFORMAT_SUBTYPE_OVERLAY = &CLSID_KSDATAFORMAT_SUBTYPE_OVERLAY_Value;

const CLSID_KSPROPSETID_OverlayUpdate_Value = Guid.initString("490ea5cf-7681-11d1-a21c-00a0c9223196");
pub const CLSID_KSPROPSETID_OverlayUpdate = &CLSID_KSPROPSETID_OverlayUpdate_Value;

pub const KSPROPERTY_OVERLAYUPDATE = enum(i32) {
    INTERESTS = 0,
    CLIPLIST = 1,
    PALETTE = 2,
    COLORKEY = 4,
    VIDEOPOSITION = 8,
    DISPLAYCHANGE = 16,
    COLORREF = 268435456,
};
pub const KSPROPERTY_OVERLAYUPDATE_INTERESTS = KSPROPERTY_OVERLAYUPDATE.INTERESTS;
pub const KSPROPERTY_OVERLAYUPDATE_CLIPLIST = KSPROPERTY_OVERLAYUPDATE.CLIPLIST;
pub const KSPROPERTY_OVERLAYUPDATE_PALETTE = KSPROPERTY_OVERLAYUPDATE.PALETTE;
pub const KSPROPERTY_OVERLAYUPDATE_COLORKEY = KSPROPERTY_OVERLAYUPDATE.COLORKEY;
pub const KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = KSPROPERTY_OVERLAYUPDATE.VIDEOPOSITION;
pub const KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = KSPROPERTY_OVERLAYUPDATE.DISPLAYCHANGE;
pub const KSPROPERTY_OVERLAYUPDATE_COLORREF = KSPROPERTY_OVERLAYUPDATE.COLORREF;

pub const KSDISPLAYCHANGE = extern struct {
    PelsWidth: u32,
    PelsHeight: u32,
    BitsPerPel: u32,
    DeviceID: [1]u16,
};

const CLSID_PROPSETID_VIDCAP_VIDEOCONTROL_Value = Guid.initString("6a2e0670-28e4-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_VIDEOCONTROL = &CLSID_PROPSETID_VIDCAP_VIDEOCONTROL_Value;

pub const KSPROPERTY_VIDCAP_VIDEOCONTROL = enum(i32) {
    CAPS = 0,
    ACTUAL_FRAME_RATE = 1,
    FRAME_RATES = 2,
    MODE = 3,
};
pub const KSPROPERTY_VIDEOCONTROL_CAPS = KSPROPERTY_VIDCAP_VIDEOCONTROL.CAPS;
pub const KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE = KSPROPERTY_VIDCAP_VIDEOCONTROL.ACTUAL_FRAME_RATE;
pub const KSPROPERTY_VIDEOCONTROL_FRAME_RATES = KSPROPERTY_VIDCAP_VIDEOCONTROL.FRAME_RATES;
pub const KSPROPERTY_VIDEOCONTROL_MODE = KSPROPERTY_VIDCAP_VIDEOCONTROL.MODE;

pub const KS_VideoControlFlags = enum(i32) {
    VideoControlFlag_FlipHorizontal = 1,
    VideoControlFlag_FlipVertical = 2,
    Obsolete_VideoControlFlag_ExternalTriggerEnable = 16,
    Obsolete_VideoControlFlag_Trigger = 32,
    VideoControlFlag_ExternalTriggerEnable = 4,
    VideoControlFlag_Trigger = 8,
    VideoControlFlag_IndependentImagePin = 64,
    VideoControlFlag_StillCapturePreviewFrame = 128,
    VideoControlFlag_StartPhotoSequenceCapture = 256,
    VideoControlFlag_StopPhotoSequenceCapture = 512,
};
pub const KS_VideoControlFlag_FlipHorizontal = KS_VideoControlFlags.VideoControlFlag_FlipHorizontal;
pub const KS_VideoControlFlag_FlipVertical = KS_VideoControlFlags.VideoControlFlag_FlipVertical;
pub const KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = KS_VideoControlFlags.Obsolete_VideoControlFlag_ExternalTriggerEnable;
pub const KS_Obsolete_VideoControlFlag_Trigger = KS_VideoControlFlags.Obsolete_VideoControlFlag_Trigger;
pub const KS_VideoControlFlag_ExternalTriggerEnable = KS_VideoControlFlags.VideoControlFlag_ExternalTriggerEnable;
pub const KS_VideoControlFlag_Trigger = KS_VideoControlFlags.VideoControlFlag_Trigger;
pub const KS_VideoControlFlag_IndependentImagePin = KS_VideoControlFlags.VideoControlFlag_IndependentImagePin;
pub const KS_VideoControlFlag_StillCapturePreviewFrame = KS_VideoControlFlags.VideoControlFlag_StillCapturePreviewFrame;
pub const KS_VideoControlFlag_StartPhotoSequenceCapture = KS_VideoControlFlags.VideoControlFlag_StartPhotoSequenceCapture;
pub const KS_VideoControlFlag_StopPhotoSequenceCapture = KS_VideoControlFlags.VideoControlFlag_StopPhotoSequenceCapture;

pub const KSPROPERTY_VIDEOCONTROL_CAPS_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    VideoControlCaps: u32,
};

pub const KSPROPERTY_VIDEOCONTROL_MODE_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    Mode: i32,
};

pub const KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    RangeIndex: u32,
    Dimensions: SIZE,
    CurrentActualFrameRate: i64,
    CurrentMaxAvailableFrameRate: i64,
};

pub const KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S = extern struct {
    Property: KSIDENTIFIER,
    StreamIndex: u32,
    RangeIndex: u32,
    Dimensions: SIZE,
};

const CLSID_PROPSETID_VIDCAP_DROPPEDFRAMES_Value = Guid.initString("c6e13344-30ac-11d0-a18c-00a0c9118956");
pub const CLSID_PROPSETID_VIDCAP_DROPPEDFRAMES = &CLSID_PROPSETID_VIDCAP_DROPPEDFRAMES_Value;

pub const KSPROPERTY_VIDCAP_DROPPEDFRAMES = enum(i32) {
    T = 0,
};
pub const KSPROPERTY_DROPPEDFRAMES_CURRENT = KSPROPERTY_VIDCAP_DROPPEDFRAMES.T;

pub const KSPROPERTY_DROPPEDFRAMES_CURRENT_S = extern struct {
    Property: KSIDENTIFIER,
    PictureNumber: i64,
    DropCount: i64,
    AverageFrameSize: u32,
};

const CLSID_KSPROPSETID_VPConfig_Value = Guid.initString("bc29a660-30e3-11d0-9e69-00c04fd7c15b");
pub const CLSID_KSPROPSETID_VPConfig = &CLSID_KSPROPSETID_VPConfig_Value;

const CLSID_KSPROPSETID_VPVBIConfig_Value = Guid.initString("ec529b00-1a1f-11d1-bad9-00609744111a");
pub const CLSID_KSPROPSETID_VPVBIConfig = &CLSID_KSPROPSETID_VPVBIConfig_Value;

pub const KSPROPERTY_VPCONFIG = enum(i32) {
    NUMCONNECTINFO = 0,
    GETCONNECTINFO = 1,
    SETCONNECTINFO = 2,
    VPDATAINFO = 3,
    MAXPIXELRATE = 4,
    INFORMVPINPUT = 5,
    NUMVIDEOFORMAT = 6,
    GETVIDEOFORMAT = 7,
    SETVIDEOFORMAT = 8,
    INVERTPOLARITY = 9,
    DECIMATIONCAPABILITY = 10,
    SCALEFACTOR = 11,
    DDRAWHANDLE = 12,
    VIDEOPORTID = 13,
    DDRAWSURFACEHANDLE = 14,
    SURFACEPARAMS = 15,
};
pub const KSPROPERTY_VPCONFIG_NUMCONNECTINFO = KSPROPERTY_VPCONFIG.NUMCONNECTINFO;
pub const KSPROPERTY_VPCONFIG_GETCONNECTINFO = KSPROPERTY_VPCONFIG.GETCONNECTINFO;
pub const KSPROPERTY_VPCONFIG_SETCONNECTINFO = KSPROPERTY_VPCONFIG.SETCONNECTINFO;
pub const KSPROPERTY_VPCONFIG_VPDATAINFO = KSPROPERTY_VPCONFIG.VPDATAINFO;
pub const KSPROPERTY_VPCONFIG_MAXPIXELRATE = KSPROPERTY_VPCONFIG.MAXPIXELRATE;
pub const KSPROPERTY_VPCONFIG_INFORMVPINPUT = KSPROPERTY_VPCONFIG.INFORMVPINPUT;
pub const KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT = KSPROPERTY_VPCONFIG.NUMVIDEOFORMAT;
pub const KSPROPERTY_VPCONFIG_GETVIDEOFORMAT = KSPROPERTY_VPCONFIG.GETVIDEOFORMAT;
pub const KSPROPERTY_VPCONFIG_SETVIDEOFORMAT = KSPROPERTY_VPCONFIG.SETVIDEOFORMAT;
pub const KSPROPERTY_VPCONFIG_INVERTPOLARITY = KSPROPERTY_VPCONFIG.INVERTPOLARITY;
pub const KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY = KSPROPERTY_VPCONFIG.DECIMATIONCAPABILITY;
pub const KSPROPERTY_VPCONFIG_SCALEFACTOR = KSPROPERTY_VPCONFIG.SCALEFACTOR;
pub const KSPROPERTY_VPCONFIG_DDRAWHANDLE = KSPROPERTY_VPCONFIG.DDRAWHANDLE;
pub const KSPROPERTY_VPCONFIG_VIDEOPORTID = KSPROPERTY_VPCONFIG.VIDEOPORTID;
pub const KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE = KSPROPERTY_VPCONFIG.DDRAWSURFACEHANDLE;
pub const KSPROPERTY_VPCONFIG_SURFACEPARAMS = KSPROPERTY_VPCONFIG.SURFACEPARAMS;

const CLSID_CLSID_KsIBasicAudioInterfaceHandler_Value = Guid.initString("b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d");
pub const CLSID_CLSID_KsIBasicAudioInterfaceHandler = &CLSID_CLSID_KsIBasicAudioInterfaceHandler_Value;

pub const KS_AMPixAspectRatio = enum(i32) {
    NTSC4x3 = 0,
    NTSC16x9 = 1,
    PAL4x3 = 2,
    PAL16x9 = 3,
};
pub const KS_PixAspectRatio_NTSC4x3 = KS_AMPixAspectRatio.NTSC4x3;
pub const KS_PixAspectRatio_NTSC16x9 = KS_AMPixAspectRatio.NTSC16x9;
pub const KS_PixAspectRatio_PAL4x3 = KS_AMPixAspectRatio.PAL4x3;
pub const KS_PixAspectRatio_PAL16x9 = KS_AMPixAspectRatio.PAL16x9;

pub const KS_AMVP_SELECTFORMATBY = enum(i32) {
    DO_NOT_CARE = 0,
    BEST_BANDWIDTH = 1,
    INPUT_SAME_AS_OUTPUT = 2,
};
pub const KS_AMVP_DO_NOT_CARE = KS_AMVP_SELECTFORMATBY.DO_NOT_CARE;
pub const KS_AMVP_BEST_BANDWIDTH = KS_AMVP_SELECTFORMATBY.BEST_BANDWIDTH;
pub const KS_AMVP_INPUT_SAME_AS_OUTPUT = KS_AMVP_SELECTFORMATBY.INPUT_SAME_AS_OUTPUT;

pub const KS_AMVP_MODE = enum(i32) {
    WEAVE = 0,
    BOBINTERLEAVED = 1,
    BOBNONINTERLEAVED = 2,
    SKIPEVEN = 3,
    SKIPODD = 4,
};
pub const KS_AMVP_MODE_WEAVE = KS_AMVP_MODE.WEAVE;
pub const KS_AMVP_MODE_BOBINTERLEAVED = KS_AMVP_MODE.BOBINTERLEAVED;
pub const KS_AMVP_MODE_BOBNONINTERLEAVED = KS_AMVP_MODE.BOBNONINTERLEAVED;
pub const KS_AMVP_MODE_SKIPEVEN = KS_AMVP_MODE.SKIPEVEN;
pub const KS_AMVP_MODE_SKIPODD = KS_AMVP_MODE.SKIPODD;

pub const KS_AMVPDIMINFO = extern struct {
    dwFieldWidth: u32,
    dwFieldHeight: u32,
    dwVBIWidth: u32,
    dwVBIHeight: u32,
    rcValidRegion: RECT,
};

pub const KS_AMVPDATAINFO = extern struct {
    dwSize: u32,
    dwMicrosecondsPerField: u32,
    amvpDimInfo: KS_AMVPDIMINFO,
    dwPictAspectRatioX: u32,
    dwPictAspectRatioY: u32,
    bEnableDoubleClock: BOOL,
    bEnableVACT: BOOL,
    bDataIsInterlaced: BOOL,
    lHalfLinesOdd: i32,
    bFieldPolarityInverted: BOOL,
    dwNumLinesInVREF: u32,
    lHalfLinesEven: i32,
    dwReserved1: u32,
};

pub const KS_AMVPSIZE = extern struct {
    dwWidth: u32,
    dwHeight: u32,
};

pub const KSVPMAXPIXELRATE = extern struct {
    Size: KS_AMVPSIZE,
    MaxPixelsPerSecond: u32,
    Reserved: u32,
};

pub const KSVPSIZE_PROP = extern struct {
    Property: KSIDENTIFIER,
    Size: KS_AMVPSIZE,
};

pub const KSVPSURFACEPARAMS = extern struct {
    dwPitch: u32,
    dwXOrigin: u32,
    dwYOrigin: u32,
};

const CLSID_KSEVENTSETID_VPNotify_Value = Guid.initString("20c5598e-d3c8-11d0-8dfc-00c04fd7c08b");
pub const CLSID_KSEVENTSETID_VPNotify = &CLSID_KSEVENTSETID_VPNotify_Value;

pub const KSEVENT_VPNOTIFY = enum(i32) {
    E = 0,
};
pub const KSEVENT_VPNOTIFY_FORMATCHANGE = KSEVENT_VPNOTIFY.E;

const CLSID_KSEVENTSETID_VIDCAPTOSTI_Value = Guid.initString("db47de20-f628-11d1-ba41-00a0c90d2b05");
pub const CLSID_KSEVENTSETID_VIDCAPTOSTI = &CLSID_KSEVENTSETID_VIDCAPTOSTI_Value;

pub const KSEVENT_VIDCAPTOSTI = enum(i32) {
    TOSTI_EXT_TRIGGER = 0,
    _AUTO_UPDATE = 1,
    _SEARCH = 2,
};
pub const KSEVENT_VIDCAPTOSTI_EXT_TRIGGER = KSEVENT_VIDCAPTOSTI.TOSTI_EXT_TRIGGER;
pub const KSEVENT_VIDCAP_AUTO_UPDATE = KSEVENT_VIDCAPTOSTI._AUTO_UPDATE;
pub const KSEVENT_VIDCAP_SEARCH = KSEVENT_VIDCAPTOSTI._SEARCH;

pub const KSPROPERTY_EXTENSION_UNIT = enum(i32) {
    INFO = 0,
    CONTROL = 1,
    PASS_THROUGH = 65535,
};
pub const KSPROPERTY_EXTENSION_UNIT_INFO = KSPROPERTY_EXTENSION_UNIT.INFO;
pub const KSPROPERTY_EXTENSION_UNIT_CONTROL = KSPROPERTY_EXTENSION_UNIT.CONTROL;
pub const KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = KSPROPERTY_EXTENSION_UNIT.PASS_THROUGH;

const CLSID_KSEVENTSETID_VPVBINotify_Value = Guid.initString("ec529b01-1a1f-11d1-bad9-00609744111a");
pub const CLSID_KSEVENTSETID_VPVBINotify = &CLSID_KSEVENTSETID_VPVBINotify_Value;

pub const KSEVENT_VPVBINOTIFY = enum(i32) {
    E = 0,
};
pub const KSEVENT_VPVBINOTIFY_FORMATCHANGE = KSEVENT_VPVBINOTIFY.E;

const CLSID_KSDATAFORMAT_TYPE_AUXLine21Data_Value = Guid.initString("670aea80-3a82-11d0-b79b-00aa003767a7");
pub const CLSID_KSDATAFORMAT_TYPE_AUXLine21Data = &CLSID_KSDATAFORMAT_TYPE_AUXLine21Data_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_Line21_BytePair_Value = Guid.initString("6e8d4a22-310c-11d0-b79a-00aa003767a7");
pub const CLSID_KSDATAFORMAT_SUBTYPE_Line21_BytePair = &CLSID_KSDATAFORMAT_SUBTYPE_Line21_BytePair_Value;

const CLSID_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket_Value = Guid.initString("6e8d4a23-310c-11d0-b79a-00aa003767a7");
pub const CLSID_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket = &CLSID_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket_Value;

pub const KSGOP_USERDATA = extern struct {
    sc: u32,
    reserved1: u32,
    cFields: u8,
    l21Data: [3]CHAR,
};

const CLSID_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK_Value = Guid.initString("ed0b916a-044d-11d1-aa78-00c04fc31d60");
pub const CLSID_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK = &CLSID_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK_Value;

const CLSID_KSPROPSETID_TSRateChange_Value = Guid.initString("a503c5c0-1d1d-11d1-ad80-444553540000");
pub const CLSID_KSPROPSETID_TSRateChange = &CLSID_KSPROPSETID_TSRateChange_Value;

pub const KS_AM_PROPERTY_TS_RATE_CHANGE = enum(i32) {
    SimpleRateChange = 1,
    ExactRateChange = 2,
    MaxFullDataRate = 3,
    Step = 4,
};
pub const KS_AM_RATE_SimpleRateChange = KS_AM_PROPERTY_TS_RATE_CHANGE.SimpleRateChange;
pub const KS_AM_RATE_ExactRateChange = KS_AM_PROPERTY_TS_RATE_CHANGE.ExactRateChange;
pub const KS_AM_RATE_MaxFullDataRate = KS_AM_PROPERTY_TS_RATE_CHANGE.MaxFullDataRate;
pub const KS_AM_RATE_Step = KS_AM_PROPERTY_TS_RATE_CHANGE.Step;

pub const KS_AM_SimpleRateChange = extern struct {
    StartTime: i64,
    Rate: i32,
};

pub const KS_AM_ExactRateChange = extern struct {
    OutputZeroTime: i64,
    Rate: i32,
};

const CLSID_KSCATEGORY_ENCODER_Value = Guid.initString("19689bf6-c384-48fd-ad51-90e58c79f70b");
pub const CLSID_KSCATEGORY_ENCODER = &CLSID_KSCATEGORY_ENCODER_Value;

const CLSID_KSCATEGORY_MULTIPLEXER_Value = Guid.initString("7a5de1d3-01a1-452c-b481-4fa2b96271e8");
pub const CLSID_KSCATEGORY_MULTIPLEXER = &CLSID_KSCATEGORY_MULTIPLEXER_Value;

const CLSID_ENCAPIPARAM_BITRATE_Value = Guid.initString("49cc4c43-ca83-4ad4-a9af-f3696af666df");
pub const CLSID_ENCAPIPARAM_BITRATE = &CLSID_ENCAPIPARAM_BITRATE_Value;

const CLSID_ENCAPIPARAM_PEAK_BITRATE_Value = Guid.initString("703f16a9-3d48-44a1-b077-018dff915d19");
pub const CLSID_ENCAPIPARAM_PEAK_BITRATE = &CLSID_ENCAPIPARAM_PEAK_BITRATE_Value;

const CLSID_ENCAPIPARAM_BITRATE_MODE_Value = Guid.initString("ee5fb25c-c713-40d1-9d58-c0d7241e250f");
pub const CLSID_ENCAPIPARAM_BITRATE_MODE = &CLSID_ENCAPIPARAM_BITRATE_MODE_Value;

const CLSID_CODECAPI_CHANGELISTS_Value = Guid.initString("62b12acf-f6b0-47d9-9456-96f22c4e0b9d");
pub const CLSID_CODECAPI_CHANGELISTS = &CLSID_CODECAPI_CHANGELISTS_Value;

const CLSID_CODECAPI_VIDEO_ENCODER_Value = Guid.initString("7112e8e1-3d03-47ef-8e60-03f1cf537301");
pub const CLSID_CODECAPI_VIDEO_ENCODER = &CLSID_CODECAPI_VIDEO_ENCODER_Value;

const CLSID_CODECAPI_AUDIO_ENCODER_Value = Guid.initString("b9d19a3e-f897-429c-bc46-8138b7272b2d");
pub const CLSID_CODECAPI_AUDIO_ENCODER = &CLSID_CODECAPI_AUDIO_ENCODER_Value;

const CLSID_CODECAPI_SETALLDEFAULTS_Value = Guid.initString("6c5e6a7c-acf8-4f55-a999-1a628109051b");
pub const CLSID_CODECAPI_SETALLDEFAULTS = &CLSID_CODECAPI_SETALLDEFAULTS_Value;

const CLSID_CODECAPI_ALLSETTINGS_Value = Guid.initString("6a577e92-83e1-4113-adc2-4fcec32f83a1");
pub const CLSID_CODECAPI_ALLSETTINGS = &CLSID_CODECAPI_ALLSETTINGS_Value;

const CLSID_CODECAPI_SUPPORTSEVENTS_Value = Guid.initString("0581af97-7693-4dbd-9dca-3f9ebd6585a1");
pub const CLSID_CODECAPI_SUPPORTSEVENTS = &CLSID_CODECAPI_SUPPORTSEVENTS_Value;

const CLSID_CODECAPI_CURRENTCHANGELIST_Value = Guid.initString("1cb14e83-7d72-4657-83fd-47a2c5b9d13d");
pub const CLSID_CODECAPI_CURRENTCHANGELIST = &CLSID_CODECAPI_CURRENTCHANGELIST_Value;

const CLSID_KSPROPSETID_Jack_Value = Guid.initString("4509f757-2d46-4637-8e62-ce7db944f57b");
pub const CLSID_KSPROPSETID_Jack = &CLSID_KSPROPSETID_Jack_Value;

pub const KSPROPERTY_JACK = enum(i32) {
    DESCRIPTION = 1,
    DESCRIPTION2 = 2,
    SINK_INFO = 3,
    CONTAINERID = 4,
};
pub const KSPROPERTY_JACK_DESCRIPTION = KSPROPERTY_JACK.DESCRIPTION;
pub const KSPROPERTY_JACK_DESCRIPTION2 = KSPROPERTY_JACK.DESCRIPTION2;
pub const KSPROPERTY_JACK_SINK_INFO = KSPROPERTY_JACK.SINK_INFO;
pub const KSPROPERTY_JACK_CONTAINERID = KSPROPERTY_JACK.CONTAINERID;

pub const EPcxConnectionType = enum(i32) {
    Unknown = 0,
    @"3Point5mm" = 1,
    Quarter = 2,
    AtapiInternal = 3,
    RCA = 4,
    Optical = 5,
    OtherDigital = 6,
    OtherAnalog = 7,
    MultichannelAnalogDIN = 8,
    XlrProfessional = 9,
    RJ11Modem = 10,
    Combination = 11,
};
pub const eConnTypeUnknown = EPcxConnectionType.Unknown;
pub const eConnType3Point5mm = EPcxConnectionType.@"3Point5mm";
pub const eConnTypeQuarter = EPcxConnectionType.Quarter;
pub const eConnTypeAtapiInternal = EPcxConnectionType.AtapiInternal;
pub const eConnTypeRCA = EPcxConnectionType.RCA;
pub const eConnTypeOptical = EPcxConnectionType.Optical;
pub const eConnTypeOtherDigital = EPcxConnectionType.OtherDigital;
pub const eConnTypeOtherAnalog = EPcxConnectionType.OtherAnalog;
pub const eConnTypeMultichannelAnalogDIN = EPcxConnectionType.MultichannelAnalogDIN;
pub const eConnTypeXlrProfessional = EPcxConnectionType.XlrProfessional;
pub const eConnTypeRJ11Modem = EPcxConnectionType.RJ11Modem;
pub const eConnTypeCombination = EPcxConnectionType.Combination;

pub const EPcxGeoLocation = enum(i32) {
    eGeoLocRear = 1,
    eGeoLocFront = 2,
    eGeoLocLeft = 3,
    eGeoLocRight = 4,
    eGeoLocTop = 5,
    eGeoLocBottom = 6,
    eGeoLocRearPanel = 7,
    eGeoLocRiser = 8,
    eGeoLocInsideMobileLid = 9,
    eGeoLocDrivebay = 10,
    eGeoLocHDMI = 11,
    eGeoLocOutsideMobileLid = 12,
    eGeoLocATAPI = 13,
    eGeoLocNotApplicable = 14,
    eGeoLocReserved6 = 15,
    EPcxGeoLocation_enum_count = 16,
};
pub const eGeoLocRear = EPcxGeoLocation.eGeoLocRear;
pub const eGeoLocFront = EPcxGeoLocation.eGeoLocFront;
pub const eGeoLocLeft = EPcxGeoLocation.eGeoLocLeft;
pub const eGeoLocRight = EPcxGeoLocation.eGeoLocRight;
pub const eGeoLocTop = EPcxGeoLocation.eGeoLocTop;
pub const eGeoLocBottom = EPcxGeoLocation.eGeoLocBottom;
pub const eGeoLocRearPanel = EPcxGeoLocation.eGeoLocRearPanel;
pub const eGeoLocRiser = EPcxGeoLocation.eGeoLocRiser;
pub const eGeoLocInsideMobileLid = EPcxGeoLocation.eGeoLocInsideMobileLid;
pub const eGeoLocDrivebay = EPcxGeoLocation.eGeoLocDrivebay;
pub const eGeoLocHDMI = EPcxGeoLocation.eGeoLocHDMI;
pub const eGeoLocOutsideMobileLid = EPcxGeoLocation.eGeoLocOutsideMobileLid;
pub const eGeoLocATAPI = EPcxGeoLocation.eGeoLocATAPI;
pub const eGeoLocNotApplicable = EPcxGeoLocation.eGeoLocNotApplicable;
pub const eGeoLocReserved6 = EPcxGeoLocation.eGeoLocReserved6;
pub const EPcxGeoLocation_enum_count = EPcxGeoLocation.EPcxGeoLocation_enum_count;

pub const EPcxGenLocation = enum(i32) {
    eGenLocPrimaryBox = 0,
    eGenLocInternal = 1,
    eGenLocSeparate = 2,
    eGenLocOther = 3,
    EPcxGenLocation_enum_count = 4,
};
pub const eGenLocPrimaryBox = EPcxGenLocation.eGenLocPrimaryBox;
pub const eGenLocInternal = EPcxGenLocation.eGenLocInternal;
pub const eGenLocSeparate = EPcxGenLocation.eGenLocSeparate;
pub const eGenLocOther = EPcxGenLocation.eGenLocOther;
pub const EPcxGenLocation_enum_count = EPcxGenLocation.EPcxGenLocation_enum_count;

pub const EPxcPortConnection = enum(i32) {
    Jack = 0,
    IntegratedDevice = 1,
    BothIntegratedAndJack = 2,
    Unknown = 3,
};
pub const ePortConnJack = EPxcPortConnection.Jack;
pub const ePortConnIntegratedDevice = EPxcPortConnection.IntegratedDevice;
pub const ePortConnBothIntegratedAndJack = EPxcPortConnection.BothIntegratedAndJack;
pub const ePortConnUnknown = EPxcPortConnection.Unknown;

pub const KSJACK_DESCRIPTION = extern struct {
    ChannelMapping: u32,
    Color: u32,
    ConnectionType: EPcxConnectionType,
    GeoLocation: EPcxGeoLocation,
    GenLocation: EPcxGenLocation,
    PortConnection: EPxcPortConnection,
    IsConnected: BOOL,
};

pub const KSJACK_SINK_CONNECTIONTYPE = enum(i32) {
    HDMI = 0,
    DISPLAYPORT = 1,
};
pub const KSJACK_SINK_CONNECTIONTYPE_HDMI = KSJACK_SINK_CONNECTIONTYPE.HDMI;
pub const KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = KSJACK_SINK_CONNECTIONTYPE.DISPLAYPORT;

pub const KSJACK_SINK_INFORMATION = extern struct {
    ConnType: KSJACK_SINK_CONNECTIONTYPE,
    ManufacturerId: u16,
    ProductId: u16,
    AudioLatency: u16,
    HDCPCapable: BOOL,
    AICapable: BOOL,
    SinkDescriptionLength: u8,
    SinkDescription: [32]u16,
    PortId: LUID,
};

pub const KSJACK_DESCRIPTION2 = extern struct {
    DeviceStateInfo: u32,
    JackCapabilities: u32,
};

const CLSID_KSPROPSETID_AudioPosture_Value = Guid.initString("a3fb7b0d-474e-4f51-a379-51282dd4fa8f");
pub const CLSID_KSPROPSETID_AudioPosture = &CLSID_KSPROPSETID_AudioPosture_Value;

pub const KSPROPERTY_AUDIOPOSTURE = enum(i32) {
    N = 1,
};
pub const KSPROPERTY_AUDIOPOSTURE_ORIENTATION = KSPROPERTY_AUDIOPOSTURE.N;

pub const AUDIOPOSTURE_ORIENTATION = enum(i32) {
    NOTROTATED = 0,
    ROTATED90DEGREESCOUNTERCLOCKWISE = 1,
    ROTATED180DEGREESCOUNTERCLOCKWISE = 2,
    ROTATED270DEGREESCOUNTERCLOCKWISE = 3,
};
pub const AUDIOPOSTURE_ORIENTATION_NOTROTATED = AUDIOPOSTURE_ORIENTATION.NOTROTATED;
pub const AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE = AUDIOPOSTURE_ORIENTATION.ROTATED90DEGREESCOUNTERCLOCKWISE;
pub const AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE = AUDIOPOSTURE_ORIENTATION.ROTATED180DEGREESCOUNTERCLOCKWISE;
pub const AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE = AUDIOPOSTURE_ORIENTATION.ROTATED270DEGREESCOUNTERCLOCKWISE;

const CLSID_KSPROPSETID_AudioBufferDuration_Value = Guid.initString("4e73c07f-23cc-4955-a7ea-3da502496290");
pub const CLSID_KSPROPSETID_AudioBufferDuration = &CLSID_KSPROPSETID_AudioBufferDuration_Value;

const CLSID_KSPROPSETID_AudioEngine_Value = Guid.initString("3a2f82dc-886f-4baa-9eb4-082b9025c536");
pub const CLSID_KSPROPSETID_AudioEngine = &CLSID_KSPROPSETID_AudioEngine_Value;

pub const KSPROPERTY_AUDIOENGINE = enum(i32) {
    LFXENABLE = 0,
    GFXENABLE = 1,
    MIXFORMAT = 2,
    DEVICEFORMAT = 4,
    SUPPORTEDDEVICEFORMATS = 5,
    DESCRIPTOR = 6,
    BUFFER_SIZE_RANGE = 7,
    LOOPBACK_PROTECTION = 8,
    VOLUMELEVEL = 9,
};
pub const KSPROPERTY_AUDIOENGINE_LFXENABLE = KSPROPERTY_AUDIOENGINE.LFXENABLE;
pub const KSPROPERTY_AUDIOENGINE_GFXENABLE = KSPROPERTY_AUDIOENGINE.GFXENABLE;
pub const KSPROPERTY_AUDIOENGINE_MIXFORMAT = KSPROPERTY_AUDIOENGINE.MIXFORMAT;
pub const KSPROPERTY_AUDIOENGINE_DEVICEFORMAT = KSPROPERTY_AUDIOENGINE.DEVICEFORMAT;
pub const KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS = KSPROPERTY_AUDIOENGINE.SUPPORTEDDEVICEFORMATS;
pub const KSPROPERTY_AUDIOENGINE_DESCRIPTOR = KSPROPERTY_AUDIOENGINE.DESCRIPTOR;
pub const KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE = KSPROPERTY_AUDIOENGINE.BUFFER_SIZE_RANGE;
pub const KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION = KSPROPERTY_AUDIOENGINE.LOOPBACK_PROTECTION;
pub const KSPROPERTY_AUDIOENGINE_VOLUMELEVEL = KSPROPERTY_AUDIOENGINE.VOLUMELEVEL;

pub const KSAUDIOENGINE_DESCRIPTOR = extern struct {
    nHostPinId: u32,
    nOffloadPinId: u32,
    nLoopbackPinId: u32,
};

pub const KSAUDIOENGINE_BUFFER_SIZE_RANGE = extern struct {
    MinBufferBytes: u32,
    MaxBufferBytes: u32,
};

pub const AUDIO_CURVE_TYPE = enum(i32) {
    NONE = 0,
    WINDOWS_FADE = 1,
};
pub const AUDIO_CURVE_TYPE_NONE = AUDIO_CURVE_TYPE.NONE;
pub const AUDIO_CURVE_TYPE_WINDOWS_FADE = AUDIO_CURVE_TYPE.WINDOWS_FADE;

pub const KSAUDIOENGINE_VOLUMELEVEL = extern struct {
    TargetVolume: i32,
    CurveType: AUDIO_CURVE_TYPE,
    CurveDuration: u64,
};

const CLSID_KSPROPSETID_AudioSignalProcessing_Value = Guid.initString("4f67b528-30c9-40de-b2fb-859ddd1f3470");
pub const CLSID_KSPROPSETID_AudioSignalProcessing = &CLSID_KSPROPSETID_AudioSignalProcessing_Value;

pub const KSPROPERTY_AUDIOSIGNALPROCESSING = enum(i32) {
    S = 0,
};
pub const KSPROPERTY_AUDIOSIGNALPROCESSING_MODES = KSPROPERTY_AUDIOSIGNALPROCESSING.S;

const CLSID_KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE_Value = Guid.initString("e1f89eb5-5f46-419b-967b-ff6770b98401");
pub const CLSID_KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE = &CLSID_KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE_Value;

pub const KSATTRIBUTE_AUDIOSIGNALPROCESSING_MODE = extern struct {
    AttributeHeader: KSATTRIBUTE,
    SignalProcessingMode: Guid,
};

const CLSID_AUDIO_SIGNALPROCESSINGMODE_DEFAULT_Value = Guid.initString("c18e2f7e-933d-4965-b7d1-1eef228d2af3");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_DEFAULT = &CLSID_AUDIO_SIGNALPROCESSINGMODE_DEFAULT_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_RAW_Value = Guid.initString("9e90ea20-b493-4fd1-a1a8-7e1361a956cf");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_RAW = &CLSID_AUDIO_SIGNALPROCESSINGMODE_RAW_Value;

const CLSID_KSPROPSETID_AudioResourceManagement_Value = Guid.initString("d0b305e1-b2cc-484c-8f23-e5d28ad9cf88");
pub const CLSID_KSPROPSETID_AudioResourceManagement = &CLSID_KSPROPSETID_AudioResourceManagement_Value;

pub const KSPROPERTY_AUDIORESOURCEMANAGEMENT = enum(i32) {
    P = 0,
};
pub const KSPROPERTY_AUDIORESOURCEMANAGEMENT_RESOURCEGROUP = KSPROPERTY_AUDIORESOURCEMANAGEMENT.P;

pub const AUDIORESOURCEMANAGEMENT_RESOURCEGROUP = extern struct {
    ResourceGroupAcquired: BOOL,
    ResourceGroupName: [256]u16,
};

const CLSID_BLUETOOTHLE_MIDI_SERVICE_UUID_Value = Guid.initString("03b80e5a-ede8-4b33-a751-6ce34ec4c700");
pub const CLSID_BLUETOOTHLE_MIDI_SERVICE_UUID = &CLSID_BLUETOOTHLE_MIDI_SERVICE_UUID_Value;

const CLSID_BLUETOOTH_MIDI_DATAIO_CHARACTERISTIC_Value = Guid.initString("7772e5db-3868-4112-a1a9-f2669d106bf3");
pub const CLSID_BLUETOOTH_MIDI_DATAIO_CHARACTERISTIC = &CLSID_BLUETOOTH_MIDI_DATAIO_CHARACTERISTIC_Value;

const CLSID_APO_CLASS_UUID_Value = Guid.initString("5989fce8-9cd0-467d-8a6a-5419e31529d4");
pub const CLSID_APO_CLASS_UUID = &CLSID_APO_CLASS_UUID_Value;

const CLSID_AUDIOENDPOINT_CLASS_UUID_Value = Guid.initString("c166523c-fe0c-4a94-a586-f1a80cfbbf3e");
pub const CLSID_AUDIOENDPOINT_CLASS_UUID = &CLSID_AUDIOENDPOINT_CLASS_UUID_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS_Value = Guid.initString("98951333-b9cd-48b1-a0a3-ff40682d73f7");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS = &CLSID_AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_SPEECH_Value = Guid.initString("fc1cfc9b-b9d6-4cfa-b5e0-4bb2166878b2");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_SPEECH = &CLSID_AUDIO_SIGNALPROCESSINGMODE_SPEECH_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_NOTIFICATION_Value = Guid.initString("9cf2a70b-f377-403b-bd6b-360863e0355c");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_NOTIFICATION = &CLSID_AUDIO_SIGNALPROCESSINGMODE_NOTIFICATION_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_MEDIA_Value = Guid.initString("4780004e-7133-41d8-8c74-660dadd2c0ee");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_MEDIA = &CLSID_AUDIO_SIGNALPROCESSINGMODE_MEDIA_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_MOVIE_Value = Guid.initString("b26feb0d-ec94-477c-9494-d1ab8e753f6e");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_MOVIE = &CLSID_AUDIO_SIGNALPROCESSINGMODE_MOVIE_Value;

const CLSID_AUDIO_SIGNALPROCESSINGMODE_FAR_FIELD_SPEECH_Value = Guid.initString("28941cba-3be6-4a78-9a76-30fd91559b64");
pub const CLSID_AUDIO_SIGNALPROCESSINGMODE_FAR_FIELD_SPEECH = &CLSID_AUDIO_SIGNALPROCESSINGMODE_FAR_FIELD_SPEECH_Value;

const CLSID_AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION_Value = Guid.initString("6f64adbe-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION = &CLSID_AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION_Value;

const CLSID_AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION_Value = Guid.initString("6f64adbf-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION = &CLSID_AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION_Value;

const CLSID_AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL_Value = Guid.initString("6f64adc0-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL = &CLSID_AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL_Value;

const CLSID_AUDIO_EFFECT_TYPE_BEAMFORMING_Value = Guid.initString("6f64adc1-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_BEAMFORMING = &CLSID_AUDIO_EFFECT_TYPE_BEAMFORMING_Value;

const CLSID_AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL_Value = Guid.initString("6f64adc2-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL = &CLSID_AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL_Value;

const CLSID_AUDIO_EFFECT_TYPE_EQUALIZER_Value = Guid.initString("6f64adc3-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_EQUALIZER = &CLSID_AUDIO_EFFECT_TYPE_EQUALIZER_Value;

const CLSID_AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER_Value = Guid.initString("6f64adc4-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER = &CLSID_AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER_Value;

const CLSID_AUDIO_EFFECT_TYPE_BASS_BOOST_Value = Guid.initString("6f64adc5-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_BASS_BOOST = &CLSID_AUDIO_EFFECT_TYPE_BASS_BOOST_Value;

const CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND_Value = Guid.initString("6f64adc6-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND = &CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND_Value;

const CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES_Value = Guid.initString("6f64adc7-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES = &CLSID_AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES_Value;

const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_FILL_Value = Guid.initString("6f64adc8-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_FILL = &CLSID_AUDIO_EFFECT_TYPE_SPEAKER_FILL_Value;

const CLSID_AUDIO_EFFECT_TYPE_ROOM_CORRECTION_Value = Guid.initString("6f64adc9-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_ROOM_CORRECTION = &CLSID_AUDIO_EFFECT_TYPE_ROOM_CORRECTION_Value;

const CLSID_AUDIO_EFFECT_TYPE_BASS_MANAGEMENT_Value = Guid.initString("6f64adca-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_BASS_MANAGEMENT = &CLSID_AUDIO_EFFECT_TYPE_BASS_MANAGEMENT_Value;

const CLSID_AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS_Value = Guid.initString("6f64adcb-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS = &CLSID_AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS_Value;

const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION_Value = Guid.initString("6f64adcc-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION = &CLSID_AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION_Value;

const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION_Value = Guid.initString("6f64adcd-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION = &CLSID_AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION_Value;

const CLSID_AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION_Value = Guid.initString("6f64adce-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION = &CLSID_AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION_Value;

const CLSID_AUDIO_EFFECT_TYPE_FAR_FIELD_BEAMFORMING_Value = Guid.initString("6f64adcf-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_FAR_FIELD_BEAMFORMING = &CLSID_AUDIO_EFFECT_TYPE_FAR_FIELD_BEAMFORMING_Value;

const CLSID_AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION_Value = Guid.initString("6f64add0-8211-11e2-8c70-2c27d7f001fa");
pub const CLSID_AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION = &CLSID_AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION_Value;

const CLSID_KSPROPSETID_AudioModule_Value = Guid.initString("c034fdb0-ff75-47c8-aa3c-ee46716b50c6");
pub const CLSID_KSPROPSETID_AudioModule = &CLSID_KSPROPSETID_AudioModule_Value;

pub const KSPROPERTY_AUDIOMODULE = enum(i32) {
    DESCRIPTORS = 1,
    COMMAND = 2,
    NOTIFICATION_DEVICE_ID = 3,
};
pub const KSPROPERTY_AUDIOMODULE_DESCRIPTORS = KSPROPERTY_AUDIOMODULE.DESCRIPTORS;
pub const KSPROPERTY_AUDIOMODULE_COMMAND = KSPROPERTY_AUDIOMODULE.COMMAND;
pub const KSPROPERTY_AUDIOMODULE_NOTIFICATION_DEVICE_ID = KSPROPERTY_AUDIOMODULE.NOTIFICATION_DEVICE_ID;

pub const KSAUDIOMODULE_DESCRIPTOR = extern struct {
    ClassId: Guid,
    InstanceId: u32,
    VersionMajor: u32,
    VersionMinor: u32,
    Name: [128]u16,
};

pub const KSAUDIOMODULE_PROPERTY = extern struct {
    Property: KSIDENTIFIER,
    ClassId: Guid,
    InstanceId: u32,
};

const CLSID_KSNOTIFICATIONID_AudioModule_Value = Guid.initString("9c2220f0-d9a6-4d5c-a036-573857fd50d2");
pub const CLSID_KSNOTIFICATIONID_AudioModule = &CLSID_KSNOTIFICATIONID_AudioModule_Value;

pub const KSAUDIOMODULE_NOTIFICATION = extern struct {
    Anonymous: extern union {
        ProviderId: extern struct {
            DeviceId: Guid,
            ClassId: Guid,
            InstanceId: u32,
            Reserved: u32,
        },
        Alignment: i64,
    },
};

pub const KSALLOCATORMODE = enum(i32) {
    User = 0,
    Kernel = 1,
};
pub const KsAllocatorMode_User = KSALLOCATORMODE.User;
pub const KsAllocatorMode_Kernel = KSALLOCATORMODE.Kernel;

pub const FRAMING_PROP = enum(i32) {
    Uninitialized = 0,
    None = 1,
    Old = 2,
    Ex = 3,
};
pub const FramingProp_Uninitialized = FRAMING_PROP.Uninitialized;
pub const FramingProp_None = FRAMING_PROP.None;
pub const FramingProp_Old = FRAMING_PROP.Old;
pub const FramingProp_Ex = FRAMING_PROP.Ex;

pub const FRAMING_CACHE_OPS = enum(i32) {
    Update = 0,
    ReadLast = 1,
    ReadOrig = 2,
    Write = 3,
};
pub const Framing_Cache_Update = FRAMING_CACHE_OPS.Update;
pub const Framing_Cache_ReadLast = FRAMING_CACHE_OPS.ReadLast;
pub const Framing_Cache_ReadOrig = FRAMING_CACHE_OPS.ReadOrig;
pub const Framing_Cache_Write = FRAMING_CACHE_OPS.Write;

pub const OPTIMAL_WEIGHT_TOTALS = extern struct {
    MinTotalNominator: i64,
    MaxTotalNominator: i64,
    TotalDenominator: i64,
};

pub const PIPE_STATE = enum(i32) {
    DontCare = 0,
    RangeNotFixed = 1,
    RangeFixed = 2,
    CompressionUnknown = 3,
    Finalized = 4,
};
pub const PipeState_DontCare = PIPE_STATE.DontCare;
pub const PipeState_RangeNotFixed = PIPE_STATE.RangeNotFixed;
pub const PipeState_RangeFixed = PIPE_STATE.RangeFixed;
pub const PipeState_CompressionUnknown = PIPE_STATE.CompressionUnknown;
pub const PipeState_Finalized = PIPE_STATE.Finalized;

pub const PIPE_DIMENSIONS = extern struct {
    AllocatorPin: KS_COMPRESSION,
    MaxExpansionPin: KS_COMPRESSION,
    EndPin: KS_COMPRESSION,
};

pub const PIPE_ALLOCATOR_PLACE = enum(i32) {
    None = 0,
    FirstPin = 1,
    LastPin = 2,
    MiddlePin = 3,
};
pub const Pipe_Allocator_None = PIPE_ALLOCATOR_PLACE.None;
pub const Pipe_Allocator_FirstPin = PIPE_ALLOCATOR_PLACE.FirstPin;
pub const Pipe_Allocator_LastPin = PIPE_ALLOCATOR_PLACE.LastPin;
pub const Pipe_Allocator_MiddlePin = PIPE_ALLOCATOR_PLACE.MiddlePin;

pub const KS_LogicalMemoryType = enum(i32) {
    DontCare = 0,
    KernelPaged = 1,
    KernelNonPaged = 2,
    DeviceHostMapped = 3,
    DeviceSpecific = 4,
    User = 5,
    AnyHost = 6,
};
pub const KS_MemoryTypeDontCare = KS_LogicalMemoryType.DontCare;
pub const KS_MemoryTypeKernelPaged = KS_LogicalMemoryType.KernelPaged;
pub const KS_MemoryTypeKernelNonPaged = KS_LogicalMemoryType.KernelNonPaged;
pub const KS_MemoryTypeDeviceHostMapped = KS_LogicalMemoryType.DeviceHostMapped;
pub const KS_MemoryTypeDeviceSpecific = KS_LogicalMemoryType.DeviceSpecific;
pub const KS_MemoryTypeUser = KS_LogicalMemoryType.User;
pub const KS_MemoryTypeAnyHost = KS_LogicalMemoryType.AnyHost;

pub const PIPE_TERMINATION = extern struct {
    Flags: u32,
    OutsideFactors: u32,
    Weigth: u32,
    PhysicalRange: KS_FRAMING_RANGE,
    OptimalRange: KS_FRAMING_RANGE_WEIGHTED,
    Compression: KS_COMPRESSION,
};

pub const ALLOCATOR_PROPERTIES_EX = extern struct {
    cBuffers: i32,
    cbBuffer: i32,
    cbAlign: i32,
    cbPrefix: i32,
    MemoryType: Guid,
    BusType: Guid,
    State: PIPE_STATE,
    Input: PIPE_TERMINATION,
    Output: PIPE_TERMINATION,
    Strategy: u32,
    Flags: u32,
    Weight: u32,
    LogicalMemoryType: KS_LogicalMemoryType,
    AllocatorPlace: PIPE_ALLOCATOR_PLACE,
    Dimensions: PIPE_DIMENSIONS,
    PhysicalRange: KS_FRAMING_RANGE,
    PrevSegment: ?*IKsAllocatorEx,
    CountNextSegments: u32,
    NextSegments: ?*?*IKsAllocatorEx,
    InsideFactors: u32,
    NumberPins: u32,
};

const CLSID_CLSID_Proxy_Value = Guid.initString("17cca71b-ecd7-11d0-b908-00a0c9223196");
pub const CLSID_CLSID_Proxy = &CLSID_CLSID_Proxy_Value;

const IID_IKsPropertySet_Value = Guid.initString("31efac30-515c-11d0-a9aa-00aa0061be93");
pub const IID_IKsPropertySet = &IID_IKsPropertySet_Value;
pub const IKsPropertySet = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Set: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                // TODO: what to do with BytesParamIndex 3?
                InstanceData: ?*anyopaque,
                InstanceLength: u32,
                // TODO: what to do with BytesParamIndex 5?
                PropertyData: ?*anyopaque,
                DataLength: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                // TODO: what to do with BytesParamIndex 3?
                InstanceData: ?*anyopaque,
                InstanceLength: u32,
                // TODO: what to do with BytesParamIndex 5?
                PropertyData: ?*anyopaque,
                DataLength: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Get: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                // TODO: what to do with BytesParamIndex 3?
                InstanceData: ?*anyopaque,
                InstanceLength: u32,
                // TODO: what to do with BytesParamIndex 5?
                PropertyData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                // TODO: what to do with BytesParamIndex 3?
                InstanceData: ?*anyopaque,
                InstanceLength: u32,
                // TODO: what to do with BytesParamIndex 5?
                PropertyData: ?*anyopaque,
                DataLength: u32,
                BytesReturned: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        QuerySupported: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                TypeSupport: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsPropertySet,
                PropSet: ?*const Guid,
                Id: u32,
                TypeSupport: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsPropertySet_Set(self: *const T, PropSet: ?*const Guid, Id: u32, InstanceData: ?*anyopaque, InstanceLength: u32, PropertyData: ?*anyopaque, DataLength: u32) HRESULT {
                return @as(*const IKsPropertySet.VTable, @ptrCast(self.vtable)).Set(@as(*const IKsPropertySet, @ptrCast(self)), PropSet, Id, InstanceData, InstanceLength, PropertyData, DataLength);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsPropertySet_Get(self: *const T, PropSet: ?*const Guid, Id: u32, InstanceData: ?*anyopaque, InstanceLength: u32, PropertyData: ?*anyopaque, DataLength: u32, BytesReturned: ?*u32) HRESULT {
                return @as(*const IKsPropertySet.VTable, @ptrCast(self.vtable)).Get(@as(*const IKsPropertySet, @ptrCast(self)), PropSet, Id, InstanceData, InstanceLength, PropertyData, DataLength, BytesReturned);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsPropertySet_QuerySupported(self: *const T, PropSet: ?*const Guid, Id: u32, TypeSupport: ?*u32) HRESULT {
                return @as(*const IKsPropertySet.VTable, @ptrCast(self.vtable)).QuerySupported(@as(*const IKsPropertySet, @ptrCast(self)), PropSet, Id, TypeSupport);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IKsAggregateControl_Value = Guid.initString("7f40eac0-3947-11d2-874e-00a0c9223196");
pub const IID_IKsAggregateControl = &IID_IKsAggregateControl_Value;
pub const IKsAggregateControl = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        KsAddAggregate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsAggregateControl,
                AggregateClass: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsAggregateControl,
                AggregateClass: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        KsRemoveAggregate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsAggregateControl,
                AggregateClass: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsAggregateControl,
                AggregateClass: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsAggregateControl_KsAddAggregate(self: *const T, AggregateClass: ?*const Guid) HRESULT {
                return @as(*const IKsAggregateControl.VTable, @ptrCast(self.vtable)).KsAddAggregate(@as(*const IKsAggregateControl, @ptrCast(self)), AggregateClass);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsAggregateControl_KsRemoveAggregate(self: *const T, AggregateClass: ?*const Guid) HRESULT {
                return @as(*const IKsAggregateControl.VTable, @ptrCast(self.vtable)).KsRemoveAggregate(@as(*const IKsAggregateControl, @ptrCast(self)), AggregateClass);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IKsTopology_Value = Guid.initString("28f54683-06fd-11d2-b27a-00a0c9223196");
pub const IID_IKsTopology = &IID_IKsTopology_Value;
pub const IKsTopology = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        CreateNodeInstance: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IKsTopology,
                NodeId: u32,
                Flags: u32,
                DesiredAccess: u32,
                UnkOuter: ?*IUnknown,
                InterfaceId: ?*const Guid,
                Interface: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IKsTopology,
                NodeId: u32,
                Flags: u32,
                DesiredAccess: u32,
                UnkOuter: ?*IUnknown,
                InterfaceId: ?*const Guid,
                Interface: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IKsTopology_CreateNodeInstance(self: *const T, NodeId: u32, Flags: u32, DesiredAccess: u32, UnkOuter: ?*IUnknown, InterfaceId: ?*const Guid, Interface: ?*?*anyopaque) HRESULT {
                return @as(*const IKsTopology.VTable, @ptrCast(self.vtable)).CreateNodeInstance(@as(*const IKsTopology, @ptrCast(self)), NodeId, Flags, DesiredAccess, UnkOuter, InterfaceId, Interface);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const KSSTREAM_HEADER = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Size: u32,
        TypeSpecificFlags: u32,
        PresentationTime: KSTIME,
        Duration: i64,
        FrameExtent: u32,
        DataUsed: u32,
        Data: ?*anyopaque,
        OptionsFlags: u32,
        Reserved: u32,
    },
    .X86 => extern struct {
        Size: u32,
        TypeSpecificFlags: u32,
        PresentationTime: KSTIME,
        Duration: i64,
        FrameExtent: u32,
        DataUsed: u32,
        Data: ?*anyopaque,
        OptionsFlags: u32,
    },
};
pub const KSNODEPROPERTY_AUDIO_3D_LISTENER = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        NodeProperty: KSNODEPROPERTY,
        ListenerId: ?*anyopaque,
    },
    .X86 => extern struct {
        NodeProperty: KSNODEPROPERTY,
        ListenerId: ?*anyopaque,
        Reserved: u32,
    },
};
pub const KSNODEPROPERTY_AUDIO_PROPERTY = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        NodeProperty: KSNODEPROPERTY,
        AppContext: ?*anyopaque,
        Length: u32,
    },
    .X86 => extern struct {
        NodeProperty: KSNODEPROPERTY,
        AppContext: ?*anyopaque,
        Length: u32,
        Reserved: u32,
    },
};

//--------------------------------------------------------------------------------
// Section: Functions (8)
//--------------------------------------------------------------------------------
pub extern "ksuser" fn KsCreateAllocator(
    ConnectionHandle: ?HANDLE,
    AllocatorFraming: ?*KSALLOCATOR_FRAMING,
    AllocatorHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "ksuser" fn KsCreateClock(
    ConnectionHandle: ?HANDLE,
    ClockCreate: ?*KSCLOCK_CREATE,
    ClockHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "ksuser" fn KsCreatePin(
    FilterHandle: ?HANDLE,
    Connect: ?*KSPIN_CONNECT,
    DesiredAccess: u32,
    ConnectionHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "ksuser" fn KsCreateTopologyNode(
    ParentHandle: ?HANDLE,
    NodeCreate: ?*KSNODE_CREATE,
    DesiredAccess: u32,
    NodeHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "ksuser" fn KsCreateAllocator2(
    ConnectionHandle: ?HANDLE,
    AllocatorFraming: ?*KSALLOCATOR_FRAMING,
    AllocatorHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

pub extern "ksuser" fn KsCreateClock2(
    ConnectionHandle: ?HANDLE,
    ClockCreate: ?*KSCLOCK_CREATE,
    ClockHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

pub extern "ksuser" fn KsCreatePin2(
    FilterHandle: ?HANDLE,
    Connect: ?*KSPIN_CONNECT,
    DesiredAccess: u32,
    ConnectionHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

pub extern "ksuser" fn KsCreateTopologyNode2(
    ParentHandle: ?HANDLE,
    NodeCreate: ?*KSNODE_CREATE,
    DesiredAccess: u32,
    NodeHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (14)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const CHAR = @import("../foundation.zig").CHAR;
const HANDLE = @import("../foundation.zig").HANDLE;
const HRESULT = @import("../foundation.zig").HRESULT;
const IUnknown = @import("../system/com.zig").IUnknown;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const LUID = @import("../foundation.zig").LUID;
const PROPERTYKEY = @import("../ui/shell/properties_system.zig").PROPERTYKEY;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const SIZE = @import("../foundation.zig").SIZE;
const TIMECODE_SAMPLE = @import("../media.zig").TIMECODE_SAMPLE;
const ULARGE_INTEGER = @import("../foundation.zig").ULARGE_INTEGER;

test {
    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
