dvb_frontend: Multistream support
PATCH 1/1 dvb_frontend: Multistream support
DTV_ISDBS_TS_ID replaced with DTV_STREAM_ID. Aliases DTV_ISDBS_TS_ID, DTV_DVBS2_MIS_ID for DTV_STREAM_ID. DTV_DVBT2_PLP_ID marked as legacy.
include/linux/dvb/frontend.h +0 -0
@@ -62,6 +62,7 @@ typedef enum fe_caps {
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
+ FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports DVB-S2 multistream filtering */ FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ @@ -314,9 +315,11 @@ struct dvb_frontend_event {
#define DTV_ISDBT_LAYER_ENABLED 41
-#define DTV_ISDBS_TS_ID 42
+#define DTV_STREAM_ID 42
+#define DTV_ISDBS_TS_ID DTV_STREAM_ID
+#define DTV_DVBS2_MIS_ID DTV_STREAM_ID
-#define DTV_DVBT2_PLP_ID 43
+#define DTV_DVBT2_PLP_ID_LEGACY 43
#define DTV_ENUM_DELSYS 44
drivers/media/dvb/dvb-core/dvb_frontend.h +0 -0
@@ -368,11 +368,8 @@ struct dtv_frontend_properties {
u8 interleaving;
} layer[3];
- /* ISDB-T specifics */
- u32 isdbs_ts_id;
-
- /* DVB-T2 specifics */
- u32 dvbt2_plp_id;
+ /* Multistream specifics */
+ u32 stream_id;
/* ATSC-MH specifics */
u8 atscmh_fic_ver;
drivers/media/dvb/dvb-core/dvb_frontend.c +0 -0
@@ -946,8 +946,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe)
c->layer[i].segment_count = 0;
}
- c->isdbs_ts_id = 0;
- c->dvbt2_plp_id = 0;
+ c->stream_id = -1;
switch (c->delivery_system) {
case SYS_DVBS:
@@ -1017,8 +1016,8 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = { _DTV_CMD(DTV_ISDBT_LAYERC_SEGMENT_COUNT, 1, 0), _DTV_CMD(DTV_ISDBT_LAYERC_TIME_INTERLEAVING, 1, 0),
- _DTV_CMD(DTV_ISDBS_TS_ID, 1, 0),
- _DTV_CMD(DTV_DVBT2_PLP_ID, 1, 0),
+ _DTV_CMD(DTV_STREAM_ID, 1, 0),
+ _DTV_CMD(DTV_DVBT2_PLP_ID_LEGACY, 1, 0),
/* Get */
_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
@@ -1382,11 +1381,10 @@ static int dtv_property_process_get(struct dvb_frontend *fe, case DTV_ISDBT_LAYERC_TIME_INTERLEAVING:
tvp->u.data = c->layer[2].interleaving;
break;
- case DTV_ISDBS_TS_ID:
- tvp->u.data = c->isdbs_ts_id;
- break;
- case DTV_DVBT2_PLP_ID:
- tvp->u.data = c->dvbt2_plp_id;
+
+ case DTV_STREAM_ID:
+ case DTV_DVBT2_PLP_ID_LEGACY:
+ tvp->u.data = c->stream_id;
break;
/* ATSC-MH */
@@ -1771,11 +1769,10 @@ static int dtv_property_process_set(struct dvb_frontend *fe, case DTV_ISDBT_LAYERC_TIME_INTERLEAVING:
c->layer[2].interleaving = tvp->u.data;
break;
- case DTV_ISDBS_TS_ID:
- c->isdbs_ts_id = tvp->u.data;
- break;
- case DTV_DVBT2_PLP_ID:
- c->dvbt2_plp_id = tvp->u.data;
+
+ case DTV_STREAM_ID:
+ case DTV_DVBT2_PLP_ID_LEGACY:
+ c->stream_id = tvp->u.data;
break;
/* ATSC-MH */
Quoted 18 lines · CrazyCat
DTV_ISDBS_TS_IDreplaced withDTV_STREAM_ID. AliasesDTV_ISDBS_TS_ID,DTV_DVBS2_MIS_IDforDTV_STREAM_ID.DTV_DVBT2_PLP_IDmarked as legacy.Signed-off-by Evgeny Plehov <[email protected]>include/linux/dvb/frontend.h +1
-0@@ -62,6 +62,7 @@ typedef enum fe_caps {FE_CAN_8VSB =0x200000 ,FE_CAN_16VSB =0x400000 ,FE_HAS_EXTENDED_CAPS =0x800000 ,/* We need more bitspace for newer APIs, indicate this. */ +FE_CAN_MULTISTREAM =0x4000000 ,/* frontend supports DVB-S2 multistream filtering */ FE_CAN_TURBO_FEC =0x8000000 ,/* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION =0x10000000 ,/* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
include/linux/dvb/frontend.h struct dvb_frontend_event { · line 320
Quoted 7 lines
include/linux/dvb/frontend.h +3
-1@@ -314,9 +315,11 @@ struct dvb_frontend_event {#define DTV_ISDBT_LAYER_ENABLED 41 -#define DTV_ISDBS_TS_ID 42 +#define DTV_STREAM_ID 42 +#define DTV_ISDBS_TS_ID DTV_STREAM_ID +#define DTV_DVBS2_MIS_ID DTV_STREAM_ID
@Mauro, should we rename also DTV_ISDBS_TS_ID to DTV_ISDBS_TS_ID_LEGACY to remind users ?
Quoted 10 lines
include/linux/dvb/frontend.h +1
-1-#define DTV_DVBT2_PLP_ID 43 +#define DTV_DVBT2_PLP_ID_LEGACY 43#define DTV_ENUM_DELSYS 44drivers/media/dvb/dvb-core/dvb_frontend.h +0
-0
drivers/media/dvb/dvb-core/dvb_frontend.h struct dtv_frontend_properties { · line 372
Quoted 10 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +2
-5@@ -368,11 +368,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ]; -/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;
u32 == 32 bit long unsigned number. See next comment.
Quoted 8 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +0
-0/* ATSC-MH specifics */ u8 atscmh_fic_ver;drivers/media/dvb/dvb-core/dvb_frontend.c +0
-0
drivers/media/dvb/dvb-core/dvb_frontend.c static int dvb_frontend_clear_cache(struct dvb_frontend *fe) · line 949
Quoted 6 lines
drivers/media/dvb/dvb-core/dvb_frontend.c +1
-2@@ -946,8 +946,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) c->layer[i].segment_count =0 ; } - c->isdbs_ts_id =0 ; - c->dvbt2_plp_id =0 ; + c->stream_id =-1 ;
unsigned number cannot be -1. It can be only 0 or bigger. Due to that this is wrong.
Quoted 36 lines
drivers/media/dvb/dvb-core/dvb_frontend.c +6
-9switch (c->delivery_system) {case SYS_DVBS :@@ -1017,8 +1016,8 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {_DTV_CMD (DTV_ISDBT_LAYERC_SEGMENT_COUNT ,1 ,0 ),_DTV_CMD (DTV_ISDBT_LAYERC_TIME_INTERLEAVING ,1 ,0 ), -_DTV_CMD (DTV_ISDBS_TS_ID ,1 ,0 ), -_DTV_CMD (DTV_DVBT2_PLP_ID ,1 ,0 ), +_DTV_CMD (DTV_STREAM_ID ,1 ,0 ), +_DTV_CMD (DTV_DVBT2_PLP_ID_LEGACY ,1 ,0 ),/* Get */ _DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),@@ -1382,11 +1381,10 @@ static int dtv_property_process_get(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : tvp->u.data = c->layer[2 ].interleaving;break ; -case DTV_ISDBS_TS_ID : - tvp->u.data = c->isdbs_ts_id; -break ; -case DTV_DVBT2_PLP_ID : - tvp->u.data = c->dvbt2_plp_id; + +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + tvp->u.data = c->stream_id;break ;/* ATSC-MH */ @@ -1771,11 +1769,10 @@ static int dtv_property_process_set(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : c->layer[2 ].interleaving = tvp->u.data;break ; -case DTV_ISDBS_TS_ID : - c->isdbs_ts_id = tvp->u.data;
drivers/media/dvb/dvb-core/dvb_frontend.c static int dtv_property_process_set(struct dvb_frontend *fe, · line 1778
Quoted 10 lines
drivers/media/dvb/dvb-core/dvb_frontend.c +4
-3-break ; -case DTV_DVBT2_PLP_ID : - c->dvbt2_plp_id = tvp->u.data; + +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + c->stream_id = tvp->u.data;break ;/* ATSC-MH */
regards
Antti
Signature · 1 line
http://palosaari.fi/
Em 16-08-2012 15:11, Antti Palosaari escreveu:
Quoted 5 lines · CrazyCat
Quoted 4 lines
DTV_ISDBS_TS_IDreplaced withDTV_STREAM_ID. AliasesDTV_ISDBS_TS_ID,DTV_DVBS2_MIS_IDforDTV_STREAM_ID.DTV_DVBT2_PLP_IDmarked as legacy.
Quoted 10 lines
include/linux/dvb/frontend.h typedef enum fe_caps { · line 65
Quoted 10 lines
Signed-off-by Evgeny Plehov <[email protected]>include/linux/dvb/frontend.h +1
-0@@ -62,6 +62,7 @@ typedef enum fe_caps {FE_CAN_8VSB =0x200000 ,FE_CAN_16VSB =0x400000 ,FE_HAS_EXTENDED_CAPS =0x800000 ,/* We need more bitspace for newer APIs, indicate this. */ + FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports DVB-S2 multistream filtering */
It is better to change this comment to cover the other standards.
Quoted 5 lines
Quoted 5 lines
include/linux/dvb/frontend.h +0
-0FE_CAN_TURBO_FEC =0x8000000 ,/* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION =0x10000000 ,/* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */@@ -314,9 +315,11 @@ struct dvb_frontend_event {
Quoted 8 lines
include/linux/dvb/frontend.h struct dvb_frontend_event { · line 320
Quoted 6 lines
include/linux/dvb/frontend.h +3
-1#define DTV_ISDBT_LAYER_ENABLED 41 -#define DTV_ISDBS_TS_ID 42 +#define DTV_STREAM_ID 42 +#define DTV_ISDBS_TS_ID DTV_STREAM_ID +#define DTV_DVBS2_MIS_ID DTV_STREAM_ID@Mauro, should we rename also
DTV_ISDBS_TS_IDtoDTV_ISDBS_TS_ID_LEGACYto remind users ?
I think so.
Quoted 86 lines
Quoted 11 lines
include/linux/dvb/frontend.h +1
-1-#define DTV_DVBT2_PLP_ID 43 +#define DTV_DVBT2_PLP_ID_LEGACY 43#define DTV_ENUM_DELSYS 44drivers/media/dvb/dvb-core/dvb_frontend.h +0
-0drivers/media/dvb/dvb-core/dvb_frontend.h struct dtv_frontend_properties { · line 372
Quoted 10 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +2
-5@@ -368,11 +368,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ]; -/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;u32 == 32 bit long unsigned number. See next comment.
Quoted 8 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +0
-0/* ATSC-MH specifics */ u8 atscmh_fic_ver;drivers/media/dvb/dvb-core/dvb_frontend.c +0
-0drivers/media/dvb/dvb-core/dvb_frontend.c static int dvb_frontend_clear_cache(struct dvb_frontend *fe) · line 949
Quoted 6 lines
drivers/media/dvb/dvb-core/dvb_frontend.c +1
-2@@ -946,8 +946,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) c->layer[i].segment_count =0 ; } - c->isdbs_ts_id =0 ; - c->dvbt2_plp_id =0 ; + c->stream_id =-1 ;unsigned number cannot be -1. It can be only 0 or bigger. Due to that this is wrong.
Quoted 45 lines
drivers/media/dvb/dvb-core/dvb_frontend.c +10
-12switch (c->delivery_system) {case SYS_DVBS :@@ -1017,8 +1016,8 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {_DTV_CMD (DTV_ISDBT_LAYERC_SEGMENT_COUNT ,1 ,0 ),_DTV_CMD (DTV_ISDBT_LAYERC_TIME_INTERLEAVING ,1 ,0 ), -_DTV_CMD (DTV_ISDBS_TS_ID ,1 ,0 ), -_DTV_CMD (DTV_DVBT2_PLP_ID ,1 ,0 ), +_DTV_CMD (DTV_STREAM_ID ,1 ,0 ), +_DTV_CMD (DTV_DVBT2_PLP_ID_LEGACY ,1 ,0 ),/* Get */ _DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),@@ -1382,11 +1381,10 @@ static int dtv_property_process_get(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : tvp->u.data = c->layer[2 ].interleaving;break ; -case DTV_ISDBS_TS_ID : - tvp->u.data = c->isdbs_ts_id; -break ; -case DTV_DVBT2_PLP_ID : - tvp->u.data = c->dvbt2_plp_id; + +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + tvp->u.data = c->stream_id;break ;/* ATSC-MH */ @@ -1771,11 +1769,10 @@ static int dtv_property_process_set(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : c->layer[2 ].interleaving = tvp->u.data;break ; -case DTV_ISDBS_TS_ID : - c->isdbs_ts_id = tvp->u.data; -break ; -case DTV_DVBT2_PLP_ID : - c->dvbt2_plp_id = tvp->u.data; + +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + c->stream_id = tvp->u.data;break ;
Quoted 1 line
drivers/media/dvb/dvb-core/dvb_frontend.c static int dtv_property_process_set(struct dvb_frontend *fe, · line 1778
Quoted 1 line
drivers/media/dvb/dvb-core/dvb_frontend.c +0
-0/* ATSC-MH */
The rest looks fine for me. Still missing the DocBook additions for multistream (Documentation/DocBook/media/dvb/dvbproperty.xml).
Quoted 5 lines
regards
Antti
16.08.2012, 21:11, "Antti Palosaari" <[email protected]>:
Quoted 8 lines
Quoted 7 lines
- /* ISDB-T specifics */
- u32isdbs_ts_id;
-
- /* DVB-T2 specifics */
- u32 dvbt2_plp_id;
+ /* Multistream specifics */
+ u32stream_id;
Quoted 8 lines
u32 == 32 bit long unsigned number. See next comment.
Quoted 4 lines
-
c->isdbs_ts_id= 0;
-c->dvbt2_plp_id= 0;
+c->stream_id= -1;unsigned number cannot be -1. It can be only 0 or bigger. Due to that this is wrong.
so maybe better declare in as int ? depend from standard valid stream id (for DVB is 0-255) and any another value (-1) disable stream filtering in demod.
Quoted 12 lines · CrazyCat
16.08.2012, 21:11, "Antti Palosaari" <[email protected]>:
Quoted 10 lines
Quoted 7 lines
- /* ISDB-T specifics */
- u32isdbs_ts_id;
-
- /* DVB-T2 specifics */
- u32dvbt2_plp_id;
+ /* Multistream specifics */
+ u32stream_id;u32 == 32 bit long unsigned number. See next comment.
Quoted 1 line
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
-
c->isdbs_ts_id= 0;
-c->dvbt2_plp_id= 0;
+c->stream_id= -1;unsigned number cannot be -1. It can be only 0 or bigger. Due to that this is wrong.
so maybe better declare in as int ? depend from standard valid stream id (for DVB is 0-255) and any another value (-1) disable stream filtering in demod.
I agree that. Actually I was thinking same. For DVB-T2 valid values are 0-255, I haven't looked others but surely int maximum should enough for all.
regards
Antti
Signature · 1 line
http://palosaari.fi/
Em 17-08-2012 14:21, CrazyCat escreveu:
Quoted 12 lines
16.08.2012, 21:11, "Antti Palosaari" <[email protected]>:
Quoted 10 lines
Quoted 7 lines
- /* ISDB-T specifics */
- u32isdbs_ts_id;
-
- /* DVB-T2 specifics */
- u32dvbt2_plp_id;
+ /* Multistream specifics */
+ u32stream_id;u32 == 32 bit long unsigned number. See next comment.
Quoted 1 line
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
-
c->isdbs_ts_id= 0;
-c->dvbt2_plp_id= 0;
+c->stream_id= -1;unsigned number cannot be -1. It can be only 0 or bigger. Due to that this is wrong.
so maybe better declare in as int ? depend from standard valid stream id (for DVB is 0-255) and any another value (-1) disable stream filtering in demod.
It should be noticed that DVBv5 will pass it as u32 in any case. So, maybe it is better to use UINT_MAX as the no-filter value:
/home/v4l/v4l/patchwork/include/linux/kernel.h:#define UINT_MAX (~0U)
Some care is needed when doing that, to avoid 32bits/64bits compat conflicts. Also, this define doesn't exist in userspace.
so, maybe using something like:
#define NO_STREAM_ID_FILTER (~0U)
Would work properly, as, even on 64bits system with 32bits userspace, this should work
or, if we want to be pedantic:
#define NO_STREAM_ID_FILTER ((u32)(~0U))
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Multistream support with all recommendations.
include/linux/dvb/frontend.h +5 -3
@@ -62,6 +62,7 @@ typedef enum fe_caps {FE_CAN_8VSB =0x200000 ,FE_CAN_16VSB =0x400000 ,FE_HAS_EXTENDED_CAPS =0x800000 ,/* We need more bitspace for newer APIs, indicate this. */ +FE_CAN_MULTISTREAM =0x4000000 ,/* frontend supports DVB-S2 multistream filtering */ FE_CAN_TURBO_FEC =0x8000000 ,/* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION =0x10000000 ,/* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
@@ -338,9 +339,9 @@ struct dvb_frontend_event {#define DTV_ISDBT_LAYER_ENABLED 41 -#define DTV_ISDBS_TS_ID 42 - -#define DTV_DVBT2_PLP_ID 43 +#define DTV_STREAM_ID 42 +#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID +#define DTV_DVBT2_PLP_ID_LEGACY 43#define DTV_ENUM_DELSYS 44
@@ -436,6 +437,7 @@ enum atscmh_rs_code_mode { ATSCMH_RSCODE_RES = 3, }; +#define NO_STREAM_ID_FILTER (~0U)struct dtv_cmds_h {char *name;/* A display name for debugging purposes */
drivers/media/dvb-core/dvb_frontend.h +2 -5
@@ -370,11 +370,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ]; -/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;/* ATSC-MH specifics */ u8 atscmh_fic_ver;
drivers/media/dvb-core/dvb_frontend.c +13 -14
@@ -946,8 +946,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) c->layer[i].segment_count =0 ; } - c->isdbs_ts_id =0 ; - c->dvbt2_plp_id =0 ; + c->stream_id =NO_STREAM_ID_FILTER ;switch (c->delivery_system) {case SYS_DVBS :
@@ -1018,8 +1017,8 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {_DTV_CMD (DTV_ISDBT_LAYERC_SEGMENT_COUNT ,1 ,0 ),_DTV_CMD (DTV_ISDBT_LAYERC_TIME_INTERLEAVING ,1 ,0 ), -_DTV_CMD (DTV_ISDBS_TS_ID ,1 ,0 ), -_DTV_CMD (DTV_DVBT2_PLP_ID ,1 ,0 ), +_DTV_CMD (DTV_STREAM_ID ,1 ,0 ), +_DTV_CMD (DTV_DVBT2_PLP_ID_LEGACY ,1 ,0 ),/* Get */ _DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
@@ -1387,11 +1386,11 @@ static int dtv_property_process_get(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : tvp->u.data = c->layer[2 ].interleaving;break ; -case DTV_ISDBS_TS_ID : - tvp->u.data = c->isdbs_ts_id; -break ; -case DTV_DVBT2_PLP_ID : - tvp->u.data = c->dvbt2_plp_id; + +/* Multistream support */ +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + tvp->u.data = c->stream_id;break ;/* ATSC-MH */
@@ -1779,11 +1778,11 @@ static int dtv_property_process_set(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : c->layer[2 ].interleaving = tvp->u.data;break ; -case DTV_ISDBS_TS_ID : - c->isdbs_ts_id = tvp->u.data; -break ; -case DTV_DVBT2_PLP_ID : - c->dvbt2_plp_id = tvp->u.data; + +/* Multistream support */ +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + c->stream_id = tvp->u.data;break ;/* ATSC-MH */
Quoted 44 lines · CrazyCat
Multistream support with all recommendations.
Signed-off-by Evgeny Plehov <[email protected]>include/linux/dvb/frontend.h +5
-3@@ -62,6 +62,7 @@ typedef enum fe_caps {FE_CAN_8VSB =0x200000 ,FE_CAN_16VSB =0x400000 ,FE_HAS_EXTENDED_CAPS =0x800000 ,/* We need more bitspace for newer APIs, indicate this. */ +FE_CAN_MULTISTREAM =0x4000000 ,/* frontend supports DVB-S2 multistream filtering */ FE_CAN_TURBO_FEC =0x8000000 ,/* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION =0x10000000 ,/* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */@@ -338,9 +339,9 @@ struct dvb_frontend_event {#define DTV_ISDBT_LAYER_ENABLED 41 -#define DTV_ISDBS_TS_ID 42 - -#define DTV_DVBT2_PLP_ID 43 +#define DTV_STREAM_ID 42 +#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID +#define DTV_DVBT2_PLP_ID_LEGACY 43#define DTV_ENUM_DELSYS 44@@ -436,6 +437,7 @@ enum atscmh_rs_code_mode { ATSCMH_RSCODE_RES = 3, }; +#define NO_STREAM_ID_FILTER (~0U)struct dtv_cmds_h {char *name;/* A display name for debugging purposes */ drivers/media/dvb-core/dvb_frontend.h +0
-0@@ -370,11 +370,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ];
drivers/media/dvb-core/dvb_frontend.h struct dtv_frontend_properties { · line 377
Quoted 10 lines
drivers/media/dvb-core/dvb_frontend.h +2
-5-/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;/* ATSC-MH specifics */ u8 atscmh_fic_ver;
Shouldn't DVB_API_VERSION minor be increased or I should check for defined(DTV_STREAM_ID) when implementing MIS support in dvblast?
Signature · 2 lines
Georgi Chorbadzhiyski http://georgi.unixsol.org/
Em 20-08-2012 21:42, CrazyCat escreveu:
include/linux/dvb/frontend.h typedef enum fe_caps { · line 65
Quoted 12 lines
Multistream support with all recommendations.
Signed-off-by Evgeny Plehov <[email protected]>include/linux/dvb/frontend.h +1
-0@@ -62,6 +62,7 @@ typedef enum fe_caps {FE_CAN_8VSB =0x200000 ,FE_CAN_16VSB =0x400000 ,FE_HAS_EXTENDED_CAPS =0x800000 ,/* We need more bitspace for newer APIs, indicate this. */ + FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports DVB-S2 multistream filtering */
Hmm... the comment here is not 100%, as this can be used not only by DVB-S2, but also for DVB-T2, ISDB-S (and maybe others in the future, like DVB-C2).
Instead of adding a big comment here, you should patch the API spec, at Documentation/DocBook/media/dvb/dvbproperty.xml, pointing that this capability, and the corresponding properties are
for DVB-S2, ISDB-S and DVB-T2.
Quoted 92 lines
include/linux/dvb/frontend.h +4
-3FE_CAN_TURBO_FEC =0x8000000 ,/* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION =0x10000000 ,/* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */@@ -338,9 +339,9 @@ struct dvb_frontend_event {#define DTV_ISDBT_LAYER_ENABLED 41 -#define DTV_ISDBS_TS_ID 42 - -#define DTV_DVBT2_PLP_ID 43 +#define DTV_STREAM_ID 42 +#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID +#define DTV_DVBT2_PLP_ID_LEGACY 43#define DTV_ENUM_DELSYS 44@@ -436,6 +437,7 @@ enum atscmh_rs_code_mode { ATSCMH_RSCODE_RES = 3, }; +#define NO_STREAM_ID_FILTER (~0U)struct dtv_cmds_h {char *name;/* A display name for debugging purposes */ drivers/media/dvb-core/dvb_frontend.h +2
-5@@ -370,11 +370,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ]; -/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;/* ATSC-MH specifics */ u8 atscmh_fic_ver;drivers/media/dvb-core/dvb_frontend.c +8
-12@@ -946,8 +946,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) c->layer[i].segment_count =0 ; } - c->isdbs_ts_id =0 ; - c->dvbt2_plp_id =0 ; + c->stream_id =NO_STREAM_ID_FILTER ;switch (c->delivery_system) {case SYS_DVBS :@@ -1018,8 +1017,8 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {_DTV_CMD (DTV_ISDBT_LAYERC_SEGMENT_COUNT ,1 ,0 ),_DTV_CMD (DTV_ISDBT_LAYERC_TIME_INTERLEAVING ,1 ,0 ), -_DTV_CMD (DTV_ISDBS_TS_ID ,1 ,0 ), -_DTV_CMD (DTV_DVBT2_PLP_ID ,1 ,0 ), +_DTV_CMD (DTV_STREAM_ID ,1 ,0 ), +_DTV_CMD (DTV_DVBT2_PLP_ID_LEGACY ,1 ,0 ),/* Get */ _DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),@@ -1387,11 +1386,11 @@ static int dtv_property_process_get(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : tvp->u.data = c->layer[2 ].interleaving;break ; -case DTV_ISDBS_TS_ID : - tvp->u.data = c->isdbs_ts_id; -break ; -case DTV_DVBT2_PLP_ID : - tvp->u.data = c->dvbt2_plp_id; + +/* Multistream support */ +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + tvp->u.data = c->stream_id;break ;/* ATSC-MH */ @@ -1779,11 +1778,11 @@ static int dtv_property_process_set(struct dvb_frontend *fe,case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : c->layer[2 ].interleaving = tvp->u.data;break ; -case DTV_ISDBS_TS_ID : - c->isdbs_ts_id = tvp->u.data; -break ;
drivers/media/dvb-core/dvb_frontend.c static int dtv_property_process_set(struct dvb_frontend *fe, · line 1788
Quoted 10 lines
drivers/media/dvb-core/dvb_frontend.c +5
-2-case DTV_DVBT2_PLP_ID : - c->dvbt2_plp_id = tvp->u.data; + +/* Multistream support */ +case DTV_STREAM_ID : +case DTV_DVBT2_PLP_ID_LEGACY : + c->stream_id = tvp->u.data;break ;/* ATSC-MH */
Em 16-08-2012 22:11, Akihiro TSUKADA escreveu:
Quoted 4 lines
Hi,
It would be nice if you would include a patch to replace
isdbs_ts_idindvb/pt1/va1j5jf8007s.c, which is the only file to use the variable.
Good point. This patch shouldn't break any existing drivers, so you should replace the occurrences of the legacy symbols to reflect this change.
Em 21-08-2012 17:42, Georgi Chorbadzhiyski escreveu:
Quoted 2 lines
Shouldn't
DVB_API_VERSIONminor be increased or I should check fordefined(DTV_STREAM_ID)when implementing MIS support in dvblast?
Good point. API minor version should be incremented on both frontend.h header file and at the DocBook API file.
Could you please address the above requests, and also patch the DVB API docs to reflect this change (Documentation/DocBook/media/dvb/dvbproperty.xml), describing the meaning for this property and for what standards it should be used?
Thank you!
Mauro
16.08.2012, 21:11, "Antti Palosaari" <[email protected]>:
Quoted 2 lines
@Mauro, should we rename also
DTV_ISDBS_TS_IDtoDTV_ISDBS_TS_ID_LEGACYto remind users ?
Maybe leave DTV_ISDBS_TS_ID and convert DTV_DVBT2_PLP_ID to DTV_DVB_STREAM_ID ? and dvbt2_plp_id convert to dvb_stream_id.
Because DVB and ISDB different standards and look like stream id for ISDB is 16 bit, for DVB-S2/T2 8 bit.
Em 17-08-2012 14:52, CrazyCat escreveu:
Quoted 7 lines
16.08.2012, 21:11, "Antti Palosaari" <[email protected]>:
Quoted 2 lines
@Mauro, should we rename also
DTV_ISDBS_TS_IDtoDTV_ISDBS_TS_ID_LEGACYto remind users ?Maybe leave
DTV_ISDBS_TS_IDand convertDTV_DVBT2_PLP_IDtoDTV_DVB_STREAM_ID? anddvbt2_plp_idconvert todvb_stream_id.Because DVB and ISDB different standards and look like stream id for ISDB is 16 bit, for DVB-S2/T2 8 bit.
Well, Frequency range in satellite standards are in kHz, while the frequencies on the other ones are in Hz. So, I don't think that the number of bits should limit it. In a matter of fact, even on DVB-T/T2, DVB-S/S2, ... there are some fields that gained more bits.
So, I don't see any issue on using DTV_DVB_STREAM_ID on all of them, even if the number of bits are different.
Of course, the API documentation should be clear about the field differences.
Regards,
Mauro.
Hi,
Quoted 8 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +0
-0@@ -368,11 +368,8 @@ struct dtv_frontend_properties {u8 interleaving; } layer[3 ];
drivers/media/dvb/dvb-core/dvb_frontend.h struct dtv_frontend_properties { · line 375
Quoted 10 lines
drivers/media/dvb/dvb-core/dvb_frontend.h +2
-5-/* ISDB-T specifics */ -u32 isdbs_ts_id; - -/* DVB-T2 specifics */ -u32 dvbt2_plp_id; +/* Multistream specifics */ +u32 stream_id;/* ATSC-MH specifics */ u8 atscmh_fic_ver;
It would be nice if you would include a patch to replace isdbs_ts_id in dvb/pt1/va1j5jf8007s.c, which is the only file to use the variable.