22#ifndef _MPEG2_TRANSPORT_STREAM_MULTIPLEXOR_HH
23#define _MPEG2_TRANSPORT_STREAM_MULTIPLEXOR_HH
25#ifndef _FRAMED_SOURCE_HH
28#ifndef _MPEG_1OR2_DEMUX_HH
32#define PID_TABLE_SIZE 0x2000
39 void* onEndOfSegmentClientData =
NULL);
75 unsigned& startPositionInBuffer);
118u_int32_t
calculateCRC(u_int8_t
const* data,
unsigned dataLength, u_int32_t initialValue = 0xFFFFFFFF);
u_int32_t calculateCRC(u_int8_t const *data, unsigned dataLength, u_int32_t initialValue=0xFFFFFFFF)
Boolean canDeliverNewFrameImmediately() const
Boolean segmentationIsTimed() const
Boolean fHaveVideoStreams
virtual ~MPEG2TransportStreamMultiplexor()
u_int8_t fSegmentationIndication
onEndOfSegmentFunc * fOnEndOfSegmentFunc
double fCurrentSegmentDuration
u_int8_t fPreviousInputProgramMapVersion
virtual Boolean isMPEG2TransportStreamMultiplexor() const
MPEG2TransportStreamMultiplexor(UsageEnvironment &env)
double currentSegmentDuration() const
u_int8_t fCurrentInputProgramMapVersion
unsigned fInputBufferSize
struct MPEG2TransportStreamMultiplexor::@2 fPIDState[PID_TABLE_SIZE]
void setTimedSegmentation(unsigned segmentationDuration, onEndOfSegmentFunc *onEndOfSegmentFunc=NULL, void *onEndOfSegmentClientData=NULL)
unsigned fSegmentationDuration
void deliverDataToClient(u_int16_t pid, unsigned char *buffer, unsigned bufferSize, unsigned &startPositionInBuffer)
virtual void doGetNextFrame()
void handleNewBuffer(unsigned char *buffer, unsigned bufferSize, int mpegVersion, MPEG1or2Demux::SCR scr, int16_t PID=-1)
virtual void awaitNewBuffer(unsigned char *oldBuffer)=0
void deliverPMTPacket(Boolean hasChanged)
Boolean fIsFirstAdaptationField
unsigned fInputBufferBytesUsed
unsigned fOutgoingPacketCounter
unsigned char * fInputBuffer
unsigned fProgramMapVersion
void() onEndOfSegmentFunc(void *clientData, double segmentDuration)
void * fOnEndOfSegmentClientData
void setProgramStreamMap(unsigned frameSize)