mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-10-22 07:21:21 +00:00
refactoring: improve function name & docs for parsing teletext PMT descriptor
This commit is contained in:
parent
68064b2f52
commit
b8b6974549
@ -737,29 +737,22 @@ track_c::parse_dts_pmt_descriptor(pmt_descriptor_t const &,
|
||||
}
|
||||
|
||||
bool
|
||||
track_c::parse_srt_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor,
|
||||
pmt_pid_info_t const &pmt_pid_info) {
|
||||
track_c::parse_teletext_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor,
|
||||
pmt_pid_info_t const &pmt_pid_info) {
|
||||
if (pmt_pid_info.stream_type != stream_type_e::iso_13818_pes_private)
|
||||
return false;
|
||||
|
||||
auto buffer = reinterpret_cast<unsigned char const *>(&pmt_descriptor + 1);
|
||||
auto num_entries = static_cast<unsigned int>(pmt_descriptor.length) / 5;
|
||||
mxdebug_if(reader.m_debug_pat_pmt, fmt::format("parse_srt_pmt_descriptor: Teletext PMT descriptor, {0} entries\n", num_entries));
|
||||
mxdebug_if(reader.m_debug_pat_pmt, fmt::format("parse_teletext_pmt_descriptor: Teletext PMT descriptor, {0} entries\n", num_entries));
|
||||
for (auto idx = 0u; idx < num_entries; ++idx) {
|
||||
// Bits:
|
||||
// 0–23: ISO 639 language code
|
||||
// 24–28: teletext type
|
||||
// 29-31: teletext magazine number
|
||||
// 32-35: teletext page number (units)
|
||||
// 36-39: teletext page number (tens)
|
||||
// EN 300 468, 6.2.43 "Teletext descriptor":
|
||||
|
||||
// Teletext type is:
|
||||
// 0: ?
|
||||
// 1: teletext
|
||||
// 2: teletext subtitles
|
||||
// 3: teletext additional information
|
||||
// 4: teletext program schedule
|
||||
// 5: teletext subtitles: hearing impaired
|
||||
// Bits:
|
||||
// 24: ISO 639 language code
|
||||
// 5: teletext type
|
||||
// 3: teletext magazine number
|
||||
// 8: teletext page number (4 bits: unit, 4 bits: tens)
|
||||
|
||||
mtx::bits::reader_c r{buffer, 5};
|
||||
|
||||
@ -774,6 +767,13 @@ track_c::parse_srt_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor,
|
||||
idx, std::string(reinterpret_cast<char const *>(buffer), 3), ttx_type, ttx_magazine, ttx_page));
|
||||
}
|
||||
|
||||
// Table 94: teletext_type
|
||||
// 0x00: reserved for future use
|
||||
// 0x01: initial Teletext page
|
||||
// 0x02: Teletext subtitles page
|
||||
// 0x03: additional information page
|
||||
// 0x04: program schedule page
|
||||
// 0x05: Teletext subtitle page for hearing impaired people
|
||||
if (!mtx::included_in(ttx_type, 2u, 5u)) {
|
||||
buffer += 5;
|
||||
continue;
|
||||
@ -1775,7 +1775,7 @@ reader_c::parse_pmt_pid_info(mm_mem_io_c &mem,
|
||||
track->parse_iso639_language_from(pmt_descriptor + 1);
|
||||
break;
|
||||
case 0x56: // Teletext descriptor
|
||||
track->parse_srt_pmt_descriptor(*pmt_descriptor, *pmt_pid_info);
|
||||
track->parse_teletext_pmt_descriptor(*pmt_descriptor, *pmt_pid_info);
|
||||
break;
|
||||
case 0x59: // Subtitles descriptor
|
||||
track->parse_subtitling_pmt_descriptor(*pmt_descriptor, *pmt_pid_info);
|
||||
|
@ -301,6 +301,7 @@ public:
|
||||
std::optional<uint16_t> program_number, m_dovi_base_layer_pid;
|
||||
std::optional<int> m_ttx_wanted_page;
|
||||
std::optional<uint8_t> m_expected_next_continuity_counter;
|
||||
std::optional<bool> m_hearing_impaired_flag;
|
||||
std::size_t pes_payload_size_to_read; // size of the current PID payload in bytes
|
||||
mtx::bytes::buffer_cptr pes_payload_read; // buffer with the current PID payload
|
||||
|
||||
@ -373,7 +374,7 @@ public:
|
||||
bool parse_dovi_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
bool parse_dts_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
bool parse_registration_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
bool parse_srt_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
bool parse_teletext_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
bool parse_subtitling_pmt_descriptor(pmt_descriptor_t const &pmt_descriptor, pmt_pid_info_t const &pmt_pid_info);
|
||||
|
||||
bool has_packetizer() const;
|
||||
|
Loading…
Reference in New Issue
Block a user