vdr
2.2.0
|
#include <remux.h>
Public Member Functions | |
cPatPmtParser (bool UpdatePrimaryDevice=false) | |
void | Reset (void) |
void | ParsePat (const uchar *Data, int Length) |
void | ParsePmt (const uchar *Data, int Length) |
bool | ParsePatPmt (const uchar *Data, int Length) |
bool | GetVersions (int &PatVersion, int &PmtVersion) const |
bool | IsPmtPid (int Pid) const |
int | Vpid (void) const |
int | Ppid (void) const |
int | Vtype (void) const |
int | Tpid (void) |
const int * | Apids (void) const |
const int * | Dpids (void) const |
const int * | Spids (void) const |
int | Apid (int i) const |
int | Dpid (int i) const |
int | Spid (int i) const |
int | Atype (int i) const |
int | Dtype (int i) const |
const char * | Alang (int i) const |
const char * | Dlang (int i) const |
const char * | Slang (int i) const |
uchar | SubtitlingType (int i) const |
uint16_t | CompositionPageId (int i) const |
uint16_t | AncillaryPageId (int i) const |
const tTeletextSubtitlePage * | TeletextSubtitlePages () const |
int | TotalTeletextSubtitlePages () const |
Protected Member Functions | |
int | SectionLength (const uchar *Data, int Length) |
Private Attributes | |
uchar | pmt [MAX_SECTION_SIZE] |
int | pmtSize |
int | patVersion |
int | pmtVersion |
int | pmtPids [MAX_PMT_PIDS+1] |
int | vpid |
int | ppid |
int | vtype |
int | tpid |
int | apids [MAXAPIDS+1] |
int | atypes [MAXAPIDS+1] |
char | alangs [MAXAPIDS][MAXLANGCODE2] |
int | dpids [MAXDPIDS+1] |
int | dtypes [MAXDPIDS+1] |
char | dlangs [MAXDPIDS][MAXLANGCODE2] |
int | spids [MAXSPIDS+1] |
char | slangs [MAXSPIDS][MAXLANGCODE2] |
uchar | subtitlingTypes [MAXSPIDS] |
uint16_t | compositionPageIds [MAXSPIDS] |
uint16_t | ancillaryPageIds [MAXSPIDS] |
bool | updatePrimaryDevice |
int | totalTtxtSubtitlePages |
tTeletextSubtitlePage | teletextSubtitlePages [MAXTXTPAGES] |
cPatPmtParser::cPatPmtParser | ( | bool | UpdatePrimaryDevice = false | ) |
|
inline |
|
inline |
|
inline |
Definition at line 416 of file remux.h.
References MAXAPIDS.
Referenced by cDvbHdFfDevice::PlayTsAudio().
|
inline |
Definition at line 419 of file remux.h.
References MAXAPIDS.
Referenced by cDvbHdFfDevice::PlayTsAudio().
|
inline |
|
inline |
|
inline |
Definition at line 417 of file remux.h.
References MAXDPIDS.
Referenced by cDvbHdFfDevice::PlayTsAudio().
|
inline |
Definition at line 420 of file remux.h.
References MAXDPIDS.
Referenced by cDvbHdFfDevice::PlayTsAudio().
bool cPatPmtParser::GetVersions | ( | int & | PatVersion, |
int & | PmtVersion | ||
) | const |
Returns true if a valid PAT/PMT has been parsed and stores the current version numbers in the given variables.
Definition at line 1009 of file remux.c.
Referenced by cFileName::GetLastPatPmtVersions().
|
inline |
Returns true if Pid the one of the PMT pids as defined by the current PAT.
If no PAT has been received yet, false will be returned.
Definition at line 398 of file remux.h.
Referenced by cIndexFileGenerator::Action(), cCuttingThread::FixFrame(), cFileName::GetLastPatPmtVersions(), cCuttingThread::GetPendingPackets(), cDevice::PlayTs(), and cDevice::StillPicture().
void cPatPmtParser::ParsePat | ( | const uchar * | Data, |
int | Length | ||
) |
Parses the PAT data from the single TS packet in Data.
Length is always TS_SIZE.
Definition at line 678 of file remux.c.
References SI::PAT::associationLoop, SI::CRCSection::CheckCRCAndParse(), dbgpatpmt, esyslog, SI::NumberedSection::getCurrentNextIndicator(), SI::NumberedSection::getLastSectionNumber(), SI::PAT::Association::getPid(), SI::NumberedSection::getSectionNumber(), SI::PAT::Association::getServiceId(), SI::PAT::getTransportStreamId(), SI::NumberedSection::getVersionNumber(), SI::PAT::Association::isNITPid(), MAX_PMT_PIDS, and TsPayloadOffset().
Referenced by cIndexFileGenerator::Action(), cFileName::GetLastPatPmtVersions(), cDevice::PlayTs(), and cDevice::StillPicture().
bool cPatPmtParser::ParsePatPmt | ( | const uchar * | Data, |
int | Length | ||
) |
Parses the given Data (which may consist of several TS packets, typically an entire frame) and extracts the PAT and PMT.
Returns true if a valid PAT/PMT has been detected.
Definition at line 990 of file remux.c.
References PATPID, TS_SIZE, TS_SYNC_BYTE, and TsPid().
Referenced by cCuttingThread::FixFrame().
void cPatPmtParser::ParsePmt | ( | const uchar * | Data, |
int | Length | ||
) |
Parses the PMT data from the single TS packet in Data.
Length is always TS_SIZE. The PMT may consist of several TS packets, which are delivered to the parser through several subsequent calls to ParsePmt(). The whole PMT data will be processed once the last packet has been received.
Definition at line 710 of file remux.c.
References SI::AC3DescriptorTag, SI::CRCSection::CheckCRCAndParse(), cDevice::ClrAvailableTracks(), dbgpatpmt, SI::EnhancedAC3DescriptorTag, cDevice::EnsureAudioTrack(), cDevice::EnsureSubtitleTrack(), esyslog, SI::SubtitlingDescriptor::Subtitling::getAncillaryPageId(), SI::SubtitlingDescriptor::Subtitling::getCompositionPageId(), SI::NumberedSection::getCurrentNextIndicator(), SI::Descriptor::getDescriptorTag(), SI::NumberedSection::getLastSectionNumber(), SI::DescriptorLoop::getNext(), SI::PMT::getPCRPid(), SI::PMT::Stream::getPid(), SI::NumberedSection::getSectionNumber(), SI::PMT::getServiceId(), SI::PMT::Stream::getStreamType(), SI::SubtitlingDescriptor::Subtitling::getSubtitlingType(), SI::TeletextDescriptor::Teletext::getTeletextMagazineNumber(), SI::TeletextDescriptor::Teletext::getTeletextPageNumber(), SI::TeletextDescriptor::Teletext::getTeletextType(), SI::NumberedSection::getVersionNumber(), I18nNormalizeLanguageCode(), SI::ISO639LanguageDescriptorTag, SI::TeletextDescriptor::Teletext::languageCode, SI::SubtitlingDescriptor::Subtitling::languageCode, SI::ISO639LanguageDescriptor::languageCode, SI::ISO639LanguageDescriptor::Language::languageCode, SI::ISO639LanguageDescriptor::languageLoop, MAXAPIDS, MAXDPIDS, MAXLANGCODE1, MAXSPIDS, MAXTXTPAGES, cDevice::PrimaryDevice(), cDevice::SetAvailableTrack(), Setup, SI::PMT::Stream::streamDescriptors, SI::PMT::streamLoop, strn0cpy(), SI::SubtitlingDescriptorTag, SI::SubtitlingDescriptor::subtitlingLoop, SI::TeletextDescriptorTag, SI::TeletextDescriptor::teletextLoop, TsPayloadOffset(), TsPayloadStart(), ttAudio, ttDolby, ttSubtitle, and cSetup::UseDolbyDigital.
Referenced by cIndexFileGenerator::Action(), cFileName::GetLastPatPmtVersions(), cDevice::PlayTs(), and cDevice::StillPicture().
|
inline |
Returns the PCR pid as defined by the current PMT, or 0 if no PCR pid has been detected, yet.
Definition at line 404 of file remux.h.
Referenced by cDevice::PlayTs().
void cPatPmtParser::Reset | ( | void | ) |
Resets the parser.
This function must be called whenever a new stream is parsed.
Definition at line 668 of file remux.c.
Referenced by cDevice::AttachPlayer(), and cDevice::Detach().
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 427 of file remux.h.
Referenced by cDevice::PlayTs().
|
inline |
Definition at line 428 of file remux.h.
Referenced by cDevice::PlayTs().
|
inline |
Returns the teletext pid as defined by the current PMT, or 0 if no teletext pid has been detected, yet.
Definition at line 410 of file remux.h.
Referenced by cDevice::PlayTs().
|
inline |
Returns the video pid as defined by the current PMT, or 0 if no video pid has been detected, yet.
Definition at line 401 of file remux.h.
Referenced by cIndexFileGenerator::Action(), cCuttingThread::FixFrame(), cCuttingThread::GetPendingPackets(), cDevice::PlayTs(), and cDevice::StillPicture().
|
inline |
Returns the video stream type as defined by the current PMT, or 0 if no video stream type has been detected, yet.
Definition at line 407 of file remux.h.
Referenced by cIndexFileGenerator::Action(), and cCuttingThread::FixFrame().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |