timeline-state-resolver-types
Version:
Have timeline, control stuff
89 lines • 3.3 kB
TypeScript
import { DeviceType } from '..';
export type TimelineContentOBSAny = TimelineContentOBSCurrentScene | TimelineContentOBSCurrentTransition | TimelineContentOBSRecording | TimelineContentOBSStreaming | TimelineContentOBSSceneItem | TimelineContentOBSInputAudio | TimelineContentOBSInputSettings | TimelineContentOBSInputMedia;
export declare enum TimelineContentTypeOBS {
CURRENT_SCENE = "CURRENT_SCENE",
CURRENT_TRANSITION = "CURRENT_TRANSITION",
RECORDING = "RECORDING",
STREAMING = "STREAMING",
SCENE_ITEM = "SCENE_ITEM",
INPUT_AUDIO = "INPUT_AUDIO",
INPUT_SETTINGS = "INPUT_SETTINGS",
INPUT_MEDIA = "INPUT_MEDIA"
}
export interface TimelineContentOBSBase {
deviceType: DeviceType.OBS;
type: TimelineContentTypeOBS;
}
export interface TimelineContentOBSCurrentScene extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.CURRENT_SCENE;
/** Name of the scene that should be current */
sceneName: string;
}
export interface TimelineContentOBSCurrentTransition extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.CURRENT_TRANSITION;
/** Name of the transition that should be current */
transitionName: string;
}
export interface TimelineContentOBSRecording extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.RECORDING;
/** Should recording be turned on */
on: boolean;
}
export interface TimelineContentOBSStreaming extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.STREAMING;
/** Should streaming be turned on */
on: boolean;
}
export interface TimelineContentOBSSceneItem extends TimelineContentOBSBase {
deviceType: DeviceType.OBS;
type: TimelineContentTypeOBS.SCENE_ITEM;
/** Should the scene item be enabled */
on?: boolean;
/** Should the scene item be enabled */
transform?: OBSSceneItemTransform;
}
type Without<T, U> = {
[P in Exclude<keyof T, keyof U>]?: never;
};
type XOR<T, U> = T | U extends Record<string, any> ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
export type TimelineContentOBSInputSettings = TimelineContentOBSBase & {
type: TimelineContentTypeOBS.INPUT_SETTINGS;
} & XOR<{
sourceType: 'ffmpeg_source';
sourceSettings: {
close_when_inactive?: boolean;
hw_decode?: boolean;
input?: string;
is_local_file?: boolean;
local_file?: string;
looping?: boolean;
};
}, {
sourceType: 'dshow_input' | 'browser_source' | 'window_capture' | 'image_source';
}>;
export interface TimelineContentOBSInputAudio extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.INPUT_AUDIO;
/** If the audio should be muted (`true`: audio will not be output, `false`: audio will be output) */
mute?: boolean;
volume?: number;
}
export interface TimelineContentOBSInputMedia extends TimelineContentOBSBase {
type: TimelineContentTypeOBS.INPUT_MEDIA;
seek?: number;
state?: 'playing' | 'paused' | 'stopped';
}
export interface OBSSceneItemTransform {
cropBottom?: number;
cropLeft?: number;
cropRight?: number;
cropTop?: number;
height?: number;
width?: number;
positionX?: number;
positionY?: number;
rotation?: number;
scaleX?: number;
scaleY?: number;
}
export {};
//# sourceMappingURL=obs.d.ts.map