mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- Added cDevice::DeviceNumber() to get the number of a device, not counting any gaps that might be in the index count. - Fixed fetching the current/next information to handle cases where the duration of an event is set wrongly and would last beyond the start time of the next event. - Adapted type names to the new HEAD version of the driver (which the previous NEWSTRUCT branch has been merged into). Note that to use this driver version you still need to add NEWSTRUCT=1 to the make call when building VDR. You need a HEAD version of the LinuxDVB driver dated 2002-10-11 or later to compile VDR with NEWSTRUCT=1. - Fixed radio channels in channels.conf.cable (thanks to Robert Schiele and Uwe Scheffler). - Fixed switching the video format in the Setup/DVB menu (thanks to Uwe Scheffler for reporting this one). - Reactivated full handling of second audio PID (even in 'Transfer Mode'). - Fixed a crash when closing down with remote control plugins (thanks to Oliver Endriss helping to debug this one). - Commands in the file 'commands.conf' can now have a '?' at the end of their title, which will result in a confirmation prompt before executing the command. - Changed a few leftover 'new char[...]' to MALLOC(char, ...). - If a command executed from the "Commands" menu doesn't return any output, the OSD will now be closed automatically. - The SVDRP command PUTE now triggers an immediate write of the 'epg.data' file (suggested by Gerhard Steiner). - The new configuration file 'reccmds.conf' can be used to define commands that shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for details (suggested by Gerhard Steiner).
54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
/*
|
|
* remux.h: A streaming MPEG2 remultiplexer
|
|
*
|
|
* See the main source file 'vdr.c' for copyright information and
|
|
* how to reach the author.
|
|
*
|
|
* $Id: remux.h 1.8 2002/10/12 13:30:24 kls Exp $
|
|
*/
|
|
|
|
#ifndef __REMUX_H
|
|
#define __REMUX_H
|
|
|
|
#include <time.h> //XXX FIXME: DVB/linux/dvb/dmx.h should include <time.h> itself!!!
|
|
#ifdef NEWSTRUCT
|
|
#include <linux/dvb/dmx.h>
|
|
#else
|
|
#include <ost/dmx.h>
|
|
#endif
|
|
#include "tools.h"
|
|
|
|
// Picture types:
|
|
#define NO_PICTURE 0
|
|
#define I_FRAME 1
|
|
#define P_FRAME 2
|
|
#define B_FRAME 3
|
|
|
|
// The minimum amount of video data necessary to identify frames:
|
|
#define MINVIDEODATA (16*1024) // just a safe guess (max. size of any frame block, plus some safety)
|
|
|
|
#define RESULTBUFFERSIZE (MINVIDEODATA * 4)
|
|
|
|
class cTS2PES;
|
|
|
|
class cRemux {
|
|
private:
|
|
bool exitOnFailure;
|
|
bool synced;
|
|
int skipped;
|
|
int vPid, aPid1, aPid2, dPid1, dPid2;
|
|
cTS2PES *vTS2PES, *aTS2PES1, *aTS2PES2, *dTS2PES1, *dTS2PES2;
|
|
uchar resultBuffer[RESULTBUFFERSIZE];
|
|
int resultCount;
|
|
int resultDelivered;
|
|
int GetPid(const uchar *Data);
|
|
int GetPacketLength(const uchar *Data, int Count, int Offset);
|
|
int ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &PictureType);
|
|
public:
|
|
cRemux(int VPid, int APid1, int APid2, int DPid1, int DPid2, bool ExitOnFailure = false);
|
|
~cRemux();
|
|
uchar *Process(const uchar *Data, int &Count, int &Result, uchar *PictureType = NULL);
|
|
};
|
|
|
|
#endif // __REMUX_H
|