2
mkvmerge -- utility for splicing together matroska files
3
from component media subtypes
5
Distributed under the GPL
6
see the file COPYING for details
7
or visit http://www.gnu.org/copyleft/gpl.html
9
$Id: p_vobsub.cpp 3024 2005-08-17 11:46:09Z mosu $
13
Written by Moritz Bunkus <moritz@bunkus.org>.
22
#include <matroska/KaxContentEncoding.h>
25
#include "compression.h"
29
#include "subtitles.h"
31
using namespace libmatroska;
33
vobsub_packetizer_c::vobsub_packetizer_c(generic_reader_c *_reader,
34
const void *_idx_data,
36
track_info_c &_ti) throw (error_c):
37
generic_packetizer_c(_reader, _ti),
38
idx_data(safememdup(_idx_data, _idx_data_size)),
39
idx_data_size(_idx_data_size) {
41
set_track_type(track_subtitle);
42
set_default_compression_method(COMPRESSION_ZLIB);
45
vobsub_packetizer_c::~vobsub_packetizer_c() {
49
vobsub_packetizer_c::set_headers() {
50
set_codec_id(MKV_S_VOBSUB);
51
set_codec_private(idx_data, idx_data_size);
53
generic_packetizer_c::set_headers();
55
track_entry->EnableLacing(false);
59
vobsub_packetizer_c::process(packet_cptr packet) {
60
packet->timecode += initial_displacement;
61
if (packet->timecode < 0)
62
return FILE_STATUS_MOREDATA;
64
packet->timecode = (int64_t)((float)packet->timecode * ti.async.linear);
65
packet->duration_mandatory = true;
68
return FILE_STATUS_MOREDATA;
72
vobsub_packetizer_c::dump_debug_info() {
73
mxdebug("vobsub_packetizer_c: queue: %u\n",
74
(unsigned int)packet_queue.size());
78
vobsub_packetizer_c::can_connect_to(generic_packetizer_c *src,
79
string &error_message) {
80
vobsub_packetizer_c *vsrc;
82
vsrc = dynamic_cast<vobsub_packetizer_c *>(src);
84
return CAN_CONNECT_NO_FORMAT;
85
return CAN_CONNECT_YES;