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 definition for the generic reader and packetizer
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/id_info.h"
19 
20 constexpr auto ID_RESULT_TRACK_AUDIO     = "audio";
21 constexpr auto ID_RESULT_TRACK_VIDEO     = "video";
22 constexpr auto ID_RESULT_TRACK_SUBTITLES = "subtitles";
23 constexpr auto ID_RESULT_TRACK_BUTTONS   = "buttons";
24 constexpr auto ID_RESULT_TRACK_UNKNOWN   = "unknown";
25 constexpr auto ID_RESULT_CHAPTERS        = "chapters";
26 constexpr auto ID_RESULT_TAGS            = "tags";
27 constexpr auto ID_RESULT_GLOBAL_TAGS_ID  = -1;
28 
29 // When bumping the schema version:
30 // • increase `ID_JSON_FORMAT_VERSION` here
31 // • copy `doc/json-schema/mkvmerge-identification-output-schema-v….json` with the next version number
32 // • in the new copy adjust the following elements:
33 //   1. `id`
34 //   2. `properties` → `identification_format_version` → `minimum` and `maximum`
35 // • adjust the link in `doc/man/mkvmerge.xml`
36 constexpr auto ID_JSON_FORMAT_VERSION = 14;
37 
38 struct id_result_t {
39   int64_t id;
40   std::string type, info, description;
41   mtx::id::verbose_info_t verbose_info;
42   int64_t size;
43 
id_result_tid_result_t44   id_result_t() {
45   };
46 
id_result_tid_result_t47   id_result_t(int64_t p_id,
48               const std::string &p_type,
49               const std::string &p_info,
50               const std::string &p_description,
51               int64_t p_size)
52     : id{p_id}
53     , type{p_type}
54     , info{p_info}
55     , description{p_description}
56     , size{p_size}
57   {
58   }
59 
id_result_tid_result_t60   id_result_t(const id_result_t &src)
61     : id{src.id}
62     , type{src.type}
63     , info{src.info}
64     , description{src.description}
65     , verbose_info{src.verbose_info}
66     , size{src.size}
67   {
68   }
69 };
70 
71 void id_result_container_unsupported(std::string const &filename, translatable_string_c const &info);
72