blob: a5d2658fc2a79c2c63f2f2492a1b85c76d70b82d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/*
* recv.h: A plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id$
*/
#ifndef __recv_h_
#define __recv_h_
#include <vdr/receiver.h>
#include <vdr/filter.h>
#include <vdr/thread.h>
#include <vdr/ringbuffer.h>
#include <vdr/recording.h>
#include "demux.h"
#include "decoder.h"
#include "audio.h"
#include "video.h"
#include "common.h"
#if (APIVERSNUM >= 10700)
#include <linux/dvb/frontend.h>
#endif
#define MEGATS(n) ((n)*1024*1880)
class cMarkAdRingBuffer : public cRingBufferFrame
{
private:
int pid;
public:
cMarkAdRingBuffer(int Size) : cRingBufferFrame(Size, true) {};
~cMarkAdRingBuffer()
{
Clear();
}
void Wait(void)
{
WaitForGet();
}
void Signal(void)
{
EnableGet();
}
bool Check(int Size)
{
return (Free() >= Size);
}
};
class cMarkAdReceiver : public cReceiver, public cThread
{
private:
int recvnumber;
char *filename;
int lastiframe;
char *strcatrealloc(char *dest, const char *src);
cMarks marks;
cIndexFile *Index;
int LastIFrame();
MarkAdContext macontext;
cMarkAdDecoder *decoder;
cMarkAdCommon *common;
cMarkAdAudio *audio;
cMarkAdVideo *video;
cMarkAdDemux *video_demux;
cMarkAdDemux *mp2_demux;
cMarkAdDemux *ac3_demux;
void AddMark(MarkAdMark *mark, int Priority);
protected:
virtual void Activate(bool On);
virtual void Receive(uchar *Data, int Length);
void Action();
cMarkAdRingBuffer buffer;
bool running;
public:
cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *Timer);
const char *FileName()
{
return (const char *) filename;
}
virtual ~cMarkAdReceiver();
};
#endif
|