-
Notifications
You must be signed in to change notification settings - Fork 2
/
CdsStrings.h
468 lines (342 loc) · 18.6 KB
/
CdsStrings.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
/*****************************************************************************
* Copyright (C) 2012- Brad Love : b-rad at next dimension dot cc
* Next Dimension Innovations : http://nextdimension.cc
* http://b-rad.cc
* Copyright 2006 - 2011 Intel Corporation
*
* This file is part of TV-Now
* TV-Now is an Open Source DLNA Media Server. TV-Now's purpose is
* to serve Live TV (and recorded content) over the local network
* to televisions, computers, media players, tablets, and consoles.
* TV-Now delivers EPG data in the DLNA container for compatible
* clients and also offers an html5+jquery tv player with full EPG.
* TV-Now uses the libdvbtee library as its backend.
*
* TV-Now is compatible with:
* - ATSC
* - Clear QAM
* - DVB-T
*
* TV-Now is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Note: All additional terms from Section 7 of GPLv3 apply to this software.
* This includes requiring preservation of specified reasonable legal
* notices or author attributions in the material or in the Appropriate
* Legal Notices displayed by this software.
*
* You should have received a copy of the GNU General Public License v3
* along with TV-Now. If not, see <http://www.gnu.org/licenses/>.
*
* An Apache 2.0 licensed version of this software is privately maintained
* for licensing to interested commercial parties. Apache 2.0 license is
* compatible with the GPLv3, which allows the Apache 2.0 version to be
* included in proprietary systems, while keeping the public GPLv3 version
* completely open source. GPLv3 can NOT be re-licensed as Apache 2.0, since
* Apache 2.0 license is only a subset of GPLv3. To inquire about licensing
* the commercial version of TV-Now contact: tv-now at nextdimension dot cc
*
* Note about contributions and patch submissions:
* The commercial Apache 2.0 version of TV-Now is used as the master.
* The GPLv3 version of TV-Now will be identical to the Apache 2.0 version.
* All contributions and patches are licensed under Apache 2.0
* By submitting a patch you implicitly agree to
* http://www.apache.org/licenses/icla.txt
* You retain ownership and when merged the license will be upgraded to GPLv3.
*
*****************************************************************************/
#ifndef _CDS_STRINGS_H
#define _CDS_STRINGS_H
/*
* Number of chars needed to represent 32 and 64 bit integers, including sign and null char.
*/
#define SIZE_INT32_AS_CHARS 12
#define SIZE_INT64_AS_CHARS 24
/*
* Defines a number of well-defined CDS related strings
* for DIDL-Lite as well as UPnP argument names.
*/
#define CDS_STRING_URN_CDS "urn:schemas-upnp-org:service:ContentDirectory:1"
#define CDS_STRING_BROWSE "Browse"
#define CDS_STRING_SEARCH "Search"
#define CDS_STRING_RESULT "Result"
#define CDS_STRING_NUMBER_RETURNED "NumberReturned"
#define CDS_STRING_TOTAL_MATCHES "TotalMatches"
#define CDS_STRING_UPDATE_ID "UpdateID"
#define CDS_ROOT_CONTAINER_ID "0"
#define CDS_STRING_BROWSE_DIRECT_CHILDREN "BrowseDirectChildren"
#define CDS_STRING_BROWSE_METADATA "BrowseMetadata"
#define CDS_DIDL_TITLE "\r\n<dc:title>%s</dc:title>"
#define CDS_DIDL_TITLE_LEN 23
#define CDS_DIDL_CREATOR "\r\n<dc:creator>%s</dc:creator>"
#define CDS_DIDL_CREATOR_LEN 27
#define CDS_DIDL_CLASS "\r\n<upnp:class>%s</upnp:class>"
#define CDS_DIDL_CLASS_LEN 27
#define CDS_DIDL_ITEM_START "\r\n<item id=\"%s\" parentID=\"%s\" restricted=\"%d\">"
#define CDS_DIDL_ITEM_START_LEN 40
#define CDS_DIDL_REFITEM_START "\r\n<item id=\"%s\" parentID=\"%s\" restricted=\"%d\" refID=\"%s\">"
#define CDS_DIDL_REFITEM_START_LEN 49
#define CDS_DIDL_ITEM_END "\r\n</item>"
#define CDS_DIDL_ITEM_END_LEN 9
#define CDS_DIDL_CONTAINER_START "\r\n<container id=\"%s\" parentID=\"%s\" restricted=\"%d\" searchable=\"%d\">"
#define CDS_DIDL_CONTAINER_START_LEN 59
#define CDS_DIDL_CONTAINER_END "\r\n</container>"
#define CDS_DIDL_CONTAINER_END_LEN 16
#define CDS_DIDL_RES_START "\r\n<res protocolInfo=\"%s\""
#define CDS_DIDL_RES_START_LEN 22
#define CDS_DIDL_ATTRIB_RESOLUTION " resolution=\"%dx%d\""
#define CDS_DIDL_ATTRIB_RESOLUTION_LEN 15
#define CDS_DIDL_ATTRIB_DURATION " duration=\"%s\""
#define CDS_DIDL_ATTRIB_DURATION_LEN 12
#define CDS_DIDL_ATTRIB_BITRATE " bitrate=\"%d\""
#define CDS_DIDL_ATTRIB_BITRATE_LEN 11
#define CDS_DIDL_ATTRIB_COLORDEPTH " colorDepth=\"%d\""
#define CDS_DIDL_ATTRIB_COLORDEPTH_LEN 14
#define CDS_DIDL_ATTRIB_SIZE " size=\"%" PRIu64 "\""
#define CDS_DIDL_ATTRIB_SIZE_LEN 8
#define CDS_DIDL_RES_VALUE ">%s</res>"
#define CDS_DIDL_RES_VALUE_LEN 7
#define CDS_DIDL_HEADER_ESCAPED "<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">"
#define CDS_DIDL_HEADER_ESCAPED_LEN 197
#define CDS_DIDL_FOOTER_ESCAPED "\r\n</DIDL-Lite>"
#define CDS_DIDL_FOOTER_ESCAPED_LEN 20
#define CDS_DIDL_TITLE_ESCAPED "\r\n<dc:title>%s</dc:title>"
#define CDS_DIDL_TITLE_ESCAPED_LEN 35
#define CDS_DIDL_TITLE1_ESCAPED "\r\n<dc:title>"
#define CDS_DIDL_TITLE2_ESCAPED "</dc:title>"
#define CDS_DIDL_CREATOR_ESCAPED "\r\n<dc:creator>%s</dc:creator>"
#define CDS_DIDL_CREATOR_ESCAPED_LEN 39
#define CDS_DIDL_CREATOR1_ESCAPED "\r\n<dc:creator>"
#define CDS_DIDL_CREATOR2_ESCAPED "</dc:creator>"
#define CDS_DIDL_ALBUM_ESCAPED "\r\n<upnp:album>%s</upnp:album>"
#define CDS_DIDL_ALBUM_ESCAPED_LEN 39
#define CDS_DIDL_ALBUM1_ESCAPED "\r\n<upnp:album>"
#define CDS_DIDL_ALBUM2_ESCAPED "</upnp:album>"
#define CDS_DIDL_GENRE_ESCAPED "\r\n<upnp:genre>%s</upnp:genre>"
#define CDS_DIDL_GENRE_ESCAPED_LEN 39
#define CDS_DIDL_GENRE1_ESCAPED "\r\n<upnp:genre>"
#define CDS_DIDL_GENRE2_ESCAPED "</upnp:genre>"
#define CDS_DIDL_GENRE_EXT1_ESCAPED "\r\n<upnp:genre extended=\"%s\">"
#define CDS_DIDL_GENRE_EXT2_ESCAPED "</upnp:genre>"
#define CDS_DIDL_GENRE_EXT2_ESCAPED_LEN 55
#define CDS_DIDL_CLASS_ESCAPED "\r\n<upnp:class>%s</upnp:class>"
#define CDS_DIDL_CLASS_ESCAPED_LEN 39
#define CDS_DIDL_CLASS1_ESCAPED "\r\n<upnp:class>"
#define CDS_DIDL_CLASS2_ESCAPED "</upnp:class>"
#define CDS_DIDL_ITEM_START_ESCAPED "\r\n<item id="%s" parentID="%s" restricted="%d">"
#define CDS_DIDL_ITEM_START_ESCAPED_LEN 76
#define CDS_DIDL_ITEM_START1_ESCAPED "\r\n<item id=""
#define CDS_DIDL_ITEM_START2_ESCAPED "" parentID=""
#define CDS_DIDL_ITEM_START3_ESCAPED "" restricted=""
#define CDS_DIDL_ITEM_START4_ESCAPED "">"
#define CDS_DIDL_REFITEM_START_ESCAPED "\r\n<item id="%s" parentID="%s" restricted="%d" refID="%s">"
#define CDS_DIDL_REFITEM_START_ESCAPED_LEN 95
#define CDS_DIDL_REFITEM_START1_ESCAPED "\r\n<item id=""
#define CDS_DIDL_REFITEM_START2_ESCAPED "" parentID=""
#define CDS_DIDL_REFITEM_START3_ESCAPED "" restricted=""
#define CDS_DIDL_REFITEM_START4_ESCAPED "" refID=""
#define CDS_DIDL_REFITEM_START5_ESCAPED "">"
#define CDS_DIDL_ITEM_END_ESCAPED "\r\n</item>"
#define CDS_DIDL_ITEM_END_ESCAPED_LEN 15
#define CDS_DIDL_CONTAINER_START_ESCAPED "\r\n<container id="%s" parentID="%s" restricted="%d"> searchable="%d" childCount="%d""
#define CDS_DIDL_CONTAINER_START_ESCAPED_LEN 129
#define CDS_DIDL_CONTAINER_START1_ESCAPED "\r\n<container id=""
#define CDS_DIDL_CONTAINER_START2_ESCAPED "" parentID=""
#define CDS_DIDL_CONTAINER_START3_ESCAPED "" restricted=""
#define CDS_DIDL_CONTAINER_START4_ESCAPED "" searchable=""
#define CDS_DIDL_CONTAINER_START5_ESCAPED "" childCount="%d"
#define CDS_DIDL_CONTAINER_START6_ESCAPED "">"
#define CDS_DIDL_CONTAINER_END_ESCAPED "\r\n</container>"
#define CDS_DIDL_CONTAINER_END_ESCAPED_LEN 20
#define CDS_DIDL_RES_START_ESCAPED "\r\n<res protocolInfo="%s""
#define CDS_DIDL_RES_START_ESCAPED_LEN 35
#define CDS_DIDL_RES_START1_ESCAPED "\r\n<res protocolInfo=""
#define CDS_DIDL_RES_START2_ESCAPED """
#define CDS_DIDL_ATTRIB_RESOLUTION_ESCAPED " resolution="%dx%d""
#define CDS_DIDL_ATTRIB_RESOLUTION_ESCAPED_LEN 24
#define CDS_DIDL_ATTRIB_DURATION_ESCAPED " duration="%s""
#define CDS_DIDL_ATTRIB_DURATION_ESCAPED_LEN 22
#define CDS_DIDL_ATTRIB_BITRATE_ESCAPED " bitrate="%d""
#define CDS_DIDL_ATTRIB_BITRATE_ESCAPED_LEN 21
#define CDS_DIDL_ATTRIB_BITSPERSAMPLE_ESCAPED " bitsPerSample="%d""
#define CDS_DIDL_ATTRIB_BITSPERSAMPLE_ESCAPED_LEN 27
#define CDS_DIDL_ATTRIB_COLORDEPTH_ESCAPED " colorDepth="%d""
#define CDS_DIDL_ATTRIB_COLORDEPTH_ESCAPED_LEN 24
#define CDS_DIDL_ATTRIB_NRAUDIOCHANNELS_ESCAPED " nrAudioChannels="%d""
#define CDS_DIDL_ATTRIB_NRAUDIOCHANNELS_ESCAPED_LEN 29
#define CDS_DIDL_ATTRIB_PROTECTION_ESCAPED " protection="%s""
#define CDS_DIDL_ATTRIB_PROTECTION_ESCAPED_LEN 24
#define CDS_DIDL_ATTRIB_PROTECTION_START " protection=""
#define CDS_DIDL_ATTRIB_PROTECTION_END """
#define CDS_DIDL_ATTRIB_SAMPLEFREQUENCY_ESCAPED " sampleFrequency="%d""
#define CDS_DIDL_ATTRIB_SAMPLEFREQUENCY_ESCAPED_LEN 29
#define CDS_DIDL_ATTRIB_SIZE_ESCAPED " size="%" PRIu64 """
#define CDS_DIDL_ATTRIB_SIZE_ESCAPED_LEN 18
#define CDS_DIDL_RES_VALUE_ESCAPED ">%s</res>"
#define CDS_DIDL_RES_VALUE_ESCAPED_LEN 16
#define CDS_DIDL_RES_VALUE1_ESCAPED ">"
#define CDS_DIDL_RES_VALUE2_ESCAPED "</res>"
#define CDS_DIDL_CHANNEL_NUM1 "\r\n<upnp:channelNr>"
#define CDS_DIDL_CHANNEL_NUM2 "</upnp:channelNr>"
#define CDS_DIDL_CHANNEL_NUM_LEN 47
#define CDS_DIDL_CHANNEL_NAME1 "\r\n<upnp:channelName>"
#define CDS_DIDL_CHANNEL_NAME2 "</upnp:channelName>"
#define CDS_DIDL_CHANNEL_NAME_LEN 51
#define CDS_DIDL_CHANNEL_ID1 "\r\n<upnp:channelID>"
#define CDS_DIDL_CHANNEL_ID2 "</upnp:channelID>"
#define CDS_DIDL_CHANNEL_ID_LEN 48
#define CDS_DIDL_EPG_PROVIDER1 "\r\n<upnp:epgProviderName>"
#define CDS_DIDL_EPG_PROVIDER2 "</upnp:epgProviderName>"
#define CDS_DIDL_EPG_PROVIDER_LEN 59
#define CDS_DIDL_SVC_PROVIDER1 "\r\n<upnp:serviceProvider>"
#define CDS_DIDL_SVC_PROVIDER2 "</upnp:serviceProvider>"
#define CDS_DIDL_SVC_PROVIDER_LEN 59
#define CDS_DIDL_CALL_SIGN1 "\r\n<upnp:callSign>"
#define CDS_DIDL_CALL_SIGN2 "</upnp:callSign>"
#define CDS_DIDL_CALL_SIGN_LEN 45
#define CDS_DIDL_NETWORK_AFFIL1 "\r\n<upnp:networkAffiliation>"
#define CDS_DIDL_NETWORK_AFFIL2 "</upnp:networkAffiliation>"
#define CDS_DIDL_NETWORK_AFFIL_LEN 65
#define CDS_DIDL_RECORDABLE1 "\r\n<upnp:recordable>"
#define CDS_DIDL_RECORDABLE2 "</upnp:recordable>"
#define CDS_DIDL_RECORDABLE_LEN 49
#define CDS_DIDL_DATE_RANGE1 "\r\n<upnp:dateTimeRange>"
#define CDS_DIDL_DATE_RANGE2 "</upnp:dateTimeRange>"
#define CDS_DIDL_DATE_RANGE_LEN 55
#define CDS_DIDL_START_TIME1 "\r\n<upnp:scheduledStartTime>"
#define CDS_DIDL_START_TIME2 "</upnp:scheduledStartTime>"
#define CDS_DIDL_START_TIME_LEN 65
#define CDS_DIDL_START_TIME_USE1 "\r\n<upnp:scheduledStartTime usage=\"%s\">"
#define CDS_DIDL_START_TIME_USE2 "</upnp:scheduledStartTime>"
#define CDS_DIDL_START_TIME_USE_LEN 76
#define CDS_DIDL_END_TIME1 "\r\n<upnp:scheduledEndTime>"
#define CDS_DIDL_END_TIME2 "</upnp:scheduledEndTime>"
#define CDS_DIDL_END_TIME_LEN 61
#define CDS_DIDL_DURATION1 "\r\n<upnp:scheduledDurationTime>"
#define CDS_DIDL_DURATION2 "</upnp:scheduledDurationTime>"
#define CDS_DIDL_DURATION_LEN 71
#define CDS_DIDL_PROGRAM_ID1 "\r\n<upnp:programID>"
#define CDS_DIDL_PROGRAM_ID2 "</upnp:programID>"
#define CDS_DIDL_PROGRAM_ID_LEN 47
#define CDS_DIDL_PROGRAM_ID_TYPE1 "\r\n<upnp:programID type=\"%s\">"
#define CDS_DIDL_PROGRAM_ID_TYPE2 "</upnp:programID>"
#define CDS_DIDL_PROGRAM_ID_TYPE_LEN 57
#define CDS_DIDL_SERIES_ID1 "\r\n<upnp:seriesID>"
#define CDS_DIDL_SERIES_ID2 "</upnp:seriesID>"
#define CDS_DIDL_SERIES_ID_LEN 55
#define CDS_DIDL_EPISODE_NR1 "\r\n<upnp:episodeNumber>"
#define CDS_DIDL_EPISODE_NR2 "</upnp:episodeNumber>"
#define CDS_DIDL_EPISODE_NR_LEN 55
#define CDS_DIDL_EPISODE_SEASON1 "\r\n<upnp:episodeSeason>"
#define CDS_DIDL_EPISODE_SEASON2 "</upnp:episodeSeason>"
#define CDS_DIDL_EPISODE_SEASON_LEN 55
#define CDS_DIDL_EPISODE_TYPE1 "\r\n<upnp:episodeType>"
#define CDS_DIDL_EPISODE_TYPE2 "</upnp:episodeType>"
#define CDS_DIDL_EPISODE_TYPE_LEN 51
#define CDS_DIDL_LONG_DESCR1 "\r\n<upnp:longDescription>"
#define CDS_DIDL_LONG_DESCR2 "</upnp:longDescription>"
#define CDS_DIDL_LONG_DESCR_LEN 59
#define CDS_DIDL_DATE1 "\r\n<dc:date>"
#define CDS_DIDL_DATE2 "</dc:date>"
#define CDS_DIDL_DATE_LEN 33
#define CDS_DIDL_RATING1 "\r\n<upnp:rating>"
#define CDS_DIDL_RATING2 "</upnp:rating>"
#define CDS_DIDL_RATING_LEN 41
#define CDS_DIDL_RATING_TYPE1 "\r\n<upnp:rating type=\"%s\">"
#define CDS_DIDL_RATING_TYPE2 "</upnp:rating>"
#define CDS_DIDL_RATING_TYPE_LEN 41
#define CDS_DIDL_LANGUAGE1 "\r\n<dc:language>"
#define CDS_DIDL_LANGUAGE2 "</dc:language>"
#define CDS_DIDL_LANGUAGE_LEN 41
#define CDS_DIDL_ACTOR1 "\r\n<upnp:actor>"
#define CDS_DIDL_ACTOR2 "</upnp:actor>"
#define CDS_DIDL_ACTOR_LEN 39
#define CDS_DIDL_RES_THUMBNAIL "<upnp:albumArtURI dlna:profileID="JPEG_TN" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/">"
#define CDS_DIDL_RES_THUMBNAIL2 "</upnp:albumArtURI>"
#define CDS_DIDL_RES_THUMBNAIL_LEN 142
/********************************************/
#define CDS_FILTER_CHILDCOUNT "@childCount"
#define CDS_FILTER_CHILDCOUNT_LEN 11
#define CDS_FILTER_CONTAINER_CHILDCOUNT "container@childCount"
#define CDS_FILTER_CONTAINER_CHILDCOUNT_LEN 20
#define CDS_FILTER_CONTAINER_SEARCHABLE "container@searchable"
#define CDS_FILTER_CONTAINER_SEARCHABLE_LEN 20
#define CDS_FILTER_CREATOR "dc:creator"
#define CDS_FILTER_CREATOR_LEN 10
#define CDS_FILTER_ALBUM "upnp:album"
#define CDS_FILTER_ALBUM_LEN 10
#define CDS_FILTER_GENRE "upnp:genre"
#define CDS_FILTER_GENRE_LEN 10
#define CDS_FILTER_RES "res"
#define CDS_FILTER_RES_LEN 3
#define CDS_FILTER_RES_BITRATE "res@bitrate"
#define CDS_FILTER_RES_BITRATE_LEN 11
#define CDS_FILTER_RES_BITSPERSAMPLE "res@bitsPerSample"
#define CDS_FILTER_RES_BITSPERSAMPLE_LEN 17
#define CDS_FILTER_RES_COLORDEPTH "res@colorDepth"
#define CDS_FILTER_RES_COLORDEPTH_LEN 14
#define CDS_FILTER_RES_DURATION "res@duration"
#define CDS_FILTER_RES_DURATION_LEN 12
#define CDS_FILTER_RES_PROTECTION "res@protection"
#define CDS_FILTER_RES_PROTECTION_LEN 14
#define CDS_FILTER_RES_RESOLUTION "res@resolution"
#define CDS_FILTER_RES_RESOLUTION_LEN 14
#define CDS_FILTER_RES_SAMPLEFREQUENCY "res@sampleFrequency"
#define CDS_FILTER_RES_SAMPLEFREQUENCY_LEN 19
#define CDS_FILTER_RES_NRAUDIOCHANNELS "res@nrAudioChannels"
#define CDS_FILTER_RES_NRAUDIOCHANNELS_LEN 19
#define CDS_FILTER_RES_SIZE "res@size"
#define CDS_FILTER_RES_SIZE_LEN 8
#define CDS_FILTER_SEARCHABLE "@searchable"
#define CDS_FILTER_SEARCHABLE_LEN 11
#define CDS_FILTER_CHANNEL_NUMBER "upnp:channelNr"
#define CDS_FILTER_CHANNEL_NUMBER_LEN 14
#define CDS_FILTER_CHANNEL_NAME "upnp:channelName"
#define CDS_FILTER_CHANNEL_NAME_LEN 16
#define CDS_FILTER_EPG_PROVIDER "upnp:epgProviderName"
#define CDS_FILTER_EPG_PROVIDER_LEN 20
#define CDS_FILTER_SVC_PROVIDER "upnp:serviceProvider"
#define CDS_FILTER_SVC_PROVIDER_LEN 20
#define CDS_FILTER_CHANNEL_ID "upnp:channelID"
#define CDS_FILTER_CHANNEL_ID_LEN 14
#define CDS_FILTER_CALL_SIGN "upnp:callSign"
#define CDS_FILTER_CALL_SIGN_LEN 13
#define CDS_FILTER_NETWORK_AFFIL "upnp:networkAffiliation"
#define CDS_FILTER_NETWORK_AFFIL_LEN 24
#define CDS_FILTER_RECORDABLE "upnp:recordable"
#define CDS_FILTER_RECORDABLE_LEN 15
#define CDS_FILTER_DATE_RANGE "upnp:dateTimeRange"
#define CDS_FILTER_DATE_RANGE_LEN 18
#define CDS_FILTER_START_TIME "upnp:scheduledStartTime"
#define CDS_FILTER_START_TIME_LEN 23
#define CDS_FILTER_END_TIME "upnp:scheduledEndTime"
#define CDS_FILTER_END_TIME_LEN 21
#define CDS_FILTER_DURATION "upnp:scheduledDurationTime"
#define CDS_FILTER_DURATION_LEN 27
#define CDS_FILTER_PROGRAM_ID "upnp:programID"
#define CDS_FILTER_PROGRAM_ID_LEN 14
#define CDS_FILTER_SERIES_ID "upnp:seriesID"
#define CDS_FILTER_SERIES_ID_LEN 13
#define CDS_FILTER_EPISODE_NR "upnp:episodeNumber"
#define CDS_FILTER_EPISODE_NR_LEN 18
#define CDS_FILTER_EPISODE_SEASON "upnp:episodeSeason"
#define CDS_FILTER_EPISODE_SEASON_LEN 18
#define CDS_FILTER_EPISODE_TYPE "upnp:episodeType"
#define CDS_FILTER_EPISODE_TYPE_LEN 16
#define CDS_FILTER_LONG_DESCR "upnp:longDescription"
#define CDS_FILTER_LONG_DESCR_LEN 20
#define CDS_FILTER_DATE "dc:date"
#define CDS_FILTER_DATE_LEN 7
#define CDS_FILTER_RATING "upnp:rating"
#define CDS_FILTER_RATING_LEN 11
#define CDS_FILTER_LANGUAGE "dc:language"
#define CDS_FILTER_LANGUAGE_LEN 11
#define CDS_FILTER_ACTOR "upnp:actor"
#define CDS_FILTER_ACTOR_LEN 10
#define CDS_FILTER_THUMB "upnp:albumArtURI"
#define CDS_FILTER_THUMB_LEN 16
#define CDS_FILTER_THUMB2 "upnp:albumArtURI@dlna:profileID"
#define CDS_FILTER_THUMB2_LEN 31
#endif