vdr 2.7.3
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
 
class  cH265Parser
 
class  cTsChecker
 
class  cFrameChecker
 

Macros

#define dbgpatpmt(a...)
 
#define dbgframes(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)
 
#define SETPIDS(l)
 
#define MAXPESLENGTH   0xFFF0
 
#define TS_CC_UNKNOWN   0xFF
 
#define MAX_BACK_REFS   32
 

Functions

ePesHeader AnalyzePesHeader (const uchar *Data, int Count, int &PesPayloadOffset, bool *ContinuationHeader)
 
void TsHidePayload (uchar *p)
 
void TsSetPcr (uchar *p, int64_t Pcr)
 
int TsSync (const uchar *Data, int Length, const char *File, const char *Function, int Line)
 
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 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
 
static bool DebugChecks = false
 
const char * ScanTypeChars = "-pi"
 
const char * AspectRatioTexts []
 

Macro Definition Documentation

◆ dbgframes

◆ dbgpatpmt

#define dbgpatpmt ( a...)
Value:
if (DebugPatPmt) fprintf(stderr, a)
static bool DebugPatPmt
Definition remux.c:20

Definition at line 23 of file remux.c.

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

◆ EMPTY_SCANNER

#define EMPTY_SCANNER   (0xFFFFFFFF)

◆ MAX_BACK_REFS

#define MAX_BACK_REFS   32

Definition at line 1999 of file remux.c.

Referenced by cFrameChecker::CheckFrame().

◆ MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION

#define MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION   6

Definition at line 26 of file remux.c.

Referenced by cTsPayload::GetByte().

◆ MAXPESLENGTH

#define MAXPESLENGTH   0xFFF0

Definition at line 1073 of file remux.c.

Referenced by cTsToPes::GetPes().

◆ MAXPID

#define MAXPID   0x2000

◆ P_PMT_PID

#define P_PMT_PID   0x0084

Definition at line 463 of file remux.c.

Referenced by cPatPmtGenerator::GeneratePmtPid().

◆ P_TSID

#define P_TSID   0x8008

Definition at line 462 of file remux.c.

Referenced by cPatPmtGenerator::GeneratePat().

◆ SETPID

#define SETPID ( p)
Value:
{ if ((p) >= 0 && (p) < MAXPID) Used[p] = true; }
#define MAXPID
Definition remux.c:464

Referenced by cPatPmtGenerator::GeneratePmtPid().

◆ SETPIDS

#define SETPIDS ( l)
Value:
{ const int *p = l; while (*p) { SETPID(*p); p++; } }
#define SETPID(p)

Referenced by cPatPmtGenerator::GeneratePmtPid().

◆ TS_CC_UNKNOWN

#define TS_CC_UNKNOWN   0xFF

Definition at line 1945 of file remux.c.

Referenced by cTsChecker::CheckTs(), and cTsChecker::cTsChecker().

◆ VIDEO_STREAM_S

#define VIDEO_STREAM_S   0xE0

Definition at line 98 of file remux.c.

Referenced by cRemux::SetBrokenLink().

◆ WRN_TS_PACKETS_FOR_FRAME_DETECTOR

#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().

◆ WRN_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION

#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

◆ AnalyzePesHeader()

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

Definition at line 32 of file remux.c.

References PesPayloadOffset(), phInvalid, phMPEG1, phMPEG2, and phNeedMoreData.

Referenced by cRemux::SetBrokenLink().

◆ BlockDump()

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

Definition at line 1138 of file remux.c.

◆ CmpUint32()

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

Definition at line 2127 of file remux.c.

Referenced by cFrameDetector::Analyze().

◆ PesDump()

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

Definition at line 1164 of file remux.c.

References TsDump().

◆ PesSetDts()

void PesSetDts ( uchar * p,
int64_t Dts )

Definition at line 225 of file remux.c.

Referenced by TsSetDts().

◆ PesSetPts()

void PesSetPts ( uchar * p,
int64_t Pts )

Definition at line 216 of file remux.c.

Referenced by TsSetPts().

◆ PtsDiff()

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 234 of file remux.c.

References MAX33BIT.

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

◆ TsDump()

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

Definition at line 1149 of file remux.c.

References max(), and min().

Referenced by PesDump().

◆ TsGetDts()

int64_t TsGetDts ( const uchar * p,
int l )

Definition at line 173 of file remux.c.

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

Referenced by cCuttingThread::FixFrame().

◆ TsGetPts()

◆ TsHidePayload()

void TsHidePayload ( uchar * p)

Definition at line 121 of file remux.c.

References TS_ADAPT_FIELD_EXISTS, and TS_SIZE.

Referenced by cCuttingThread::FixFrame().

◆ TsSetDts()

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

Definition at line 200 of file remux.c.

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

Referenced by cCuttingThread::FixFrame().

◆ TsSetPcr()

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().

◆ TsSetPts()

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

Definition at line 186 of file remux.c.

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

Referenced by cCuttingThread::FixFrame().

◆ TsSync()

int TsSync ( const uchar * Data,
int Length,
const char * File,
const char * Function,
int Line )

Definition at line 147 of file remux.c.

References esyslog, TS_SIZE, and TS_SYNC_BYTE.

Variable Documentation

◆ AspectRatioTexts

const char* AspectRatioTexts[]

◆ DebugChecks

bool DebugChecks = false
static

Definition at line 1934 of file remux.c.

Referenced by cFrameChecker::Report(), and cTsChecker::Report().

◆ DebugFrames

bool DebugFrames = false
static

Definition at line 21 of file remux.c.

◆ DebugPatPmt

bool DebugPatPmt = false
static

Definition at line 20 of file remux.c.

◆ ScanTypeChars