timeline-state-resolver
Version:
Have timeline, control stuff
133 lines • 4.16 kB
TypeScript
import { VMixLayers, VMixInputType, VMixTransform, VMixTransition, VMixText, VMixImages } from 'timeline-state-resolver-types';
import { VMixStateCommandWithContext } from './vMixCommands';
/** Prefix of media input added by TSR. Only those with this prefix can be removed by this implementation */
export declare const TSR_INPUT_PREFIX = "TSR_MEDIA_";
export interface VMixStateExtended {
/**
* The state of vMix (as far as we know) as reported by vMix **+
* our expectations based on the commands we've set**.
*/
reportedState: VMixState;
outputs: VMixOutputsState;
inputLayers: {
[key: string]: string;
};
runningScripts: string[];
}
export interface VMixState {
version: string;
edition: string;
existingInputs: {
[key: string]: VMixInput;
};
existingInputsAudio: {
[key: string]: VMixInputAudio;
};
inputsAddedByUs: {
[key: string]: VMixInput;
};
inputsAddedByUsAudio: {
[key: string]: VMixInputAudio;
};
overlays: Array<VMixOverlay | undefined>;
mixes: Array<VMixMix | undefined>;
fadeToBlack: boolean;
faderPosition?: number;
recording: boolean | undefined;
external: boolean | undefined;
streaming: boolean | undefined;
playlist: boolean;
multiCorder: boolean;
fullscreen: boolean;
audio: VMixAudioChannel[];
}
interface VMixOutputsState {
External2: VMixOutput | undefined;
'2': VMixOutput | undefined;
'3': VMixOutput | undefined;
'4': VMixOutput | undefined;
Fullscreen: VMixOutput | undefined;
Fullscreen2: VMixOutput | undefined;
}
export interface VMixMix {
number: number;
program: string | number | undefined;
preview: string | number | undefined;
transition: VMixTransition;
layerToProgram?: boolean;
}
export interface VMixInput {
number?: number;
type?: VMixInputType | string;
name?: string;
filePath?: string;
state?: 'Paused' | 'Running' | 'Completed';
playing?: boolean;
position?: number;
duration?: number;
loop?: boolean;
transform?: VMixTransform;
layers?: VMixLayers;
listFilePaths?: string[];
restart?: boolean;
text?: VMixText;
url?: string;
index?: number;
images?: VMixImages;
}
export interface VMixInputAudio {
number?: number;
muted?: boolean;
volume?: number;
balance?: number;
fade?: number;
solo?: boolean;
audioBuses?: string;
audioAuto?: boolean;
}
export interface VMixOutput {
source: 'Preview' | 'Program' | 'MultiView' | 'Input';
input?: number | string;
}
export interface VMixOverlay {
number: number;
input: string | number | undefined;
}
export interface VMixAudioChannel {
volume: number;
muted: boolean;
meterF1: number;
meterF2: number;
headphonesVolume: number;
}
export declare class VMixStateDiffer {
private readonly getCurrentTime;
private readonly queueNow;
private inputHandler;
constructor(getCurrentTime: () => number, queueNow: (commands: VMixStateCommandWithContext[]) => void);
getCommandsToAchieveState(time: number, oldVMixState: VMixStateExtended, newVMixState: VMixStateExtended): VMixStateCommandWithContext[];
getDefaultState(): VMixStateExtended;
getDefaultInputState(inputNumber: number | string | undefined): VMixInput;
getDefaultInputAudioState(inputNumber: number | string | undefined): VMixInputAudio;
private _resolveMixState;
private _resolveInputsState;
private _resolveExistingInputState;
private _resolveInputState;
private _resolveInputsAudioState;
private _resolveInputAudioState;
private _resolveAddedByUsInputState;
private _resolveAddedByUsInputsRemovalState;
private _resolveOverlaysState;
private _resolveRecordingState;
private _resolveStreamingState;
private _resolveExternalState;
private _resolveOutputsState;
private _resolveScriptsState;
/**
* Checks if TSR thinks an input is currently in-use.
* Not guaranteed to align with reality.
*/
private _isInUse;
}
export {};
//# sourceMappingURL=vMixStateDiffer.d.ts.map