import { CpuTopology as CpuTopologyPB, DeckLinkCard as DeckLinkCardPB, DeckLinkDisplayModeId as DeckLinkDisplayModeIdPB, DeckLinkPixelFormat as DeckLinkPixelFormatPB, VideoConnection as VideoConnectionPB, VideoIOSupport as VideoIOSupportPB, VancPayloadFormat as VancPayloadFormatPB, MA35DCard as MA35DCardPB, } from "@norskvideo/norsk-api/lib/media_pb"; import { exhaustiveCheck, mandatory } from "./shared/utils"; //////////////////////////////////////////////////////////////////////////////// // General /** @public */ export interface FrameRate { frames: number; seconds: number; } /** @public */ export type LogicalCpuId = number; /** @public */ export interface Core { logicalCpuIds: LogicalCpuId[]; } /** @public */ export interface Processor { cores: Core[]; } /** @public */ export interface NumaNode { processors: Processor[]; } /** @public */ export interface CpuTopology { numaNodes: NumaNode[]; } /** @internal */ export function fromCpuTopology(cpuTopology?: CpuTopologyPB): CpuTopology { return cpuTopology ? { numaNodes: cpuTopology?.numaNodes.map((numaNode) => { return { processors: numaNode.processors.map((processor) => { return { cores: processor.cores.map((core) => { return { logicalCpuIds: core.logicalCpuIds.map((logicalCpuId) => { return logicalCpuId.logicalCpuId; }), }; }), }; }), }; }), } : { numaNodes: [] }; } //////////////////////////////////////////////////////////////////////////////// // Decklink /** @public */ export type DeckLinkVideoConnection = | "sdi" | "hdmi" | "optical_sdi" | "component" | "composite" | "svideo"; /** @internal */ export function toVideoConnection( conn: DeckLinkVideoConnection ): VideoConnectionPB { switch (conn) { case "sdi": return VideoConnectionPB.SDI; case "hdmi": return VideoConnectionPB.HDMI; case "optical_sdi": return VideoConnectionPB.OPTICAL_SDI; case "component": return VideoConnectionPB.COMPONENT; case "composite": return VideoConnectionPB.COMPOSITE; case "svideo": return VideoConnectionPB.SVIDEO; default: exhaustiveCheck(conn); } } /** @internal */ export function fromVideoConnection( conn: VideoConnectionPB ): DeckLinkVideoConnection { switch (conn) { case VideoConnectionPB.SDI: return "sdi"; case VideoConnectionPB.HDMI: return "hdmi"; case VideoConnectionPB.OPTICAL_SDI: return "optical_sdi"; case VideoConnectionPB.COMPONENT: return "component"; case VideoConnectionPB.COMPOSITE: return "composite"; case VideoConnectionPB.SVIDEO: return "svideo"; default: exhaustiveCheck(conn); } } /** @public */ export type DeckLinkVideoIOSupport = "capture" | "playback"; /** @internal */ export function toVideoIOSupport( videoIO: DeckLinkVideoIOSupport ): VideoIOSupportPB { switch (videoIO) { case "capture": return VideoIOSupportPB.CAPTURE; case "playback": return VideoIOSupportPB.PLAYBACK; default: exhaustiveCheck(videoIO); } } /** @internal */ export function fromVideoIOSupport( videoIO: VideoIOSupportPB ): DeckLinkVideoIOSupport { switch (videoIO) { case VideoIOSupportPB.CAPTURE: return "capture"; case VideoIOSupportPB.PLAYBACK: return "playback"; default: exhaustiveCheck(videoIO); } } /** @public */ export type DeckLinkPixelFormat = "uyvy" | "argb"; /** @internal */ export function toDeckLinkPixelFormat( format: DeckLinkPixelFormat ): DeckLinkPixelFormatPB { switch (format) { case "uyvy": return DeckLinkPixelFormatPB.DECKLINK_UYVY; case "argb": return DeckLinkPixelFormatPB.DECKLINK_ARGB; default: exhaustiveCheck(format); } } /** @internal */ export function fromDeckLinkPixelFormat( format: DeckLinkPixelFormatPB ): DeckLinkPixelFormat { switch (format) { case DeckLinkPixelFormatPB.DECKLINK_UYVY: return "uyvy"; case DeckLinkPixelFormatPB.DECKLINK_ARGB: return "argb"; default: exhaustiveCheck(format); } } /** @public */ export interface DeckLinkCard { index: number; displayName: string; inputConnections: DeckLinkVideoConnection[]; outputConnections: DeckLinkVideoConnection[]; ioSupport: DeckLinkVideoIOSupport[]; } /** @internal */ export function fromDeckLinkCard(deckLinkCard: DeckLinkCardPB): DeckLinkCard { return { index: deckLinkCard.index, displayName: deckLinkCard.displayName, inputConnections: deckLinkCard.inputConnections.map(fromVideoConnection), outputConnections: deckLinkCard.outputConnections.map(fromVideoConnection), ioSupport: deckLinkCard.ioSupport.map(fromVideoIOSupport), }; } /** @public */ export type DeckLinkDisplayModeId = | "auto" | "sd_ntsc" | "sd_nt23" | "sd_pal" | "sd_ntsp" | "sd_palp" | "hd1080_23ps" | "hd1080_24ps" | "hd1080_p25" | "hd1080_p29" | "hd1080_p30" | "hd1080_p47" | "hd1080_p48" | "hd1080_i50" | "hd1080_i59" | "hd1080_i60" | "hd1080_p95" | "hd1080_p96" | "hd1080_p10" | "hd1080_p11" | "hd1080_p12" | "hd1080_p50" | "hd1080_p59" | "hd1080_p60" | "hd720_p50" | "hd720_p59" | "hd720_p60" | "two_k_23" | "two_k_24" | "two_k_25" | "two_k_dci_23" | "two_k_dci_24" | "two_k_dci_25" | "two_k_dci_29" | "two_k_dci_30" | "two_k_dci_47" | "two_k_dci_48" | "two_k_dci_50" | "two_k_dci_59" | "two_k_dci_60" | "two_k_dci_95" | "two_k_dci_96" | "two_k_dci_10" | "two_k_dci_11" | "two_k_dci_12" | "four_k_23" | "four_k_24" | "four_k_25" | "four_k_29" | "four_k_30" | "four_k_47" | "four_k_48" | "four_k_50" | "four_k_59" | "four_k_60" | "four_k_95" | "four_k_96" | "four_k_10" | "four_k_11" | "four_k_12" | "four_k_dci_23" | "four_k_dci_24" | "four_k_dci_25" | "four_k_dci_29" | "four_k_dci_30" | "four_k_dci_47" | "four_k_dci_48" | "four_k_dci_50" | "four_k_dci_59" | "four_k_dci_60" | "four_k_dci_95" | "four_k_dci_96" | "four_k_dci_10" | "four_k_dci_11" | "four_k_dci_12" | "eight_k_23" | "eight_k_24" | "eight_k_25" | "eight_k_29" | "eight_k_30" | "eight_k_47" | "eight_k_48" | "eight_k_50" | "eight_k_59" | "eight_k_60" | "eight_k_dci_23" | "eight_k_dci_24" | "eight_k_dci_25" | "eight_k_dci_29" | "eight_k_dci_30" | "eight_k_dci_47" | "eight_k_dci_48" | "eight_k_dci_50" | "eight_k_dci_59" | "eight_k_dci_60" | "pc_vga6" | "pc_svg6" | "pc_wxg5" | "pc_wxg6" | "pc_sxg5" | "pc_sxg6" | "pc_uxg5" | "pc_uxg6" | "pc_wux5" | "pc_wux6" | "pc_1945" | "pc_1946" | "pc_wqh5" | "pc_wqh6" | "pc_wqx5" | "pc_wqx6" | "special_iunk"; /** @internal */ export function toDeckLinkDisplayModeId( id: DeckLinkDisplayModeId ): DeckLinkDisplayModeIdPB { switch (id) { case "auto": return DeckLinkDisplayModeIdPB.AUTO; case "sd_ntsc": return DeckLinkDisplayModeIdPB.SD_NTSC; case "sd_nt23": return DeckLinkDisplayModeIdPB.SD_NT23; case "sd_pal": return DeckLinkDisplayModeIdPB.SD_PAL; case "sd_ntsp": return DeckLinkDisplayModeIdPB.SD_NTSP; case "sd_palp": return DeckLinkDisplayModeIdPB.SD_PALP; case "hd1080_23ps": return DeckLinkDisplayModeIdPB.HD1080_23PS; case "hd1080_24ps": return DeckLinkDisplayModeIdPB.HD1080_24PS; case "hd1080_p25": return DeckLinkDisplayModeIdPB.HD1080_P25; case "hd1080_p29": return DeckLinkDisplayModeIdPB.HD1080_P29; case "hd1080_p30": return DeckLinkDisplayModeIdPB.HD1080_P30; case "hd1080_p47": return DeckLinkDisplayModeIdPB.HD1080_P47; case "hd1080_p48": return DeckLinkDisplayModeIdPB.HD1080_P48; case "hd1080_i50": return DeckLinkDisplayModeIdPB.HD1080_I50; case "hd1080_i59": return DeckLinkDisplayModeIdPB.HD1080_I59; case "hd1080_i60": return DeckLinkDisplayModeIdPB.HD1080_I60; case "hd1080_p95": return DeckLinkDisplayModeIdPB.HD1080_P95; case "hd1080_p96": return DeckLinkDisplayModeIdPB.HD1080_P96; case "hd1080_p10": return DeckLinkDisplayModeIdPB.HD1080_P10; case "hd1080_p11": return DeckLinkDisplayModeIdPB.HD1080_P11; case "hd1080_p12": return DeckLinkDisplayModeIdPB.HD1080_P12; case "hd1080_p50": return DeckLinkDisplayModeIdPB.HD1080_P50; case "hd1080_p59": return DeckLinkDisplayModeIdPB.HD1080_P59; case "hd1080_p60": return DeckLinkDisplayModeIdPB.HD1080_P60; case "hd720_p50": return DeckLinkDisplayModeIdPB.HD720_P50; case "hd720_p59": return DeckLinkDisplayModeIdPB.HD720_P59; case "hd720_p60": return DeckLinkDisplayModeIdPB.HD720_P60; case "two_k_23": return DeckLinkDisplayModeIdPB.TWO_K_23; case "two_k_24": return DeckLinkDisplayModeIdPB.TWO_K_24; case "two_k_25": return DeckLinkDisplayModeIdPB.TWO_K_25; case "two_k_dci_23": return DeckLinkDisplayModeIdPB.TWO_K_DCI_23; case "two_k_dci_24": return DeckLinkDisplayModeIdPB.TWO_K_DCI_24; case "two_k_dci_25": return DeckLinkDisplayModeIdPB.TWO_K_DCI_25; case "two_k_dci_29": return DeckLinkDisplayModeIdPB.TWO_K_DCI_29; case "two_k_dci_30": return DeckLinkDisplayModeIdPB.TWO_K_DCI_30; case "two_k_dci_47": return DeckLinkDisplayModeIdPB.TWO_K_DCI_47; case "two_k_dci_48": return DeckLinkDisplayModeIdPB.TWO_K_DCI_48; case "two_k_dci_50": return DeckLinkDisplayModeIdPB.TWO_K_DCI_50; case "two_k_dci_59": return DeckLinkDisplayModeIdPB.TWO_K_DCI_59; case "two_k_dci_60": return DeckLinkDisplayModeIdPB.TWO_K_DCI_60; case "two_k_dci_95": return DeckLinkDisplayModeIdPB.TWO_K_DCI_95; case "two_k_dci_96": return DeckLinkDisplayModeIdPB.TWO_K_DCI_96; case "two_k_dci_10": return DeckLinkDisplayModeIdPB.TWO_K_DCI_10; case "two_k_dci_11": return DeckLinkDisplayModeIdPB.TWO_K_DCI_11; case "two_k_dci_12": return DeckLinkDisplayModeIdPB.TWO_K_DCI_12; case "four_k_23": return DeckLinkDisplayModeIdPB.FOUR_K_23; case "four_k_24": return DeckLinkDisplayModeIdPB.FOUR_K_24; case "four_k_25": return DeckLinkDisplayModeIdPB.FOUR_K_25; case "four_k_29": return DeckLinkDisplayModeIdPB.FOUR_K_29; case "four_k_30": return DeckLinkDisplayModeIdPB.FOUR_K_30; case "four_k_47": return DeckLinkDisplayModeIdPB.FOUR_K_47; case "four_k_48": return DeckLinkDisplayModeIdPB.FOUR_K_48; case "four_k_50": return DeckLinkDisplayModeIdPB.FOUR_K_50; case "four_k_59": return DeckLinkDisplayModeIdPB.FOUR_K_59; case "four_k_60": return DeckLinkDisplayModeIdPB.FOUR_K_60; case "four_k_95": return DeckLinkDisplayModeIdPB.FOUR_K_95; case "four_k_96": return DeckLinkDisplayModeIdPB.FOUR_K_96; case "four_k_10": return DeckLinkDisplayModeIdPB.FOUR_K_10; case "four_k_11": return DeckLinkDisplayModeIdPB.FOUR_K_11; case "four_k_12": return DeckLinkDisplayModeIdPB.FOUR_K_12; case "four_k_dci_23": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_23; case "four_k_dci_24": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_24; case "four_k_dci_25": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_25; case "four_k_dci_29": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_29; case "four_k_dci_30": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_30; case "four_k_dci_47": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_47; case "four_k_dci_48": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_48; case "four_k_dci_50": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_50; case "four_k_dci_59": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_59; case "four_k_dci_60": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_60; case "four_k_dci_95": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_95; case "four_k_dci_96": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_96; case "four_k_dci_10": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_10; case "four_k_dci_11": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_11; case "four_k_dci_12": return DeckLinkDisplayModeIdPB.FOUR_K_DCI_12; case "eight_k_23": return DeckLinkDisplayModeIdPB.EIGHT_K_23; case "eight_k_24": return DeckLinkDisplayModeIdPB.EIGHT_K_24; case "eight_k_25": return DeckLinkDisplayModeIdPB.EIGHT_K_25; case "eight_k_29": return DeckLinkDisplayModeIdPB.EIGHT_K_29; case "eight_k_30": return DeckLinkDisplayModeIdPB.EIGHT_K_30; case "eight_k_47": return DeckLinkDisplayModeIdPB.EIGHT_K_47; case "eight_k_48": return DeckLinkDisplayModeIdPB.EIGHT_K_48; case "eight_k_50": return DeckLinkDisplayModeIdPB.EIGHT_K_50; case "eight_k_59": return DeckLinkDisplayModeIdPB.EIGHT_K_59; case "eight_k_60": return DeckLinkDisplayModeIdPB.EIGHT_K_60; case "eight_k_dci_23": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_23; case "eight_k_dci_24": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_24; case "eight_k_dci_25": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_25; case "eight_k_dci_29": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_29; case "eight_k_dci_30": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_30; case "eight_k_dci_47": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_47; case "eight_k_dci_48": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_48; case "eight_k_dci_50": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_50; case "eight_k_dci_59": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_59; case "eight_k_dci_60": return DeckLinkDisplayModeIdPB.EIGHT_K_DCI_60; case "pc_vga6": return DeckLinkDisplayModeIdPB.PC_VGA6; case "pc_svg6": return DeckLinkDisplayModeIdPB.PC_SVG6; case "pc_wxg5": return DeckLinkDisplayModeIdPB.PC_WXG5; case "pc_wxg6": return DeckLinkDisplayModeIdPB.PC_WXG6; case "pc_sxg5": return DeckLinkDisplayModeIdPB.PC_SXG5; case "pc_sxg6": return DeckLinkDisplayModeIdPB.PC_SXG6; case "pc_uxg5": return DeckLinkDisplayModeIdPB.PC_UXG5; case "pc_uxg6": return DeckLinkDisplayModeIdPB.PC_UXG6; case "pc_wux5": return DeckLinkDisplayModeIdPB.PC_WUX5; case "pc_wux6": return DeckLinkDisplayModeIdPB.PC_WUX6; case "pc_1945": return DeckLinkDisplayModeIdPB.PC_1945; case "pc_1946": return DeckLinkDisplayModeIdPB.PC_1946; case "pc_wqh5": return DeckLinkDisplayModeIdPB.PC_WQH5; case "pc_wqh6": return DeckLinkDisplayModeIdPB.PC_WQH6; case "pc_wqx5": return DeckLinkDisplayModeIdPB.PC_WQX5; case "pc_wqx6": return DeckLinkDisplayModeIdPB.PC_WQX6; case "special_iunk": return DeckLinkDisplayModeIdPB.SPECIAL_IUNK; } } /** @public */ export interface DeckLinkDisplayMode { id: DeckLinkDisplayModeId; name: string; width: number; height: number; frameRate: FrameRate; } /** @public */ export interface MA35DDeviceInfo { productName: string; serialNumber: string; } /** @public */ export interface MA35DVersionInfo { pcieCrtlPatchVersion: string; pcieFwVersion: string; pciePhyPatchAVersion: string; scVersion: string; zspVersion: string; eSecureVersion: string; } /** @public */ export interface MA35DCard { index: number; device: string; busId: string; deviceInfo: MA35DDeviceInfo; versionInfo: MA35DVersionInfo; } /** @internal */ export function fromMA35DCard(ma35dCard: MA35DCardPB): MA35DCard { const deviceInfo = mandatory(ma35dCard.deviceInfo); const versionInfo = mandatory(ma35dCard.versionInfo); return { index: ma35dCard.index, device: ma35dCard.device, busId: ma35dCard.busId, deviceInfo: { productName: deviceInfo.productName, serialNumber: deviceInfo.serialNumber }, versionInfo: { pcieCrtlPatchVersion: versionInfo.pcieCrtlPatchVersion, pcieFwVersion: versionInfo.pcieFwVersion, pciePhyPatchAVersion: versionInfo.pciePhyPatchAVersion, scVersion: versionInfo.scVersion, zspVersion: versionInfo.zspVersion, eSecureVersion: versionInfo.eSecureVersion } } } /** @public */ export interface VancType2AncillaryId { did: number; sdid: number; } /** @public */ export type VancPayloadFormat = "other" | "afd_bar" | "pan_scan" | "scte104" | "dvb_scte_vbi" | "op47_sdp" | "op47_vanc_multipacket" | "ancillary_time_code" | "eia_708" | "eia_608"; /** @internal */ export function fromVancPayloadFormat(format: VancPayloadFormatPB): VancPayloadFormat { switch (format) { case VancPayloadFormatPB.VANC_AFD_BAR: return "afd_bar"; case VancPayloadFormatPB.VANC_PAN_SCAN: return "pan_scan"; case VancPayloadFormatPB.VANC_SCTE_104: return "scte104"; case VancPayloadFormatPB.VANC_DVB_SCTE_VBI: return "dvb_scte_vbi"; case VancPayloadFormatPB.VANC_OP47_SDP: return "op47_sdp"; case VancPayloadFormatPB.VANC_OP47_VANC_MULTIPACKET: return "op47_vanc_multipacket"; case VancPayloadFormatPB.VANC_ANCILLARY_TIME_CODE: return "ancillary_time_code"; case VancPayloadFormatPB.VANC_EIA_708D: return "eia_708"; case VancPayloadFormatPB.VANC_EIA_608: return "eia_608"; case VancPayloadFormatPB.VANC_OTHER: return "other"; default: exhaustiveCheck(format); } }