import { XmlMessage, pipelines, utils } from 'media-stream-library'; /** * Metadata handlers * * For video streams that also include ONVIF metadata, * once can specify a parser + synced callback to be run * whenever metadata occurs on the stream. * * The `parser` provided produces a scheduled message, that * will be returned later through the `cb` synched callback, * whenever the message is synchronized with the presentation. */ export interface MetadataXMLMessage extends XmlMessage { readonly xmlDocument: XMLDocument; } export interface ScheduledMessage { readonly ntpTimestamp: number | undefined; readonly data: unknown; } export declare type MetadataParser = (msg: MetadataXMLMessage) => ScheduledMessage; export declare type MetadataCallback = (msg: ScheduledMessage) => void; export interface MetadataHandler { /** * A parser that will receive an XML message and should return * a new message with at least an ntpTimestamp. */ readonly parser: MetadataParser; /** * A synchronized callback that will be called whenever the message * produced by the parser is in sync with the video. */ readonly cb: MetadataCallback; } /** * Attach ONVIF metadata handlers to a pipeline * * @param pipeline The (HTML5 video) pipeline to modify * @param handlers The handlers to deal with XML data */ export declare const attachMetadataHandler: (pipeline: pipelines.Html5VideoPipeline, { parser, cb }: MetadataHandler) => utils.Scheduler;