vdr  2.0.2
Classes | Macros | Functions | Variables
remux.c File Reference
#include "remux.h"
#include "device.h"
#include "libsi/si.h"
#include "libsi/section.h"
#include "libsi/descriptor.h"
#include "recording.h"
#include "shutdown.h"
#include "tools.h"

Go to the source code of this file.

Classes

class  cFrameParser
 
class  cAudioParser
 
class  cMpeg2Parser
 
class  cH264Parser
 

Macros

#define dbgpatpmt(a...)   if (DebugPatPmt) fprintf(stderr, a)
 
#define dbgframes(a...)   if (DebugFrames) fprintf(stderr, a)
 
#define EMPTY_SCANNER   (0xFFFFFFFF)
 
#define VIDEO_STREAM_S   0xE0
 
#define P_TSID   0x8008
 
#define P_PMT_PID   0x0084
 
#define MAXPID   0x2000
 
#define SETPID(p)   { if ((p) >= 0 && (p) < MAXPID) Used[p] = true; }
 
#define SETPIDS(l)   { const int *p = l; while (*p) { SETPID(*p); p++; } }
 
#define MAXPESLENGTH   0xFFF0
 

Functions

ePesHeader AnalyzePesHeader (const uchar *Data, int Count, int &PesPayloadOffset, bool *ContinuationHeader)
 
void TsHidePayload (uchar *p)
 
void TsSetPcr (uchar *p, int64_t Pcr)
 
int64_t TsGetPts (const uchar *p, int l)
 
int64_t TsGetDts (const uchar *p, int l)
 
void TsSetPts (uchar *p, int l, int64_t Pts)
 
void TsSetDts (uchar *p, int l, int64_t Dts)
 
void PesSetPts (uchar *p, int64_t Pts)
 
void PesSetDts (uchar *p, int64_t Dts)
 
int64_t PtsDiff (int64_t Pts1, int64_t Pts2)
 
void TsExtendAdaptionField (unsigned char *Packet, int ToLength)
 
void BlockDump (const char *Name, const u_char *Data, int Length)
 
void TsDump (const char *Name, const u_char *Data, int Length)
 
void PesDump (const char *Name, const u_char *Data, int Length)
 
static int CmpUint32 (const void *p1, const void *p2)
 

Variables

static bool DebugPatPmt = false
 
static bool DebugFrames = false
 

Macro Definition Documentation

#define dbgframes (   a...)    if (DebugFrames) fprintf(stderr, a)
#define dbgpatpmt (   a...)    if (DebugPatPmt) fprintf(stderr, a)

Definition at line 23 of file remux.c.

Referenced by cPatPmtParser::ParsePat(), and cPatPmtParser::ParsePmt().

#define EMPTY_SCANNER   (0xFFFFFFFF)
#define MAXPESLENGTH   0xFFF0

Definition at line 993 of file remux.c.

Referenced by cTsToPes::GetPes().

#define MAXPID   0x2000
#define P_PMT_PID   0x0084

Definition at line 478 of file remux.c.

Referenced by cPatPmtGenerator::GeneratePmtPid().

#define P_TSID   0x8008

Definition at line 477 of file remux.c.

Referenced by cPatPmtGenerator::GeneratePat().

#define SETPID (   p)    { if ((p) >= 0 && (p) < MAXPID) Used[p] = true; }
#define SETPIDS (   l)    { const int *p = l; while (*p) { SETPID(*p); p++; } }
#define VIDEO_STREAM_S   0xE0

Definition at line 94 of file remux.c.

Referenced by cRemux::SetBrokenLink().

Function Documentation

ePesHeader AnalyzePesHeader ( const uchar Data,
int  Count,
int &  PesPayloadOffset,
bool *  ContinuationHeader 
)

Definition at line 28 of file remux.c.

References phInvalid, phMPEG1, phMPEG2, and phNeedMoreData.

Referenced by cRemux::SetBrokenLink().

void BlockDump ( const char *  Name,
const u_char *  Data,
int  Length 
)

Definition at line 1058 of file remux.c.

static int CmpUint32 ( const void *  p1,
const void *  p2 
)
static

Definition at line 1450 of file remux.c.

Referenced by cFrameDetector::Analyze().

void PesDump ( const char *  Name,
const u_char *  Data,
int  Length 
)

Definition at line 1084 of file remux.c.

References TsDump().

void PesSetDts ( uchar p,
int64_t  Dts 
)

Definition at line 208 of file remux.c.

Referenced by TsSetDts().

void PesSetPts ( uchar p,
int64_t  Pts 
)

Definition at line 199 of file remux.c.

Referenced by TsSetPts().

int64_t PtsDiff ( int64_t  Pts1,
int64_t  Pts2 
)

Returns the difference between two PTS values.

The result of Pts2 - Pts1 is the actual number of 90kHz time ticks that pass from Pts1 to Pts2, properly taking into account the 33bit wrap around. If Pts2 is "before" Pts1, the result is negative.

Definition at line 217 of file remux.c.

References MAX33BIT.

Referenced by cCuttingThread::FixFrame(), and cCuttingThread::GetPendingPackets().

void TsDump ( const char *  Name,
const u_char *  Data,
int  Length 
)

Definition at line 1069 of file remux.c.

References max(), and min().

Referenced by PesDump().

void TsExtendAdaptionField ( unsigned char *  Packet,
int  ToLength 
)

Definition at line 315 of file remux.c.

References TS_ADAPT_FIELD_EXISTS, TS_PAYLOAD_EXISTS, TS_SIZE, and TsPayloadOffset().

Referenced by cNaluDumper::ProcessTSPacket().

int64_t TsGetDts ( const uchar p,
int  l 
)

Definition at line 156 of file remux.c.

References PesGetDts(), PesHasDts(), TS_SIZE, TsGetPayload(), and TsPayloadStart().

Referenced by cCuttingThread::FixFrame().

int64_t TsGetPts ( const uchar p,
int  l 
)
void TsHidePayload ( uchar p)

Definition at line 117 of file remux.c.

References TS_ADAPT_FIELD_EXISTS, TS_PAYLOAD_EXISTS, TS_PAYLOAD_START, and TS_SIZE.

Referenced by cCuttingThread::FixFrame().

void TsSetDts ( uchar p,
int  l,
int64_t  Dts 
)

Definition at line 183 of file remux.c.

References PesHasDts(), PesSetDts(), TS_SIZE, TsGetPayload(), and TsPayloadStart().

Referenced by cCuttingThread::FixFrame().

void TsSetPcr ( uchar p,
int64_t  Pcr 
)

Definition at line 127 of file remux.c.

References PCRFACTOR, TS_ADAPT_PCR, and TsHasAdaptationField().

Referenced by cCuttingThread::FixFrame().

void TsSetPts ( uchar p,
int  l,
int64_t  Pts 
)

Definition at line 169 of file remux.c.

References PesHasPts(), PesSetPts(), TS_SIZE, TsGetPayload(), and TsPayloadStart().

Referenced by cCuttingThread::FixFrame().

Variable Documentation

bool DebugFrames = false
static

Definition at line 21 of file remux.c.

bool DebugPatPmt = false
static

Definition at line 20 of file remux.c.