vdr  2.2.0
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
cPatPmtParser Class Reference

#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 tTeletextSubtitlePageTeletextSubtitlePages () 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]
 

Detailed Description

Definition at line 349 of file remux.h.

Constructor & Destructor Documentation

cPatPmtParser::cPatPmtParser ( bool  UpdatePrimaryDevice = false)

Definition at line 662 of file remux.c.

Member Function Documentation

const char* cPatPmtParser::Alang ( int  i) const
inline

Definition at line 421 of file remux.h.

References MAXAPIDS.

uint16_t cPatPmtParser::AncillaryPageId ( int  i) const
inline

Definition at line 426 of file remux.h.

References MAXSPIDS.

int cPatPmtParser::Apid ( int  i) const
inline

Definition at line 416 of file remux.h.

References MAXAPIDS.

Referenced by cDvbHdFfDevice::PlayTsAudio().

const int* cPatPmtParser::Apids ( void  ) const
inline

Definition at line 413 of file remux.h.

int cPatPmtParser::Atype ( int  i) const
inline

Definition at line 419 of file remux.h.

References MAXAPIDS.

Referenced by cDvbHdFfDevice::PlayTsAudio().

uint16_t cPatPmtParser::CompositionPageId ( int  i) const
inline

Definition at line 425 of file remux.h.

References MAXSPIDS.

const char* cPatPmtParser::Dlang ( int  i) const
inline

Definition at line 422 of file remux.h.

References MAXDPIDS.

int cPatPmtParser::Dpid ( int  i) const
inline

Definition at line 417 of file remux.h.

References MAXDPIDS.

Referenced by cDvbHdFfDevice::PlayTsAudio().

const int* cPatPmtParser::Dpids ( void  ) const
inline

Definition at line 414 of file remux.h.

int cPatPmtParser::Dtype ( int  i) const
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().

bool cPatPmtParser::IsPmtPid ( int  Pid) const
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 
)
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().

int cPatPmtParser::Ppid ( void  ) const
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().

int cPatPmtParser::SectionLength ( const uchar Data,
int  Length 
)
inlineprotected

Definition at line 375 of file remux.h.

const char* cPatPmtParser::Slang ( int  i) const
inline

Definition at line 423 of file remux.h.

References MAXSPIDS.

int cPatPmtParser::Spid ( int  i) const
inline

Definition at line 418 of file remux.h.

References MAXSPIDS.

const int* cPatPmtParser::Spids ( void  ) const
inline

Definition at line 415 of file remux.h.

uchar cPatPmtParser::SubtitlingType ( int  i) const
inline

Definition at line 424 of file remux.h.

References MAXSPIDS.

const tTeletextSubtitlePage* cPatPmtParser::TeletextSubtitlePages ( ) const
inline

Definition at line 427 of file remux.h.

Referenced by cDevice::PlayTs().

int cPatPmtParser::TotalTeletextSubtitlePages ( ) const
inline

Definition at line 428 of file remux.h.

Referenced by cDevice::PlayTs().

int cPatPmtParser::Tpid ( void  )
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().

int cPatPmtParser::Vpid ( void  ) const
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().

int cPatPmtParser::Vtype ( void  ) const
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().

Member Data Documentation

char cPatPmtParser::alangs[MAXAPIDS][MAXLANGCODE2]
private

Definition at line 362 of file remux.h.

uint16_t cPatPmtParser::ancillaryPageIds[MAXSPIDS]
private

Definition at line 370 of file remux.h.

int cPatPmtParser::apids[MAXAPIDS+1]
private

Definition at line 360 of file remux.h.

int cPatPmtParser::atypes[MAXAPIDS+1]
private

Definition at line 361 of file remux.h.

uint16_t cPatPmtParser::compositionPageIds[MAXSPIDS]
private

Definition at line 369 of file remux.h.

char cPatPmtParser::dlangs[MAXDPIDS][MAXLANGCODE2]
private

Definition at line 365 of file remux.h.

int cPatPmtParser::dpids[MAXDPIDS+1]
private

Definition at line 363 of file remux.h.

int cPatPmtParser::dtypes[MAXDPIDS+1]
private

Definition at line 364 of file remux.h.

int cPatPmtParser::patVersion
private

Definition at line 353 of file remux.h.

uchar cPatPmtParser::pmt[MAX_SECTION_SIZE]
private

Definition at line 351 of file remux.h.

int cPatPmtParser::pmtPids[MAX_PMT_PIDS+1]
private

Definition at line 355 of file remux.h.

int cPatPmtParser::pmtSize
private

Definition at line 352 of file remux.h.

int cPatPmtParser::pmtVersion
private

Definition at line 354 of file remux.h.

int cPatPmtParser::ppid
private

Definition at line 357 of file remux.h.

char cPatPmtParser::slangs[MAXSPIDS][MAXLANGCODE2]
private

Definition at line 367 of file remux.h.

int cPatPmtParser::spids[MAXSPIDS+1]
private

Definition at line 366 of file remux.h.

uchar cPatPmtParser::subtitlingTypes[MAXSPIDS]
private

Definition at line 368 of file remux.h.

tTeletextSubtitlePage cPatPmtParser::teletextSubtitlePages[MAXTXTPAGES]
private

Definition at line 373 of file remux.h.

int cPatPmtParser::totalTtxtSubtitlePages
private

Definition at line 372 of file remux.h.

int cPatPmtParser::tpid
private

Definition at line 359 of file remux.h.

bool cPatPmtParser::updatePrimaryDevice
private

Definition at line 371 of file remux.h.

int cPatPmtParser::vpid
private

Definition at line 356 of file remux.h.

int cPatPmtParser::vtype
private

Definition at line 358 of file remux.h.


The documentation for this class was generated from the following files: