zigwin32/win32/media.zig

446 lines
18 KiB
Zig
Raw Permalink Normal View History

2023-08-13 13:49:39 +00:00
//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (101)
//--------------------------------------------------------------------------------
pub const TIMERR_NOERROR = @as(u32, 0);
pub const TIMERR_NOCANDO = @as(u32, 97);
pub const TIMERR_STRUCT = @as(u32, 129);
pub const MAXPNAMELEN = @as(u32, 32);
pub const MAXERRORLENGTH = @as(u32, 256);
pub const MM_MICROSOFT = @as(u32, 1);
pub const MM_MIDI_MAPPER = @as(u32, 1);
pub const MM_WAVE_MAPPER = @as(u32, 2);
pub const MM_SNDBLST_MIDIOUT = @as(u32, 3);
pub const MM_SNDBLST_MIDIIN = @as(u32, 4);
pub const MM_SNDBLST_SYNTH = @as(u32, 5);
pub const MM_SNDBLST_WAVEOUT = @as(u32, 6);
pub const MM_SNDBLST_WAVEIN = @as(u32, 7);
pub const MM_ADLIB = @as(u32, 9);
pub const MM_MPU401_MIDIOUT = @as(u32, 10);
pub const MM_MPU401_MIDIIN = @as(u32, 11);
pub const MM_PC_JOYSTICK = @as(u32, 12);
pub const TIME_MS = @as(u32, 1);
pub const TIME_SAMPLES = @as(u32, 2);
pub const TIME_BYTES = @as(u32, 4);
pub const TIME_SMPTE = @as(u32, 8);
pub const TIME_MIDI = @as(u32, 16);
pub const TIME_TICKS = @as(u32, 32);
pub const MM_JOY1MOVE = @as(u32, 928);
pub const MM_JOY2MOVE = @as(u32, 929);
pub const MM_JOY1ZMOVE = @as(u32, 930);
pub const MM_JOY2ZMOVE = @as(u32, 931);
pub const MM_JOY1BUTTONDOWN = @as(u32, 949);
pub const MM_JOY2BUTTONDOWN = @as(u32, 950);
pub const MM_JOY1BUTTONUP = @as(u32, 951);
pub const MM_JOY2BUTTONUP = @as(u32, 952);
pub const MM_MCINOTIFY = @as(u32, 953);
pub const MM_WOM_OPEN = @as(u32, 955);
pub const MM_WOM_CLOSE = @as(u32, 956);
pub const MM_WOM_DONE = @as(u32, 957);
pub const MM_WIM_OPEN = @as(u32, 958);
pub const MM_WIM_CLOSE = @as(u32, 959);
pub const MM_WIM_DATA = @as(u32, 960);
pub const MM_MIM_OPEN = @as(u32, 961);
pub const MM_MIM_CLOSE = @as(u32, 962);
pub const MM_MIM_DATA = @as(u32, 963);
pub const MM_MIM_LONGDATA = @as(u32, 964);
pub const MM_MIM_ERROR = @as(u32, 965);
pub const MM_MIM_LONGERROR = @as(u32, 966);
pub const MM_MOM_OPEN = @as(u32, 967);
pub const MM_MOM_CLOSE = @as(u32, 968);
pub const MM_MOM_DONE = @as(u32, 969);
pub const MM_DRVM_OPEN = @as(u32, 976);
pub const MM_DRVM_CLOSE = @as(u32, 977);
pub const MM_DRVM_DATA = @as(u32, 978);
pub const MM_DRVM_ERROR = @as(u32, 979);
pub const MM_STREAM_OPEN = @as(u32, 980);
pub const MM_STREAM_CLOSE = @as(u32, 981);
pub const MM_STREAM_DONE = @as(u32, 982);
pub const MM_STREAM_ERROR = @as(u32, 983);
pub const MM_MOM_POSITIONCB = @as(u32, 970);
pub const MM_MCISIGNAL = @as(u32, 971);
pub const MM_MIM_MOREDATA = @as(u32, 972);
pub const MM_MIXM_LINE_CHANGE = @as(u32, 976);
pub const MM_MIXM_CONTROL_CHANGE = @as(u32, 977);
pub const MMSYSERR_BASE = @as(u32, 0);
pub const WAVERR_BASE = @as(u32, 32);
pub const MIDIERR_BASE = @as(u32, 64);
pub const TIMERR_BASE = @as(u32, 96);
pub const JOYERR_BASE = @as(u32, 160);
pub const MCIERR_BASE = @as(u32, 256);
pub const MIXERR_BASE = @as(u32, 1024);
pub const MCI_STRING_OFFSET = @as(u32, 512);
pub const MCI_VD_OFFSET = @as(u32, 1024);
pub const MCI_CD_OFFSET = @as(u32, 1088);
pub const MCI_WAVE_OFFSET = @as(u32, 1152);
pub const MCI_SEQ_OFFSET = @as(u32, 1216);
pub const MMSYSERR_NOERROR = @as(u32, 0);
pub const MMSYSERR_ERROR = @as(u32, 1);
pub const MMSYSERR_BADDEVICEID = @as(u32, 2);
pub const MMSYSERR_NOTENABLED = @as(u32, 3);
pub const MMSYSERR_ALLOCATED = @as(u32, 4);
pub const MMSYSERR_INVALHANDLE = @as(u32, 5);
pub const MMSYSERR_NODRIVER = @as(u32, 6);
pub const MMSYSERR_NOMEM = @as(u32, 7);
pub const MMSYSERR_NOTSUPPORTED = @as(u32, 8);
pub const MMSYSERR_BADERRNUM = @as(u32, 9);
pub const MMSYSERR_INVALFLAG = @as(u32, 10);
pub const MMSYSERR_INVALPARAM = @as(u32, 11);
pub const MMSYSERR_HANDLEBUSY = @as(u32, 12);
pub const MMSYSERR_INVALIDALIAS = @as(u32, 13);
pub const MMSYSERR_BADDB = @as(u32, 14);
pub const MMSYSERR_KEYNOTFOUND = @as(u32, 15);
pub const MMSYSERR_READERROR = @as(u32, 16);
pub const MMSYSERR_WRITEERROR = @as(u32, 17);
pub const MMSYSERR_DELETEERROR = @as(u32, 18);
pub const MMSYSERR_VALNOTFOUND = @as(u32, 19);
pub const MMSYSERR_NODRIVERCB = @as(u32, 20);
pub const MMSYSERR_MOREDATA = @as(u32, 21);
pub const MMSYSERR_LASTERROR = @as(u32, 21);
pub const TIME_ONESHOT = @as(u32, 0);
pub const TIME_PERIODIC = @as(u32, 1);
pub const TIME_CALLBACK_FUNCTION = @as(u32, 0);
pub const TIME_CALLBACK_EVENT_SET = @as(u32, 16);
pub const TIME_CALLBACK_EVENT_PULSE = @as(u32, 32);
pub const TIME_KILL_SYNCHRONOUS = @as(u32, 256);
//--------------------------------------------------------------------------------
// Section: Types (11)
//--------------------------------------------------------------------------------
pub const TIMECODE_SAMPLE_FLAGS = enum(u32) {
TIMECODE_READ = 4121,
ATN_READ = 5047,
RTC_READ = 5050,
_,
pub fn initFlags(o: struct {
TIMECODE_READ: u1 = 0,
ATN_READ: u1 = 0,
RTC_READ: u1 = 0,
}) TIMECODE_SAMPLE_FLAGS {
return @as(TIMECODE_SAMPLE_FLAGS, @enumFromInt(
(if (o.TIMECODE_READ == 1) @intFromEnum(TIMECODE_SAMPLE_FLAGS.TIMECODE_READ) else 0)
| (if (o.ATN_READ == 1) @intFromEnum(TIMECODE_SAMPLE_FLAGS.ATN_READ) else 0)
| (if (o.RTC_READ == 1) @intFromEnum(TIMECODE_SAMPLE_FLAGS.RTC_READ) else 0)
));
}
};
pub const ED_DEVCAP_TIMECODE_READ = TIMECODE_SAMPLE_FLAGS.TIMECODE_READ;
pub const ED_DEVCAP_ATN_READ = TIMECODE_SAMPLE_FLAGS.ATN_READ;
pub const ED_DEVCAP_RTC_READ = TIMECODE_SAMPLE_FLAGS.RTC_READ;
// TODO: this type has an InvalidHandleValue of '0', what can Zig do with this information?
pub const HTASK = *opaque{};
pub const MMTIME = extern struct {
wType: u32 align(1),
u: extern union {
ms: u32 align(1),
sample: u32 align(1),
cb: u32 align(1),
ticks: u32 align(1),
smpte: extern struct {
hour: u8,
min: u8,
sec: u8,
frame: u8,
fps: u8,
dummy: u8,
pad: [2]u8,
} align(1),
midi: extern struct {
songptrpos: u32 align(1),
} align(1),
} align(1),
};
pub const LPDRVCALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
hdrvr: ?HDRVR,
uMsg: u32,
dwUser: usize,
dw1: usize,
dw2: usize,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
hdrvr: ?HDRVR,
uMsg: u32,
dwUser: usize,
dw1: usize,
dw2: usize,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
pub const TIMECAPS = extern struct {
wPeriodMin: u32,
wPeriodMax: u32,
};
pub const LPTIMECALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
uTimerID: u32,
uMsg: u32,
dwUser: usize,
dw1: usize,
dw2: usize,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
uTimerID: u32,
uMsg: u32,
dwUser: usize,
dw1: usize,
dw2: usize,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
// TODO: this type is limited to platform 'windows5.0'
const IID_IReferenceClock_Value = Guid.initString("56a86897-0ad4-11ce-b03a-0020af0ba770");
pub const IID_IReferenceClock = &IID_IReferenceClock_Value;
pub const IReferenceClock = extern struct {
pub const VTable = extern struct {
base: IUnknown.VTable,
GetTime: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClock,
pTime: ?*i64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClock,
pTime: ?*i64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
},
AdviseTime: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClock,
baseTime: i64,
streamTime: i64,
hEvent: ?HANDLE,
pdwAdviseCookie: ?*usize,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClock,
baseTime: i64,
streamTime: i64,
hEvent: ?HANDLE,
pdwAdviseCookie: ?*usize,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
},
AdvisePeriodic: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClock,
startTime: i64,
periodTime: i64,
hSemaphore: ?HANDLE,
pdwAdviseCookie: ?*usize,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClock,
startTime: i64,
periodTime: i64,
hSemaphore: ?HANDLE,
pdwAdviseCookie: ?*usize,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
},
Unadvise: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClock,
dwAdviseCookie: usize,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClock,
dwAdviseCookie: usize,
) 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 fn IReferenceClock_GetTime(self: *const T, pTime: ?*i64) callconv(.Inline) HRESULT {
return @as(*const IReferenceClock.VTable, @ptrCast(self.vtable)).GetTime(@as(*const IReferenceClock, @ptrCast(self)), pTime);
}
// NOTE: method is namespaced with interface name to avoid conflicts for now
pub fn IReferenceClock_AdviseTime(self: *const T, baseTime: i64, streamTime: i64, hEvent: ?HANDLE, pdwAdviseCookie: ?*usize) callconv(.Inline) HRESULT {
return @as(*const IReferenceClock.VTable, @ptrCast(self.vtable)).AdviseTime(@as(*const IReferenceClock, @ptrCast(self)), baseTime, streamTime, hEvent, pdwAdviseCookie);
}
// NOTE: method is namespaced with interface name to avoid conflicts for now
pub fn IReferenceClock_AdvisePeriodic(self: *const T, startTime: i64, periodTime: i64, hSemaphore: ?HANDLE, pdwAdviseCookie: ?*usize) callconv(.Inline) HRESULT {
return @as(*const IReferenceClock.VTable, @ptrCast(self.vtable)).AdvisePeriodic(@as(*const IReferenceClock, @ptrCast(self)), startTime, periodTime, hSemaphore, pdwAdviseCookie);
}
// NOTE: method is namespaced with interface name to avoid conflicts for now
pub fn IReferenceClock_Unadvise(self: *const T, dwAdviseCookie: usize) callconv(.Inline) HRESULT {
return @as(*const IReferenceClock.VTable, @ptrCast(self.vtable)).Unadvise(@as(*const IReferenceClock, @ptrCast(self)), dwAdviseCookie);
}
};}
pub usingnamespace MethodMixin(@This());
};
// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IReferenceClockTimerControl_Value = Guid.initString("ebec459c-2eca-4d42-a8af-30df557614b8");
pub const IID_IReferenceClockTimerControl = &IID_IReferenceClockTimerControl_Value;
pub const IReferenceClockTimerControl = extern struct {
pub const VTable = extern struct {
base: IUnknown.VTable,
SetDefaultTimerResolution: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClockTimerControl,
timerResolution: i64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClockTimerControl,
timerResolution: i64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
},
GetDefaultTimerResolution: switch (@import("builtin").zig_backend) {
.stage1 => fn(
self: *const IReferenceClockTimerControl,
pTimerResolution: ?*i64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
self: *const IReferenceClockTimerControl,
pTimerResolution: ?*i64,
) 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 fn IReferenceClockTimerControl_SetDefaultTimerResolution(self: *const T, timerResolution: i64) callconv(.Inline) HRESULT {
return @as(*const IReferenceClockTimerControl.VTable, @ptrCast(self.vtable)).SetDefaultTimerResolution(@as(*const IReferenceClockTimerControl, @ptrCast(self)), timerResolution);
}
// NOTE: method is namespaced with interface name to avoid conflicts for now
pub fn IReferenceClockTimerControl_GetDefaultTimerResolution(self: *const T, pTimerResolution: ?*i64) callconv(.Inline) HRESULT {
return @as(*const IReferenceClockTimerControl.VTable, @ptrCast(self.vtable)).GetDefaultTimerResolution(@as(*const IReferenceClockTimerControl, @ptrCast(self)), pTimerResolution);
}
};}
pub usingnamespace MethodMixin(@This());
};
const IID_IReferenceClock2_Value = Guid.initString("36b73885-c2c8-11cf-8b46-00805f6cef60");
pub const IID_IReferenceClock2 = &IID_IReferenceClock2_Value;
pub const IReferenceClock2 = extern struct {
pub const VTable = extern struct {
base: IReferenceClock.VTable,
};
vtable: *const VTable,
pub fn MethodMixin(comptime T: type) type { return struct {
pub usingnamespace IReferenceClock.MethodMixin(T);
};}
pub usingnamespace MethodMixin(@This());
};
pub const TIMECODE = extern union {
Anonymous: extern struct {
wFrameRate: u16,
wFrameFract: u16,
dwFrames: u32,
},
qw: u64,
};
pub const TIMECODE_SAMPLE = extern struct {
qwTick: i64,
timecode: TIMECODE,
dwUser: u32,
dwFlags: TIMECODE_SAMPLE_FLAGS,
};
//--------------------------------------------------------------------------------
// Section: Functions (7)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows5.0'
pub extern "winmm" fn timeGetSystemTime(
// TODO: what to do with BytesParamIndex 1?
pmmt: ?*MMTIME,
cbmmt: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
// TODO: this type is limited to platform 'windows5.0'
pub extern "winmm" fn timeGetTime(
) callconv(@import("std").os.windows.WINAPI) u32;
// TODO: this type is limited to platform 'windows5.0'
pub extern "winmm" fn timeGetDevCaps(
// TODO: what to do with BytesParamIndex 1?
ptc: ?*TIMECAPS,
cbtc: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
// TODO: this type is limited to platform 'windows5.0'
pub extern "winmm" fn timeBeginPeriod(
uPeriod: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
// TODO: this type is limited to platform 'windows5.0'
pub extern "winmm" fn timeEndPeriod(
uPeriod: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
pub extern "winmm" fn timeSetEvent(
uDelay: u32,
uResolution: u32,
fptc: ?LPTIMECALLBACK,
dwUser: usize,
fuEvent: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
pub extern "winmm" fn timeKillEvent(
uTimerID: u32,
) callconv(@import("std").os.windows.WINAPI) u32;
//--------------------------------------------------------------------------------
// 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 (5)
//--------------------------------------------------------------------------------
const Guid = @import("zig.zig").Guid;
const HANDLE = @import("foundation.zig").HANDLE;
const HDRVR = @import("media/multimedia.zig").HDRVR;
const HRESULT = @import("foundation.zig").HRESULT;
const IUnknown = @import("system/com.zig").IUnknown;
test {
// The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
if (@hasDecl(@This(), "LPDRVCALLBACK")) { _ = LPDRVCALLBACK; }
if (@hasDecl(@This(), "LPTIMECALLBACK")) { _ = LPTIMECALLBACK; }
@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| {
_ = @field(@This(), decl.name);
}
}
//--------------------------------------------------------------------------------
// Section: SubModules (13)
//--------------------------------------------------------------------------------
pub const audio = @import("media/audio.zig");
pub const device_manager = @import("media/device_manager.zig");
pub const direct_show = @import("media/direct_show.zig");
pub const dx_media_objects = @import("media/dx_media_objects.zig");
pub const kernel_streaming = @import("media/kernel_streaming.zig");
pub const library_sharing_services = @import("media/library_sharing_services.zig");
pub const media_foundation = @import("media/media_foundation.zig");
pub const media_player = @import("media/media_player.zig");
pub const multimedia = @import("media/multimedia.zig");
pub const picture_acquisition = @import("media/picture_acquisition.zig");
pub const speech = @import("media/speech.zig");
pub const streaming = @import("media/streaming.zig");
pub const windows_media_format = @import("media/windows_media_format.zig");