aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-08-12 21:33:21 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-13 15:01:17 -0400
commit224b6642f5e82a1b21f6b552c799fa02e527d542 (patch)
treee73e68bcaf805c4cacb44c32865dd73395504f30
parent991452a21b76e5e1bba2fcf9c024ab69067f5656 (diff)
[media] add DTMB support for DVB API
Cc: Patrick Boettcher <pboettcher@kernellabs.com> Cc: Andreas Oberritter <obi@linuxtv.org> Cc: Mauro Carvalho Chehab <mchehab@redhat.com> Acked-by: Patrick Boettcher <pboettcher@kernellabs.com> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml40
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c14
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.h2
-rw-r--r--drivers/media/dvb/frontends/atbm8830.c2
-rw-r--r--drivers/media/dvb/frontends/lgs8gl5.c2
-rw-r--r--drivers/media/dvb/frontends/lgs8gxx.c2
-rw-r--r--include/linux/dvb/frontend.h21
-rw-r--r--include/linux/dvb/version.h2
8 files changed, 74 insertions, 11 deletions
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
index bb4777a2cd90..5aea35e66af7 100644
--- a/Documentation/DocBook/media/dvb/dvbproperty.xml
+++ b/Documentation/DocBook/media/dvb/dvbproperty.xml
@@ -194,6 +194,7 @@ get/set up to 64 properties. The actual meaning of each property is described on
194 APSK_16, 194 APSK_16,
195 APSK_32, 195 APSK_32,
196 DQPSK, 196 DQPSK,
197 QAM_4_NR,
197 } fe_modulation_t; 198 } fe_modulation_t;
198</programlisting> 199</programlisting>
199 </section> 200 </section>
@@ -265,6 +266,7 @@ typedef enum fe_code_rate {
265 FEC_AUTO, 266 FEC_AUTO,
266 FEC_3_5, 267 FEC_3_5,
267 FEC_9_10, 268 FEC_9_10,
269 FEC_2_5,
268} fe_code_rate_t; 270} fe_code_rate_t;
269 </programlisting> 271 </programlisting>
270 <para>which correspond to error correction rates of 1/2, 2/3, etc., 272 <para>which correspond to error correction rates of 1/2, 2/3, etc.,
@@ -351,7 +353,7 @@ typedef enum fe_delivery_system {
351 SYS_ISDBC, 353 SYS_ISDBC,
352 SYS_ATSC, 354 SYS_ATSC,
353 SYS_ATSCMH, 355 SYS_ATSCMH,
354 SYS_DMBTH, 356 SYS_DTMB,
355 SYS_CMMB, 357 SYS_CMMB,
356 SYS_DAB, 358 SYS_DAB,
357 SYS_DVBT2, 359 SYS_DVBT2,
@@ -735,6 +737,9 @@ typedef enum fe_guard_interval {
735 GUARD_INTERVAL_1_128, 737 GUARD_INTERVAL_1_128,
736 GUARD_INTERVAL_19_128, 738 GUARD_INTERVAL_19_128,
737 GUARD_INTERVAL_19_256, 739 GUARD_INTERVAL_19_256,
740 GUARD_INTERVAL_PN420,
741 GUARD_INTERVAL_PN595,
742 GUARD_INTERVAL_PN945,
738} fe_guard_interval_t; 743} fe_guard_interval_t;
739</programlisting> 744</programlisting>
740 745
@@ -743,6 +748,7 @@ typedef enum fe_guard_interval {
743 try to find the correct guard interval (if capable) and will use TMCC to fill 748 try to find the correct guard interval (if capable) and will use TMCC to fill
744 in the missing parameters.</para> 749 in the missing parameters.</para>
745 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para> 750 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
751 <para>3) DTMB specifies PN420, PN595 and PN945.</para>
746 </section> 752 </section>
747 <section id="DTV-TRANSMISSION-MODE"> 753 <section id="DTV-TRANSMISSION-MODE">
748 <title><constant>DTV_TRANSMISSION_MODE</constant></title> 754 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
@@ -759,6 +765,8 @@ typedef enum fe_transmit_mode {
759 TRANSMISSION_MODE_1K, 765 TRANSMISSION_MODE_1K,
760 TRANSMISSION_MODE_16K, 766 TRANSMISSION_MODE_16K,
761 TRANSMISSION_MODE_32K, 767 TRANSMISSION_MODE_32K,
768 TRANSMISSION_MODE_C1,
769 TRANSMISSION_MODE_C3780,
762} fe_transmit_mode_t; 770} fe_transmit_mode_t;
763</programlisting> 771</programlisting>
764 <para>Notes:</para> 772 <para>Notes:</para>
@@ -770,6 +778,7 @@ typedef enum fe_transmit_mode {
770 use TMCC to fill in the missing parameters.</para> 778 use TMCC to fill in the missing parameters.</para>
771 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para> 779 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
772 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para> 780 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
781 <para>5) DTMB specifies C1 and C3780.</para>
773 </section> 782 </section>
774 <section id="DTV-HIERARCHY"> 783 <section id="DTV-HIERARCHY">
775 <title><constant>DTV_HIERARCHY</constant></title> 784 <title><constant>DTV_HIERARCHY</constant></title>
@@ -806,6 +815,17 @@ typedef enum fe_hierarchy {
806 FE_GET_INFO. In the case of a legacy frontend, the result is just the same 815 FE_GET_INFO. In the case of a legacy frontend, the result is just the same
807 as with FE_GET_INFO, but in a more structured format </para> 816 as with FE_GET_INFO, but in a more structured format </para>
808 </section> 817 </section>
818 <section id="DTV-INTERLEAVING">
819 <title><constant>DTV_INTERLEAVING</constant></title>
820 <para>Interleaving mode</para>
821 <programlisting>
822enum fe_interleaving {
823 INTERLEAVING_NONE,
824 INTERLEAVING_240,
825 INTERLEAVING_720,
826};
827 </programlisting>
828 </section>
809</section> 829</section>
810 <section id="frontend-property-terrestrial-systems"> 830 <section id="frontend-property-terrestrial-systems">
811 <title>Properties used on terrestrial delivery systems</title> 831 <title>Properties used on terrestrial delivery systems</title>
@@ -944,6 +964,24 @@ typedef enum fe_hierarchy {
944 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem> 964 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
945 </itemizedlist> 965 </itemizedlist>
946 </section> 966 </section>
967 <section id="dtmb-params">
968 <title>DTMB delivery system</title>
969 <para>The following parameters are valid for DTMB:</para>
970 <itemizedlist mark='opencircle'>
971 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
972 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
973 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
974 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
975 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
976 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
977 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
978 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
979 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
980 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
981 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
982 <listitem><para><link linkend="DTV-INTERLEAVING"><constant>DTV_INTERLEAVING</constant></link></para></listitem>
983 </itemizedlist>
984 </section>
947 </section> 985 </section>
948 <section id="frontend-property-cable-systems"> 986 <section id="frontend-property-cable-systems">
949 <title>Properties used on cable delivery systems</title> 987 <title>Properties used on cable delivery systems</title>
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 746dfd86aeab..3a0f24547196 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -179,7 +179,7 @@ static enum dvbv3_emulation_type dvbv3_type(u32 delivery_system)
179 case SYS_DVBT: 179 case SYS_DVBT:
180 case SYS_DVBT2: 180 case SYS_DVBT2:
181 case SYS_ISDBT: 181 case SYS_ISDBT:
182 case SYS_DMBTH: 182 case SYS_DTMB:
183 return DVBV3_OFDM; 183 return DVBV3_OFDM;
184 case SYS_ATSC: 184 case SYS_ATSC:
185 case SYS_ATSCMH: 185 case SYS_ATSCMH:
@@ -997,6 +997,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
997 _DTV_CMD(DTV_CODE_RATE_LP, 1, 0), 997 _DTV_CMD(DTV_CODE_RATE_LP, 1, 0),
998 _DTV_CMD(DTV_GUARD_INTERVAL, 1, 0), 998 _DTV_CMD(DTV_GUARD_INTERVAL, 1, 0),
999 _DTV_CMD(DTV_TRANSMISSION_MODE, 1, 0), 999 _DTV_CMD(DTV_TRANSMISSION_MODE, 1, 0),
1000 _DTV_CMD(DTV_INTERLEAVING, 1, 0),
1000 1001
1001 _DTV_CMD(DTV_ISDBT_PARTIAL_RECEPTION, 1, 0), 1002 _DTV_CMD(DTV_ISDBT_PARTIAL_RECEPTION, 1, 0),
1002 _DTV_CMD(DTV_ISDBT_SOUND_BROADCASTING, 1, 0), 1003 _DTV_CMD(DTV_ISDBT_SOUND_BROADCASTING, 1, 0),
@@ -1028,6 +1029,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
1028 _DTV_CMD(DTV_GUARD_INTERVAL, 0, 0), 1029 _DTV_CMD(DTV_GUARD_INTERVAL, 0, 0),
1029 _DTV_CMD(DTV_TRANSMISSION_MODE, 0, 0), 1030 _DTV_CMD(DTV_TRANSMISSION_MODE, 0, 0),
1030 _DTV_CMD(DTV_HIERARCHY, 0, 0), 1031 _DTV_CMD(DTV_HIERARCHY, 0, 0),
1032 _DTV_CMD(DTV_INTERLEAVING, 0, 0),
1031 1033
1032 _DTV_CMD(DTV_ENUM_DELSYS, 0, 0), 1034 _DTV_CMD(DTV_ENUM_DELSYS, 0, 0),
1033 1035
@@ -1326,6 +1328,9 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
1326 case DTV_HIERARCHY: 1328 case DTV_HIERARCHY:
1327 tvp->u.data = c->hierarchy; 1329 tvp->u.data = c->hierarchy;
1328 break; 1330 break;
1331 case DTV_INTERLEAVING:
1332 tvp->u.data = c->interleaving;
1333 break;
1329 1334
1330 /* ISDB-T Support here */ 1335 /* ISDB-T Support here */
1331 case DTV_ISDBT_PARTIAL_RECEPTION: 1336 case DTV_ISDBT_PARTIAL_RECEPTION:
@@ -1593,7 +1598,7 @@ static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system)
1593 * The DVBv3 or DVBv5 call is requesting a different system. So, 1598 * The DVBv3 or DVBv5 call is requesting a different system. So,
1594 * emulation is needed. 1599 * emulation is needed.
1595 * 1600 *
1596 * Emulate newer delivery systems like ISDBT, DVBT and DMBTH 1601 * Emulate newer delivery systems like ISDBT, DVBT and DTMB
1597 * for older DVBv5 applications. The emulation will try to use 1602 * for older DVBv5 applications. The emulation will try to use
1598 * the auto mode for most things, and will assume that the desired 1603 * the auto mode for most things, and will assume that the desired
1599 * delivery system is the last one at the ops.delsys[] array 1604 * delivery system is the last one at the ops.delsys[] array
@@ -1715,6 +1720,9 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
1715 case DTV_HIERARCHY: 1720 case DTV_HIERARCHY:
1716 c->hierarchy = tvp->u.data; 1721 c->hierarchy = tvp->u.data;
1717 break; 1722 break;
1723 case DTV_INTERLEAVING:
1724 c->interleaving = tvp->u.data;
1725 break;
1718 1726
1719 /* ISDB-T Support here */ 1727 /* ISDB-T Support here */
1720 case DTV_ISDBT_PARTIAL_RECEPTION: 1728 case DTV_ISDBT_PARTIAL_RECEPTION:
@@ -2012,7 +2020,7 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
2012 case SYS_DVBT: 2020 case SYS_DVBT:
2013 case SYS_DVBT2: 2021 case SYS_DVBT2:
2014 case SYS_ISDBT: 2022 case SYS_ISDBT:
2015 case SYS_DMBTH: 2023 case SYS_DTMB:
2016 fepriv->min_delay = HZ / 20; 2024 fepriv->min_delay = HZ / 20;
2017 fepriv->step_size = fe->ops.info.frequency_stepsize * 2; 2025 fepriv->step_size = fe->ops.info.frequency_stepsize * 2;
2018 fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; 2026 fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
index 7c64c09103a9..de410cc94fbb 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
@@ -354,6 +354,8 @@ struct dtv_frontend_properties {
354 354
355 fe_delivery_system_t delivery_system; 355 fe_delivery_system_t delivery_system;
356 356
357 enum fe_interleaving interleaving;
358
357 /* ISDB-T specifics */ 359 /* ISDB-T specifics */
358 u8 isdbt_partial_reception; 360 u8 isdbt_partial_reception;
359 u8 isdbt_sb_mode; 361 u8 isdbt_sb_mode;
diff --git a/drivers/media/dvb/frontends/atbm8830.c b/drivers/media/dvb/frontends/atbm8830.c
index a2261ea2cf82..4e11dc4b1335 100644
--- a/drivers/media/dvb/frontends/atbm8830.c
+++ b/drivers/media/dvb/frontends/atbm8830.c
@@ -428,7 +428,7 @@ static int atbm8830_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
428} 428}
429 429
430static struct dvb_frontend_ops atbm8830_ops = { 430static struct dvb_frontend_ops atbm8830_ops = {
431 .delsys = { SYS_DMBTH }, 431 .delsys = { SYS_DTMB },
432 .info = { 432 .info = {
433 .name = "AltoBeam ATBM8830/8831 DMB-TH", 433 .name = "AltoBeam ATBM8830/8831 DMB-TH",
434 .frequency_min = 474000000, 434 .frequency_min = 474000000,
diff --git a/drivers/media/dvb/frontends/lgs8gl5.c b/drivers/media/dvb/frontends/lgs8gl5.c
index 2cec8041a106..416cce3fefc7 100644
--- a/drivers/media/dvb/frontends/lgs8gl5.c
+++ b/drivers/media/dvb/frontends/lgs8gl5.c
@@ -412,7 +412,7 @@ EXPORT_SYMBOL(lgs8gl5_attach);
412 412
413 413
414static struct dvb_frontend_ops lgs8gl5_ops = { 414static struct dvb_frontend_ops lgs8gl5_ops = {
415 .delsys = { SYS_DMBTH }, 415 .delsys = { SYS_DTMB },
416 .info = { 416 .info = {
417 .name = "Legend Silicon LGS-8GL5 DMB-TH", 417 .name = "Legend Silicon LGS-8GL5 DMB-TH",
418 .frequency_min = 474000000, 418 .frequency_min = 474000000,
diff --git a/drivers/media/dvb/frontends/lgs8gxx.c b/drivers/media/dvb/frontends/lgs8gxx.c
index c2ea2749ebed..3c92f36ea5c7 100644
--- a/drivers/media/dvb/frontends/lgs8gxx.c
+++ b/drivers/media/dvb/frontends/lgs8gxx.c
@@ -995,7 +995,7 @@ static int lgs8gxx_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
995} 995}
996 996
997static struct dvb_frontend_ops lgs8gxx_ops = { 997static struct dvb_frontend_ops lgs8gxx_ops = {
998 .delsys = { SYS_DMBTH }, 998 .delsys = { SYS_DTMB },
999 .info = { 999 .info = {
1000 .name = "Legend Silicon LGS8913/LGS8GXX DMB-TH", 1000 .name = "Legend Silicon LGS8913/LGS8GXX DMB-TH",
1001 .frequency_min = 474000000, 1001 .frequency_min = 474000000,
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
index f50d4058c5fb..2dd5823b59b9 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/linux/dvb/frontend.h
@@ -152,6 +152,7 @@ typedef enum fe_code_rate {
152 FEC_AUTO, 152 FEC_AUTO,
153 FEC_3_5, 153 FEC_3_5,
154 FEC_9_10, 154 FEC_9_10,
155 FEC_2_5,
155} fe_code_rate_t; 156} fe_code_rate_t;
156 157
157 158
@@ -169,6 +170,7 @@ typedef enum fe_modulation {
169 APSK_16, 170 APSK_16,
170 APSK_32, 171 APSK_32,
171 DQPSK, 172 DQPSK,
173 QAM_4_NR,
172} fe_modulation_t; 174} fe_modulation_t;
173 175
174typedef enum fe_transmit_mode { 176typedef enum fe_transmit_mode {
@@ -179,6 +181,8 @@ typedef enum fe_transmit_mode {
179 TRANSMISSION_MODE_1K, 181 TRANSMISSION_MODE_1K,
180 TRANSMISSION_MODE_16K, 182 TRANSMISSION_MODE_16K,
181 TRANSMISSION_MODE_32K, 183 TRANSMISSION_MODE_32K,
184 TRANSMISSION_MODE_C1,
185 TRANSMISSION_MODE_C3780,
182} fe_transmit_mode_t; 186} fe_transmit_mode_t;
183 187
184#if defined(__DVB_CORE__) || !defined (__KERNEL__) 188#if defined(__DVB_CORE__) || !defined (__KERNEL__)
@@ -202,6 +206,9 @@ typedef enum fe_guard_interval {
202 GUARD_INTERVAL_1_128, 206 GUARD_INTERVAL_1_128,
203 GUARD_INTERVAL_19_128, 207 GUARD_INTERVAL_19_128,
204 GUARD_INTERVAL_19_256, 208 GUARD_INTERVAL_19_256,
209 GUARD_INTERVAL_PN420,
210 GUARD_INTERVAL_PN595,
211 GUARD_INTERVAL_PN945,
205} fe_guard_interval_t; 212} fe_guard_interval_t;
206 213
207 214
@@ -213,6 +220,11 @@ typedef enum fe_hierarchy {
213 HIERARCHY_AUTO 220 HIERARCHY_AUTO
214} fe_hierarchy_t; 221} fe_hierarchy_t;
215 222
223enum fe_interleaving {
224 INTERLEAVING_NONE,
225 INTERLEAVING_240,
226 INTERLEAVING_720,
227};
216 228
217#if defined(__DVB_CORE__) || !defined (__KERNEL__) 229#if defined(__DVB_CORE__) || !defined (__KERNEL__)
218struct dvb_qpsk_parameters { 230struct dvb_qpsk_parameters {
@@ -337,7 +349,9 @@ struct dvb_frontend_event {
337#define DTV_ATSCMH_SCCC_CODE_MODE_C 58 349#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
338#define DTV_ATSCMH_SCCC_CODE_MODE_D 59 350#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
339 351
340#define DTV_MAX_COMMAND DTV_ATSCMH_SCCC_CODE_MODE_D 352#define DTV_INTERLEAVING 60
353
354#define DTV_MAX_COMMAND DTV_INTERLEAVING
341 355
342typedef enum fe_pilot { 356typedef enum fe_pilot {
343 PILOT_ON, 357 PILOT_ON,
@@ -366,7 +380,7 @@ typedef enum fe_delivery_system {
366 SYS_ISDBC, 380 SYS_ISDBC,
367 SYS_ATSC, 381 SYS_ATSC,
368 SYS_ATSCMH, 382 SYS_ATSCMH,
369 SYS_DMBTH, 383 SYS_DTMB,
370 SYS_CMMB, 384 SYS_CMMB,
371 SYS_DAB, 385 SYS_DAB,
372 SYS_DVBT2, 386 SYS_DVBT2,
@@ -374,8 +388,9 @@ typedef enum fe_delivery_system {
374 SYS_DVBC_ANNEX_C, 388 SYS_DVBC_ANNEX_C,
375} fe_delivery_system_t; 389} fe_delivery_system_t;
376 390
377 391/* backward compatibility */
378#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A 392#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
393#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
379 394
380/* ATSC-MH */ 395/* ATSC-MH */
381 396
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h
index 43d9e8d462d4..70c2c7edcc7d 100644
--- a/include/linux/dvb/version.h
+++ b/include/linux/dvb/version.h
@@ -24,6 +24,6 @@
24#define _DVBVERSION_H_ 24#define _DVBVERSION_H_
25 25
26#define DVB_API_VERSION 5 26#define DVB_API_VERSION 5
27#define DVB_API_VERSION_MINOR 6 27#define DVB_API_VERSION_MINOR 7
28 28
29#endif /*_DVBVERSION_H_*/ 29#endif /*_DVBVERSION_H_*/