ts-ebml-esm
Version:
ebml decoder and encoder
105 lines (101 loc) • 4.49 kB
TypeScript
/// <reference types="node" />
import * as EBML from "./EBML.js";
export declare const readVint: (buffer: Buffer, start: number) => null | {
length: number;
value: number;
};
export declare const writeVint: (val: number) => Buffer;
export declare const ebmlBlock: (buf: Buffer) => EBML.SimpleBlock;
export declare function readBlock(buf: ArrayBuffer): EBML.SimpleBlock;
/**
* @param end - if end === false then length is unknown
*/
export declare function encodeTag(tagId: Buffer, tagData: Buffer, unknownSize?: boolean): Buffer;
/**
* @return - SimpleBlock to WebP Filter
*/
export declare function WebPFrameFilter(elms: EBML.EBMLElementDetail[]): Blob[];
/**
* WebP ファイルにできる SimpleBlock の パスフィルタ
*/
export declare function WebPBlockFilter(elms: EBML.EBMLElementDetail[]): (EBML.BinaryElement & EBML.ElementDetail & {
data: Buffer;
})[];
/**
* @param frame - VP8 BitStream のうち startcode をもつ frame
* @return - WebP ファイルの ArrayBuffer
*/
export declare function VP8BitStreamToRiffWebPBuffer(frame: Buffer): Buffer;
/**
* RIFF データチャンクを作る
*/
export declare function createRIFFChunk(FourCC: string, chunk: Buffer): Buffer;
/**
* convert the metadata from a streaming webm bytestream to a seekable file by inserting Duration, Seekhead and Cues
* @param originalMetadata - orginal metadata (everything before the clusters start) from media recorder
* @param duration - Duration (TimestampScale)
* @param cuesInfo - cue points for clusters
* @param cuesOffset - extra space to leave before cue points
* @param cuesPosition - location for cue points (if zero, put after tracks metadata)
*/
export declare function makeMetadataSeekable(originalMetadata: EBML.EBMLElementDetail[], duration: number, cuesInfo: {
CueTrack: number;
CueClusterPosition: number;
CueTime: number;
}[], cuesOffset?: number, cuesPosition?: number): ArrayBuffer;
/**
* print all element id names in a list
* @param metadata - array of EBML elements to print
*
export function printElementIds(metadata: EBML.EBMLElementBuffer[]) {
let result: EBML.EBMLElementBuffer[] = [];
let start: number = -1;
for (let i = 0; i < metadata.length; i++) {
console.error("\t id: " + metadata[i].name);
}
}
*/
/**
* remove all occurances of an EBML element from an array of elements
* If it's a MasterElement you will also remove the content. (everything between start and end)
* @param idName - name of the EBML Element to remove.
* @param metadata - array of EBML elements to search
*/
export declare function removeElement(idName: string, metadata: EBML.EBMLElementBuffer[]): void;
/**
* extract the first occurance of an EBML tag from a flattened array of EBML data.
* If it's a MasterElement you will also get the content. (everything between start and end)
* @param idName - name of the EBML Element to extract.
* @param metadata - array of EBML elements to search
*/
export declare function extractElement(idName: string, metadata: EBML.EBMLElementBuffer[]): EBML.EBMLElementBuffer[];
/**
* @deprecated
* metadata に対して duration と seekhead を追加した metadata を返す
* @param metadata - 変更前の webm における ファイル先頭から 最初の Cluster 要素までの 要素
* @param duration - Duration (TimestampScale)
* @param cues - cue points for clusters
* @deprecated @param clusterPtrs - 変更前の webm における SeekHead に追加する Cluster 要素 への start pointer
* @deprecated @param cueInfos - please use cues.
*/
export declare function putRefinedMetaData(metadata: EBML.EBMLElementDetail[], info: {
duration?: number;
cues?: {
CueTrack: number;
CueClusterPosition: number;
CueTime: number;
}[];
clusterPtrs?: number[];
cueInfos?: {
CueTrack: number;
CueClusterPosition: number;
CueTime: number;
}[];
}): ArrayBuffer;
export declare function concat(list: Buffer[]): Buffer;
export declare function encodeValueToBuffer(elm: EBML.MasterElement): EBML.MasterElement;
export declare function encodeValueToBuffer(elm: EBML.ChildElementsValue): EBML.ChildElementBuffer;
export declare function createUIntBuffer(value: number): Buffer;
export declare function createIntBuffer(value: number): Buffer;
export declare function createFloatBuffer(value: number, bytes?: 4 | 8): Buffer;
export declare function convertEBMLDateToJSDate(int64str: number | string | Date): Date;