mkvtoolnix/src/input/r_srt.h
Moritz Bunkus 60bcc34579
SRT reader: reencode when reading the lines, not in the packetizer
Two advantages:

1. This way invalid UTF-8 characters will be replaced by the Unicode
   Replacement Character U+FFFD instead of keeping invalid UTF-8
   encodings in text.

2. Preparation for the conversion from (J)PCRE2 to QRegularExpression
   which requires converting between UTF-8-encoded `std::string` and
   QString.
2021-06-26 19:44:09 +02:00

46 lines
1.1 KiB
C++

/*
mkvmerge -- utility for splicing together matroska files
from component media subtypes
Distributed under the GPL v2
see the file COPYING for details
or visit https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
class definition for the Subripper subtitle reader
Written by Moritz Bunkus <moritz@bunkus.org>.
*/
#pragma once
#include "common/common_pch.h"
#include "merge/generic_reader.h"
#include "input/subtitles.h"
class srt_reader_c: public generic_reader_c {
private:
srt_parser_cptr m_subs;
int64_t m_bytes_to_process{}, m_bytes_processed{};
std::optional<std::string> m_encoding;
public:
virtual mtx::file_type_e get_format_type() const {
return mtx::file_type_e::srt;
}
virtual void read_headers();
virtual void identify();
virtual void create_packetizer(int64_t tid);
virtual int64_t get_progress() override;
virtual int64_t get_maximum_progress() override;
virtual bool is_simple_subtitle_container() {
return true;
}
virtual bool probe_file() override;
protected:
virtual file_status_e read(generic_packetizer_c *packetizer, bool force = false) override;
};