MythTV  0.26-pre
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
ProgramMapTable Class Reference

A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe the multimedia contents of the program. More...

#include <mpegtables.h>

Inheritance diagram for ProgramMapTable:
PSIPTable PESPacket

List of all members.

Public Member Functions

 ProgramMapTable (const ProgramMapTable &table)
 ProgramMapTable (const PSIPTable &table)
uint PCRPID (void) const
 stream that contrains program clock reference.
uint ProgramNumber (void) const
uint ProgramInfoLength (void) const
const unsigned char * ProgramInfo (void) const
uint StreamType (uint i) const
uint StreamPID (uint i) const
uint StreamInfoLength (uint i) const
const unsigned char * StreamInfo (uint i) const
uint StreamCount (void) const
void SetPCRPID (uint pid)
void SetProgramNumber (uint num)
void SetStreamPID (uint i, uint pid)
void SetStreamType (uint i, uint type)
bool IsVideo (uint i, QString sistandard) const
 Returns true iff the stream at index i is a video stream.
bool IsAudio (uint i, QString sistandard) const
 Returns true iff the stream at index i is an audio stream.
bool IsEncrypted (QString sistandard) const
 Returns true iff PMT contains CA descriptor for a vid/aud stream.
bool IsProgramEncrypted (void) const
 Returns true iff PMT's ProgramInfo contains CA descriptor.
bool IsStreamEncrypted (uint pid) const
 Returns true iff PMT contains CA descriptor.
bool IsStillPicture (QString sistandard) const
 Returns true iff PMT contains a still-picture video stream.
QString StreamTypeString (uint i) const
 Returns a string representation of type at stream index i.
QString StreamDescription (uint i, QString sistandard) const
 Returns a better (and more expensive) string representation of type at stream index i than StreamTypeString(uint)
QString GetLanguage (uint i) const
 Returns the cannonical language if we find the iso639 descriptor.
uint FindPIDs (uint type, vector< uint > &pids, const QString &sistandard) const
 Finds all pids matching type.
uint FindPIDs (uint type, vector< uint > &pids, vector< uint > &types, const QString &sistandard, bool normalize) const
 Finds all pids w/types, matching type (useful for AnyVideo/AnyAudio).
int FindPID (uint pid) const
 Locates stream index of pid.
uint FindUnusedPID (uint desired_pid=0x20)
void RemoveAllStreams (void)
void AppendStream (uint pid, uint type, unsigned char *si=0, uint il=0)
void Parse (void) const
virtual QString toString (void) const
virtual QString toStringXML (uint indent_level) const

Static Public Member Functions

static ProgramMapTableCreate (uint programNumber, uint basepid, uint pcrpid, uint version, vector< uint > pids, vector< uint > types)
static ProgramMapTableCreate (uint programNumber, uint basepid, uint pcrpid, uint version, const desc_list_t &global_desc, const vector< uint > &pids, const vector< uint > &types, const vector< desc_list_t > &prog_desc)

Private Member Functions

void SetStreamInfoLength (uint i, uint length)
void SetStreamProgramInfo (uint i, unsigned char *streamInfo, uint infoLength)
void SetProgramInfoLength (uint length)
void SetProgramInfo (unsigned char *streamInfo, uint infoLength)

Static Private Member Functions

static ProgramMapTableCreateBlank (bool smallPacket=true)

Private Attributes

vector< unsigned char * > _ptrs

Static Private Attributes

static const uint pmt_header = 4

Detailed Description

A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe the multimedia contents of the program.

Definition at line 564 of file mpegtables.h.


Constructor & Destructor Documentation

Definition at line 568 of file mpegtables.h.

Referenced by CreateBlank().

ProgramMapTable::ProgramMapTable ( const PSIPTable table) [inline]

Definition at line 574 of file mpegtables.h.


Member Function Documentation

ProgramMapTable * ProgramMapTable::Create ( uint  programNumber,
uint  basepid,
uint  pcrpid,
uint  version,
vector< uint pids,
vector< uint types 
) [static]
ProgramMapTable * ProgramMapTable::Create ( uint  programNumber,
uint  basepid,
uint  pcrpid,
uint  version,
const desc_list_t global_desc,
const vector< uint > &  pids,
const vector< uint > &  types,
const vector< desc_list_t > &  prog_desc 
) [static]

Definition at line 402 of file mpegtables.cpp.

uint ProgramMapTable::PCRPID ( void  ) const [inline]

stream that contrains program clock reference.

Definition at line 592 of file mpegtables.h.

Referenced by MPEGStreamData::CreatePMTSingleProgram(), and toStringXML().

const unsigned char* ProgramMapTable::ProgramInfo ( void  ) const [inline]
uint ProgramMapTable::StreamType ( uint  i) const [inline]
uint ProgramMapTable::StreamPID ( uint  i) const [inline]
const unsigned char* ProgramMapTable::StreamInfo ( uint  i) const [inline]
uint ProgramMapTable::StreamCount ( void  ) const [inline]

Definition at line 620 of file mpegtables.h.

Definition at line 626 of file mpegtables.h.

void ProgramMapTable::SetStreamPID ( uint  i,
uint  pid 
) [inline]

Definition at line 628 of file mpegtables.h.

Referenced by AppendStream().

void ProgramMapTable::SetStreamType ( uint  i,
uint  type 
) [inline]

Definition at line 634 of file mpegtables.h.

Referenced by AppendStream().

bool ProgramMapTable::IsVideo ( uint  i,
QString  sistandard 
) const

Returns true iff the stream at index i is a video stream.

This of course returns true if StreamID::IsVideo() is true. And, it also returns true if IsVideo returns true after StreamID::Normalize() is used on the stream type.

Parameters:
iindex of stream

