~ubuntu-branches/ubuntu/wily/mkvtoolnix/wily

« back to all changes in this revision

Viewing changes to src/merge/output_control.h

  • Committer: Package Import Robot
  • Author(s): Christian Marillat
  • Date: 2015-04-26 10:36:27 UTC
  • mfrom: (1.1.29) (4.2.45 sid)
  • Revision ID: package-import@ubuntu.com-20150426103627-k53p8hrai2ynikaa
Tags: 7.8.0-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
   mkvmerge -- utility for splicing together matroska files
3
3
   from component media subtypes
4
4
 
5
 
   Distributed under the GPL
 
5
   Distributed under the GPL v2
6
6
   see the file COPYING for details
7
7
   or visit http://www.gnu.org/copyleft/gpl.html
8
8
 
21
21
#include <unordered_map>
22
22
 
23
23
#include "common/bitvalue.h"
24
 
#include "common/file_types.h"
 
24
#include "common/chapters/chapters.h"
25
25
#include "common/mm_mpls_multi_file_io.h"
26
26
#include "common/segmentinfo.h"
27
 
#include "merge/pr_generic.h"
 
27
#include "merge/file_status.h"
 
28
#include "merge/packet.h"
28
29
 
29
30
namespace libmatroska {
30
31
  class KaxChapters;
43
44
 
44
45
class mm_io_c;
45
46
class generic_packetizer_c;
46
 
class generic_reader_c;
 
47
class track_info_c;
 
48
struct filelist_t;
47
49
 
48
50
struct append_spec_t {
49
51
  size_t src_file_id, src_track_id, dst_file_id, dst_track_id;
90
92
  }
91
93
};
92
94
 
93
 
struct deferred_connection_t {
94
 
  append_spec_t amap;
95
 
  packetizer_t *ptzr;
96
 
};
97
 
 
98
 
struct filelist_t {
99
 
  std::string name;
100
 
  std::vector<std::string> all_names;
101
 
  int64_t size;
102
 
  size_t id;
103
 
 
104
 
  file_type_e type;
105
 
 
106
 
  packet_cptr pack;
107
 
 
108
 
  generic_reader_c *reader;
109
 
 
110
 
  track_info_c *ti;
111
 
  bool appending, appended_to, done;
112
 
 
113
 
  int num_unfinished_packetizers, old_num_unfinished_packetizers;
114
 
  std::vector<deferred_connection_t> deferred_connections;
115
 
  int64_t deferred_max_timecode_seen;
116
 
 
117
 
  bool is_playlist;
118
 
  std::vector<generic_reader_c *> playlist_readers;
119
 
  size_t playlist_index, playlist_previous_filelist_id;
120
 
  mm_mpls_multi_file_io_cptr playlist_mpls_in;
121
 
 
122
 
  timecode_c restricted_timecode_min, restricted_timecode_max;
123
 
 
124
 
  filelist_t()
125
 
    : size{}
126
 
    , id{}
127
 
    , type{FILE_TYPE_IS_UNKNOWN}
128
 
    , reader{}
129
 
    , ti{}
130
 
    , appending{}
131
 
    , appended_to{}
132
 
    , done{}
133
 
    , num_unfinished_packetizers{}
134
 
    , old_num_unfinished_packetizers{}
135
 
    , deferred_max_timecode_seen{-1}
136
 
    , is_playlist{}
137
 
    , playlist_index{}
138
 
    , playlist_previous_filelist_id{}
139
 
  {
140
 
  }
141
 
};
142
 
 
143
95
struct attachment_t {
144
96
  std::string name, stored_name, mime_type, description;
145
97
  uint64_t id;
184
136
};
185
137
 
186
138
extern std::vector<packetizer_t> g_packetizers;
187
 
extern std::vector<filelist_t> g_files;
188
139
extern std::vector<attachment_t> g_attachments;
189
140
extern std::vector<track_order_t> g_track_order;
190
141
extern std::vector<append_spec_t> g_append_mapping;
195
146
extern double g_timecode_scale;
196
147
extern timecode_scale_mode_e g_timecode_scale_mode;
197
148
 
198
 
typedef std::shared_ptr<bitvalue_c> g_bitvalue_cptr;
 
149
using g_bitvalue_cptr = std::shared_ptr<bitvalue_c>;
199
150
 
200
151
extern bitvalue_cptr g_seguid_link_previous, g_seguid_link_next;
201
152
extern std::deque<bitvalue_cptr> g_forced_seguids;
211
162
 
212
163
extern std::string g_segmentinfo_file_name;
213
164
 
214
 
extern KaxTags *g_tags_from_cue_chapters;
 
165
extern std::unique_ptr<KaxTags> g_tags_from_cue_chapters;
215
166
 
216
 
extern KaxSegment *g_kax_segment;
217
 
extern KaxTracks *g_kax_tracks;
 
167
extern std::unique_ptr<KaxSegment> g_kax_segment;
 
168
extern std::unique_ptr<KaxTracks> g_kax_tracks;
218
169
extern KaxTrackEntry *g_kax_last_entry;
219
 
extern KaxSeekHead *g_kax_sh_main, *g_kax_sh_cues;
 
170
extern std::unique_ptr<KaxSeekHead> g_kax_sh_main, g_kax_sh_cues;
220
171
extern kax_chapters_cptr g_kax_chapters;
221
172
extern int64_t g_tags_size;
222
173
extern std::string g_segment_title;
233
184
extern bool g_identifying, g_identify_verbose, g_identify_for_mmg;
234
185
 
235
186
extern int g_file_num;
 
187
extern int64_t g_file_sizes;
236
188
 
237
189
extern int64_t g_max_ns_per_cluster;
238
190
extern int g_max_blocks_per_cluster;
246
198
 
247
199
extern bool g_stereo_mode_used;
248
200
 
249
 
void get_file_type(filelist_t &file);
250
 
 
251
 
void create_readers();
252
201
void create_packetizers();
253
202
void calc_attachment_sizes();
254
203
void calc_max_chapter_size();
263
212
 
264
213
void create_next_output_file();
265
214
void finish_file(bool last_file, bool create_new_file = false, bool previously_discarding = false);
 
215
void force_close_output_file();
266
216
void rerender_track_headers();
267
217
void rerender_ebml_head();
268
218
std::string create_output_name();
269
219
 
270
220
int64_t add_attachment(attachment_t attachment);
271
221
 
272
 
#if defined(SYS_UNIX) || defined(COMP_CYGWIN) || defined(SYS_APPLE)
 
222
#if defined(SYS_UNIX) || defined(SYS_APPLE)
273
223
void sighandler(int signum);
274
224
#endif
275
225