@@ -42,16 +42,30 @@ public class URILinkageDescriptor extends DVBExtensionDescriptor {
42
42
add (0x00 ,"Online SDT (OSDT) for CI Plus" ).
43
43
add (0x01 ,"DVB-IPTV SD&S" ).
44
44
add (0x02 ,"Material Resolution Server (MRS) for companion screen applications" ).
45
- add (0x03 ,0x7F ,"Reserved for future use" ).
45
+ add (0x03 ,"DVB-I" ).
46
+ add (0x04 ,0x7F ,"Reserved for future use" ).
46
47
add (0x80 ,0xFF ,"User defined" ).
47
48
build ();
48
49
50
+ private static LookUpList dvb_i_endpoint_type_list = new LookUpList .Builder ().
51
+ add (0x00 ,"Not used" ).
52
+ add (0x01 ,"DVB-I Serice List" ).
53
+ add (0x02 ,"Service List Registry query" ).
54
+ add (0x03 ,"Named DVB-I Service List" ).
55
+ add (0x04 ,0xFF ,"Reserved for future use" ).
56
+ build ();
57
+
49
58
private final int uri_linkage_type ;
50
59
private final int uri_length ;
51
60
private final byte [] uri_char ;
52
61
private int min_polling_interval ;
53
62
private byte [] private_data_byte = null ;
54
63
64
+ private int dvb_i_endpoint_type = 0 ;
65
+ private int dvb_i_service_list_name_length = 0 ;
66
+ private String dvb_i_service_list_name = "" ;
67
+ private int dvb_i_service_list_provider_name_length = 0 ;
68
+ private String dvb_i_service_list_provider_name = "" ;
55
69
56
70
public URILinkageDescriptor (final byte [] b , final int offset , final TableSection parent ) {
57
71
super (b , parent );
@@ -66,6 +80,17 @@ public URILinkageDescriptor(final byte[] b, final int offset, final TableSection
66
80
localOffset += 2 ;
67
81
}
68
82
if ((PRIVATE_DATA_OFFSET + descriptorLength ) < localOffset ) {
83
+ if (uri_linkage_type == 0x03 ) { // for DVB-I. Refer to clause 5.1.3.3 of DVB A177
84
+ dvb_i_endpoint_type = getInt (b , localOffset ++, 1 , MASK_8BITS );
85
+ if (dvb_i_endpoint_type == 0x03 ) {
86
+ dvb_i_service_list_name_length = getInt (b , localOffset ++, 1 , MASK_8BITS );
87
+ dvb_i_service_list_name = getString (b , localOffset , dvb_i_service_list_name_length );
88
+ localOffset += dvb_i_service_list_name_length ;
89
+ dvb_i_service_list_provider_name_length = getInt (b , localOffset ++, 1 , MASK_8BITS );
90
+ dvb_i_service_list_provider_name = getString (b , localOffset , dvb_i_service_list_provider_name_length );
91
+ localOffset += dvb_i_service_list_provider_name_length ;
92
+ }
93
+ }
69
94
private_data_byte = copyOfRange (b , localOffset , localOffset + descriptorLength + 2 );
70
95
}
71
96
}
@@ -80,6 +105,13 @@ public DefaultMutableTreeNode getJTreeNode(final int modus) {
80
105
if ((uri_linkage_type == 0x00 ) || (uri_linkage_type == 0x01 )) {
81
106
t .add (new KVP ("min_polling_interval" , min_polling_interval ));
82
107
}
108
+ if (uri_linkage_type == 0x03 ) {
109
+ t .add (new KVP ("dvb-i endpoint_type" , dvb_i_endpoint_type ).setDescription (getDVBIEndpointType (dvb_i_endpoint_type )));
110
+ if (dvb_i_endpoint_type == 0x03 ) {
111
+ t .add (new KVP ("dvb-i service_list_name" , dvb_i_service_list_name ));
112
+ t .add (new KVP ("dvb-i service_list_provider_name" , dvb_i_service_list_provider_name ));
113
+ }
114
+ }
83
115
if (private_data_byte != null ) {
84
116
t .add (new KVP ("private_data_byte" , private_data_byte ));
85
117
}
@@ -90,4 +122,8 @@ private static String getURILinkageTypeString(int uri_linkage_type) {
90
122
return uri_linkage_type_list .get (uri_linkage_type );
91
123
}
92
124
125
+ private static String getDVBIEndpointType (int dvb_i_endpoint_type ) {
126
+ return dvb_i_endpoint_type_list .get (dvb_i_endpoint_type );
127
+ }
128
+
93
129
}
0 commit comments