1 | Index: configure
|
---|
2 | ===================================================================
|
---|
3 | --- configure (revision 6975)
|
---|
4 | +++ configure (working copy)
|
---|
5 | @@ -47,6 +47,7 @@
|
---|
6 | lirc="yes"
|
---|
7 | joystick_menu="yes"
|
---|
8 | firewire_cable_box="yes"
|
---|
9 | +dbox2_dvb_box="yes"
|
---|
10 | x11="yes"
|
---|
11 | xrandr="yes"
|
---|
12 | xv="yes"
|
---|
13 | @@ -163,6 +164,7 @@
|
---|
14 | echo " --disable-lirc disable lirc support (Infrared Remotes)"
|
---|
15 | echo " --disable-joystick-menu disable joystick menu"
|
---|
16 | echo " --disable-firewire disable support for FireWire cable boxes"
|
---|
17 | +echo " --disable-dbox2 disable support for Nokia DBOX2 DVB boxes (or compatibles)"
|
---|
18 | echo " --disable-v4l disable Video4Linux support"
|
---|
19 | echo " --disable-ivtv disable ivtv support (PVR-x50) req. v4l support"
|
---|
20 | #echo " --enable-ivtv-sys-header use ivtv system headers instead of myth headers"
|
---|
21 | @@ -724,6 +726,10 @@
|
---|
22 | ;;
|
---|
23 | --disable-firewire) firewire_cable_box="no"
|
---|
24 | ;;
|
---|
25 | + --enable-dbox2) dbox2_dvb_box="yes"
|
---|
26 | + ;;
|
---|
27 | + --disable-dbox2) dbox2_dvb_box="no"
|
---|
28 | + ;;
|
---|
29 | --enable-dvb) dvb="yes"
|
---|
30 | ;;
|
---|
31 | --disable-dvb) dvb="no"
|
---|
32 | @@ -2540,6 +2546,11 @@
|
---|
33 | echo "CONFIG_FIREWIRE_LIBS=-lraw1394 -liec61883 -lavc1394" >> $MYTH_CONFIG_MAK
|
---|
34 | fi
|
---|
35 |
|
---|
36 | +if test x"$dbox2_dvb_box" = x"yes" ; then
|
---|
37 | + CCONFIG="$CCONFIG using_dbox2"
|
---|
38 | + CONFIG_DEFINES="$CONFIG_DEFINES USING_DBOX2"
|
---|
39 | +fi
|
---|
40 | +
|
---|
41 | if test x"$lirc" = x"yes" ; then
|
---|
42 | CCONFIG="$CCONFIG using_lirc"
|
---|
43 | echo "CONFIG_LIRC_LIBS=-llirc_client" >> $MYTH_CONFIG_MAK
|
---|
44 | Index: docs/mythtv-HOWTO.sgml
|
---|
45 | ===================================================================
|
---|
46 | --- docs/mythtv-HOWTO.sgml (revision 6975)
|
---|
47 | +++ docs/mythtv-HOWTO.sgml (working copy)
|
---|
48 | @@ -471,6 +471,10 @@
|
---|
49 | <sect3>Firewire.
|
---|
50 | <p>You may use the Firewire output of the DCT6200 or the SA3250.
|
---|
51 |
|
---|
52 | +<sect3>DBoxII or other devices running Neutrino
|
---|
53 | +<p>You may use the Ethernet port of an DBoxII or a similar device to capture
|
---|
54 | +MPEG2. Your set top box has to be running the Neutrino GUI.
|
---|
55 | +
|
---|
56 | <sect3>USB Capture Devices.
|
---|
57 | <p>The Plextor ConvertX PVR devices are supported through Linux drivers
|
---|
58 | available from <url
|
---|
59 | @@ -6467,7 +6471,27 @@
|
---|
60 |
|
---|
61 | <tt>growisofs -Z /dev/scd0 -dvd-video DVD</tt>
|
---|
62 |
|
---|
63 | +<sect1>Using the DBoxII within MythTV
|
---|
64 | +<p>The configuration of the DBoxII for use within MythTV is tricky
|
---|
65 | +(as of May 16 2005), that's why it's covered here. Your DBoxII has to be
|
---|
66 | +running linux and the Neutrino GUI instead of the stock BetaNova firmware.
|
---|
67 | +For further information, please refer to <url url="http://www.tuxbox.org" name="http://www.tuxbox.org">. Additionally, you need to enable the SPTS mode in
|
---|
68 | +Neutrino.
|
---|
69 |
|
---|
70 | +1.) Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input",
|
---|
71 | +the other values have to be adjusted according to your setup.
|
---|
72 | +The default values, except for the "DBOX2 host ip", should work fine.
|
---|
73 | +2.) Define a new video source. It doesn't need to be configured,
|
---|
74 | +you just need to define it. MythTV grabs the EPG from the DBoxII.
|
---|
75 | +3.) Connect the DBoxII to the newly defined input source in "input connections".
|
---|
76 | +4.) Since channel scanning is not implemented yet, you need to define channels
|
---|
77 | +in the "Channel Editor". Make sure that you use the same value for
|
---|
78 | +"Channel Name" as on the DBoxII. You can get a list of available
|
---|
79 | +channels from the web interface of Neutrino at http://ip-of-your-box:80/.
|
---|
80 | +Associate the channel with your new video source and repeat when needed.
|
---|
81 | +
|
---|
82 | +You may leave the Setup now and proceed as usual.
|
---|
83 | +
|
---|
84 | <sect1>Migrating from XMLTV to DataDirect <label id="MigratingtoDD">
|
---|
85 | <!-- Mostly from a post by Bruce Markey -->
|
---|
86 | <p>DataDirect will use different information for your video sources and
|
---|
87 | Index: libs/libmythtv/libmythtv.pro
|
---|
88 | ===================================================================
|
---|
89 | --- libs/libmythtv/libmythtv.pro (revision 6975)
|
---|
90 | +++ libs/libmythtv/libmythtv.pro (working copy)
|
---|
91 | @@ -241,6 +241,10 @@
|
---|
92 | using_firewire:SOURCES += firewirerecorder.cpp firewirechannel.cpp
|
---|
93 | using_firewire:DEFINES += USING_FIREWIRE
|
---|
94 |
|
---|
95 | + # Support for set top boxes (Nokia DBox2 etc.)
|
---|
96 | + using_dbox2:SOURCES += dbox2recorder.cpp dbox2channel.cpp dbox2epg.cpp
|
---|
97 | + using_dbox2:HEADERS += dbox2recorder.h dbox2channel.h dbox2epg.h
|
---|
98 | +
|
---|
99 | # Support for PVR-150/250/350/500, etc. on Linux
|
---|
100 | using_ivtv:HEADERS += mpegrecorder.h
|
---|
101 | using_ivtv:SOURCES += mpegrecorder.cpp
|
---|
102 | Index: libs/libmythtv/videosource.cpp
|
---|
103 | ===================================================================
|
---|
104 | --- libs/libmythtv/videosource.cpp (revision 6975)
|
---|
105 | +++ libs/libmythtv/videosource.cpp (working copy)
|
---|
106 | @@ -1188,6 +1188,51 @@
|
---|
107 | CaptureCard& parent;
|
---|
108 | };
|
---|
109 |
|
---|
110 | +class DBOX2Port: public LineEditSetting, public CCSetting {
|
---|
111 | + public:
|
---|
112 | + DBOX2Port(const CaptureCard& parent):
|
---|
113 | + CCSetting(parent, "dbox2_port") {
|
---|
114 | + setValue("31338");
|
---|
115 | + setLabel(QObject::tr("DBOX2 Streaming Port"));
|
---|
116 | + setHelpText(QObject::tr("DBOX2 streaming port on your DBOX2."));
|
---|
117 | + }
|
---|
118 | +};
|
---|
119 | +
|
---|
120 | +class DBOX2HttpPort: public LineEditSetting, public CCSetting {
|
---|
121 | + public:
|
---|
122 | + DBOX2HttpPort(const CaptureCard& parent):
|
---|
123 | + CCSetting(parent, "dbox2_httpport") {
|
---|
124 | + setValue("80");
|
---|
125 | + setLabel(QObject::tr("DBOX2 HTTP Port"));
|
---|
126 | + setHelpText(QObject::tr("DBOX2 http port on your DBOX2."));
|
---|
127 | + }
|
---|
128 | +};
|
---|
129 | +class DBOX2Host: public LineEditSetting, public CCSetting {
|
---|
130 | + public:
|
---|
131 | + DBOX2Host(const CaptureCard& parent):
|
---|
132 | + CCSetting(parent, "dbox2_host") {
|
---|
133 | + setValue("dbox");
|
---|
134 | + setLabel(QObject::tr("DBOX2 Host IP"));
|
---|
135 | + setHelpText(QObject::tr("DBOX2 Host IP is the remote device."));
|
---|
136 | + }
|
---|
137 | +};
|
---|
138 | +
|
---|
139 | +class DBOX2ConfigurationGroup: public VerticalConfigurationGroup {
|
---|
140 | +public:
|
---|
141 | + DBOX2ConfigurationGroup(CaptureCard& a_parent):
|
---|
142 | + parent(a_parent) {
|
---|
143 | + setUseLabel(false);
|
---|
144 | + addChild(new DBOX2Port(parent));
|
---|
145 | + addChild(new DBOX2HttpPort(parent));
|
---|
146 | + addChild(new DBOX2Host(parent));
|
---|
147 | + };
|
---|
148 | + private:
|
---|
149 | + CaptureCard& parent;
|
---|
150 | + };
|
---|
151 | +
|
---|
152 | +
|
---|
153 | +
|
---|
154 | +
|
---|
155 | class V4LConfigurationGroup: public VerticalConfigurationGroup
|
---|
156 | {
|
---|
157 | public:
|
---|
158 | @@ -1273,6 +1318,7 @@
|
---|
159 | addTarget("HDTV", new pcHDTVConfigurationGroup(parent));
|
---|
160 | addTarget("MPEG", new MPEGConfigurationGroup(parent));
|
---|
161 | addTarget("FIREWIRE", new FirewireConfigurationGroup(parent));
|
---|
162 | + addTarget("DBOX2", new DBOX2ConfigurationGroup(parent));
|
---|
163 | }
|
---|
164 |
|
---|
165 | void CaptureCardGroup::triggerChanged(const QString& value)
|
---|
166 | @@ -1296,7 +1342,7 @@
|
---|
167 | {
|
---|
168 | MSqlQuery query(MSqlQuery::InitCon());
|
---|
169 | query.prepare("SELECT cardtype, videodevice, cardid, "
|
---|
170 | - " firewire_port, firewire_node "
|
---|
171 | + " firewire_port, firewire_node, dbox2_port, dbox2_host, dbox2_httpport "
|
---|
172 | " FROM capturecard WHERE hostname = :HOSTNAME ;");
|
---|
173 | query.bindValue(":HOSTNAME", gContext->GetHostName());
|
---|
174 |
|
---|
175 | @@ -1313,6 +1359,13 @@
|
---|
176 | query.value(4).toString() + "]",
|
---|
177 | query.value(2).toString());
|
---|
178 | }
|
---|
179 | + else if(query.value(0).toString() == "DBOX2") {
|
---|
180 | + setting->addSelection("[ " + query.value(0).toString() + " " +
|
---|
181 | + "Host IP: " + query.value(6).toString() + ", " +
|
---|
182 | + "Streaming-Port: " + query.value(5).toString() + ", " +
|
---|
183 | + "Http-Port: " + query.value(7).toString() +
|
---|
184 | + "] ", query.value(2).toString());
|
---|
185 | + }
|
---|
186 | else
|
---|
187 | {
|
---|
188 | setting->addSelection(
|
---|
189 | @@ -1353,6 +1406,7 @@
|
---|
190 | setting->addSelection(QObject::tr("FireWire Input"),
|
---|
191 | "FIREWIRE");
|
---|
192 | setting->addSelection(QObject::tr("USB Mpeg-4 Encoder (Plextor ConvertX, etc)"), "GO7007");
|
---|
193 | + setting->addSelection(QObject::tr("DBOX2 Input"), "DBOX2");
|
---|
194 | }
|
---|
195 |
|
---|
196 | class CardID: public SelectLabelSetting, public CISetting {
|
---|
197 | @@ -1903,7 +1957,7 @@
|
---|
198 | MSqlQuery capturecards(MSqlQuery::InitCon());
|
---|
199 |
|
---|
200 | capturecards.prepare("SELECT cardid, videodevice, cardtype, "
|
---|
201 | - " dvb_diseqc_type, firewire_port, firewire_node "
|
---|
202 | + " dvb_diseqc_type, firewire_port, firewire_node, dbox2_port, dbox2_host, dbox2_httpport "
|
---|
203 | "FROM capturecard "
|
---|
204 | "WHERE hostname = :HOSTNAME");
|
---|
205 | capturecards.bindValue(":HOSTNAME", gContext->GetHostName());
|
---|
206 | @@ -1962,6 +2016,29 @@
|
---|
207 | addSelection(label, index);
|
---|
208 | }
|
---|
209 | }
|
---|
210 | + else if(capturecards.value(2).toString() == "DBOX2")
|
---|
211 | + {
|
---|
212 | + inputs = QStringList("MPEG2TS");
|
---|
213 | + for (QStringList::iterator i = inputs.begin();
|
---|
214 | + i != inputs.end(); ++i)
|
---|
215 | + {
|
---|
216 | + CardInput* cardinput = new CardInput();
|
---|
217 | + cardinput->loadByInput(cardid, *i);
|
---|
218 | + cardinputs.push_back(cardinput);
|
---|
219 | + QString index = QString::number(cardinputs.size()-1);
|
---|
220 | +
|
---|
221 | + QString label;
|
---|
222 | + label = QString("%1 (%2) -> %3")
|
---|
223 | + .arg("[ " + capturecards.value(2).toString() +
|
---|
224 | + "IP: " + capturecards.value(7).toString() +
|
---|
225 | + ", Port: " + capturecards.value(6).toString() +
|
---|
226 | + ", HttpPort: " + capturecards.value(8).toString() +
|
---|
227 | + " ]")
|
---|
228 | + .arg(*i)
|
---|
229 | + .arg(cardinput->getSourceName());
|
---|
230 | + addSelection(label, index);
|
---|
231 | + }
|
---|
232 | + }
|
---|
233 | else
|
---|
234 | {
|
---|
235 | inputs = VideoDevice::probeInputs(videodevice);
|
---|
236 | Index: libs/libmythtv/dbcheck.cpp
|
---|
237 | ===================================================================
|
---|
238 | --- libs/libmythtv/dbcheck.cpp (revision 6975)
|
---|
239 | +++ libs/libmythtv/dbcheck.cpp (working copy)
|
---|
240 | @@ -10,7 +10,7 @@
|
---|
241 | #include "mythdbcon.h"
|
---|
242 |
|
---|
243 | /// This is the DB schema version expected by the running MythTV instance.
|
---|
244 | -const QString currentDatabaseVersion = "1089";
|
---|
245 | +const QString currentDatabaseVersion = "1090";
|
---|
246 |
|
---|
247 | static bool UpdateDBVersionNumber(const QString &newnumber);
|
---|
248 | static bool performActualUpdate(const QString updates[], QString version,
|
---|
249 | @@ -1977,6 +1977,20 @@
|
---|
250 | return false;
|
---|
251 | }
|
---|
252 |
|
---|
253 | + if (dbver == "1089")
|
---|
254 | + {
|
---|
255 | + const QString updates[] = {
|
---|
256 | + "INSERT INTO profilegroups SET name = 'DBOX2 Input', cardtype = 'DBOX2', is_default = 1;",
|
---|
257 | + "ALTER TABLE capturecard ADD COLUMN dbox2_port INT UNSIGNED NOT NULL DEFAULT 31338;",
|
---|
258 | + "ALTER TABLE capturecard ADD COLUMN dbox2_httpport INT UNSIGNED NOT NULL DEFAULT 80;",
|
---|
259 | + "ALTER TABLE capturecard ADD COLUMN dbox2_host varchar(32) NULL;",
|
---|
260 | + ""
|
---|
261 | + };
|
---|
262 | +
|
---|
263 | + if (!performActualUpdate(updates, "1090", dbver))
|
---|
264 | + return false;
|
---|
265 | + }
|
---|
266 | +
|
---|
267 | // Drop xvmc_buffer_settings at some point
|
---|
268 | // Drop dead DVB tables eventually, too
|
---|
269 |
|
---|
270 | Index: libs/libmythtv/tv_rec.cpp
|
---|
271 | ===================================================================
|
---|
272 | --- libs/libmythtv/tv_rec.cpp (revision 6975)
|
---|
273 | +++ libs/libmythtv/tv_rec.cpp (working copy)
|
---|
274 | @@ -53,6 +53,11 @@
|
---|
275 | #include "firewirechannel.h"
|
---|
276 | #endif
|
---|
277 |
|
---|
278 | +#ifdef USING_DBOX2
|
---|
279 | +#include "dbox2recorder.h"
|
---|
280 | +#include "dbox2channel.h"
|
---|
281 | +#endif
|
---|
282 | +
|
---|
283 | const int TVRec::kRequestBufferSize = 256*1000;
|
---|
284 |
|
---|
285 | /** \class TVRec
|
---|
286 | @@ -128,7 +133,7 @@
|
---|
287 | GetDevices(m_capturecardnum, videodev, vbidev,
|
---|
288 | audiodev, audiosamplerate,
|
---|
289 | inputname, startchannel, cardtype, dvb_options,
|
---|
290 | - firewire_options, skip_btaudio);
|
---|
291 | + firewire_options, dbox2_options, skip_btaudio);
|
---|
292 |
|
---|
293 | if (cardtype == "DVB")
|
---|
294 | {
|
---|
295 | @@ -173,6 +178,23 @@
|
---|
296 | return false;
|
---|
297 | #endif
|
---|
298 | }
|
---|
299 | + else if (cardtype == "DBOX2")
|
---|
300 | + {
|
---|
301 | +#ifdef USING_DBOX2
|
---|
302 | + channel = new DBox2Channel(this, &dbox2_options, m_capturecardnum);
|
---|
303 | + channel->Open();
|
---|
304 | + if (inputname.isEmpty())
|
---|
305 | + channel->SetChannelByString(startchannel);
|
---|
306 | + else
|
---|
307 | + channel->SwitchToInput(inputname, startchannel);
|
---|
308 | +#else
|
---|
309 | + VERBOSE(VB_IMPORTANT, "ERROR: DBOX2 Input configured, "
|
---|
310 | + "but no DBOX2 support compiled in!");
|
---|
311 | + VERBOSE(VB_IMPORTANT, "Remove the card from configuration, "
|
---|
312 | + "or recompile MythTV.");
|
---|
313 | + exit(-20);
|
---|
314 | +#endif
|
---|
315 | + }
|
---|
316 | else if ((cardtype == "MPEG") && (videodev.lower().left(5) == "file:"))
|
---|
317 | {
|
---|
318 | // No need to initialize channel..
|
---|
319 | @@ -834,6 +856,23 @@
|
---|
320 | errored = true;
|
---|
321 | #endif
|
---|
322 | }
|
---|
323 | + else if (cardtype == "DBOX2")
|
---|
324 | + {
|
---|
325 | +#ifdef USING_DBOX2
|
---|
326 | + VERBOSE(VB_GENERAL,QString("TVRec::SetupRecorder() Initializing DBOX2 on Host: %1, Streaming-Port: %2, Http-Port: %3")
|
---|
327 | + .arg(dbox2_options.host)
|
---|
328 | + .arg(dbox2_options.port)
|
---|
329 | + .arg(dbox2_options.httpport));
|
---|
330 | + recorder = new DBox2Recorder(dynamic_cast<DBox2Channel*>(channel), m_capturecardnum);
|
---|
331 | + recorder->SetRingBuffer(rbuffer);
|
---|
332 | + recorder->SetOptionsFromProfile(&profile, videodev, audiodev, vbidev, ispip);
|
---|
333 | + recorder->SetOption("port", dbox2_options.port);
|
---|
334 | + recorder->SetOption("host", dbox2_options.host);
|
---|
335 | + recorder->SetOption("httpport", dbox2_options.httpport);
|
---|
336 | + recorder->Initialize();
|
---|
337 | +#endif
|
---|
338 | + return;
|
---|
339 | + }
|
---|
340 | else if (cardtype == "DVB")
|
---|
341 | {
|
---|
342 | #ifdef USING_DVB
|
---|
343 | @@ -1307,7 +1346,7 @@
|
---|
344 | void TVRec::GetDevices(int cardnum, QString &video, QString &vbi,
|
---|
345 | QString &audio, int &rate, QString &defaultinput,
|
---|
346 | QString &startchan, QString &type,
|
---|
347 | - dvb_options_t &dvb_opts, firewire_options_t &firewire_opts,
|
---|
348 | + dvb_options_t &dvb_opts, firewire_options_t &firewire_opts, dbox2_options_t &dbox2_opts,
|
---|
349 | bool &skip_bt)
|
---|
350 | {
|
---|
351 | video = "";
|
---|
352 | @@ -1328,7 +1367,7 @@
|
---|
353 | "dvb_wait_for_seqstart,dvb_dmx_buf_size,"
|
---|
354 | "dvb_pkt_buf_size, skipbtaudio, dvb_on_demand,"
|
---|
355 | "firewire_port, firewire_node, firewire_speed,"
|
---|
356 | - "firewire_model, firewire_connection "
|
---|
357 | + "firewire_model, firewire_connection, dbox2_port, dbox2_host, dbox2_httpport "
|
---|
358 | "FROM capturecard WHERE cardid = :CARDID ;");
|
---|
359 | query.bindValue(":CARDID", cardnum);
|
---|
360 |
|
---|
361 | @@ -1377,6 +1416,13 @@
|
---|
362 | if (test != QString::null)
|
---|
363 | firewire_opts.model = QString::fromUtf8(test);
|
---|
364 | firewire_opts.connection = query.value(17).toInt();
|
---|
365 | +
|
---|
366 | + dbox2_opts.port = query.value(18).toInt();
|
---|
367 | + dbox2_opts.httpport = query.value(20).toInt();
|
---|
368 | + test = query.value(19).toString();
|
---|
369 | + if (test != QString::null)
|
---|
370 | + dbox2_opts.host = QString::fromUtf8(test);
|
---|
371 | +
|
---|
372 | }
|
---|
373 |
|
---|
374 | query.prepare("SELECT if(startchan!='', startchan, '3') "
|
---|
375 | Index: libs/libmythtv/tv_rec.h
|
---|
376 | ===================================================================
|
---|
377 | --- libs/libmythtv/tv_rec.h (revision 6975)
|
---|
378 | +++ libs/libmythtv/tv_rec.h (working copy)
|
---|
379 | @@ -51,6 +51,13 @@
|
---|
380 | QString model;
|
---|
381 | } firewire_options_t;
|
---|
382 |
|
---|
383 | +typedef struct _dbox2_options_t
|
---|
384 | +{
|
---|
385 | + int port;
|
---|
386 | + int httpport;
|
---|
387 | + QString host;
|
---|
388 | +} dbox2_options_t;
|
---|
389 | +
|
---|
390 | class TVRec
|
---|
391 | {
|
---|
392 | public:
|
---|
393 | @@ -188,7 +195,8 @@
|
---|
394 | void GetDevices(int cardnum, QString &video, QString &vbi, QString &audio,
|
---|
395 | int &rate, QString &defaultinput, QString &startchannel,
|
---|
396 | QString &type, dvb_options_t &dvb_opts,
|
---|
397 | - firewire_options_t &firewire_opts, bool &skip_bt);
|
---|
398 | + firewire_options_t &firewire_opts, dbox2_options_t &dbox2_opts,
|
---|
399 | + bool &skip_bt);
|
---|
400 |
|
---|
401 | void SetupRecorder(class RecordingProfile& profile);
|
---|
402 | void TeardownRecorder(bool killFile = false);
|
---|
403 | @@ -240,11 +248,12 @@
|
---|
404 | QString liveTVRingBufLoc;
|
---|
405 | QString recprefix;
|
---|
406 |
|
---|
407 | - // Configuration variables from setup rutines
|
---|
408 | + // Configuration variables from setup routines
|
---|
409 | int m_capturecardnum;
|
---|
410 | bool ispip;
|
---|
411 | dvb_options_t dvb_options;
|
---|
412 | firewire_options_t firewire_options;
|
---|
413 | + dbox2_options_t dbox2_options;
|
---|
414 |
|
---|
415 | // State variables
|
---|
416 | QMutex stateChangeLock;
|
---|
417 | Index: libs/libmythtv/siparser.h
|
---|
418 | ===================================================================
|
---|
419 | --- libs/libmythtv/siparser.h (revision 6975)
|
---|
420 | +++ libs/libmythtv/siparser.h (working copy)
|
---|
421 | @@ -75,7 +75,7 @@
|
---|
422 | * Argentenia has also has announced their Digital TV Standard will be
|
---|
423 | * ATSC over DVB-T
|
---|
424 | *
|
---|
425 | - * Impliemntation of OpenCable or other MPEG-TS based standards (DirecTV?)
|
---|
426 | + * Implementation of OpenCable or other MPEG-TS based standards (DirecTV?)
|
---|
427 | * is also possible with this class if their specs are ever known.
|
---|
428 | *
|
---|
429 | */
|
---|