MythTV  master
capture.h
Go to the documentation of this file.
1 // Program Name: capture.h
3 // Created : Sep. 21, 2011
4 //
5 // Copyright (c) 2011 Robert McNamara <rmcnamara@mythtv.org>
6 //
7 // This program is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 2 of the License, or
10 // (at your option) any later version.
11 //
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //
25 
26 #ifndef CAPTURE_H
27 #define CAPTURE_H
28 
29 #include "libmythbase/mythconfig.h"
30 #if CONFIG_QTSCRIPT
31 #include <QScriptEngine>
32 #endif
33 
35 
36 class Capture : public CaptureServices
37 {
38  Q_OBJECT
39 
40  public:
41 
42  Q_INVOKABLE explicit Capture( QObject */*parent*/ = nullptr ) {}
43 
44  public:
45 
46  DTC::CaptureCardList* GetCaptureCardList ( const QString &HostName,
47  const QString &CardType ) override; // CaptureServices
48 
49  DTC::CaptureCard* GetCaptureCard ( int CardId ) override; // CaptureServices
50 
51  bool RemoveCaptureCard ( int CardId ) override; // CaptureServices
52 
53  int AddCaptureCard ( const QString &VideoDevice,
54  const QString &AudioDevice,
55  const QString &VBIDevice,
56  const QString &CardType,
58  const QString &HostName,
59  uint DVBSWFilter,
60  uint DVBSatType,
61  bool DVBWaitForSeqStart,
62  bool SkipBTAudio,
63  bool DVBOnDemand,
64  uint DVBDiSEqCType,
66  const QString &FirewireModel,
71  uint Contrast,
73  uint Colour,
74  uint Hue,
75  uint DiSEqCId,
76  bool DVBEITScan) override; // CaptureServices
77 
78  bool UpdateCaptureCard ( int CardId,
79  const QString &Setting,
80  const QString &Value ) override; // CaptureServices
81 
82  // Card Inputs
83 
84  bool RemoveCardInput ( int CardInputId) override; // CaptureServices
85 
86  int AddCardInput ( uint CardId,
87  uint SourceId,
88  const QString &InputName,
89  const QString &ExternalCommand,
90  const QString &ChangerDevice,
91  const QString &ChangerModel,
92  const QString &HostName,
93  const QString &TuneChan,
94  const QString &StartChan,
95  const QString &DisplayName,
96  bool DishnetEIT,
97  uint RecPriority,
98  uint Quicktune,
99  uint SchedOrder,
100  uint LiveTVOrder) override; // CaptureServices
101 
102  bool UpdateCardInput ( int CardInputId,
103  const QString &Setting,
104  const QString &Value ) override; // CaptureServices
105 
106 };
107 
108 // --------------------------------------------------------------------------
109 // The following class wrapper is due to a limitation in Qt Script Engine. It
110 // requires all methods that return pointers to user classes that are derived from
111 // QObject actually return QObject* (not the user class *). If the user class pointer
112 // is returned, the script engine treats it as a QVariant and doesn't create a
113 // javascript prototype wrapper for it.
114 //
115 // This class allows us to keep the rich return types in the main API class while
116 // offering the script engine a class it can work with.
117 //
118 // Only API Classes that return custom classes needs to implement these wrappers.
119 //
120 // We should continue to look for a cleaning solution to this problem.
121 // --------------------------------------------------------------------------
122 
123 #if CONFIG_QTSCRIPT
124 class ScriptableCapture : public QObject
125 {
126  Q_OBJECT
127 
128  private:
129 
130  Capture m_obj;
131  QScriptEngine *m_pEngine;
132 
133  public:
134 
135  Q_INVOKABLE explicit ScriptableCapture( QScriptEngine *pEngine, QObject *parent = nullptr ) : QObject( parent )
136  {
137  m_pEngine = pEngine;
138  }
139 
140  public slots:
141 
142  bool RemoveCaptureCard ( int Id )
143  {
144  SCRIPT_CATCH_EXCEPTION( false,
145  return m_obj.RemoveCaptureCard( Id );
146  )
147  }
148 
149  bool AddCaptureCard ( const QString &VideoDevice,
150  const QString &AudioDevice,
151  const QString &VBIDevice,
152  const QString &CardType,
153  const uint AudioRateLimit,
154  const QString &HostName,
155  const uint DVBSWFilter,
156  const uint DVBSatType,
157  bool DVBWaitForSeqStart,
158  bool SkipBTAudio,
159  bool DVBOnDemand,
160  const uint DVBDiSEqCType,
161  const uint FirewireSpeed,
162  const QString &FirewireModel,
163  const uint FirewireConnection,
164  const uint SignalTimeout,
165  const uint ChannelTimeout,
166  const uint DVBTuningDelay,
167  const uint Contrast,
168  const uint Brightness,
169  const uint Colour,
170  const uint Hue,
171  const uint DiSEqCId,
172  bool DVBEITScan)
173  {
174  SCRIPT_CATCH_EXCEPTION( false,
176  AudioRateLimit, HostName, DVBSWFilter,
177  DVBSatType, DVBWaitForSeqStart, SkipBTAudio, DVBOnDemand,
180  Colour, Hue, DiSEqCId, DVBEITScan);
181  )
182  }
183 };
184 
185 
186 // NOLINTNEXTLINE(modernize-use-auto)
187 Q_SCRIPT_DECLARE_QMETAOBJECT_MYTHTV( ScriptableCapture, QObject*);
188 #endif
189 
190 #endif
InputName
Definition: videosource.cpp:2780
CaptureServices
Definition: captureServices.h:40
Capture
Definition: capture.h:36
Brightness
Definition: channelsettings.cpp:524
Capture::RemoveCaptureCard
bool RemoveCaptureCard(int CardId) override
Definition: capture.cpp:239
Hue
Definition: channelsettings.cpp:546
VideoDevice
Definition: videosource.cpp:789
VBIDevice
Definition: videosource.cpp:902
Colour
Definition: channelsettings.cpp:535
AudioRateLimit
Definition: videosource.cpp:1073
DTC::CaptureCardList
Definition: captureCardList.h:24
DVBEITScan
Definition: videosource.cpp:1233
Capture::AddCaptureCard
int AddCaptureCard(const QString &VideoDevice, const QString &AudioDevice, const QString &VBIDevice, const QString &CardType, uint AudioRateLimit, const QString &HostName, uint DVBSWFilter, uint DVBSatType, bool DVBWaitForSeqStart, bool SkipBTAudio, bool DVBOnDemand, uint DVBDiSEqCType, uint FirewireSpeed, const QString &FirewireModel, uint FirewireConnection, uint SignalTimeout, uint ChannelTimeout, uint DVBTuningDelay, uint Contrast, uint Brightness, uint Colour, uint Hue, uint DiSEqCId, bool DVBEITScan) override
Definition: capture.cpp:253
Capture::AddCardInput
int AddCardInput(uint CardId, uint SourceId, const QString &InputName, const QString &ExternalCommand, const QString &ChangerDevice, const QString &ChangerModel, const QString &HostName, const QString &TuneChan, const QString &StartChan, const QString &DisplayName, bool DishnetEIT, uint RecPriority, uint Quicktune, uint SchedOrder, uint LiveTVOrder) override
Definition: capture.cpp:318
AudioDevice
Definition: videosource.cpp:1001
Q_SCRIPT_DECLARE_QMETAOBJECT_MYTHTV
#define Q_SCRIPT_DECLARE_QMETAOBJECT_MYTHTV(T, _Arg1)
Definition: service.h:113
FirewireConnection
Definition: videosource.cpp:1343
Capture::Capture
Q_INVOKABLE Capture(QObject *=nullptr)
Definition: capture.h:42
LiveTVOrder
Definition: videosource.cpp:3132
FirewireSpeed
Definition: videosource.cpp:1356
Contrast
Definition: channelsettings.cpp:513
uint
unsigned int uint
Definition: compat.h:81
SCRIPT_CATCH_EXCEPTION
#define SCRIPT_CATCH_EXCEPTION(default, code)
Definition: service.h:85
DVBTuningDelay
Definition: videosource.cpp:1249
FirewireModel
Definition: videosource.h:694
CardType
Definition: videosource.h:326
Capture::UpdateCaptureCard
bool UpdateCaptureCard(int CardId, const QString &Setting, const QString &Value) override
Definition: capture.cpp:296
Setting
QMap< QString, bool > Setting
Definition: mythsystemlegacy.h:58
Capture::UpdateCardInput
bool UpdateCardInput(int CardInputId, const QString &Setting, const QString &Value) override
Definition: capture.cpp:351
DVBOnDemand
Definition: videosource.cpp:1218
Capture::RemoveCardInput
bool RemoveCardInput(int CardInputId) override
Definition: capture.cpp:308
captureServices.h
DTC::CaptureCard
Definition: captureCard.h:24
SignalTimeout
Definition: videosource.cpp:1024
Capture::GetCaptureCard
DTC::CaptureCard * GetCaptureCard(int CardId) override
Definition: capture.cpp:151
Capture::GetCaptureCardList
DTC::CaptureCardList * GetCaptureCardList(const QString &HostName, const QString &CardType) override
Definition: capture.cpp:46
ChannelTimeout
Definition: videosource.cpp:1049