vdr
1.7.27
|
#include <device.h>
Public Member Functions | |
cTSBuffer (int File, int Size, int CardIndex) | |
~cTSBuffer () | |
uchar * | Get (void) |
cTSBuffer (int File, int Size, int CardIndex) | |
~cTSBuffer () | |
uchar * | Get (void) |
Private Member Functions | |
virtual void | Action (void) |
virtual void | Action (void) |
Private Attributes | |
int | f |
int | cardIndex |
bool | delivered |
cRingBufferLinear * | ringBuffer |
Derived cDevice classes that can receive channels will have to provide Transport Stream (TS) packets one at a time.
cTSBuffer implements a simple buffer that allows the device to read a larger amount of data from the driver with each call to Read(), thus avoiding the overhead of getting each TS packet separately from the driver. It also makes sure the returned data points to a TS packet and automatically re-synchronizes after broken packets.
cTSBuffer::cTSBuffer | ( | int | File, |
int | Size, | ||
int | CardIndex | ||
) |
Definition at line 1720 of file device.c.
References cardIndex, delivered, f, ringBuffer, cThread::SetDescription(), cRingBuffer::SetTimeouts(), cThread::Start(), and TS_SIZE.
Definition at line 1731 of file device.c.
References cThread::Cancel(), and ringBuffer.
cTSBuffer::cTSBuffer | ( | int | File, |
int | Size, | ||
int | CardIndex | ||
) |
void cTSBuffer::Action | ( | void | ) | [private, virtual] |
A derived cThread class must implement the code it wants to execute as a separate thread in this function.
If this is a loop, it must check Running() repeatedly to see whether it's time to stop.
Implements cThread.
Definition at line 1737 of file device.c.
References cardIndex, esyslog, f, FATALERRNO, LOG_ERROR, cPoller::Poll(), cRingBufferLinear::Read(), ringBuffer, and cThread::Running().
virtual void cTSBuffer::Action | ( | void | ) | [private, virtual] |
uchar* cTSBuffer::Get | ( | void | ) |
uchar * cTSBuffer::Get | ( | void | ) |
Definition at line 1759 of file device.c.
References cardIndex, cRingBufferLinear::Del(), delivered, esyslog, cRingBufferLinear::Get(), ringBuffer, TS_SIZE, and TS_SYNC_BYTE.
Referenced by cDvbDevice::GetTSPacket().
int cTSBuffer::cardIndex [private] |
Definition at line 769 of file device.h.
Referenced by Action(), cTSBuffer(), and Get().
bool cTSBuffer::delivered [private] |
Definition at line 770 of file device.h.
Referenced by cTSBuffer(), and Get().
int cTSBuffer::f [private] |
Definition at line 768 of file device.h.
Referenced by Action(), and cTSBuffer().
cRingBufferLinear * cTSBuffer::ringBuffer [private] |
Definition at line 771 of file device.h.
Referenced by Action(), cTSBuffer(), Get(), and ~cTSBuffer().