1 /* 2 mkvmerge -- utility for splicing together matroska files 3 from component media subtypes 4 5 Distributed under the GPL v2 6 see the file COPYING for details 7 or visit https://www.gnu.org/licenses/old-licenses/gpl-2.0.html 8 9 class definitions for the IVF demultiplexer module 10 11 Written by Moritz Bunkus <moritz@bunkus.org>. 12 */ 13 14 #pragma once 15 16 #include "common/common_pch.h" 17 18 #include "common/codec.h" 19 #include "common/ivf.h" 20 #include "common/mm_io.h" 21 #include "merge/generic_reader.h" 22 23 class ivf_reader_c: public generic_reader_c { 24 private: 25 ivf::file_header_t m_header; 26 uint16_t m_width{}, m_height{}; 27 uint64_t m_frame_rate_num{}, m_frame_rate_den{}; 28 codec_c m_codec; 29 bool m_ok{}; 30 debugging_option_c m_debug{"ivf_reader"}; 31 32 public: get_format_type()33 virtual mtx::file_type_e get_format_type() const { 34 return mtx::file_type_e::ivf; 35 } 36 37 virtual void add_available_track_ids() override; 38 virtual void read_headers() override; 39 virtual void identify() override; 40 virtual void create_packetizer(int64_t id) override; 41 42 virtual bool probe_file() override; 43 44 protected: 45 virtual file_status_e read(generic_packetizer_c *packetizer, bool force = false) override; 46 47 void create_av1_packetizer(); 48 void create_vpx_packetizer(); 49 }; 50