mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 19:16:51 +02:00
68 lines
1.4 KiB
C
68 lines
1.4 KiB
C
|
#include "remux/ts2ps.h"
|
||
|
#include "remux/ts2pes.h"
|
||
|
#include "remux/ts2es.h"
|
||
|
#include "remux/extern.h"
|
||
|
|
||
|
#include <vdr/ringbuffer.h>
|
||
|
#include "server/recstreamer.h"
|
||
|
#include "server/connection.h"
|
||
|
#include "common.h"
|
||
|
|
||
|
using namespace Streamdev;
|
||
|
|
||
|
// --- cStreamdevRecStreamer -------------------------------------------------
|
||
|
|
||
|
cStreamdevRecStreamer::cStreamdevRecStreamer(cRecording *Rec, const cServerConnection *Connection):
|
||
|
cStreamdevStreamer("streamdev-recstreaming", Connection),
|
||
|
m_RecPlayer(Rec),
|
||
|
m_From(0L)
|
||
|
{
|
||
|
Dprintf("New rec streamer\n");
|
||
|
m_To = (int64_t) m_RecPlayer.getLengthBytes() - 1;
|
||
|
}
|
||
|
|
||
|
cStreamdevRecStreamer::~cStreamdevRecStreamer()
|
||
|
{
|
||
|
Dprintf("Desctructing rec streamer\n");
|
||
|
Stop();
|
||
|
}
|
||
|
|
||
|
int64_t cStreamdevRecStreamer::SetRange(int64_t &From, int64_t &To)
|
||
|
{
|
||
|
int64_t l = (int64_t) m_RecPlayer.getLengthBytes();
|
||
|
if (From < 0L) {
|
||
|
From += l;
|
||
|
if (From < 0L)
|
||
|
From = 0L;
|
||
|
To = l - 1;
|
||
|
}
|
||
|
else {
|
||
|
if (To < 0L)
|
||
|
To += l;
|
||
|
else if (To >= l)
|
||
|
To = l - 1;
|
||
|
if (From > To) {
|
||
|
// invalid range - return whole content
|
||
|
From = 0L;
|
||
|
To = l - 1;
|
||
|
}
|
||
|
}
|
||
|
m_From = From;
|
||
|
m_To = To;
|
||
|
return m_To - m_From + 1;
|
||
|
}
|
||
|
|
||
|
uchar* cStreamdevRecStreamer::GetFromReceiver(int &Count)
|
||
|
{
|
||
|
if (m_From <= m_To) {
|
||
|
Count = (int) m_RecPlayer.getBlock(m_Buffer, m_From, sizeof(m_Buffer));
|
||
|
return m_Buffer;
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
cString cStreamdevRecStreamer::ToText() const
|
||
|
{
|
||
|
return "REPLAY";
|
||
|
}
|