You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.2 KiB

/*
* H.265 video codec.
* Copyright (c) 2013-2014 struktur AG, Dirk Farin <farin@struktur.de>
*
* This file is part of libde265.
*
* libde265 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libde265 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with libde265. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DE265_VUI_H
#define DE265_VUI_H
#include "libde265/de265.h"
#include "libde265/bitstream.h"
#include <vector>
class error_queue;
class seq_parameter_set;
enum VideoFormat {
VideoFormat_Component = 0,
VideoFormat_PAL = 1,
VideoFormat_NTSC = 2,
VideoFormat_SECAM = 3,
VideoFormat_MAC = 4,
VideoFormat_Unspecified = 5
};
const char* get_video_format_name(enum VideoFormat);
class video_usability_information
{
public:
video_usability_information();
de265_error read(error_queue*, bitreader*, const seq_parameter_set*);
void dump(int fd) const;
// --- sample aspect ratio (SAR) ---
bool aspect_ratio_info_present_flag;
uint16_t sar_width; // sar_width and sar_height are zero if unspecified
uint16_t sar_height;
// --- overscan ---
bool overscan_info_present_flag;
bool overscan_appropriate_flag;
// --- video signal type ---
bool video_signal_type_present_flag;
enum VideoFormat video_format;
bool video_full_range_flag;
bool colour_description_present_flag;
uint8_t colour_primaries;
uint8_t transfer_characteristics;
uint8_t matrix_coeffs;
// --- chroma / interlaced ---
bool chroma_loc_info_present_flag;
uint8_t chroma_sample_loc_type_top_field;
uint8_t chroma_sample_loc_type_bottom_field;
bool neutral_chroma_indication_flag;
bool field_seq_flag;
bool frame_field_info_present_flag;
// --- default display window ---
bool default_display_window_flag;
uint32_t def_disp_win_left_offset;
uint32_t def_disp_win_right_offset;
uint32_t def_disp_win_top_offset;
uint32_t def_disp_win_bottom_offset;
// --- timing ---
bool vui_timing_info_present_flag;
uint32_t vui_num_units_in_tick;
uint32_t vui_time_scale;
bool vui_poc_proportional_to_timing_flag;
uint32_t vui_num_ticks_poc_diff_one;
// --- hrd parameters ---
bool vui_hrd_parameters_present_flag;
//hrd_parameters vui_hrd_parameters;
// --- bitstream restriction ---
bool bitstream_restriction_flag;
bool tiles_fixed_structure_flag;
bool motion_vectors_over_pic_boundaries_flag;
bool restricted_ref_pic_lists_flag;
uint16_t min_spatial_segmentation_idc;
uint8_t max_bytes_per_pic_denom;
uint8_t max_bits_per_min_cu_denom;
uint8_t log2_max_mv_length_horizontal;
uint8_t log2_max_mv_length_vertical;
};
#endif