@yume-chan/scrcpy
Version:
TypeScript implementation of Scrcpy.
558 lines • 23.8 kB
TypeScript
import { NaluSodbBitReader } from "./nalu.js";
export declare enum AndroidHevcProfile {
Main = 1,
Main10 = 2,
MainStill = 4,
Main10Hdr10 = 4096,
Main10Hdr10Plus = 8192
}
export declare enum AndroidHevcLevel {
MainTierLevel1 = 1,
HighTierLevel1 = 2,
MainTierLevel2 = 4,
HighTierLevel2 = 8,
MainTierLevel21 = 16,
HighTierLevel21 = 32,
MainTierLevel3 = 64,
HighTierLevel3 = 128,
MainTierLevel31 = 256,
HighTierLevel31 = 512,
MainTierLevel4 = 1024,
HighTierLevel4 = 2048,
MainTierLevel41 = 4096,
HighTierLevel41 = 8192,
MainTierLevel5 = 16384,
HighTierLevel5 = 32768,
MainTierLevel51 = 65536,
HighTierLevel51 = 131072,
MainTierLevel52 = 262144,
HighTierLevel52 = 524288,
MainTierLevel6 = 1048576,
HighTierLevel6 = 2097152,
MainTierLevel61 = 4194304,
HighTierLevel61 = 8388608,
MainTierLevel62 = 16777216,
HighTierLevel62 = 33554432
}
/**
* 6.2 Source, decoded and output picture formats
*/
export declare function getSubWidthC(chroma_format_idc: number): 1 | 2;
/**
* 6.2 Source, decoded and output picture formats
*/
export declare function getSubHeightC(chroma_format_idc: number): 1 | 2;
/**
* 7.3.1.1 General NAL unit syntax
*/
export declare function h265ParseNaluHeader(nalu: Uint8Array): {
nal_unit_type: number;
nuh_layer_id: number;
nuh_temporal_id_plus1: number;
};
export type H265NaluHeader = ReturnType<typeof h265ParseNaluHeader>;
export interface H265NaluRaw extends H265NaluHeader {
data: Uint8Array;
rbsp: Uint8Array;
}
/**
* 7.3.2.1 Video parameter set RBSP syntax
*/
export declare function h265ParseVideoParameterSet(nalu: Uint8Array): {
vps_video_parameter_set_id: number;
vps_base_layer_internal_flag: boolean;
vps_base_layer_available_flag: boolean;
vps_max_layers_minus1: number;
vps_max_sub_layers_minus1: number;
vps_temporal_id_nesting_flag: boolean;
profileTierLevel: H265ProfileTierLevel & {
generalProfileTier: {
profile_space: number;
tier_flag: boolean;
profile_idc: number;
profileCompatibilitySet: Uint8Array;
profile_compatibility_flag: boolean[];
constraintSet: Uint8Array;
progressive_source_flag: boolean;
interlaced_source_flag: boolean;
non_packed_constraint_flag: boolean;
frame_only_constraint_flag: boolean;
max_12bit_constraint_flag: boolean | undefined;
max_10bit_constraint_flag: boolean | undefined;
max_8bit_constraint_flag: boolean | undefined;
max_422chroma_constraint_flag: boolean | undefined;
max_420chroma_constraint_flag: boolean | undefined;
max_monochrome_constraint_flag: boolean | undefined;
intra_constraint_flag: boolean | undefined;
one_picture_only_constraint_flag: boolean | undefined;
lower_bit_rate_constraint_flag: boolean | undefined;
max_14bit_constraint_flag: boolean | undefined;
inbld_flag: boolean | undefined;
};
};
vps_sub_layer_ordering_info_present_flag: boolean;
vps_max_dec_pic_buffering_minus1: number[];
vps_max_num_reorder_pics: number[];
vps_max_latency_increase_plus1: number[];
vps_max_layer_id: number;
vps_num_layer_sets_minus1: number;
layer_id_included_flag: boolean[][];
vps_timing_info_present_flag: boolean;
vps_num_units_in_tick: number | undefined;
vps_time_scale: number | undefined;
vps_poc_proportional_to_timing_flag: boolean | undefined;
vps_num_ticks_poc_diff_one_minus1: number | undefined;
vps_num_hrd_parameters: number | undefined;
hrd_layer_set_idx: number[] | undefined;
cprms_present_flag: boolean[] | undefined;
hrdParameters: {
nal_hrd_parameters_present_flag: boolean | undefined;
vcl_hrd_parameters_present_flag: boolean | undefined;
sub_pic_hrd_params_present_flag: boolean | undefined;
tick_divisor_minus2: number | undefined;
du_cpb_removal_delay_increment_length_minus1: number | undefined;
sub_pic_cpb_params_in_pic_timing_sei_flag: boolean | undefined;
dpb_output_delay_du_length_minus1: number | undefined;
bit_rate_scale: number | undefined;
cpb_size_scale: number | undefined;
cpb_size_du_scale: number | undefined;
initial_cpb_removal_delay_length_minus1: number | undefined;
au_cpb_removal_delay_length_minus1: number | undefined;
dpb_output_delay_length_minus1: number | undefined;
fixed_pic_rate_general_flag: boolean[];
fixed_pic_rate_within_cvs_flag: boolean[];
elemental_duration_in_tc_minus1: number[];
low_delay_hrd_flag: boolean[];
cpb_cnt_minus1: number[];
nalHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
vclHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
}[] | undefined;
vps_extension_flag: boolean;
};
export type SubLayerHrdParameters = ReturnType<typeof h265ParseSubLayerHrdParameters>;
/**
* 7.3.2.2.1 General sequence parameter set RBSP syntax
*/
export declare function h265ParseSequenceParameterSet(nalu: Uint8Array): {
sps_video_parameter_set_id: number;
sps_max_sub_layers_minus1: number;
sps_temporal_id_nesting_flag: boolean;
profileTierLevel: H265ProfileTierLevel & {
generalProfileTier: {
profile_space: number;
tier_flag: boolean;
profile_idc: number;
profileCompatibilitySet: Uint8Array;
profile_compatibility_flag: boolean[];
constraintSet: Uint8Array;
progressive_source_flag: boolean;
interlaced_source_flag: boolean;
non_packed_constraint_flag: boolean;
frame_only_constraint_flag: boolean;
max_12bit_constraint_flag: boolean | undefined;
max_10bit_constraint_flag: boolean | undefined;
max_8bit_constraint_flag: boolean | undefined;
max_422chroma_constraint_flag: boolean | undefined;
max_420chroma_constraint_flag: boolean | undefined;
max_monochrome_constraint_flag: boolean | undefined;
intra_constraint_flag: boolean | undefined;
one_picture_only_constraint_flag: boolean | undefined;
lower_bit_rate_constraint_flag: boolean | undefined;
max_14bit_constraint_flag: boolean | undefined;
inbld_flag: boolean | undefined;
};
};
sps_seq_parameter_set_id: number;
chroma_format_idc: number;
separate_colour_plane_flag: boolean | undefined;
pic_width_in_luma_samples: number;
pic_height_in_luma_samples: number;
conformance_window_flag: boolean;
conf_win_left_offset: number | undefined;
conf_win_right_offset: number | undefined;
conf_win_top_offset: number | undefined;
conf_win_bottom_offset: number | undefined;
bit_depth_luma_minus8: number;
bit_depth_chroma_minus8: number;
log2_max_pic_order_cnt_lsb_minus4: number;
sps_sub_layer_ordering_info_present_flag: boolean;
sps_max_dec_pic_buffering_minus1: number[];
sps_max_num_reorder_pics: number[];
sps_max_latency_increase_plus1: number[];
log2_min_luma_coding_block_size_minus3: number;
log2_diff_max_min_luma_coding_block_size: number;
log2_min_luma_transform_block_size_minus2: number;
log2_diff_max_min_luma_transform_block_size: number;
max_transform_hierarchy_depth_inter: number;
max_transform_hierarchy_depth_intra: number;
scaling_list_enabled_flag: boolean;
sps_scaling_list_data_present_flag: boolean | undefined;
scalingListData: number[][][] | undefined;
amp_enabled_flag: boolean;
sample_adaptive_offset_enabled_flag: boolean;
pcm_enabled_flag: boolean;
pcm_sample_bit_depth_luma_minus1: number | undefined;
pcm_sample_bit_depth_chroma_minus1: number | undefined;
log2_min_pcm_luma_coding_block_size_minus3: number | undefined;
log2_diff_max_min_pcm_luma_coding_block_size: number | undefined;
pcm_loop_filter_disabled_flag: boolean | undefined;
num_short_term_ref_pic_sets: number;
shortTermRefPicSets: ShortTermReferencePictureSet[];
long_term_ref_pics_present_flag: boolean;
num_long_term_ref_pics_sps: number | undefined;
lt_ref_pic_poc_lsb_sps: number[] | undefined;
used_by_curr_pic_lt_sps_flag: boolean[] | undefined;
sps_temporal_mvp_enabled_flag: boolean;
strong_intra_smoothing_enabled_flag: boolean;
vui_parameters_present_flag: boolean;
vuiParameters: {
aspect_ratio_info_present_flag: boolean;
aspect_ratio_idc: number | undefined;
sar_width: number | undefined;
sar_height: number | undefined;
overscan_info_present_flag: boolean;
overscan_appropriate_flag: boolean | undefined;
video_signal_type_present_flag: boolean;
video_format: number | undefined;
video_full_range_flag: boolean | undefined;
colour_description_present_flag: boolean | undefined;
colour_primaries: number | undefined;
transfer_characteristics: number | undefined;
matrix_coeffs: number | undefined;
chroma_loc_info_present_flag: boolean;
chroma_sample_loc_type_top_field: number | undefined;
chroma_sample_loc_type_bottom_field: number | undefined;
neutral_chroma_indication_flag: boolean;
field_seq_flag: boolean;
frame_field_info_present_flag: boolean;
default_display_window_flag: boolean;
def_disp_win_left_offset: number | undefined;
def_disp_win_right_offset: number | undefined;
def_disp_win_top_offset: number | undefined;
def_disp_win_bottom_offset: number | undefined;
vui_timing_info_present_flag: boolean;
vui_num_units_in_tick: number | undefined;
vui_time_scale: number | undefined;
vui_poc_proportional_to_timing_flag: boolean | undefined;
vui_num_ticks_poc_diff_one_minus1: number | undefined;
vui_hrd_parameters_present_flag: boolean | undefined;
vui_hrd_parameters: {
nal_hrd_parameters_present_flag: boolean | undefined;
vcl_hrd_parameters_present_flag: boolean | undefined;
sub_pic_hrd_params_present_flag: boolean | undefined;
tick_divisor_minus2: number | undefined;
du_cpb_removal_delay_increment_length_minus1: number | undefined;
sub_pic_cpb_params_in_pic_timing_sei_flag: boolean | undefined;
dpb_output_delay_du_length_minus1: number | undefined;
bit_rate_scale: number | undefined;
cpb_size_scale: number | undefined;
cpb_size_du_scale: number | undefined;
initial_cpb_removal_delay_length_minus1: number | undefined;
au_cpb_removal_delay_length_minus1: number | undefined;
dpb_output_delay_length_minus1: number | undefined;
fixed_pic_rate_general_flag: boolean[];
fixed_pic_rate_within_cvs_flag: boolean[];
elemental_duration_in_tc_minus1: number[];
low_delay_hrd_flag: boolean[];
cpb_cnt_minus1: number[];
nalHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
vclHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
} | undefined;
bitstream_restriction_flag: boolean;
tiles_fixed_structure_flag: boolean | undefined;
motion_vectors_over_pic_boundaries_flag: boolean | undefined;
restricted_ref_pic_lists_flag: boolean | undefined;
min_spatial_segmentation_idc: number | undefined;
max_bytes_per_pic_denom: number | undefined;
max_bits_per_min_cu_denom: number | undefined;
log2_max_mv_length_horizontal: number | undefined;
log2_max_mv_length_vertical: number | undefined;
} | undefined;
sps_extension_present_flag: boolean;
sps_range_extension_flag: false | undefined;
sps_multilayer_extension_flag: boolean | undefined;
sps_3d_extension_flag: boolean | undefined;
sps_scc_extension_flag: false | undefined;
sps_extension_4bits: number | undefined;
spsMultilayerExtension: {
inter_view_mv_vert_constraint_flag: boolean;
} | undefined;
sps3dExtension: {
iv_di_mc_enabled_flag: boolean[];
iv_mv_scal_enabled_flag: boolean[];
log2_ivmc_sub_pb_size_minus3: number;
iv_res_pred_enabled_flag: boolean;
depth_ref_enabled_flag: boolean;
vsp_mc_enabled_flag: boolean;
dbbp_enabled_flag: boolean;
tex_mc_enabled_flag: boolean;
log2_texmc_sub_pb_size_minus3: number;
intra_contour_enabled_flag: boolean;
intra_dc_only_wedge_enabled_flag: boolean;
cqt_cu_part_pred_enabled_flag: boolean;
inter_dc_only_enabled_flag: boolean;
skip_intra_enabled_flag: boolean;
} | undefined;
sps_extension_data_flag: boolean[] | undefined;
};
/**
* 7.3.3 Profile, tier and level syntax
*
* Common part between general_profile_tier_level and
* sub_layer_profile_tier_level
*/
declare function h265ParseProfileTier(reader: NaluSodbBitReader): {
profile_space: number;
tier_flag: boolean;
profile_idc: number;
profileCompatibilitySet: Uint8Array;
profile_compatibility_flag: boolean[];
constraintSet: Uint8Array;
progressive_source_flag: boolean;
interlaced_source_flag: boolean;
non_packed_constraint_flag: boolean;
frame_only_constraint_flag: boolean;
max_12bit_constraint_flag: boolean | undefined;
max_10bit_constraint_flag: boolean | undefined;
max_8bit_constraint_flag: boolean | undefined;
max_422chroma_constraint_flag: boolean | undefined;
max_420chroma_constraint_flag: boolean | undefined;
max_monochrome_constraint_flag: boolean | undefined;
intra_constraint_flag: boolean | undefined;
one_picture_only_constraint_flag: boolean | undefined;
lower_bit_rate_constraint_flag: boolean | undefined;
max_14bit_constraint_flag: boolean | undefined;
inbld_flag: boolean | undefined;
};
export type H265ProfileTier = ReturnType<typeof h265ParseProfileTier>;
export interface H265ProfileTierLevel {
generalProfileTier: H265ProfileTier | undefined;
general_level_idc: number;
sub_layer_profile_present_flag: boolean[];
sub_layer_level_present_flag: boolean[];
subLayerProfileTier: H265ProfileTier[];
sub_layer_level_idc: number[];
}
/**
* 7.3.4 Scaling list data syntax
*/
export declare function h265ParseScalingListData(reader: NaluSodbBitReader): number[][][];
interface ShortTermReferencePictureSet {
stRpsIdx: number;
num_short_term_ref_pic_sets: number;
inter_ref_pic_set_prediction_flag: boolean;
delta_idx_minus1: number;
delta_rps_sign: boolean;
abs_delta_rps_minus1: number;
used_by_curr_pic_flag: boolean[];
use_delta_flag: boolean[];
num_negative_pics: number;
num_positive_pics: number;
delta_poc_s0_minus1: number[];
used_by_curr_pic_s0_flag: boolean[];
delta_poc_s1_minus1: number[];
used_by_curr_pic_s1_flag: boolean[];
}
/**
* 7.3.7 Short-term reference picture set syntax
*/
export declare function h265ParseShortTermReferencePictureSet(reader: NaluSodbBitReader, stRpsIdx: number, num_short_term_ref_pic_sets: number, sets: ShortTermReferencePictureSet[]): ShortTermReferencePictureSet;
/**
* E.2.1 VUI parameters syntax
*/
export declare function h265ParseVuiParameters(reader: NaluSodbBitReader, sps_max_sub_layers_minus1: number): {
aspect_ratio_info_present_flag: boolean;
aspect_ratio_idc: number | undefined;
sar_width: number | undefined;
sar_height: number | undefined;
overscan_info_present_flag: boolean;
overscan_appropriate_flag: boolean | undefined;
video_signal_type_present_flag: boolean;
video_format: number | undefined;
video_full_range_flag: boolean | undefined;
colour_description_present_flag: boolean | undefined;
colour_primaries: number | undefined;
transfer_characteristics: number | undefined;
matrix_coeffs: number | undefined;
chroma_loc_info_present_flag: boolean;
chroma_sample_loc_type_top_field: number | undefined;
chroma_sample_loc_type_bottom_field: number | undefined;
neutral_chroma_indication_flag: boolean;
field_seq_flag: boolean;
frame_field_info_present_flag: boolean;
default_display_window_flag: boolean;
def_disp_win_left_offset: number | undefined;
def_disp_win_right_offset: number | undefined;
def_disp_win_top_offset: number | undefined;
def_disp_win_bottom_offset: number | undefined;
vui_timing_info_present_flag: boolean;
vui_num_units_in_tick: number | undefined;
vui_time_scale: number | undefined;
vui_poc_proportional_to_timing_flag: boolean | undefined;
vui_num_ticks_poc_diff_one_minus1: number | undefined;
vui_hrd_parameters_present_flag: boolean | undefined;
vui_hrd_parameters: {
nal_hrd_parameters_present_flag: boolean | undefined;
vcl_hrd_parameters_present_flag: boolean | undefined;
sub_pic_hrd_params_present_flag: boolean | undefined;
tick_divisor_minus2: number | undefined;
du_cpb_removal_delay_increment_length_minus1: number | undefined;
sub_pic_cpb_params_in_pic_timing_sei_flag: boolean | undefined;
dpb_output_delay_du_length_minus1: number | undefined;
bit_rate_scale: number | undefined;
cpb_size_scale: number | undefined;
cpb_size_du_scale: number | undefined;
initial_cpb_removal_delay_length_minus1: number | undefined;
au_cpb_removal_delay_length_minus1: number | undefined;
dpb_output_delay_length_minus1: number | undefined;
fixed_pic_rate_general_flag: boolean[];
fixed_pic_rate_within_cvs_flag: boolean[];
elemental_duration_in_tc_minus1: number[];
low_delay_hrd_flag: boolean[];
cpb_cnt_minus1: number[];
nalHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
vclHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
} | undefined;
bitstream_restriction_flag: boolean;
tiles_fixed_structure_flag: boolean | undefined;
motion_vectors_over_pic_boundaries_flag: boolean | undefined;
restricted_ref_pic_lists_flag: boolean | undefined;
min_spatial_segmentation_idc: number | undefined;
max_bytes_per_pic_denom: number | undefined;
max_bits_per_min_cu_denom: number | undefined;
log2_max_mv_length_horizontal: number | undefined;
log2_max_mv_length_vertical: number | undefined;
};
export type H265VuiParameters = ReturnType<typeof h265ParseVuiParameters>;
/**
* E.2.2 HRD parameters syntax
*/
export declare function h265ParseHrdParameters(reader: NaluSodbBitReader, commonInfPresentFlag: boolean, maxNumSubLayersMinus1: number): {
nal_hrd_parameters_present_flag: boolean | undefined;
vcl_hrd_parameters_present_flag: boolean | undefined;
sub_pic_hrd_params_present_flag: boolean | undefined;
tick_divisor_minus2: number | undefined;
du_cpb_removal_delay_increment_length_minus1: number | undefined;
sub_pic_cpb_params_in_pic_timing_sei_flag: boolean | undefined;
dpb_output_delay_du_length_minus1: number | undefined;
bit_rate_scale: number | undefined;
cpb_size_scale: number | undefined;
cpb_size_du_scale: number | undefined;
initial_cpb_removal_delay_length_minus1: number | undefined;
au_cpb_removal_delay_length_minus1: number | undefined;
dpb_output_delay_length_minus1: number | undefined;
fixed_pic_rate_general_flag: boolean[];
fixed_pic_rate_within_cvs_flag: boolean[];
elemental_duration_in_tc_minus1: number[];
low_delay_hrd_flag: boolean[];
cpb_cnt_minus1: number[];
nalHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
vclHrdParameters: {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
}[];
};
export type H265HrdParameters = ReturnType<typeof h265ParseHrdParameters>;
/**
* E.2.3 Sub-layer HRD parameters syntax
*/
export declare function h265ParseSubLayerHrdParameters(reader: NaluSodbBitReader, subLayerId: number, CpbCnt: number): {
bit_rate_value_minus1: number[];
cpb_size_value_minus1: number[];
cpb_size_du_value_minus1: number[];
bit_rate_du_value_minus1: number[];
cbr_flag: boolean[];
};
export declare function h265SearchConfiguration(buffer: Uint8Array): {
videoParameterSet: H265NaluRaw;
sequenceParameterSet: H265NaluRaw;
pictureParameterSet: H265NaluRaw;
};
export declare function h265ParseSpsMultilayerExtension(reader: NaluSodbBitReader): {
inter_view_mv_vert_constraint_flag: boolean;
};
export type H265SpsMultilayerExtension = ReturnType<typeof h265ParseSpsMultilayerExtension>;
export declare function h265ParseSps3dExtension(reader: NaluSodbBitReader): {
iv_di_mc_enabled_flag: boolean[];
iv_mv_scal_enabled_flag: boolean[];
log2_ivmc_sub_pb_size_minus3: number;
iv_res_pred_enabled_flag: boolean;
depth_ref_enabled_flag: boolean;
vsp_mc_enabled_flag: boolean;
dbbp_enabled_flag: boolean;
tex_mc_enabled_flag: boolean;
log2_texmc_sub_pb_size_minus3: number;
intra_contour_enabled_flag: boolean;
intra_dc_only_wedge_enabled_flag: boolean;
cqt_cu_part_pred_enabled_flag: boolean;
inter_dc_only_enabled_flag: boolean;
skip_intra_enabled_flag: boolean;
};
export type H265Sps3dExtension = ReturnType<typeof h265ParseSps3dExtension>;
export interface H265Configuration {
videoParameterSet: H265NaluRaw;
sequenceParameterSet: H265NaluRaw;
pictureParameterSet: H265NaluRaw;
generalProfileSpace: number;
generalProfileIndex: number;
generalProfileCompatibilitySet: Uint8Array;
generalTierFlag: boolean;
generalLevelIndex: number;
generalConstraintSet: Uint8Array;
encodedWidth: number;
encodedHeight: number;
cropLeft: number;
cropRight: number;
cropTop: number;
cropBottom: number;
croppedWidth: number;
croppedHeight: number;
}
export declare function h265ParseConfiguration(data: Uint8Array): H265Configuration;
export {};
//# sourceMappingURL=h265.d.ts.map