mirror of
https://github.com/chenasraf/DefinitelyTyped.git
synced 2026-05-18 01:49:01 +00:00
🤖 Merge PR #63918 [ffprobe] Add missing side data and side data list types by @nizarmah
This commit is contained in:
@@ -1,9 +1,53 @@
|
||||
import ffprobe = require('ffprobe');
|
||||
import ffprobeStatic = require('ffprobe-static');
|
||||
|
||||
const handleSideData = (side_data: ffprobe.SideData) => {
|
||||
if ('rotation' in side_data) {
|
||||
side_data.rotation;
|
||||
side_data.displaymatrix;
|
||||
} else if (side_data.side_data_type === 'Spherical Mapping') {
|
||||
if (side_data.projection === 'cubemap') {
|
||||
side_data.padding;
|
||||
} else if (side_data.projection === 'tiled equirectangular') {
|
||||
side_data.bound_bottom;
|
||||
side_data.bound_top;
|
||||
}
|
||||
} else if (side_data.side_data_type === 'Mastering display metadata') {
|
||||
if ('red_x' in side_data) {
|
||||
side_data.red_x;
|
||||
side_data.blue_x;
|
||||
side_data.green_x;
|
||||
side_data.white_point_x;
|
||||
|
||||
if ('max_luminance' in side_data) {
|
||||
side_data.min_luminance;
|
||||
}
|
||||
}
|
||||
|
||||
if ('min_luminance' in side_data) {
|
||||
side_data.max_luminance;
|
||||
|
||||
if ('red_y' in side_data) {
|
||||
side_data.red_y;
|
||||
side_data.blue_y;
|
||||
side_data.green_y;
|
||||
side_data.white_point_y;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ffprobe('./file.mp4', { path: ffprobeStatic.path })
|
||||
.then(info => {
|
||||
info; // $ExpectType FFProbeResult
|
||||
|
||||
for (const stream of info.streams) {
|
||||
if (!stream.side_data_list) continue;
|
||||
|
||||
for (const side_data of stream.side_data_list) {
|
||||
handleSideData(side_data);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err: Error) => {
|
||||
err; // $ExpectType Error
|
||||
|
||||
245
types/ffprobe/index.d.ts
vendored
245
types/ffprobe/index.d.ts
vendored
@@ -6,6 +6,249 @@
|
||||
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;
|
||||
}
|
||||
@@ -91,6 +334,8 @@ declare namespace getInfo {
|
||||
creation_time?: string | undefined;
|
||||
[tag: string]: string | undefined;
|
||||
};
|
||||
|
||||
side_data_list?: SideData[] | undefined;
|
||||
}
|
||||
|
||||
interface FFProbeResult {
|
||||
|
||||
Reference in New Issue
Block a user