1 /** HEVC video helper functions 2 3 mkvmerge -- utility for splicing together matroska files 4 from component media subtypes 5 6 Distributed under the GPL v2 7 see the file COPYING for details 8 or visit https://www.gnu.org/licenses/old-licenses/gpl-2.0.html 9 10 \file 11 12 */ 13 14 #pragma once 15 16 #include "common/common_pch.h" 17 18 #include "common/dovi_meta.h" 19 #include "common/hevc/types.h" 20 21 namespace mtx::hevc { 22 23 struct par_extraction_t { 24 memory_cptr new_hevcc; 25 unsigned int numerator, denominator; 26 bool successful; 27 28 bool is_valid() const; 29 }; 30 31 bool parse_vps(memory_cptr const &buffer, vps_info_t &vps); 32 memory_cptr parse_sps(memory_cptr const &buffer, sps_info_t &sps, std::vector<vps_info_t> &vps_info_list, bool keep_ar_info = false); 33 bool parse_pps(memory_cptr const &buffer, pps_info_t &pps); 34 bool parse_sei(memory_cptr const &buffer, user_data_t &user_data); 35 bool handle_sei_payload(mm_mem_io_c &byte_reader, unsigned int sei_payload_type, unsigned int sei_payload_size, user_data_t &user_data); 36 37 bool parse_dovi_rpu(memory_cptr const &buffer, mtx::dovi::dovi_rpu_data_header_t &dovi_rpu_data_header); 38 39 par_extraction_t extract_par(memory_cptr const &buffer); 40 bool is_fourcc(const char *fourcc); 41 memory_cptr hevcc_to_nalus(const unsigned char *buffer, size_t size); 42 43 } // namespace mtx::hevc 44