Definition at line 489 of file mpegtables.cpp.

Referenced by FindPIDs(), DTVRecorder::HandlePMT(), DTVSignalMonitor::HandlePMT(), PrintMPEGStreamListener::HandlePMT(), AvFormatDecoder::HasVideo(), IsEncrypted(), IsStillPicture(), AvFormatDecoder::ScanATSCCaptionStreams(), and MPEGStreamData::TestDecryption().

bool ProgramMapTable::IsAudio ( uint  i,
QString  sistandard 
) const

Returns true iff the stream at index i is an audio stream.

This of course returns true if StreamID::IsAudio() is true. And, it also returns true if IsAudio returns true after StreamID::Normalize() is used on the stream type.

Parameters:
iindex of stream

Definition at line 510 of file mpegtables.cpp.

Referenced by FindPIDs(), DTVRecorder::HandlePMT(), DTVSignalMonitor::HandlePMT(), PrintMPEGStreamListener::HandlePMT(), IsEncrypted(), and MPEGStreamData::TestDecryption().

bool ProgramMapTable::IsEncrypted ( QString  sistandard) const

Returns true iff PMT contains CA descriptor for a vid/aud stream.

Definition at line 525 of file mpegtables.cpp.

Referenced by ChannelScanSM::GetChannelList(), DTVSignalMonitor::HandlePMT(), and ChannelScanSM::HandlePMT().

Returns true iff PMT's ProgramInfo contains CA descriptor.

Definition at line 541 of file mpegtables.cpp.

Referenced by IsEncrypted(), and MPEGStreamData::TestDecryption().

Returns true iff PMT contains CA descriptor.

Parameters:
iindex of stream

Definition at line 567 of file mpegtables.cpp.

Referenced by IsEncrypted(), and MPEGStreamData::TestDecryption().

bool ProgramMapTable::IsStillPicture ( QString  sistandard) const

Returns true iff PMT contains a still-picture video stream.

Definition at line 588 of file mpegtables.cpp.

QString ProgramMapTable::StreamTypeString ( uint  i) const [inline]

Returns a string representation of type at stream index i.

Definition at line 646 of file mpegtables.h.

Referenced by toString(), and toStringXML().

QString ProgramMapTable::StreamDescription ( uint  i,
QString  sistandard 
) const

Returns a better (and more expensive) string representation of type at stream index i than StreamTypeString(uint)

Definition at line 1087 of file mpegtables.cpp.

Referenced by CreateCAPMT().

QString ProgramMapTable::GetLanguage ( uint  i) const

Returns the cannonical language if we find the iso639 descriptor.

Definition at line 1073 of file mpegtables.cpp.

Referenced by StreamDescription().

uint ProgramMapTable::FindPIDs ( uint  type,
vector< uint > &  pids,
const QString &  sistandard 
) const

Finds all pids matching type.

Parameters:
typeStreamType to match
pidsvector pids will be added to
sistandardstandard to use in determining if this is a A/V stream
Returns:
number of pids in list

Definition at line 612 of file mpegtables.cpp.

uint ProgramMapTable::FindPIDs ( uint  type,
vector< uint > &  pids,
vector< uint > &  types,
const QString &  sistandard,
bool  normalize 
) const

Finds all pids w/types, matching type (useful for AnyVideo/AnyAudio).

Parameters:
typeStreamType to match
pidsvector pids will be added to
typesvector types will be added to
sistandardstandard to use in determining if this is a A/V stream
normalizeif set types will be normalized
Returns:
number of items in pids and types lists.

Definition at line 648 of file mpegtables.cpp.

int ProgramMapTable::FindPID ( uint  pid) const [inline]

Locates stream index of pid.

Returns:
stream index if successful, -1 otherwise

Definition at line 661 of file mpegtables.h.

Referenced by MPEGStreamData::CreatePMTSingleProgram(), FindPIDs(), FindUnusedPID(), and IPTVRecorder::ProcessTSPacket().

uint ProgramMapTable::FindUnusedPID ( uint  desired_pid = 0x20)

Definition at line 701 of file mpegtables.cpp.

Definition at line 670 of file mpegtables.h.

void ProgramMapTable::AppendStream ( uint  pid,
uint  type,
unsigned char *  si = 0,
uint  il = 0 
)

Definition at line 466 of file mpegtables.cpp.

QString ProgramMapTable::toString ( void  ) const [virtual]
QString ProgramMapTable::toStringXML ( uint  indent_level) const [virtual]

Reimplemented from PSIPTable.

Definition at line 875 of file mpegtables.cpp.

void ProgramMapTable::SetStreamInfoLength ( uint  i,
uint  length 
) [inline, private]

Definition at line 683 of file mpegtables.h.

void ProgramMapTable::SetStreamProgramInfo ( uint  i,
unsigned char *  streamInfo,
uint  infoLength 
) [inline, private]

Definition at line 689 of file mpegtables.h.

Referenced by AppendStream().

void ProgramMapTable::SetProgramInfoLength ( uint  length) [inline, private]

Definition at line 696 of file mpegtables.h.

void ProgramMapTable::SetProgramInfo ( unsigned char *  streamInfo,
uint  infoLength 
) [inline, private]

Definition at line 702 of file mpegtables.h.

ProgramMapTable * ProgramMapTable::CreateBlank ( bool  smallPacket = true) [static, private]

Definition at line 357 of file mpegtables.cpp.

Referenced by Create().


Member Data Documentation

const uint ProgramMapTable::pmt_header = 4 [static, private]

Definition at line 710 of file mpegtables.h.

Referenced by AppendStream(), and Parse().

vector<unsigned char*> ProgramMapTable::_ptrs [mutable, private]

Definition at line 711 of file mpegtables.h.

Referenced by AppendStream(), and Parse().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends