UNPKG

tv-automation-quantel-gateway-client

Version:
410 lines 13 kB
/** * Interfaces for values sent to and from a Quantel Gateway. */ /** The Quantel Gateway uses ISO-date formatted strings for date and time values. */ export type DateString = string; /** * Details of a zone. */ export interface ZoneInfo { type: 'ZonePortal'; /** Identifier for the zone. */ zoneNumber: number; /** Name of the zone. */ zoneName: string; /** Is the zone a remote zone? Otherwise it is locally managed. */ isRemote: boolean; } /** * Details of an SQ server. */ export interface ServerInfo { type: 'Server'; /** Identifier of the server. */ ident: number; /** Is the server currently down (not running)? */ down: boolean; /** Name. */ name?: string; /** How many channels (SDI ports) does the server have. */ numChannels?: number; /** List of all the disk pools attached to the server. */ pools?: number[]; /** Currently assigned ports names. */ portNames?: string[]; /** Channel-indexed sparse array of mappings from channels to ports. */ chanPorts?: string[]; } /** * Reference to a port (logical control device) within a zone. */ export interface PortRef { /** Name or numerical identifier for a server. */ serverID: number | string; /** Name of the port. */ portName: string; } /** * Details of a port (logical control device). */ export interface PortInfo extends PortRef { type?: 'PortInfo'; /** Channel number (physical SDI connector) associated with the port. */ channelNo: number; /** Numberical identifier of the port. */ portID?: number; /** Is the port set up for audio only? */ audioOnly?: boolean; /** Is the port assigned to a channel? */ assigned?: boolean; } /** Compound states that a port may be in. */ type StatusOfPort = 'readyToPlay' | 'playing' | 'playing&readyToPlay' | 'jumpReady' | 'jumpReady&readyToPlay' | 'jumpReady&playing' | 'jumpReady&readyToPlay&playing' | 'fading' | 'unknown'; /** Snapshot of the current status of a port. */ export interface PortStatus extends PortRef { type: 'PortStatus'; /** Numerical identifier for the port. */ portID: number; /** Wallclock or station reference time derived from server reference feed. */ refTime: string; /** Time on input port. */ portTime: string; /** Play speed of the port, e.g. 1.0 for normal playback, 0.0 for stopped. */ speed: number; /** Current offset of the play or record head on the port. */ offset: number; /** What state or states is the port in? */ status: StatusOfPort; /** Offset+1 of frame at which data ends. */ endOfData: number; /** Number of frames since the Port was last given a valid command or transferred a frame. */ framesUnused: number; /** Timecode being generated on output. */ outputTime: string; /** Channels controlled by the port. */ channels: number[]; /** Video format configured for the port, e.g. 1080i50. */ videoFormat: string; } export interface ReleaseRef extends PortRef { /** Was the port only reset as part of the release, not fully freed? */ resetOnly?: boolean; } /** * Details of the status reported for releasing a port. */ export interface ReleaseStatus extends ReleaseRef { type: 'ReleaseStatus'; /** Was the port realeased successfully? */ released: boolean; resetOnly: boolean; } /** * Reference to a clip */ export interface ClipRef { /** Identifier of the clip this message refers to. */ clipID: number; } /** * Reference used to query clip fragments, allowing for time-bounded queries. */ export interface FragmentRef extends ClipRef { /** Start offset for query boundary. Zero assumed when omitted. */ start?: number; /** End offset of query boundary. Maximum offset assumed when omitted. */ finish?: number; } /** * Reference used to query fragments on a port, allowing for time-bounded * queries. */ export interface PortFragmentRef extends PortRef { /** Start offset for query boundary. Zero assumed when omitted. */ start?: number; /** End offset of query boundary. Maximum offset assumed when omitted. */ finish?: number; } /** * Summmary details for a clip reported as the result of a search. */ export interface ClipDataSummary { type: 'ClipDataSummary' | 'ClipData'; /** Unique identifier for the clip in this zone. */ ClipID: number; /** Globally-unique identifier for the clip. */ ClipGUID: string; /** Source clip that this clip is a clone of. */ CloneId: number | null; /** Date and time that the clip was considered complete. */ Completed: DateString | null; /** Date and time that the clip was created. */ Created: DateString; /** Description of the clip. */ Description: string; /** Number of frames in the clip. Will be a number-as-a-string when knwon. */ Frames: string; /** Clip owner. */ Owner: string; /** Disk pool storage location for the clip. */ PoolID: number | null; /** Title of the clip. */ Title: string; } export interface ClipData extends ClipDataSummary { type: 'ClipData'; /** Clip category. Sometimes used to identify a managing agent MAM. */ Category: string; /** Where the clip was copied from another zone, identifier of the source zone. */ CloneZone: number | null; Destination: number | null; /** Date and time after which it is safe to remove the clip. */ Expiry: DateString | null; /** Does the clip have associated edit data? */ HasEditData: number | null; Inpoint: number | null; JobID: number | null; Modified: string | null; NumAudTracks: number | null; Number: number | null; NumVidTracks: number | null; Outpoint: number | null; PlaceHolder: boolean; PlayAspect: string; PublishedBy: string; Register: string; Tape: string; Template: number | null; UnEdited: number | null; PlayMode: string; MosActive: boolean; Division: string; AudioFormats: string; VideoFormats: string; Protection: string; VDCPID: string; PublishCompleted: DateString | null; } export interface ServerFragment { type: string; trackNum: number; start: number; finish: number; } export type ServerFragmentTypes = VideoFragment | AudioFragment | AUXFragment | FlagsFragment | TimecodeFragment | AspectFragment | CropFragment | PanZoomFragment | SpeedFragment | MultiCamFragment | CCFragment | NoteFragment | EffectFragment; export interface PositionData extends ServerFragment { rushID: string; format: number; poolID: number; poolFrame: number; skew: number; rushFrame: number; } export interface VideoFragment extends PositionData { type: 'VideoFragment'; } export interface AudioFragment extends PositionData { type: 'AudioFragment'; } export interface AUXFragment extends PositionData { type: 'AUXFragment'; } export interface FlagsFragment extends ServerFragment { type: 'FlagsFragment'; flags: number; } export interface TimecodeFragment extends ServerFragment { startTimecode: string; userBits: number; } export interface AspectFragment extends ServerFragment { type: 'AspectFragment'; width: number; height: number; } export interface CropFragment extends ServerFragment { type: 'CropFragment'; x: number; y: number; width: number; height: number; } export interface PanZoomFragment extends ServerFragment { type: 'PanZoomFragment'; x: number; y: number; hZoom: number; vZoon: number; } export interface SpeedFragment extends ServerFragment { type: 'SpeedFragment'; speed: number; profile: number; } export interface MultiCamFragment extends ServerFragment { type: 'MultiCamFragment'; stream: number; } export interface CCFragment extends ServerFragment { type: 'CCFragment'; ccID: string; ccType: number; effectID: number; } export interface NoteFragment extends ServerFragment { type: 'NoteFragment'; noteID: number; aux: number; mask: number; note: string | null; } export interface EffectFragment extends ServerFragment { type: 'EffectFragment'; effectID: number; } export interface ServerFragments extends ClipRef { type: 'ServerFragments'; fragments: ServerFragmentTypes[]; } export interface PortServerFragments extends ServerFragments, PortRef { clipID: -1; } export interface PortLoadInfo extends PortRef { fragments: ServerFragmentTypes[]; offset?: number; } /** * Status after loading fragments onto a port. */ export interface PortLoadStatus extends PortRef { type: 'PortLoadStatus'; /** Number of fragments loaded onto the port. */ fragmentCount: number; /** Offset at which fragments were loaded. */ offset: number; } export declare enum Trigger { START = "START",// quantel.START STOP = "STOP",// quantel.STOP JUMP = "JUMP",// quantel.JUMP TRANSITION = "TRANSITION" } export declare enum Priority { STANDARD = "STANDARD",// quantel.STANDARD HIGH = "HIGH" } export interface TriggerInfo extends PortRef { trigger: Trigger; offset?: number; } export interface TriggerResult extends TriggerInfo { type: 'TriggerResult'; success: boolean; } export interface JumpInfo extends PortRef { offset: number; } export interface JumpResult extends JumpInfo { type: 'HardJumpResult' | 'TriggeredJumpResult'; success: boolean; } export interface ThumbnailSize { width: number; height: number; } export interface ThumbnailOrder extends ClipRef { offset: number; stride: number; count: number; } /** * Details of a connection from a Quantel Gateway to an ISA manager. */ export interface ConnectionDetails { type: 'ConnectionDetails'; /** CORBA-encoded ISA manager connection details. */ isaIOR: string; /** Location of the attached ISA manager. */ href: string; /** List of alternative ISA managers, e.g. master and slave(s). */ refs: string[]; /** Incrementing round robim counter used to select the next ISA manager on failure. */ robin: number; } export interface CloneRequest extends ClipRef { poolID: number; highPriority?: boolean; } export interface WipeInfo extends PortRef { start?: number; frames?: number; } export interface WipeResult extends WipeInfo { type: 'WipeResult'; wiped: boolean; } export interface FormatRef { formatNumber: number; } export interface FormatInfo extends FormatRef { type: 'FormatInfo'; essenceType: 'VideoFragment' | 'AudioFragment' | 'AUXFragment' | 'FlagsFragment' | 'TimecodeFragment' | 'AspectFragment' | 'CropFragment' | 'PanZoomFragment' | 'MultiCamFragment' | 'CCFragment' | 'NoteFragment' | 'EffectFragment' | 'Unknown'; frameRate: number; height: number; width: number; samples: number; compressionFamily: number; protonsPerAtom: number; framesPerAtom: number; quark: number; formatName: string; layoutName: string; compressionName: string; } /** * Details of a request to clone a clip, if cloning is required. */ export interface CloneInfo { /** Source zone ID, for inter-zone copies only. Otherwise `undefined`. */ zoneID?: number; /** Identifier for the source clip. */ clipID: number; /** Target pool identifier. */ poolID: number; /** Priority level, a value between 0 (low) and 15 (high). Default is 8 (standard). */ priority?: number; /** For inter-zone cloning, should provenance be carried along with copy? Default is `true`. */ history?: boolean; } /** * Response to the request to clone a clip if it does not already exist on a given * zone or pool, or the identifier of an existing useable clip. */ export interface CloneResult extends CloneInfo { type: 'CloneResult'; /** Clip identifier of the target of the copy, which may be a pre-existing clip ID. */ copyID: number; /** Whether it was necessary to start a copy operation, otherwise a copy already existed. */ copyCreated: boolean; } /** * Details of the progress of a copy operation for a copy target with `clipID`. */ export interface CopyProgress extends ClipRef { type: 'CopyProgress'; /** Total number of units of quantel storage. */ totalProtons: number; /** Units of storage remaining to copy. `protonsLeft / totalProtons` is percentage remaining. */ protonsLeft: number; /** * If positive, estimate of the number of seconds remaining until the copy completes. * If negative, the number of seconds have passed since the copy completed. */ secsLeft: number; /** Relative priority of the copy, from 0 (low) to 15 (high). Default is 8 (standard). */ priority: number; /** Whether the copy operation was ticketed. Expect `false` as not implemented by Quantel gateway. */ ticketed: boolean; } export {}; //# sourceMappingURL=quantelTypes.d.ts.map