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
11
Written by Moritz Bunkus <moritz@bunkus.org>.
14
#include "common/common_pch.h"
16
#include <matroska/KaxContentEncoding.h>
18
#include "common/codec.h"
19
#include "common/compression.h"
20
#include "common/pgssup.h"
21
#include "output/p_pgs.h"
23
using namespace libmatroska;
25
pgs_packetizer_c::pgs_packetizer_c(generic_reader_c *p_reader,
27
: generic_packetizer_c(p_reader, p_ti)
28
, m_aggregate_packets(false)
30
set_track_type(track_subtitle);
31
set_default_compression_method(COMPRESSION_ZLIB);
34
pgs_packetizer_c::~pgs_packetizer_c() {
38
pgs_packetizer_c::set_headers() {
39
set_codec_id(MKV_S_HDMV_PGS);
41
generic_packetizer_c::set_headers();
43
m_track_entry->EnableLacing(false);
47
pgs_packetizer_c::process(packet_cptr packet) {
48
if (!m_aggregate_packets) {
50
return FILE_STATUS_MOREDATA;
54
m_aggregated = packet;
55
m_aggregated->data->grab();
58
m_aggregated->data->add(packet->data);
60
if ( (0 != packet->data->get_size())
61
&& (PGSSUP_DISPLAY_SEGMENT == packet->data->get_buffer()[0])) {
62
add_packet(m_aggregated);
66
return FILE_STATUS_MOREDATA;
70
pgs_packetizer_c::can_connect_to(generic_packetizer_c *src,
72
return !dynamic_cast<pgs_packetizer_c *>(src) ? CAN_CONNECT_NO_FORMAT : CAN_CONNECT_YES;