dvb_dr_dvb.h 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145
  1. /***********************************************************************/
  2. /**
  3. *
  4. * \file dvb_dr_dvb.h
  5. *
  6. * \brief header for descriptor tag for 0x40~..
  7. *
  8. * \note Copyright (C) 2006 SunMedia Co, chengdu\n
  9. * The source code in this file is written by anlzhao referring to\n
  10. * ETSI EN 300 468 and owned by SunMedia Coporation.
  11. *
  12. * \author anlzhao@sunmedia.com.cn
  13. *
  14. ***********************************************************************/
  15. #ifndef _DVB_DR_DVB_H_
  16. #define _DVB_DR_DVB_H_
  17. #include <types.h>
  18. #include "dvb_dr.h"
  19. #include "mid_common.h"
  20. /**
  21. * \brief network name descriptor structure for 0x40.
  22. *
  23. * This structure is used to store a decoded network name
  24. * descriptor. (ETSI EN 300 468 section 6.2.30).
  25. */
  26. typedef struct dvbpsi_network_name_dr_s
  27. {
  28. UINT8 i_network_name_length; /*!< service_type */
  29. UINT8 network_name[256]; /*!< name of the service */
  30. } dvbpsi_network_name_dr_t;
  31. /*
  32. * struct dvbpsi_service_list_dr_s(0x41)
  33. * service list structure for 0x41.
  34. *
  35. * This structure is used to store service list. //cwhuang 100623 added
  36. */
  37. typedef struct dvbpsi_bat_service_list_dr_s
  38. {
  39. UINT16 trans_id;
  40. UINT8 ucDescriptorLength; /* service list descriptor length */
  41. UINT8 *pucServiceListdata; /* service list data */
  42. } dvbpsi_bat_service_list_dr_t;
  43. /**
  44. * \brief network name descriptor structure for 0x5b.
  45. *
  46. * This structure is used to store a decoded multiligual network name
  47. * descriptor. (ETSI EN 300 468 section 6.2.30).
  48. */
  49. typedef struct dvbpsi_multinetwork_name_dr_s
  50. {
  51. UINT8 i_iso6392_language_code[4]; /*!< ??? */
  52. UINT8 i_multinetwork_name_length; /*!< ??? */
  53. UINT8 ucMultiNetworkName[256]; /*!< ??? */
  54. struct dvbpsi_multinetwork_name_dr_s *next; /*!< ??? */
  55. }dvbpsi_multinetwork_name_dr_t;
  56. /**
  57. * \brief network name descriptor structure for 0x40.
  58. *
  59. * This structure is used to store a decoded network name
  60. * descriptor. (ETSI EN 300 468 section 6.2.30).
  61. */
  62. typedef struct dvbpsi_satellite_system_dr_s
  63. {
  64. INT32 freq; /*!< satellite frequency MHz*100 */
  65. INT16 orbital_pos; /*!< orbital position degree*10 */
  66. UINT8 modulation; /*!< modulation */
  67. UINT8 modulation_system; /*!< modulation system*/
  68. UINT8 polarization; /*!< polarization */
  69. UINT8 west_east_flag; /*!< east/west flag */
  70. INT32 symbol_rate; /*!< symbol rate */
  71. UINT8 fec_inner; /*!< fec inner */
  72. }dvbpsi_satellite_system_dr_t;
  73. /**
  74. * \brief network name descriptor structure for 0x40.
  75. *
  76. * This structure is used to store a decoded network name
  77. * descriptor. (ETSI EN 300 468 section 6.2.30).
  78. */
  79. typedef struct dvbpsi_cable_system_dr_s
  80. {
  81. UINT32 freq; /*!< cable frequency KHz */
  82. UINT8 fec_outer; /*!< fec outer */
  83. UINT8 modulation; /*!< modulation */
  84. UINT32 symbol_rate; /*!< symbol rate */
  85. UINT8 fec_inner; /*!< fec inner */
  86. } dvbpsi_cable_system_dr_t;
  87. /**
  88. * \brief network name descriptor structure for 0x5a.
  89. *
  90. * This structure is used to store a decoded delievery system info
  91. * descriptor. (ETSI EN 300 468 section 6.2.30).
  92. */
  93. typedef struct dvbpsi_terrestrial_system_dr_s
  94. {
  95. UINT32 u32freq; ///< frequency (kHz)
  96. UINT8 u8bandwidth; ///< bandwidth
  97. UINT8 u8constellation; ///< constellaon
  98. UINT8 u8hierarchy; ///< hierarchy
  99. UINT8 u8coderate_h; ///< code rate (High)
  100. UINT8 u8coderate_l; ///< code rate (Low)
  101. UINT8 u8guardinterval; ///< guard interval
  102. UINT8 u8transmode; ///< transmode
  103. UINT8 u8otherfreqflag; ///< other_frequency_flag
  104. } dvbpsi_terrestrial_system_dr_t;
  105. typedef struct dvnpsi_t2_ext_s
  106. {
  107. UINT8 cell_id_extension;
  108. UINT32 transposer_frequency;
  109. }dvnpsi_t2_ext_t;
  110. typedef struct dvbpsi_t2_freq_info_s
  111. {
  112. UINT16 cell_id;
  113. UINT8 centre_freq_number;
  114. UINT32 *centre_frequency;
  115. UINT8 ext_number;
  116. dvnpsi_t2_ext_t *ext;
  117. struct dvbpsi_t2_freq_info_s *next;
  118. }dvbpsi_t2_freq_info_t;
  119. typedef struct dvbpsi_T2_system_dr_s
  120. {
  121. UINT8 plp_id;
  122. UINT8 T2_system_id;
  123. UINT8 SISO_MISO;
  124. UINT8 bandwidth;
  125. UINT8 guard_interval;
  126. UINT8 transmission_mode;
  127. UINT8 other_frequency_flag;
  128. UINT8 tfs_flag;
  129. dvbpsi_t2_freq_info_t *freq_info;
  130. } dvbpsi_T2_system_dr_t;
  131. /**
  132. * \brief ISDB-T delivery system descriptor structure for 0x5a.
  133. *
  134. * This structure is used to store a decoded ISDB-T delievery system info
  135. * descriptor. (ABNTNBR 15603-3 section 8.3.31).
  136. * zhongbaoxing added for sbtvd @20120323
  137. */
  138. typedef struct dvbpsi_isdbterrestrial_system_dr_s
  139. {
  140. UINT16 u16AreaCode; ///< area code
  141. UINT8 u8guardinterval; ///< guard interval 00:1/32 01:1/16 10:1/8 11:1/4
  142. UINT8 u8transmode; ///< transmode 00:Mode1 01:Mode2 10:Mode3 11:Undef
  143. UINT16 *pu16Wfreq; ///< frequency
  144. } dvbpsi_isdbterrestrial_system_dr_t;
  145. /**
  146. * \brief "service" descriptor structure for 0x48.
  147. *
  148. * This structure is used to store a decoded "service"
  149. * descriptor. (ETSI EN 300 468 section 6.2.30).
  150. */
  151. typedef struct dvbpsi_service_dr_s
  152. {
  153. UINT8 i_service_type; /*!< service_type */
  154. UINT8 i_service_provider_name_length; /*!< length of the i_service_provider_name array */
  155. UINT8 service_provider_name[256]; /*!< name of the service provider */
  156. UINT8 i_service_name_length; /*!< length of the i_service_name array */
  157. UINT8 service_name[256]; /*!< name of the service */
  158. } dvbpsi_service_dr_t;
  159. //zhaorui 100925 add for mantis 0105229 +
  160. /**
  161. * \brief one country structure.
  162. *
  163. * This structure is used since country code will contain several
  164. * country code
  165. */
  166. typedef struct dvbpsi_country_s
  167. {
  168. UINT8 country_code[3]; ///< country code
  169. } dvbpsi_country_t;
  170. /**
  171. * \brief "country availability" descriptor structure for 0x49.
  172. *
  173. * This structure is used to store a decoded "country availability"
  174. * descriptor. (ETSI EN 300 468 section 6.2.10).
  175. */
  176. typedef struct dvbpsi_country_avail_dr_s
  177. {
  178. UINT8 country_nmb;
  179. UINT8 country_avail_flag;
  180. dvbpsi_country_t *p_country_code;
  181. struct dvbpsi_country_avail_dr_s *pNext;
  182. } dvbpsi_country_avail_dr_t;
  183. //zhaorui 100925 add for mantis 0105229 -
  184. typedef enum
  185. {
  186. DVBPSI_FREQLIST_CODINGTYPE_NOT_DEFINE,
  187. DVBPSI_FREQLIST_CODINGTYPE_SATELLITE,
  188. DVBPSI_FREQLIST_CODINGTYPE_CABLE,
  189. DVBPSI_FREQLIST_CODINGTYPE_TERRESTRIAL,
  190. } dvbpsi_freqlist_codingtype_e;
  191. /**
  192. * \brief one centre frequency structure.
  193. *
  194. * This structure is used since countre frequency code will contain several
  195. * centre frequencies
  196. */
  197. typedef struct dvbpsi_frequency_s
  198. {
  199. UINT8 Cfrequency[4]; ///< centre frequency code 10Hz
  200. } dvbpsi_frequency_t;
  201. /**
  202. * \brief frequency list descriptor structure for 0x62.
  203. *
  204. * This structure is used to store a decoded frequency list
  205. * descriptor. (ETSI EN 300 468 section 6.2.17).
  206. */
  207. typedef struct dvbpsi_frequency_list_dr_s
  208. {
  209. dvbpsi_freqlist_codingtype_e coding_type;
  210. dvbpsi_frequency_t *p_centre_freq;
  211. } dvbpsi_frequency_list_dr_t;
  212. /**
  213. * \brief one centre announcement structure.
  214. *
  215. * This structure is used since countre anouncement code will contain several
  216. * centre anouncement
  217. */
  218. typedef struct dvbpsi_anouncement_s
  219. {
  220. UINT8 announcement_type :4;
  221. UINT8 reference_type :4;
  222. UINT16 original_network_id;
  223. UINT16 transport_stream_id;
  224. UINT16 service_id;
  225. UINT8 component_tag;
  226. } dvbpsi_anouncement_t;
  227. /**
  228. * \brief announcement support descriptor structure for 0x6e.
  229. *
  230. * This structure is used to store a decoded announcement support
  231. * descriptor. (ETSI EN 300 468 section 6.2.3).
  232. */
  233. typedef struct dvbpsi_announcemen_support_dr_s
  234. {
  235. UINT8 annoucement_number;
  236. dvbpsi_anouncement_t *p_announcement;
  237. } dvbpsi_announcemen_support_dr_t;
  238. /**
  239. * \brief "linkage" descriptor structure.
  240. *
  241. * This structure is used to store a decoded "linkage"
  242. * descriptor.
  243. */
  244. typedef struct dvbpsi_linkage_dr_s
  245. {
  246. UINT16 i_transport_stream_id; /*!< CA system_ID */
  247. UINT16 i_original_network_id; /*!< CA PID */
  248. UINT16 i_service_id; /*!< service ID */
  249. UINT8 i_linkage_type; /*!< linkage type */
  250. UINT8 length; /*!< length */
  251. UINT8 data[249]; /*!< data */
  252. } dvbpsi_linkage_dr_t;
  253. #ifdef SUPPORT_ASTRA_LCN
  254. typedef struct _scan_linkinfo_t{
  255. UINT16 u16TsId;
  256. UINT16 u16OrgNetId;
  257. UINT16 u16ServiceId;
  258. UINT8 u8LinkType;
  259. }dvbpsi_LinkInfo_t;
  260. #endif
  261. /**
  262. * struct dvbpsi_strmid_dr_s(0x52)
  263. * (ISO/IEC 13818-1 section 2.6.18).
  264. */
  265. typedef struct dvbpsi_strmid_dr_s {
  266. UINT8 i_code_length; ///< code length
  267. UINT8 i_comp_data; ///< compare data
  268. } dvbpsi_strmid_dr_t;
  269. /**
  270. * struct dvbpsi_aac_dr_s(0x7c)
  271. * (ISO/IEC 13818-1 section 2.6.18).
  272. */
  273. typedef struct dvbpsi_aac_dr_s {
  274. UINT8 i_dr_length; ///< code length
  275. UINT8 i_dr_profilelevel; ///< compare data
  276. UINT8 i_dr_aactype; ///< compare data
  277. } dvbpsi_aac_dr_t;
  278. /**
  279. * struct dvbpsi_ac3_dr_s(0x6a)
  280. */
  281. typedef struct dvbpsi_ac3_dr_s {
  282. UINT8 component_type_flag;
  283. UINT8 component_type;
  284. } dvbpsi_ac3_dr_t;
  285. /**
  286. * struct dvbpsi_eac3_dr_s(0x7a)
  287. */
  288. typedef struct dvbpsi_eac3_dr_s {
  289. UINT8 component_type_flag;
  290. UINT8 component_type;
  291. } dvbpsi_eac3_dr_t;
  292. /**
  293. * \brief one teletext structure.
  294. *
  295. * This structure is used since teletext_descriptor will contain several
  296. * teletext
  297. */
  298. typedef struct dvbpsi_teletext_s
  299. {
  300. UINT8 i_iso6392_language_code[3]; ///< language code
  301. UINT8 i_teletext_type; ///< teletext type
  302. UINT8 i_teletext_magazine_number; ///< teletext magazine number
  303. UINT16 i_teletext_page_number; ///< teletext page number
  304. } dvbpsi_teletext_t;
  305. /**
  306. * \brief "teletext" descriptor structure.
  307. *
  308. * This structure is used to store a decoded "teletext"
  309. * descriptor. (ETSI EN 300 468 section 6.2.32).
  310. *
  311. */
  312. typedef struct dvbpsi_teletext_dr_s
  313. {
  314. UINT8 i_teletext_number; ///< teletext number
  315. dvbpsi_teletext_t* p_teletext; ///< pointer to dvbpsi_teletext_t
  316. } dvbpsi_teletext_dr_t;
  317. /**
  318. * \brief one subtitle structure.
  319. *
  320. * This structure is used since subtitling_descriptor will contain several
  321. * subtitles
  322. */
  323. typedef struct dvbpsi_subtitle_s
  324. {
  325. UINT8 i_iso6392_language_code[3]; ///< language code
  326. UINT8 i_subtitling_type; ///< subtitle type
  327. UINT16 i_composition_page_id; ///< composition page ID
  328. UINT16 i_ancillary_page_id; ///< ancillary page ID
  329. } dvbpsi_subtitle_t;
  330. /**
  331. * \brief "subtitling" descriptor structure.
  332. *
  333. * This structure is used to store a decoded "subtitling"
  334. * descriptor. (ETSI EN 300 468 section 6.2.30).
  335. *
  336. */
  337. typedef struct dvbpsi_subtitling_dr_s
  338. {
  339. UINT8 i_subtitles_number; ///< subtitle number
  340. dvbpsi_subtitle_t* p_subtitle; ///< pointer to dvbpsi_subtitle_t
  341. } dvbpsi_subtitling_dr_t;
  342. /*
  343. * struct dvbpsi_volume_compensating_list_dr_s(0x83)
  344. * volume compensating list structure for 0x83.
  345. *
  346. * This structure is used to store volume compensating list. //cwhuang 100623 added
  347. */
  348. typedef struct dvbpsi_volume_compensating_list_dr_s
  349. {
  350. UINT16 trans_id;
  351. UINT8 ucDescriptorLength; /* service list descriptor length */
  352. UINT8 *pucVolumeCompensatingListdata; /* service list data */
  353. } dvbpsi_volume_compensating_list_dr_t;
  354. #ifdef CONFIG_ISDB_SYSTEM
  355. /**
  356. * \brief "Content availability" descriptor structure for 0xDE.
  357. *
  358. * This structure is used to store a decoded "Content availability"
  359. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  360. */
  361. typedef struct dvbpsi_ConAvai_dr_s{
  362. UINT8 reserved:2; ///< reserved
  363. UINT8 bImageConstraintToken:1; ///< image contraint token
  364. UINT8 bRetentionMode:1; ///< retention mode
  365. UINT8 bRetentionState:3; ///< retention state
  366. UINT8 bEncryptionMode:1; ///< encryption mode
  367. } dvbpsi_ConAvai_dr_t;
  368. /**
  369. * \brief " digital copy control" descriptor structure for 0xC1.
  370. *
  371. * This structure is used to store a decoded " digital copy control"
  372. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  373. */
  374. typedef struct dvbpsi_DCopyCtrCom_s{
  375. UINT8 bComponentTag; ///< component tag
  376. UINT8 bDRecCtrData:2; ///< record control data
  377. UINT8 bMaximunBitFlag:1; ///< maximun bit flag
  378. UINT8 breserved:1; ///< reserved
  379. UINT8 bCopyCtrType:2; ///< copy control type
  380. UINT8 bAPSCtrData:2; ///< APS control data
  381. UINT8 bMaximunBit; ///< maximun bit
  382. struct dvbpsi_DCopyCtrCom_s *pNext; ///< pointer to next one
  383. } dvbpsi_DCopyCtrCom_t;
  384. /**
  385. * \brief " digital copy control" descriptor structure for 0xC1.
  386. *
  387. * This structure is used to store a decoded " digital copy control"
  388. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  389. */
  390. typedef struct dvbpsi_DCopyCtr_dr_s{
  391. UINT8 bDRecCtrData:2; ///< record control data
  392. UINT8 bMaximunBitFlag:1; ///< maximun bit flag
  393. UINT8 bComCtrFlag:1; ///< com control flag
  394. UINT8 bCopyCtrType:2; ///< copy control type
  395. UINT8 bAPSCtrData:2; ///< APS control data
  396. UINT8 bMaximunBit; ///< maximun bit
  397. dvbpsi_DCopyCtrCom_t *pCompCtr; ///< ponter to DCopyCtrCom_t
  398. } dvbpsi_DCopyCtr_dr_t;
  399. #define MAX_LOGOTS_DESC_CHARLEN 15///<ABNT NBR 15608-3:2008 29.4.1 Max is 5, but TS have more.
  400. /**
  401. * \brief "logo transmission" descriptor structure for 0xDE.
  402. *
  403. * This structure is used to store a decoded "logo transmission"
  404. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  405. */
  406. typedef struct dvbpsi_LogoTs_dr_s{
  407. UINT8 bLogoTsType; ///< logo ts type
  408. union {
  409. struct {
  410. UINT16 wLogoId; ///< logo ID
  411. UINT16 wLogoVersion; ///< logo version
  412. UINT16 wDownloadDataId; ///< download data ID
  413. } stType01;
  414. struct {
  415. UINT16 wLogoId; ///< logo ID
  416. } stType02;
  417. struct {
  418. UINT8 bLogoChar[MAX_LOGOTS_DESC_CHARLEN]; ///< logo string
  419. } stType03;
  420. }uType;
  421. } dvbpsi_LogoTs_dr_t;
  422. /*
  423. * struct dvbpsi_TSinformation_dr_s(0xCD)
  424. * brief "TS information" descriptor structure for 0xCD.
  425. *
  426. * This structure is used to store a decoded "TS information"
  427. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  428. */
  429. typedef struct dvbpsi_TSinfo_dr_s
  430. {
  431. UINT8 remoteControlKeyId;
  432. }dvbpsi_TSinfo_dr_t;
  433. #endif
  434. /*
  435. * struct dvbpsi_PartialReception_dr_s(0xFB)
  436. * brief "Partial Reception" descriptor structure for 0xFB.
  437. *
  438. * This structure is used to store a decoded "Partial Reception"
  439. * descriptor. (ABNT 15603-2 Data structure and basic info SI).
  440. */
  441. typedef struct dvbpsi_PartialReception_dr_s
  442. {
  443. UINT16 serviceNumCount;
  444. UINT16 serviceId[];
  445. }dvbpsi_PartialReception_dr_t;
  446. /**
  447. * \brief "multilingual_service" descriptor structure for 0x5d.
  448. */
  449. typedef struct dvbpsi_ml_service_dr_s
  450. {
  451. UINT8 i_iso6392_language_code[4]; /*!< language code*/
  452. UINT8 i_service_provider_name_length; /*!< length of the i_service_provider_name array */
  453. UINT8 service_provider_name[256]; /*!< name of the service provider */
  454. UINT8 i_service_name_length; /*!< length of the i_service_name array */
  455. UINT8 service_name[256]; /*!< name of the service */
  456. struct dvbpsi_ml_service_dr_s *next; /*!< pointer to next one */
  457. } dvbpsi_ml_service_dr_t;
  458. /**
  459. * \brief DVBPSI Service ariable desc
  460. */
  461. typedef struct dvbpsi_ScanDvbSdtServiceCellIdInfo_s
  462. {
  463. UINT8 availability;
  464. UINT8 cellidCount;
  465. UINT16 cellid[0];
  466. } dvbpsi_ScanDvbSdtServiceCellIdInfo_t;
  467. //BRAD MOD+ For Preferred name list descriptor
  468. /**
  469. * \brief pref name struct
  470. */
  471. typedef struct dvbpsi_PrefName_s
  472. {
  473. UINT8 name_id; ///< name ID
  474. UINT8 service_name[40]; ///< service name
  475. } dvbpsi_PrefName_t;
  476. /**
  477. * \brief pref name list
  478. */
  479. typedef struct dvbpsi_PrefNameList_service_dr_s
  480. {
  481. char iso6392_language_code[4]; ///< language code
  482. UINT8 name_count; ///< name count
  483. dvbpsi_PrefName_t pref_name[5]; ///< pref name list
  484. struct dvbpsi_PrefNameList_service_dr_s *next; ///< pointer to next one
  485. } dvbpsi_PrefNameList_service_dr_t;
  486. //BRAD MOD-
  487. /**
  488. * \brief DVBPSI LCN version2
  489. */
  490. typedef struct dvbpsi_lcn_v2_dr_s
  491. {
  492. UINT8 channel_list_id; ///< channel list ID
  493. UINT8 channel_list_name[256];
  494. UINT8 channel_list_name_length;
  495. UINT8 country_code[3]; ///< country code
  496. UINT8 visible_service_flag; ///< visible service flag
  497. UINT16 lcn; ///< LCN
  498. struct dvbpsi_lcn_v2_dr_s *p_next; ///< pointer to next one
  499. } dvbpsi_lcn_v2_dr_t;
  500. #ifdef SUPPORT_BAT_LCN
  501. typedef struct dvbpsi_bat_lcn_s
  502. {
  503. UINT8 len;
  504. UINT8 pData[256];
  505. } dvbpsi_bat_lcn_t;
  506. #endif
  507. //#ifdef SUPPORT_OTA_UPGRADE_2_LOADER
  508. struct dvbpsi_tfcas_private_info_s
  509. {
  510. UINT16 SW_Model; ///< sw model
  511. UINT16 SW_Version; ///< sw version
  512. UINT16 HW_Model; ///< hw model
  513. UINT16 HW_Version; ///< hw version
  514. UINT32 u32Start_serial; ///< start serial number
  515. UINT32 u32End_serial; ///< end serial number
  516. UINT8 u8Upgrade_mode; ///< upgrade mode
  517. UINT32 u32Reserve : 24; ///< reserved
  518. };
  519. struct dvbpsi_tfcas_dvbc3_privates_info_s
  520. {
  521. UINT8 stHwInfo[8];
  522. UINT32 u32Start_serial;
  523. UINT32 u32End_serial;
  524. };
  525. struct dvbpsi_tfcas_ota_s
  526. {
  527. UINT8 delivery_tag;
  528. UINT8 length;
  529. UINT8 data[244];
  530. UINT16 Download_pid:13;
  531. UINT8 Download_type:3;
  532. UINT8 Private_data_len;
  533. union{
  534. struct dvbpsi_tfcas_dvbc3_privates_info_s stDvbc3PrivateInfo;
  535. struct dvbpsi_tfcas_private_info_s stPrivateInfo;
  536. }private_info;
  537. };
  538. typedef struct dvbpsi_tfcas_dr_s
  539. {
  540. UINT16 i_STB_Manufacturer_ID;
  541. UINT8 length;
  542. INT32 i32TotalIndex;
  543. struct dvbpsi_tfcas_ota_s *pstTfcas_ota;
  544. } dvbpsi_tfcas_dr_t;
  545. //#endif
  546. typedef struct dvbpsi_srvlist_dr_s
  547. {
  548. UINT16 service_id;
  549. UINT8 service_type;
  550. } dvbpsi_srvlist_dr_t;
  551. #ifdef SUPPORT_ASTRA_LCN
  552. typedef struct dvbsi_service_list_name_dr_s
  553. {
  554. UINT8 i_iso6392_language_code[4];
  555. UINT8 i_service_name_length; /*!< length of the i_service_name array */
  556. UINT8 service_name[40]; /*!< ASTRA required 31 bytes space */
  557. } dvbsi_service_list_name_dr_t;
  558. typedef struct bouquet_name_s
  559. {
  560. UINT8 bouguet_name_length;
  561. UINT8 bouquet_name[31];
  562. } bouquet_name_t;
  563. typedef struct dvbsi_bouquet_list_dr_s
  564. {
  565. UINT8 i_bouquet_num;
  566. bouquet_name_t *pstBouquet_name;
  567. } dvbsi_bouquet_list_dr_t;
  568. typedef struct dvbsi_virtual_service_id_dr_s
  569. {
  570. UINT16 virtual_service_id;
  571. } dvbsi_virtual_service_id_dr_t;
  572. #endif
  573. /**
  574. * @fn dvbpsi_network_name_dr_t *dvbpsi_DecodeNetworkNameDr(UINT8 *pu8Descriptor, INT16 n16Len);
  575. * @brief Network name descriptor decoder(0x40)
  576. * @param pu8Descriptor: Pointer to the descriptor buffer
  577. * @param n16Len: The total descriptor length
  578. * @return a pointer to a new network name descriptor structure
  579. * which contains the decoded data.
  580. */
  581. dvbpsi_network_name_dr_t *dvbpsi_DecodeNetworkNameDr(UINT8 *pu8Descriptor, INT16 n16Len);
  582. /**
  583. * @fn dvbpsi_multinetwork_name_dr_t *dvbpsi_DecodeMultiNetworkNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  584. * @brief Network name descriptor decoder(0x5b)
  585. * @param pu8Descriptor: Pointer to the descriptor buffer
  586. * @param n16Len: The total descriptor length
  587. * @return a pointer to a new multi network name descriptor structure
  588. * which contains the decoded data.
  589. */
  590. dvbpsi_multinetwork_name_dr_t *dvbpsi_DecodeMultiNetworkNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  591. /**
  592. * @fn void dvbpsi_FreeMLNetworkDr(dvbpsi_multinetwork_name_dr_t * pDecoded);
  593. * @brief free ML Network struct variable
  594. * @param pDecoded: variable will be freed
  595. */
  596. void dvbpsi_FreeMLNetworkDr(dvbpsi_multinetwork_name_dr_t * pDecoded);
  597. /**
  598. * @fn dvbpsi_satellite_system_dr_t *dvbpsi_DecodeSatelliteSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  599. * @brief Satellite delivery system descriptor decoder(0x43)
  600. * @param pu8Descriptor: Pointer to the descriptor buffer
  601. * @param n16Len: The total descriptor length
  602. * @return a pointer to a new satellite delivery system descriptor structure
  603. * which contains the decoded data.
  604. */
  605. dvbpsi_satellite_system_dr_t *dvbpsi_DecodeSatelliteSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  606. /**
  607. * @fn dvbpsi_cable_system_dr_t *dvbpsi_DecodeCableSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  608. * @brief Cable system descriptor decoder
  609. * @param pu8Descriptor: Pointer to the descriptor buffer
  610. * @param n16Len: The total descriptor length
  611. * @return a pointer to a new cable system descriptor structure
  612. * which contains the decoded data.
  613. */
  614. dvbpsi_cable_system_dr_t *dvbpsi_DecodeCableSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  615. /**
  616. * @fn dvbpsi_terrestrial_system_dr_t *dvbpsi_DecodeDVBTerrestrialSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  617. * @brief Terrestrial system descriptor decoder(0x5a)
  618. * @param pu8Descriptor: Pointer to the descriptor buffer
  619. * @param n16Len: The total descriptor length
  620. * @return a pointer to a new terrestrial system descriptor structure
  621. * which contains the decoded data.
  622. */
  623. dvbpsi_terrestrial_system_dr_t *dvbpsi_DecodeDVBTerrestrialSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  624. dvbpsi_T2_system_dr_t *dvbpsi_DecodeT2SystemDr(UINT8 * pu8Descriptor, INT16 n16Len);
  625. void dvbpsi_FreeT2SystemDr(dvbpsi_T2_system_dr_t * pDecoded);
  626. /**
  627. * @fn dvbpsi_terrestrial_system_dr_t *dvbpsi_DecodeISDBTerrestrialSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  628. * @brief Terrestrial system descriptor decoder(0x5a)
  629. * @param pu8Descriptor: Pointer to the descriptor buffer
  630. * @param n16Len: The total descriptor length
  631. * @return a pointer to a new terrestrial system descriptor structure
  632. * which contains the decoded data.
  633. */
  634. dvbpsi_isdbterrestrial_system_dr_t *dvbpsi_DecodeISDBTerrestrialSystemDr(UINT8 *pu8Descriptor, INT16 n16Len);
  635. /**
  636. * @fn dvbpsi_service_dr_t *dvbpsi_DecodeServiceDr(UINT8 *pu8Descriptor, INT16 n16Len);
  637. * @brief Service descriptor decoder(0x48)
  638. * @param pu8Descriptor: Pointer to the descriptor buffer
  639. * @param n16Len: The total descriptor length
  640. * @return a pointer to a new "service" descriptor structure
  641. * which contains the decoded data.
  642. */
  643. dvbpsi_service_dr_t *dvbpsi_DecodeServiceDr(UINT8 *pu8Descriptor, INT16 n16Len);
  644. //zhaorui 100925 add for mantis 0105229 +
  645. /**
  646. * @fn dvbpsi_country_avail_dr_t *dvbpsi_DecodeCountryAvailDr(UINT8 *pu8Descriptor, INT16 n16Len);
  647. * @brief country availability descriptor decoder(0x49)
  648. * @param pu8Descriptor: Pointer to the descriptor buffer
  649. * @param n16Len: The total descriptor length
  650. * @return a pointer to a new "country availability" descriptor structure
  651. * which contains the decoded data.
  652. */
  653. dvbpsi_country_avail_dr_t *dvbpsi_DecodeCountryAvailDr(UINT8 *pu8Descriptor, INT16 n16Len);
  654. /**
  655. * @fn void dvbpsi_FreeCountryAvailDr(dvbpsi_country_avail_dr_t * pstCountryAvail);
  656. * @brief free country availability struct variable
  657. * @param pstCountryAvail: variable will be freed
  658. */
  659. void dvbpsi_FreeCountryAvailDr(dvbpsi_country_avail_dr_t * pstCountryAvail);
  660. //zhaorui 100925 add for mantis 0105229 -
  661. /**
  662. * @fn dvbpsi_frequency_list_dr_t *dvbpsi_DecodeFrequencyListDr(UINT8 *pu8Descriptor, INT16 n16Len, UINT32* u32Number);
  663. * @brief frequency list descriptor decoder(0x62)
  664. * @param pu8Descriptor: Pointer to the descriptor buffer
  665. * @param n16Len: The total descriptor length
  666. * @return a pointer to a frequency list descriptor structure
  667. * which contains the decoded data.
  668. */
  669. dvbpsi_frequency_list_dr_t *dvbpsi_DecodeFrequencyListDr(UINT8 *pu8Descriptor, INT16 n16Len, UINT32* u32Number);
  670. /**
  671. * @fn void dvbpsi_FreeFrequencyListDr(dvbpsi_frequency_list_dr_t * pstFreqList);
  672. * @brief free frequency list struct variable
  673. * @param pstFreqList: variable will be freed
  674. */
  675. void dvbpsi_FreeFrequencyListDr(dvbpsi_frequency_list_dr_t * pstFreqList);
  676. dvbpsi_announcemen_support_dr_t *dvbpsi_AnnouncementSptDr(UINT16 len, UINT8 *pDesc);
  677. void dvbpsi_FreeAnnouncementSptDr(dvbpsi_announcemen_support_dr_t * pstAncmtSptDr);
  678. unsigned short dvbpsi_AdaptationFieldDataDr(UINT16 len, UINT8 *pDesc, UINT8 *pAdpFidldId);
  679. /**
  680. * @fn dvbpsi_srvlist_dr_t *dvbpsi_DecodeServiceListDr(UINT8 * pu8Descriptor, INT16 n16Len);
  681. * @brief dvbpsi_DecodeServiceListDr(0x41)
  682. * @param pu8Descriptor: Pointer to the descriptor buffer
  683. * @param n16Len: The total descriptor length
  684. * @return a pointer to a service list extracted from the service list descriptor.
  685. */
  686. dvbpsi_srvlist_dr_t *dvbpsi_DecodeServiceListDr(UINT8 * pu8Descriptor, INT16 n16Len);
  687. /**
  688. * @fn dvbpsi_linkage_dr_t *dvbpsi_DecodeLinkDr(UINT8 *p_descriptor, INT16 Len);
  689. * @brief Service descriptor decoder(0x4a)
  690. * "conditional access" descriptor decoder.
  691. * @param p_descriptor: Pointer to the descriptor buffer
  692. * @param Len: The total descriptor length
  693. * @return a pointer to a new "conditional access" descriptor structure which
  694. * contains the decoded data.
  695. */
  696. dvbpsi_linkage_dr_t *dvbpsi_DecodeLinkDr(UINT8 *p_descriptor, INT16 Len);
  697. /**
  698. * @fn INT32 dvbpsi_DecodeStrmIdDr(UINT8 *pu8Descriptor, INT16 n16Len, dvbpsi_strmid_dr_t *pStrmIdDr);
  699. * @brief Stream identifier descriptor decoder(0x52)
  700. * @param pu8Descriptor: Pointer to the descriptor buffer
  701. * @param n16Len: The total descriptor length
  702. * @param pStrmIdDr: Pointer to Stream ID descriptor buffer
  703. * @return a pointer to a stream identifier descriptor structure
  704. * which contains the decoded data.
  705. */
  706. INT32 dvbpsi_DecodeStrmIdDr(UINT8 *pu8Descriptor, INT16 n16Len, dvbpsi_strmid_dr_t *pStrmIdDr);
  707. /**
  708. * @fn INT32 dvbpsi_DecodeAACDr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_aac_dr_t * pAACDr);
  709. */
  710. INT32 dvbpsi_DecodeAACDr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_aac_dr_t * pAACDr);
  711. /**
  712. * @fn INT32 dvbpsi_DecodeAC3Dr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_ac3_dr_t * pAC3Dr);
  713. */
  714. INT32 dvbpsi_DecodeAC3Dr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_ac3_dr_t * pAC3Dr);
  715. /**
  716. * @fn INT32 dvbpsi_DecodeAC3Dr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_ac3_dr_t * pAC3Dr);
  717. */
  718. INT32 dvbpsi_DecodeEAC3Dr(UINT8 * pu8Descriptor, INT16 n16Len, dvbpsi_eac3_dr_t * pEAC3Dr);
  719. /**
  720. * @fn dvbpsi_teletext_dr_t* dvbpsi_DecodeTeletextDr(UINT8 *pu8Descriptor, INT16 n16Len);
  721. * @brief "teletext" descriptor decoder(0x56)
  722. * @param pu8Descriptor: Pointer to the descriptor buffer
  723. * @param n16Len: The total descriptor length
  724. * @return a pointer to a new "teletext" descriptor structure
  725. * which contains the decoded data.
  726. */
  727. dvbpsi_teletext_dr_t* dvbpsi_DecodeTeletextDr(UINT8 *pu8Descriptor, INT16 n16Len);
  728. /**
  729. * @fn void dvbpsi_FreeTeletextDr(dvbpsi_teletext_dr_t *pstTeletext);
  730. * @brief free Teletext struct variable
  731. * @param pstTeletext: variable will be freed
  732. */
  733. void dvbpsi_FreeTeletextDr(dvbpsi_teletext_dr_t *pstTeletext);
  734. /**
  735. * @fn dvbpsi_subtitling_dr_t* dvbpsi_DecodeSubtitlingDr(UINT8 *pu8Descriptor, INT16 u16Len);
  736. * @brief "subtitling" descriptor decoder(0x59)
  737. * @param pu8Descriptor: Pointer to the descriptor buffer
  738. * @param u16Len: The total descriptor length
  739. * @return a pointer to a new "subtitling" descriptor structure
  740. * which contains the decoded data.
  741. */
  742. dvbpsi_subtitling_dr_t* dvbpsi_DecodeSubtitlingDr(UINT8 *pu8Descriptor, INT16 u16Len);
  743. /**
  744. * @fn void dvbpsi_FreeSubtitlingDr(dvbpsi_subtitling_dr_t *pstSubtitle);
  745. * @brief free Subtitle struct variable
  746. * @param pstSubtitle: variable will be freed
  747. */
  748. void dvbpsi_FreeSubtitlingDr(dvbpsi_subtitling_dr_t *pstSubtitle);
  749. /**
  750. * @fn dvbpsi_ml_service_dr_t *dvbpsi_DecodeMlServiceDr(UINT8 *pu8Descriptor,
  751. * INT16 n16Len,
  752. * dvbsi_special_spec eFollowSpecialSpec);
  753. * @brief multilingual Service descriptor decoder(0x5d)
  754. * @param pu8Descriptor: Pointer to the descriptor buffer
  755. * @param n16Len: The total descriptor length
  756. * @param eFollowSpecialSpec: follow special spec
  757. * @return a pointer to a new "multilingual service" descriptor structure
  758. * which contains the decoded data.
  759. */
  760. dvbpsi_ml_service_dr_t *dvbpsi_DecodeMlServiceDr(UINT8 *pu8Descriptor, INT16 n16Len, dvbsi_special_spec eFollowSpecialSpec);
  761. /**
  762. * @fn void dvbpsi_FreeMLServiceDr(dvbpsi_ml_service_dr_t *pDecoded);
  763. * @brief free ML Servive struct variable
  764. * @param pDecoded: variable will be freed
  765. */
  766. void dvbpsi_FreeMLServiceDr(dvbpsi_ml_service_dr_t *pDecoded);
  767. /**
  768. * @fn unsigned short dvbpsi_ServiceMoveDr( UINT16 len,
  769. * UINT8 *pDesc,
  770. * unsigned short *OrgNetId,
  771. * unsigned short *TsId,
  772. * unsigned short *ServiceId);
  773. * @brief service move descriptor(0x60)
  774. * @param pDesc: Pointer to the descriptor buffer
  775. * @param len: The total descriptor length
  776. * @param OrgNetId: a pointer to memory for storing of new original network id
  777. * @param TsId: a pointer to memory for storing of new transport stream id
  778. * @param ServiceId: a pointer to memory for storing of service id
  779. * @return unsigned short integer
  780. */
  781. unsigned short dvbpsi_ServiceMoveDr(UINT16 len, UINT8 *pDesc,unsigned short *OrgNetId,unsigned short *TsId, unsigned short *ServiceId);
  782. #ifdef SUPPORT_PREFERRED_NAME
  783. /**
  784. * \fn dvbpsi_PrefNameList_service_dr_t *dvbpsi_DecodePrefNameListServiceDr(UINT8 * pu8Descriptor, INT16 n16Len);
  785. * \brief Pref Name List Service descriptor
  786. * \param pu8Descriptor: Pointer to the descriptor buffer
  787. * \param n16Len: The total descriptor length
  788. * \return a pointer to a new "pref name list service" descriptor structure
  789. */
  790. dvbpsi_PrefNameList_service_dr_t *dvbpsi_DecodePrefNameListServiceDr(UINT8 * pu8Descriptor, INT16 n16Len);
  791. /**
  792. * \fn void dvbpsi_FreePrefNameListServiceDr(dvbpsi_PrefNameList_service_dr_t * pDecoded);
  793. * \brief free pref name list struct variable
  794. * \param pDecoded: variable will be freed
  795. */
  796. void dvbpsi_FreePrefNameListServiceDr(dvbpsi_PrefNameList_service_dr_t * pDecoded);
  797. #endif
  798. /**
  799. * \fn dvbsi_special_spec dvbpsi_DecodePDSDDr(UINT8 * pu8Descriptor, INT16 n16Len);
  800. * \brief "PDSD" descriptor
  801. * \param pu8Descriptor: Pointer to the descriptor buffer
  802. * \param n16Len: The total descriptor length
  803. * \return dvbsi_special_spec
  804. */
  805. dvbsi_special_spec dvbpsi_DecodePDSDDr(UINT8 * pu8Descriptor, INT16 n16Len);
  806. /**
  807. * \fn UINT16 dvbpsi_DecodeLCNDr(UINT8 *pu8Descriptor,
  808. * INT16 n16Len,
  809. * UINT16 u16ProgramNum,
  810. * dvbsi_special_spec eFollowSpecialSpec);
  811. * \brief "LCN" descriptor
  812. * \param pu8Descriptor: Pointer to the descriptor buffer
  813. * \param n16Len: The total descriptor length
  814. * \param u16ProgramNum: program number
  815. * \param eFollowSpecialSpec: follow special spec
  816. * \return unsigned 16 bits integer
  817. */
  818. UINT16 dvbpsi_DecodeLCNDr(UINT8 *pu8Descriptor, INT16 n16Len,UINT16 u16ProgramNum, dvbsi_special_spec eFollowSpecialSpec);
  819. UINT16 dvbpsi_DecodeLCNDr_B0(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 u16ProgramNum);
  820. #ifdef CONFIG_SUPPORT_KDG_CERTIFICATION
  821. UINT16 dvbpsi_DecodeLCNDr_9C(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 u16ProgramNum);
  822. #endif
  823. /**
  824. * \fn UINT32 *dvbpsi_DecodeLCNDr_forlist(UINT8 * pu8Descriptor,
  825. * INT16 n16Len,
  826. * dvbsi_special_spec eFollowSpecialSpec);
  827. * \brief "LCN for list" descriptor
  828. * \param pu8Descriptor: Pointer to the descriptor buffer
  829. * \param n16Len: The total descriptor length
  830. * \param eFollowSpecialSpec: follow special spec
  831. * \return unsigned 32 bits integer
  832. */
  833. UINT32 *dvbpsi_DecodeLCNDr_forlist(UINT8 * pu8Descriptor, INT16 n16Len, dvbsi_special_spec eFollowSpecialSpec);
  834. /**
  835. * \fn UINT8 dvbpsi_DecodeServiceAttributeDr(UINT8 *pu8Descriptor,
  836. * INT16 n16Len,
  837. * UINT16 u16ProgramNum);
  838. * \brief "service attribute" descriptor
  839. * \param pu8Descriptor: Pointer to the descriptor buffer
  840. * \param n16Len: The total descriptor length
  841. * \param u16ProgramNum: program number
  842. * \return unsigned 8 bits integer
  843. */
  844. UINT8 dvbpsi_DecodeServiceAttributeDr(UINT8 *pu8Descriptor, INT16 n16Len,UINT16 u16ProgramNum);
  845. /**
  846. * \fn unsigned short dvbpsi_OadCompChk(UINT16 len, UINT8 *pDesc);
  847. * \brief Oad compare check
  848. * \param len: total length
  849. * \param pDesc: compare destination
  850. * \return unsigned short bits integer
  851. */
  852. unsigned short dvbpsi_OadCompChk(UINT16 len, UINT8 *pDesc);
  853. int dvbpsi_SsuCompChk(UINT16 len, UINT8 *pDesc, UINT16 elementaryPid);
  854. /*
  855. * Service Availability descriptor decoder.
  856. * @pu8Descriptor: Pointer to the descriptor buffer
  857. * @n16Len: The total descriptor length
  858. * Return a pointer to structure
  859. * which contains cell info data.
  860. */
  861. dvbpsi_ScanDvbSdtServiceCellIdInfo_t *dvbpsi_DecodeServiceAvailabilityDr(UINT8 * pu8Descriptor, INT16 n16Len);
  862. /**
  863. * \fn dvbpsi_lcn_v2_dr_t* dvbpsi_DecodeLCNV2Dr(UINT8 * pu8Descriptor,
  864. * INT16 n16Len,
  865. * UINT16 u16ServiceId,
  866. * dvbsi_special_spec eFollowSpecialSpec);
  867. * \brief "LCN version 2" descriptor
  868. * \param pu8Descriptor: Pointer to the descriptor buffer
  869. * \param n16Len: The total descriptor length
  870. * \param u16ServiceId: service ID
  871. * \param eFollowSpecialSpec: follow special spec
  872. * \return a pointer to a new "LCN version 2" descriptor structure
  873. */
  874. dvbpsi_lcn_v2_dr_t* dvbpsi_DecodeLCNV2Dr(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 u16ServiceId, dvbsi_special_spec eFollowSpecialSpec);
  875. /**
  876. * \fn void dvbpsi_FreeLCNV2Dr(void);
  877. * \brief free LCN version 2 struct variable
  878. */
  879. void dvbpsi_FreeLCNV2Dr(void);
  880. #ifdef SUPPORT_HD_SIMULCAST_LCN
  881. /**
  882. * \fn UINT16 dvbpsi_DecodeHDSimulLCNDr(UINT8 * pu8Descriptor,
  883. * INT16 n16Len,
  884. * UINT16 u16ProgramNum,
  885. * dvbsi_special_spec eFollowSpecialSpec);
  886. * \brief "Simul LCN" descriptor
  887. * \param pu8Descriptor: Pointer to the descriptor buffer
  888. * \param n16Len: The total descriptor length
  889. * \param u16ProgramNum: program number
  890. * \param eFollowSpecialSpec: follow special spec
  891. * \return unsigned 16 bits integer
  892. */
  893. UINT16 dvbpsi_DecodeHDSimulLCNDr(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 u16ProgramNum, dvbsi_special_spec eFollowSpecialSpec);
  894. #endif
  895. #ifdef SUPPORT_EPG_SERIES //Mika 091203 added for series rec.
  896. /**
  897. * \fn UINT8 *dvbpsi_DecodeDefAuthorityDesc(UINT8 *pu8Descriptor, INT16 n16Len);
  898. * \brief "Def Authority" descriptor
  899. * \param pu8Descriptor: Pointer to the descriptor buffer
  900. * \param n16Len: The total descriptor length
  901. * \return unsigned 8 bits integer
  902. */
  903. UINT8 *dvbpsi_DecodeDefAuthorityDesc(UINT8 *pu8Descriptor, INT16 n16Len);
  904. #endif
  905. /**
  906. * \fn int dvbpsi_FtaContentMgrDr(UINT8 * pu8Descriptor,
  907. * UINT16 u16Len,
  908. * UINT8 *pstData);
  909. * \brief FTA content manager
  910. * \param pu8Descriptor: Pointer to the descriptor buffer
  911. * \param u16Len: The total descriptor length
  912. * \param pstData: FTA content data
  913. * \return integer
  914. */
  915. extern int dvbpsi_FtaContentMgrDr(UINT8 * pu8Descriptor, UINT16 u16Len, UINT8 *pstData);//BRAD MOD+
  916. #ifdef CONFIG_ISDB_SYSTEM
  917. /**
  918. * \fn dvbpsi_ConAvai_dr_t *dvbpsi_ContentAvailabilityDr(UINT8 * pu8Descriptor, INT16 n16Len);
  919. * \brief "content avail ability" descriptor
  920. * \param pu8Descriptor: Pointer to the descriptor buffer
  921. * \param n16Len: The total descriptor length
  922. * \return a pointer to a new "content avail ability" descriptor structure
  923. */
  924. dvbpsi_ConAvai_dr_t *dvbpsi_ContentAvailabilityDr(UINT8 * pu8Descriptor, INT16 n16Len);
  925. /**
  926. * \fn dvbpsi_DCopyCtr_dr_t *dvbpsi_DigitalCopyCtrDr(UINT8 * pu8Descriptor, INT16 n16Len);
  927. * \brief "copy control" descriptor
  928. * \param pu8Descriptor: Pointer to the descriptor buffer
  929. * \param n16Len: The total descriptor length
  930. * \return a pointer to a new "copy control" descriptor structure
  931. */
  932. dvbpsi_DCopyCtr_dr_t *dvbpsi_DigitalCopyCtrDr(UINT8 * pu8Descriptor, INT16 n16Len);
  933. /**
  934. * \fn void dvbpsi_DigitalCopyCtrFree(void *p_Desc);
  935. * \brief free copy control struct variable
  936. * \param p_Desc: copy destination
  937. */
  938. void dvbpsi_DigitalCopyCtrFree(void *p_Desc);
  939. /**
  940. * \fn dvbpsi_LogoTs_dr_t *dvbpsi_LogoTransmissionDr(UINT8 * pu8Descriptor, INT16 n16Len);
  941. * \brief "logo transmission" descriptor
  942. * \param pu8Descriptor: Pointer to the descriptor buffer
  943. * \param n16Len: The total descriptor length
  944. * \return a pointer to a new "logo transmission" descriptor structure
  945. */
  946. dvbpsi_LogoTs_dr_t *dvbpsi_LogoTransmissionDr(UINT8 * pu8Descriptor, INT16 n16Len);
  947. /**
  948. * \fn UINT8 dvbpsi_ParentalRatingDr(UINT8 * pu8Descriptor, INT16 n16Len);
  949. * \brief parent rating descriptor
  950. * \param pu8Descriptor: Pointer to the descriptor buffer
  951. * \param n16Len: The total descriptor length
  952. * \return unsigned 8 bits integer
  953. */
  954. UINT8 dvbpsi_ParentalRatingDr(UINT8 * pu8Descriptor, INT16 n16Len);//pmt parental rating des
  955. /*
  956. * TS information descriptor(0xCD)
  957. * @pu8Descriptor: Pointer to the descriptor buffer
  958. * @n16Len: The total descriptor length
  959. * Return remote control key id
  960. */
  961. dvbpsi_TSinfo_dr_t *dvbpsi_DecodeTSInforDr(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 ProgNumber);
  962. #endif
  963. /*
  964. * Partial Reception descriptor.
  965. * @pu8Descriptor: Pointer to the descriptor buffer
  966. * @n16Len: The total descriptor length
  967. * @ProgNumber: serviceId of current TS
  968. * Return one seg service Id list
  969. */
  970. dvbpsi_PartialReception_dr_t * dvbpsi_DecodePartialReceptionDr(UINT8 * pu8Descriptor, INT16 n16Len, UINT16 ProgNumber);
  971. #ifdef SUPPORT_VOLUME_COMPENSATING //cwhuang 100623 added
  972. dvbpsi_volume_compensating_list_dr_t *dvbpsi_VolumeCompensatingListDr(UINT8 *pu8Descriptor,
  973. INT16 n16Len,UINT16 usTranID);
  974. #endif
  975. #ifdef SUPPORT_BAT_SERVICE_LIST //cwhuang 100623 added
  976. dvbpsi_bat_service_list_dr_t *dvbpsi_DecodeBatServiceListDr(UINT8 *pu8Descriptor,
  977. INT16 n16Len,UINT16 usTranID);
  978. #endif
  979. #ifdef SUPPORT_TRD
  980. /**
  981. * \fn dvbpsi_target_region_dr_t *dvbpsi_DecodeTrdDr(UINT8 * pu8Descriptor, INT16 n16Len);
  982. * \brief "TRD" descriptor
  983. * \param pu8Descriptor: Pointer to the descriptor buffer
  984. * \param n16Len: The total descriptor length
  985. * \return a pointer to a new "TRD" descriptor structure
  986. */
  987. dvbpsi_target_region_dr_t *dvbpsi_DecodeTrdDr(UINT8 * pu8Descriptor, INT16 n16Len);
  988. /**
  989. * \fn void dvbpsi_FreeTrdDr(dvbpsi_target_region_dr_t * pDecoded);
  990. * \brief free TRD struct vatiable
  991. * \param pDecoded: variable will be freed
  992. */
  993. void dvbpsi_FreeTrdDr(dvbpsi_target_region_dr_t * pDecoded);
  994. /**
  995. * \fn dvbpsi_target_region_name_dr_t *dvbpsi_DecodeTrdNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  996. * \brief "TRD name" descriptor
  997. * \param pu8Descriptor: Pointer to the descriptor buffer
  998. * \param n16Len: The total descriptor length
  999. * \return a pointer to a new "TRD name" descriptor structure
  1000. */
  1001. dvbpsi_target_region_name_dr_t *dvbpsi_DecodeTrdNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1002. /**
  1003. * \fn void dvbpsi_FreeTrdNameDr(dvbpsi_target_region_name_dr_t * pDecoded);
  1004. * \brief free TRD name struct variable
  1005. * \param pDecoded: variable will be freed
  1006. */
  1007. void dvbpsi_FreeTrdNameDr(dvbpsi_target_region_name_dr_t * pDecoded);
  1008. #endif
  1009. #ifdef SUPPORT_BAT_LCN
  1010. dvbpsi_bat_lcn_t* dvbpsi_BatLcn(UINT8 *p_descriptor, INT16 len);
  1011. #endif
  1012. #ifdef SUPPORT_OTA_UPGRADE_2_LOADER
  1013. extern void Free_Tfcas_Dr(dvbpsi_tfcas_dr_t** pp_decoded);
  1014. extern dvbpsi_tfcas_dr_t *dvbpsi_DecodeTfcasDr(UINT8 * p_descriptor, INT16 len);
  1015. #endif
  1016. #ifdef SUPPORT_ASTRA_LCN
  1017. /**
  1018. * \fn dvbsi_service_list_name_dr_t *dvbpsi_DecodeServiceListNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1019. * \brief "Service list name" descriptor
  1020. * \param pu8Descriptor: Pointer to the descriptor buffer
  1021. * \param n16Len: The total descriptor length
  1022. * \return a pointer to a new "service list name" descriptor structure
  1023. */
  1024. dvbsi_service_list_name_dr_t *dvbpsi_DecodeServiceListNameDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1025. /**
  1026. * \fn dvbsi_bouquet_list_dr_t *dvbpsi_DecodeBouquetListDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1027. * \brief "Bouquet List" descriptor
  1028. * \param pu8Descriptor: Pointer to the descriptor buffer
  1029. * \param n16Len: The total descriptor length
  1030. * \return a pointer to a new "Bouquet list name" descriptor structure
  1031. */
  1032. dvbsi_bouquet_list_dr_t *dvbpsi_DecodeBouquetListDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1033. /**
  1034. * \fn void dvbpsi_FreeBouquetListDr(dvbpsi_target_region_dr_t * pDecoded);
  1035. * \brief free Bouquet list descriptor struct vatiable
  1036. * \param pDecoded: variable will be freed
  1037. */
  1038. void dvbpsi_FreeBouquetListDr(dvbsi_bouquet_list_dr_t *p_decoded);
  1039. /**
  1040. * \fn dvbsi_virtual_service_id_dr_t *dvbpsi_DecodeVirtualServiceIdDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1041. * \brief "Virtual service id" descriptor
  1042. * \param pu8Descriptor: Pointer to the descriptor buffer
  1043. * \param n16Len: The total descriptor length
  1044. * \return a pointer to a new "Bouquet list name" descriptor structure
  1045. */
  1046. dvbsi_virtual_service_id_dr_t *dvbpsi_DecodeVirtualServiceIdDr(UINT8 * pu8Descriptor, INT16 n16Len);
  1047. #endif
  1048. #endif //#ifndef _DVB_DR_DVB_H_