vdr
2.4.0
|
#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 |
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) |
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 |
#define dbgframes | ( | a... | ) | if (DebugFrames) fprintf(stderr, a) |
#define dbgpatpmt | ( | a... | ) | if (DebugPatPmt) fprintf(stderr, a) |
#define SETPID | ( | p | ) | { if ((p) >= 0 && (p) < MAXPID) Used[p] = true; } |
#define SETPIDS | ( | l | ) | { const int *p = l; while (*p) { SETPID(*p); p++; } } |
#define WRN_TS_PACKETS_FOR_FRAME_DETECTOR (MIN_TS_PACKETS_FOR_FRAME_DETECTOR / 2) |
#define WRN_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION (MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION / 2) |
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().
void BlockDump | ( | const char * | Name, |
const u_char * | Data, | ||
int | Length | ||
) |
|
static |
Definition at line 1626 of file remux.c.
Referenced by cFrameDetector::Analyze().
void PesDump | ( | const char * | Name, |
const u_char * | Data, | ||
int | Length | ||
) |
void PesSetDts | ( | uchar * | p, |
int64_t | Dts | ||
) |
Definition at line 225 of file remux.c.
Referenced by TsSetDts().
void PesSetPts | ( | uchar * | p, |
int64_t | Pts | ||
) |
Definition at line 216 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 234 of file remux.c.
References MAX33BIT.
Referenced by cCuttingThread::FixFrame(), and cCuttingThread::GetPendingPackets().
void TsDump | ( | const char * | Name, |
const u_char * | Data, | ||
int | Length | ||
) |
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().
int64_t TsGetPts | ( | const uchar * | p, |
int | l | ||
) |
Definition at line 160 of file remux.c.
References PesGetPts(), PesHasPts(), TS_SIZE, TsGetPayload(), and TsPayloadStart().
Referenced by cDvbPlayer::Action(), cCuttingThread::FixFrame(), cCuttingThread::GetPendingPackets(), and cDvbPlayer::Goto().
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().
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().
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().
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().
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.