mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 19:16:51 +02:00
d3df5d07a1
bits like HEAD and resume.# support
69 lines
1.4 KiB
C
69 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(RecPlayer *RecPlayer, const cServerConnection *Connection, int64_t StartOffset):
|
|
cStreamdevStreamer("streamdev-recstreaming", Connection),
|
|
m_RecPlayer(RecPlayer),
|
|
m_StartOffset(StartOffset),
|
|
m_From(0L)
|
|
{
|
|
Dprintf("New rec streamer\n");
|
|
m_To = (int64_t) m_RecPlayer->getLengthBytes() - StartOffset - 1;
|
|
}
|
|
|
|
cStreamdevRecStreamer::~cStreamdevRecStreamer()
|
|
{
|
|
Dprintf("Desctructing rec streamer\n");
|
|
Stop();
|
|
}
|
|
|
|
int64_t cStreamdevRecStreamer::SetRange(int64_t &From, int64_t &To)
|
|
{
|
|
int64_t l = (int64_t) GetLength();
|
|
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_StartOffset + m_From, sizeof(m_Buffer));
|
|
return m_Buffer;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
cString cStreamdevRecStreamer::ToText() const
|
|
{
|
|
return "REPLAY";
|
|
}
|