vdr 2.6.3
player.c
Go to the documentation of this file.
1/*
2 * player.c: The basic player interface
3 *
4 * See the main source file 'vdr.c' for copyright information and
5 * how to reach the author.
6 *
7 * $Id: player.c 4.1 2020/05/18 16:47:29 kls Exp $
8 */
9
10#include "player.h"
11#include "i18n.h"
12
13// --- cPlayer ---------------------------------------------------------------
14
16{
17 device = NULL;
18 playMode = PlayMode;
19}
20
22{
23 Detach();
24}
25
26int cPlayer::PlayPes(const uchar *Data, int Length, bool VideoOnly)
27{
28 if (device)
29 return device->PlayPes(Data, Length, VideoOnly);
30 esyslog("ERROR: attempt to use cPlayer::PlayPes() without attaching to a cDevice!");
31 return -1;
32}
33
35{
36 if (device)
37 device->Detach(this);
38}
39
40// --- cControl --------------------------------------------------------------
41
44
45cControl::cControl(cPlayer *Player, bool Hidden)
46{
47 attached = false;
48 hidden = Hidden;
49 player = Player;
50}
51
53{
54 if (this == control)
55 control = NULL;
56}
57
59{
60 return NULL;
61}
62
64{
65 return NULL;
66}
67
69{
70 return "";
71}
72
73#if DEPRECATED_CCONTROL
75{
76 cMutexLock MutexLock(&mutex);
77 return (control && (!control->hidden || Hidden)) ? control : NULL;
78}
79#endif
80
81cControl *cControl::Control(cMutexLock &MutexLock, bool Hidden)
82{
83 MutexLock.Lock(&mutex);
84 return (control && (!control->hidden || Hidden)) ? control : NULL;
85}
86
88{
89 cMutexLock MutexLock(&mutex);
90 cControl *c = control; // keeps control from pointing to uninitialized memory TODO obsolete once DEPRECATED_CCONTROL is gone
92 delete c;
93}
94
96{
97 cMutexLock MutexLock(&mutex);
99 if (cDevice::PrimaryDevice()->AttachPlayer(control->player))
100 control->attached = true;
101 else {
102 Skins.Message(mtError, tr("Channel locked (recording)!"));
103 Shutdown();
104 }
105 }
106}
107
109{
110 cMutexLock MutexLock(&mutex);
111 cControl *c = control; // avoids recursions
112 control = NULL;
113 delete c;
114}
virtual cString GetHeader(void)
This can be used by players that don't play a cRecording, but rather do something completely differen...
Definition: player.c:68
static void Shutdown(void)
Definition: player.c:108
static cControl * control
Definition: player.h:82
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition: player.c:58
static cMutex mutex
Definition: player.h:83
virtual const cRecording * GetRecording(void)
Returns the cRecording that is currently being replayed, or NULL if this player is not playing a cRec...
Definition: player.c:63
virtual ~cControl()
Definition: player.c:52
static void Attach(void)
Definition: player.c:95
bool hidden
Definition: player.h:85
static cControl * Control(bool Hidden=false)
Old version of this function, for backwards compatibility with plugins.
Definition: player.c:74
bool attached
Definition: player.h:84
static void Launch(cControl *Control)
Definition: player.c:87
cControl(cPlayer *Player, bool Hidden=false)
Definition: player.c:45
cPlayer * player
Definition: player.h:87
virtual int PlayPes(const uchar *Data, int Length, bool VideoOnly=false)
Plays all valid PES packets in Data with the given Length.
Definition: device.c:1520
static cDevice * PrimaryDevice(void)
Returns the primary device.
Definition: device.h:148
void Detach(cFilter *Filter)
Detaches the given filter from this device.
Definition: device.c:710
bool Lock(cMutex *Mutex)
Definition: thread.c:400
Definition: thread.h:67
Definition: player.h:16
void Detach(void)
Definition: player.c:34
int PlayPes(const uchar *Data, int Length, bool VideoOnly=false)
Definition: player.c:26
bool IsAttached(void)
Definition: player.h:54
virtual ~cPlayer()
Definition: player.c:21
ePlayMode playMode
Definition: player.h:20
cPlayer(ePlayMode PlayMode=pmAudioVideo)
Definition: player.c:15
cDevice * device
Definition: player.h:19
eKeys Message(eMessageType Type, const char *s, int Seconds=0)
Displays the given message, either through a currently visible display object that is capable of doin...
Definition: skins.c:250
Definition: tools.h:178
ePlayMode
Definition: device.h:39
#define tr(s)
Definition: i18n.h:85
cSkins Skins
Definition: skins.c:219
@ mtError
Definition: skins.h:37
unsigned char uchar
Definition: tools.h:31
#define esyslog(a...)
Definition: tools.h:35