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

« back to all changes in this revision

Viewing changes to src/output/p_vobsub.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Clément Stenac
  • Date: 2005-09-07 19:54:42 UTC
  • Revision ID: james.westby@ubuntu.com-20050907195442-funmigmy8ua340hq
Tags: upstream-1.5.6
Import upstream version 1.5.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
   mkvmerge -- utility for splicing together matroska files
 
3
   from component media subtypes
 
4
 
 
5
   Distributed under the GPL
 
6
   see the file COPYING for details
 
7
   or visit http://www.gnu.org/copyleft/gpl.html
 
8
 
 
9
   $Id: p_vobsub.cpp 3024 2005-08-17 11:46:09Z mosu $
 
10
 
 
11
   VobSub packetizer
 
12
 
 
13
   Written by Moritz Bunkus <moritz@bunkus.org>.
 
14
*/
 
15
 
 
16
#include <ctype.h>
 
17
#include <stdlib.h>
 
18
#include <stdio.h>
 
19
#include <string.h>
 
20
#include <errno.h>
 
21
 
 
22
#include <matroska/KaxContentEncoding.h>
 
23
 
 
24
#include "common.h"
 
25
#include "compression.h"
 
26
#include "matroska.h"
 
27
#include "mm_io.h"
 
28
#include "p_vobsub.h"
 
29
#include "subtitles.h"
 
30
 
 
31
using namespace libmatroska;
 
32
 
 
33
vobsub_packetizer_c::vobsub_packetizer_c(generic_reader_c *_reader,
 
34
                                         const void *_idx_data,
 
35
                                         int _idx_data_size,
 
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) {
 
40
 
 
41
  set_track_type(track_subtitle);
 
42
  set_default_compression_method(COMPRESSION_ZLIB);
 
43
}
 
44
 
 
45
vobsub_packetizer_c::~vobsub_packetizer_c() {
 
46
}
 
47
 
 
48
void
 
49
vobsub_packetizer_c::set_headers() {
 
50
  set_codec_id(MKV_S_VOBSUB);
 
51
  set_codec_private(idx_data, idx_data_size);
 
52
 
 
53
  generic_packetizer_c::set_headers();
 
54
 
 
55
  track_entry->EnableLacing(false);
 
56
}
 
57
 
 
58
int
 
59
vobsub_packetizer_c::process(packet_cptr packet) {
 
60
  packet->timecode += initial_displacement;
 
61
  if (packet->timecode < 0)
 
62
    return FILE_STATUS_MOREDATA;
 
63
 
 
64
  packet->timecode = (int64_t)((float)packet->timecode * ti.async.linear);
 
65
  packet->duration_mandatory = true;
 
66
  add_packet(packet);
 
67
 
 
68
  return FILE_STATUS_MOREDATA;
 
69
}
 
70
 
 
71
void
 
72
vobsub_packetizer_c::dump_debug_info() {
 
73
  mxdebug("vobsub_packetizer_c: queue: %u\n",
 
74
          (unsigned int)packet_queue.size());
 
75
}
 
76
 
 
77
connection_result_e
 
78
vobsub_packetizer_c::can_connect_to(generic_packetizer_c *src,
 
79
                                    string &error_message) {
 
80
  vobsub_packetizer_c *vsrc;
 
81
 
 
82
  vsrc = dynamic_cast<vobsub_packetizer_c *>(src);
 
83
  if (vsrc == NULL)
 
84
    return CAN_CONNECT_NO_FORMAT;
 
85
  return CAN_CONNECT_YES;
 
86
}