vdr  2.2.0
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 MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION   6
 
#define WRN_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION   (MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION / 2)
 
#define WRN_TS_PACKETS_FOR_FRAME_DETECTOR   (MIN_TS_PACKETS_FOR_FRAME_DETECTOR / 2)
 
#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 MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION   6

Definition at line 26 of file remux.c.

Referenced by cTsPayload::GetByte().

#define MAXPESLENGTH   0xFFF0

Definition at line 1057 of file remux.c.

Referenced by cTsToPes::GetPes().

#define MAXPID   0x2000
#define P_PMT_PID   0x0084

Definition at line 509 of file remux.c.

Referenced by cPatPmtGenerator::GeneratePmtPid().

#define P_TSID   0x8008

Definition at line 508 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 98 of file remux.c.

Referenced by cRemux::SetBrokenLink().

#define WRN_TS_PACKETS_FOR_FRAME_DETECTOR   (MIN_TS_PACKETS_FOR_FRAME_DETECTOR / 2)

Definition at line 28 of file remux.c.

Referenced by cTsPayload::Statistics().

#define WRN_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION   (MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION / 2)

Definition at line 27 of file remux.c.

Referenced by cTsPayload::Statistics().

Function Documentation

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

Definition at line 32 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 1122 of file remux.c.

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

Definition at line 1537 of file remux.c.

Referenced by cFrameDetector::Analyze().

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

Definition at line 1148 of file remux.c.

References TsDump().

void PesSetDts ( uchar p,
int64_t  Dts 
)

Definition at line 212 of file remux.c.

Referenced by PesGetDts(), and TsSetDts().

void PesSetPts ( uchar p,
int64_t  Pts 
)

Definition at line 203 of file remux.c.

Referenced by PesGetDts(), and 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 221 of file remux.c.

References MAX33BIT.

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

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

Definition at line 1133 of file remux.c.

References max(), and min().

Referenced by PesDump().

void TsExtendAdaptionField ( unsigned char *  Packet,
int  ToLength 
)

Definition at line 346 of file remux.c.

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

Referenced by cNaluDumper::ProcessTSPacket(), and TsGetPcr().

int64_t TsGetDts ( const uchar p,
int  l 
)

Definition at line 160 of file remux.c.

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

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

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

Definition at line 121 of file remux.c.

References TS_ADAPT_FIELD_EXISTS, TS_PAYLOAD_EXISTS, TS_PAYLOAD_START, and TS_SIZE.

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

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

Definition at line 187 of file remux.c.

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

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

void TsSetPcr ( uchar p,
int64_t  Pcr 
)

Definition at line 131 of file remux.c.

References PCRFACTOR, TS_ADAPT_PCR, and TsHasAdaptationField().

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

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

Definition at line 173 of file remux.c.

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

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

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.