mirror of
https://github.com/chenasraf/DefinitelyTyped.git
synced 2026-05-17 17:48:06 +00:00
355 lines
13 KiB
TypeScript
355 lines
13 KiB
TypeScript
// Type definitions for ffprobe 1.1
|
|
// Project: https://github.com/eugeneware/ffprobe
|
|
// Definitions by: DefinitelyTyped <https://github.com/DefinitelyTyped>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
|
|
declare namespace getInfo {
|
|
type FFProbeBoolean = '0' | '1';
|
|
|
|
interface BaseSideData {
|
|
side_data_type: string;
|
|
}
|
|
|
|
interface UnknownSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to the default side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2298}
|
|
*/
|
|
side_data_type: 'unknown';
|
|
}
|
|
|
|
interface DisplayMatrixSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Display Matrix side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2300-L2304}
|
|
*/
|
|
side_data_type: 'Display Matrix';
|
|
/**
|
|
* Mismatches the type linked earlier because ffprobe JSON output
|
|
* reads the printed integers for the display matrix as a string
|
|
*/
|
|
displaymatrix: string;
|
|
rotation: number;
|
|
}
|
|
|
|
interface Stereo3dSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Stereo 3D side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2306-L2308}
|
|
*/
|
|
side_data_type: 'Stereo 3D';
|
|
/**
|
|
* Based on the C code of the libauvutil stereo3d file
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/libavutil/stereo3d.c#L47-L56}
|
|
*/
|
|
type:
|
|
| 'unknown'
|
|
| '2D'
|
|
| 'side by side'
|
|
| 'top and bottom'
|
|
| 'frame alternate'
|
|
| 'checkerboard'
|
|
| 'side by side (quincunx subsampling)'
|
|
| 'interleaved lines'
|
|
| 'interleaved columns';
|
|
inverted: number;
|
|
}
|
|
|
|
interface BaseSphericalMappingSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Spherical Mapping side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2310-L2326}
|
|
*/
|
|
side_data_type: 'Spherical Mapping';
|
|
/**
|
|
* Based on the C code of the libauvutil spherical file
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/libavutil/spherical.c#L55-L59}
|
|
*/
|
|
projection: string;
|
|
yaw: number;
|
|
pitch: number;
|
|
roll: number;
|
|
}
|
|
|
|
interface UnknownSphericalMappingSideData extends BaseSphericalMappingSideData {
|
|
projection: 'unknown';
|
|
}
|
|
|
|
interface EquirectangularSphericalMappingSideData extends BaseSphericalMappingSideData {
|
|
projection: 'equirectangular';
|
|
}
|
|
|
|
interface CubeMapSphericalMappingSideData extends BaseSphericalMappingSideData {
|
|
projection: 'cubemap';
|
|
/**
|
|
* Based on the C code related to Cube Map Spherical Mapping side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2313}
|
|
*/
|
|
padding: number;
|
|
}
|
|
|
|
interface TiltedEquirectangularSphericalMappingSideData extends BaseSphericalMappingSideData {
|
|
projection: 'tiled equirectangular';
|
|
/**
|
|
* Based on the C code related to Cube Map Spherical Mapping side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2315-L2321}
|
|
*/
|
|
bound_left: number;
|
|
bound_top: number;
|
|
bound_right: number;
|
|
bound_bottom: number;
|
|
}
|
|
|
|
type SphericalMappingSideData =
|
|
| UnknownSphericalMappingSideData
|
|
| EquirectangularSphericalMappingSideData
|
|
| CubeMapSphericalMappingSideData
|
|
| TiltedEquirectangularSphericalMappingSideData;
|
|
|
|
interface SkipSamplesSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Skip Samples side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2328-L2331}
|
|
*/
|
|
side_data_type: 'Skip Samples';
|
|
skip_samples: number;
|
|
discard_padding: number;
|
|
skip_reason: number;
|
|
discard_reason: number;
|
|
}
|
|
|
|
interface BaseMasteringDisplayMetadataSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Mastering display metadata side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2333-L2350}
|
|
*/
|
|
side_data_type: 'Mastering display metadata';
|
|
}
|
|
|
|
interface PrimariesMasteringDisplayMetadataSideData extends BaseMasteringDisplayMetadataSideData {
|
|
/**
|
|
* Based on the C code related to Primaries Mastering display metadata side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2336-L2344}
|
|
*/
|
|
red_x: string;
|
|
red_y: string;
|
|
green_x: string;
|
|
green_y: string;
|
|
blue_x: string;
|
|
blue_y: string;
|
|
|
|
white_point_x: string;
|
|
white_point_y: string;
|
|
}
|
|
|
|
interface LuminanceMasteringDisplayMetadataSideData extends BaseMasteringDisplayMetadataSideData {
|
|
/**
|
|
* Based on the C code related to Luminance Mastering display metadata side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2348-L2349}
|
|
*/
|
|
min_luminance: string;
|
|
max_luminance: string;
|
|
}
|
|
|
|
type MasteringDisplayMetadataSideData =
|
|
| PrimariesMasteringDisplayMetadataSideData
|
|
| LuminanceMasteringDisplayMetadataSideData
|
|
| (PrimariesMasteringDisplayMetadataSideData & LuminanceMasteringDisplayMetadataSideData);
|
|
|
|
interface ContentLightLevelMetadataSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Content light level metadata side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2352-L2354}
|
|
*/
|
|
side_data_type: 'Content light level metadata';
|
|
max_content: number;
|
|
max_average: number;
|
|
}
|
|
|
|
interface DoviConfigurationRecordSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to DOVI configuration record side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2356-L2364}
|
|
*/
|
|
side_data_type: 'DOVI configuration record';
|
|
dv_version_major: number;
|
|
dv_version_minor: number;
|
|
dv_profile: number;
|
|
dv_level: number;
|
|
rpu_present_flag: number;
|
|
el_present_flag: number;
|
|
bl_present_flag: number;
|
|
dv_bl_signal_compatibility_id: number;
|
|
}
|
|
|
|
interface AudioServiceTypeSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Audio Service Type side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2366-L2367}
|
|
*/
|
|
side_data_type: 'Audio Service Type';
|
|
service_type: number;
|
|
}
|
|
|
|
interface MpegtsStreamIdSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to MPEGTS Stream ID side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2369}
|
|
*/
|
|
side_data_type: 'MPEGTS Stream ID';
|
|
id: number;
|
|
}
|
|
|
|
interface CpbPropertiesSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to CPB properties side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2371-L2376}
|
|
*/
|
|
side_data_type: 'CPB properties';
|
|
max_bitrate: number;
|
|
min_bitrate: number;
|
|
avg_bitrate: number;
|
|
buffer_size: number;
|
|
vbv_delay: number;
|
|
}
|
|
|
|
interface WebvttSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Webvtt side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2379-L2381}
|
|
*/
|
|
side_data_type: 'WebVTT ID' | 'WebVTT Settings';
|
|
data?: string | undefined;
|
|
data_hash: string;
|
|
}
|
|
|
|
interface ActiveFormatDescriptionSideData extends BaseSideData {
|
|
/**
|
|
* Based on the C code related to Active format description side data section
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/b37795688a9bfa6d5a2e9b2535c4b10ebc14ac5d/fftools/ffprobe.c#L2383}
|
|
*/
|
|
side_data_type: 'Active format description';
|
|
active_format?: number;
|
|
}
|
|
|
|
type SideData =
|
|
| UnknownSideData
|
|
| DisplayMatrixSideData
|
|
| Stereo3dSideData
|
|
| SphericalMappingSideData
|
|
| SkipSamplesSideData
|
|
| MasteringDisplayMetadataSideData
|
|
| ContentLightLevelMetadataSideData
|
|
| DoviConfigurationRecordSideData
|
|
| AudioServiceTypeSideData
|
|
| MpegtsStreamIdSideData
|
|
| AudioServiceTypeSideData
|
|
| MpegtsStreamIdSideData
|
|
| CpbPropertiesSideData
|
|
| WebvttSideData
|
|
| ActiveFormatDescriptionSideData;
|
|
|
|
interface Options {
|
|
path: string;
|
|
}
|
|
|
|
/**
|
|
* Based on the XML definition of the ffprobe stream type
|
|
* {@see https://github.com/FFmpeg/FFmpeg/blob/master/doc/ffprobe.xsd#L206}
|
|
*/
|
|
interface FFProbeStream {
|
|
index: number;
|
|
codec_name?: string | undefined;
|
|
codec_long_name?: string | undefined;
|
|
profile?: string | undefined;
|
|
codec_type?: 'video' | 'audio' | 'images' | undefined;
|
|
codec_time_base: string;
|
|
codec_tag_string: string;
|
|
codec_tag: string;
|
|
extradata?: string | undefined;
|
|
|
|
// Video attributes
|
|
width?: number | undefined;
|
|
height?: number | undefined;
|
|
coded_width?: number | undefined;
|
|
coded_height?: number | undefined;
|
|
closed_captions?: FFProbeBoolean | undefined;
|
|
has_b_frames?: number | undefined;
|
|
sample_aspect_ratio?: string | undefined;
|
|
display_aspect_ratio?: string | undefined;
|
|
pix_fmt?: string | undefined;
|
|
level?: number | undefined;
|
|
color_range?: string | undefined;
|
|
color_space?: string | undefined;
|
|
color_transfer?: string | undefined;
|
|
color_primaries?: string | undefined;
|
|
chroma_location?: string | undefined;
|
|
field_order?: string | undefined;
|
|
timecode?: string | undefined;
|
|
refs?: number | undefined;
|
|
|
|
// Audio attributes
|
|
sample_fmt?: string | undefined;
|
|
sample_rate?: number | undefined;
|
|
channels?: number | undefined;
|
|
channel_layout?: string | undefined;
|
|
bits_per_sample?: number | undefined;
|
|
|
|
id: string;
|
|
r_frame_rate: string;
|
|
avg_frame_rate: string;
|
|
time_base: string;
|
|
start_pts?: number | undefined;
|
|
start_time?: number | undefined;
|
|
duration_ts?: string | undefined;
|
|
duration?: number | undefined;
|
|
bit_rate?: number | undefined;
|
|
max_bit_rate?: number | undefined;
|
|
bits_per_raw_sample?: number | undefined;
|
|
nb_frames?: number | undefined;
|
|
nb_read_frames?: number | undefined;
|
|
nb_read_packets?: number | undefined;
|
|
|
|
// Not in XML file, but is still in the output of ffprobe MKV files.
|
|
is_avc?: number | undefined;
|
|
nal_length_size?: number | undefined;
|
|
|
|
disposition: {
|
|
default: number;
|
|
dub: number;
|
|
original: number;
|
|
comment: number;
|
|
lyrics: number;
|
|
karaoke: number;
|
|
forced: number;
|
|
hearing_impaired: number;
|
|
visual_impaired: number;
|
|
clean_effects: number;
|
|
attached_pic: number;
|
|
timed_thumbnails?: number | undefined;
|
|
};
|
|
tags: {
|
|
language?: string | undefined;
|
|
handler_name?: string | undefined;
|
|
creation_time?: string | undefined;
|
|
[tag: string]: string | undefined;
|
|
};
|
|
|
|
side_data_list?: SideData[] | undefined;
|
|
}
|
|
|
|
interface FFProbeResult {
|
|
streams: FFProbeStream[];
|
|
}
|
|
}
|
|
|
|
declare function getInfo(
|
|
filePath: string,
|
|
options: getInfo.Options,
|
|
cb: (err: Error, info: getInfo.FFProbeResult) => void,
|
|
): void;
|
|
|
|
declare function getInfo(filePath: string, options: getInfo.Options): Promise<getInfo.FFProbeResult>;
|
|
|
|
export = getInfo;
|