首先看下面的TS PSI分析图:

注意:TOT UTC与TDT是一致的
  TDT下的时间为: UTC+手动TIMEZONE
  TOT下的时间为: UTC+解析的time_offset

    time_offest极性:

      ① local_time_offset_polarity为1,time_offset为负极性

      ② local_time_offset_polarity为0,time_offset为正极性
    time_offset值:
      ① 如果time_of_change时间在UTC_time之后,意味不需要转变offset 即使用local_time_offset的偏移值
      ② 反之,time_of_change时间在UTC_time时间之前,意味之要使用next_time_offset的偏移值

如上图:

  UTC:        2015-9-24 19:07

  time_of_change:     2015-10-10 04:00

所以使用:UTC+local_time_offset

由于local_time_offset_polarity为1为负极性的,所以最后的时间为:UTC-4=2015-9-24  15:07

RDA时区:

const Menu_TimeZone timezoneList[] =
{{AREA_PORTUGAL, TV_IDS_String_LisbonGMT, 0, 0}, //LISBON       里斯本{AREA_ENGLAND, TV_IDS_String_LondonGMT, 0, 0}, //LONDON      伦敦{AREA_NETHERLANDS, TV_IDS_String_AmsterdamGMT1, 1, 0}, //AMSTERDAM 阿姆斯特丹{AREA_GERMANY, TV_IDS_String_BerlinGMT1, 1, 0}, //BERLIN        柏林{AREA_SERBIA, TV_IDS_String_BeogradGMT1, 1, 0}, //BEOGRAD     贝尔格莱德{AREA_BELGIUM, TV_IDS_String_BrusselsGMT1, 1, 0}, //BRUSSELS      布鲁塞尔{AREA_HUNGARY, TV_IDS_String_BudapestGMT1, 1, 0}, //BUDAPEST      布达佩斯 {AREA_DENMARK, TV_IDS_String_CopenhagenGMT1, 1, 0}, //COPENHAGEN 哥本哈根{AREA_SPAIN, TV_IDS_String_MadridGMT1, 1, 0}, //MADRID          马德里{AREA_FRANCE, TV_IDS_String_ParisGMT1, 1, 0}, //PARIS           巴黎{AREA_ITALY, TV_IDS_String_RomeGMT1, 1, 0}, //ROME             罗马{AREA_SWEDEN, TV_IDS_String_StockholmGMT1, 1, 0}, //STOCKHOLM  斯德哥尔摩{AREA_NORWAY, TV_IDS_String_OsloGMT1, 1, 0}, //OSLO             奥斯陆{AREA_POLAND, TV_IDS_String_WarsawGMT1, 1, 0}, //WARSAW      华沙{AREA_GREECE, TV_IDS_String_AthensGMT2, 2, 0}, //ATHENS        雅典{AREA_KENYA, TV_IDS_String_NairobiGMT3, 3, 0}, //NAIROBI        内罗毕{AREA_SINGAPORE, TV_IDS_String_SingaporeGMT8, 8, 0}, //吉隆坡--马来西亚首都{AREA_CHINA, TV_IDS_String_Chian_GMT8, 8, 0},{AREA_HONGKONG, TV_IDS_String_HongKong_GMT8, 8, 0},
};

详细整理如下:

1. 引言

1.1 编写目的

本文档详尽描述了TDT/TOT DST的使用,供大家参考。

1.2 参考资料

  • 300468

2. 设计概要

2.1 system time有两种模式

一种是manual,AUTO Sync设置为OFF,用户自己设置系统时间;

一种是auto,AUTO Sync设置为ON,通过RTC和码流带的时间来同步系统时间;

2.2 offset处理(Auto Sync设置为ON)

不同的客户offset处理可能会不同,所以这部分最好是能放到application处理,通过callback和al time整合;

2.3 DST处理(Auto Sync设置为ON)

如果DST设置ON,time offset会在原来基础上加上1个小时 。

3. 详细设计

Al time是个被动的模块,主要是对其定义变量的操作(读:获取系统时间, 写:设置系统时间),复杂的原因是有不同的模式,和不同情况下offset之的处理是不同的,而且不同的customer对offset处理的spec也是不同的。

3.1 对变量的说明

3.1.1 System time(不带offset)

TOT的local time descriptor中会带next time和next time offset,提示说在next time设置time offset为next time offset,所以需要记录next time。

系统的RTC时间需要和码流带的时间同步,下面两个变量就用于它们之间的同步,在更新码流时间到system时会记录下这个时刻的RTC时间到g_dUpdateRTC,码流带的时间到g_dUpdateSec。

g_dTimeMjd:记录current time的年月日

g_dTimeSec:记录current time的时分秒(这里把时分秒转换为秒存储)

g_dNextTimeMjd:记录next time的年月日

g_dNextTimeSec:记录next time的时分秒

g_dUpdateRTC:记录有更新系统时间时的RTC,比如更新码流的时间到system

g_dUpdateSec:记录更新系统时间时的系统时间,比如更新码流的时间到system

3.1.2 Time offset:

因为EIT中带的时间是不带offset的时间,而app显示的event的时间是带了offset的时间,所以需要在al event中把event的时间做一次转换,在转换的时候有可能一个event的start time的offset和end time的offset是不同的,这时就需要用到sdOldGMTOffset和sdNextTimeOffset。

TOT的local time descriptor中会带next time和next time offset,提示说在next time设置time offset为next time offset,所以需要记录next time offset。

DST设置为On的时候offset需要再加上1个小时

g_sdTimeOffset:记录系统当前的offset值,没有考虑DST

g_sdOldGMTOffset:记录系统前一个offset值,没有考虑DST

g_sdNextTimeOffset:记录系统下一个offset值,没有考虑DST

g_dTimeDST:是否需要考虑DST

3.1.3 system time sync mode

g_SyncMode:记录当前的sync mod是auto还是manual,auto的时候系统时间需要和码流时间同步,manual的时候是用户设置系统时间,但是也会和RTC同步

3.2 system time的两种模式

3.2.1 Manual

AUTO Sync设置为OFF,用户自己设置系统时间,这种模式下是不考虑offset的,也不用考虑码流TDT/TOT带的时间,但是需要100ms和RTC时间同步一次。

用户有修改系统时间后需要通知PR模块系统时间有变,并且需要把修改后的系统时间写到system 。

      

3.2.2 Auto

AUTO Sync设置为ON,通过RTC和码流带的时间来同步系统时间,码流有收到TDT后需要更新TDT时间到记录的不带offset的时间,收到TOT后需要更新TOT中带的时间到不带offset的时间,同时还需要更新offset。

系统100ms需要和RTC同步一次。

    

3.3 Time offset处理

不考虑DST的情况下offset有两种情况,一种是TOT种local time descriptor带的,另外一种是用户设置time zone得到的。

具体offset是用TOT中带的offset还是用用户设置time zone的offset,不同的客户处理会不一样,这里以CVT和CLV为列介绍。

3.3.1 CVT

static MENU_TIMEZONE_LIST timezoneList[] ={{TIMEZONE_ID_LISBON, TV_IDS_String_GMT_0, 0},{TIMEZONE_ID_LONDON, TV_IDS_String_GMT_1, 0},{TIMEZONE_ID_AMSTERDAM, TV_IDS_String_GMT_2, 1},{TIMEZONE_ID_BERN, TV_IDS_String_GMT_3, 1},{TIMEZONE_ID_BERLIN, TV_IDS_String_GMT_4, 1},{TIMEZONE_ID_BEOGRAD, TV_IDS_String_GMT_5, 1},{TIMEZONE_ID_BRUSSELS, TV_IDS_String_GMT_6, 1},{TIMEZONE_ID_BUDAPEST, TV_IDS_String_GMT_7, 1},{TIMEZONE_ID_COPENHAGEN, TV_IDS_String_GMT_8, 1},{TIMEZONE_ID_MADRID, TV_IDS_String_GMT_9, 1},{TIMEZONE_ID_PARIS, TV_IDS_String_GMT_10, 1},{TIMEZONE_ID_ROME, TV_IDS_String_GMT_11, 1},{TIMEZONE_ID_STOCKHOLM, TV_IDS_String_GMT_12, 1},{TIMEZONE_ID_OSLO, TV_IDS_String_GMT_13, 1},{TIMEZONE_ID_WARSAW, TV_IDS_String_GMT_14, 1},{TIMEZONE_ID_ATHENS, TV_IDS_String_GMT_15, 2},{TIMEZONE_ID_HELSINKI, TV_IDS_String_GMT_16, 2},{TIMEZONE_ID_MOSCOW, TV_IDS_String_GMT_17, 4 },{TIMEZONE_ID_BANGKOK, TV_IDS_String_GMT_18, 7},{TIMEZONE_ID_HONGKONG, TV_IDS_String_GMT_19, 8},{TIMEZONE_ID_WESTERNAUSTRALIA, TV_IDS_String_GMT_20, 8},{TIMEZONE_ID_NORTHERNTERRITORY,TV_IDS_String_GMT_21, 9.5},{TIMEZONE_ID_SOUTHAUSTRALIA, TV_IDS_String_GMT_22, 9.5},{TIMEZONE_ID_NEWSOUTHWALES, TV_IDS_String_GMT_23, 10},{TIMEZONE_ID_TASMANIA, TV_IDS_String_GMT_24, 10},{TIMEZONE_ID_QUEENSLAND, TV_IDS_String_GMT_25, 10},{TIMEZONE_ID_VICTORIA, TV_IDS_String_GMT_26, 10},};

这里定义了各个country对应的GMT offset,如果码流TOT中的descriptor中带的country和用户目前设置的country匹配就用码流TOT中带的offset。如果不匹配就用timezonelist里面定义的offset,比如1表示是1个小时。

3.3.2 CLV

TimeZone会定义+-12小时的offset以及auto,如果用户设置为auto,就从TOT中获取offset,如果TOT中的descriptor带的country和用户目前设置的country匹配就用该descriptor中的offset,如果没有匹配的那么offset就为0。如果用户设置的time不为auto,就以用户设置的offset为准。

3.4 DST处理

如果DST设置ON,time offset会在原来基础上加上1个小时,并且不同的客户DST处理也会不同,这里以CVT和CLV为列介绍。

3.4.1 CVT

TOT中的local time descriptor会带current time的offset也会带next time的offset,如果current time的offset和next time的offset不相等,会把g_dTimeDST设置为On。

如果TOT中没有带和当前country匹配的descriptor,或者有的但是current time offset和next time offset相等会按照下面这个规则来设置g_dTimeDST

daylight saving time:

02:00 last sunday of March ~ 03:00 last sunday of October

3.4.2 CLV

如果Time Zone设置为Auto,用户是不能设置DST的,只能通过TOT中带的descriptor来设置。TOT中有带和当前country匹配的descriptor,并且current time offset和next time offset不相等时设置DST为On,否则设为Off

如果Time Zone设置不是Auto,用户可以自己设置DST为On还是Off。

RDA TDT TOT相关推荐

  1. 【PSI/SI学习系列】2.PSI/SI深入学习3——SI信息解析2(SDT, EIT, TDT,TOT)

    PSI/SI 深入学习 BASIC KNOWLEDGE LEARNING OF PSI/SI 转载自:https://blog.csdn.net/kkdestiny/article/details/1 ...

  2. PSI/SI深入学习3——SI信息解析2(SDT, EIT, TDT,TOT)

    PSI/SI 深入学习 BASIC KNOWLEDGE LEARNING OF PSI/SI SDT 解析 PARSINGOF SDT "SDT描述了业务内容及信息,连接了NIT与EIT和P ...

  3. TS各个表 与 SECTION 的解析 CAS原理

    TS流,通过一个个的TS包来传送: TS包可以是传送PSI SI等各表的数据包,也可以是传送节目音视频数据(携带的PES包:音视频基本流包)的包:TS携带 PSI SI等表的数据时,各个表以各表对应的 ...

  4. 网络流媒体(四)———TS流

    1. 数字视频压缩MPEG-2标准 MPEG-2是MPEG(Moving Picture Experts Group,运动图像专家组)组织制定的视频和音频有损压缩标准之一,它的正式名称为"基 ...

  5. 数字电视业务PSI/SI学习

    数字电视业务PSI/SI学习系列 一.MPEG-2系统原理 第一章 MPEG-2简介 什么是MPEG和MPEG-2? MPEG是Moving Picture Experts Group 的简称,MPE ...

  6. 数字电视业务PSI/SI学习系列

    声明:本文转载自某文档,文档来源于网络. 什么是MPEG和MPEG-2? MPEG是Moving Picture Experts Group 的简称,MPEG-2是MPEG和ISO组织设计的一个数字视 ...

  7. 数字电视业务PSI-SI学习系列

    目录 MPEG-2简介 TS流的生成与结构 DVB的分类 DVB SIPSI分析和处理 PATProgram Association Table节目关联表 PMTProgram Map Table节目 ...

  8. 视频知识基础:什么是TS、PS流?

    在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream). 据传输媒 ...

  9. DTV_SI 汇总 兼谈LCN

    前言 本章主要对数字广播DVB做一个系统的概况的描述,以及一些spc的相关的内容,虽然流程分析的不多,但是做为后续 章节资料的源泉,也是不可或缺的. 一. ATSC和DVB数字电视系统的比较 本文的主 ...

最新文章

  1. 爬虫基础-request的一些基础属性
  2. Specification使用notin
  3. 为 protocol 中属性添加默认值
  4. centos5.5上安装oracle 11g R2[转发-参考用]
  5. java反射机制(三)---java的反射和代理实现IOC模式 模拟spring
  6. 怎么给工作中重要的pdf文件加密
  7. QLineEdit的readonly、disable属性的区别
  8. TypeScript Generics(泛型)
  9. 4、java中的流程控制(程序结构)
  10. (王道408考研操作系统)第四章文件管理-第一节2:文件的逻辑结构
  11. mysql必知必会第一节
  12. qt createtor 中文乱码
  13. 人工智能平台 H2O.ai
  14. 游戏开发之测试篇3(C++)
  15. WARNING: inbound connection timed out (ORA-3136)
  16. 使用python实现一个(文件版)简单的课程管理系统
  17. exec还原oracle,symantec Backup exec 恢复Recovery Oracle 数据库
  18. 你需要了解的App经济学基础 转
  19. matlab有限差分一维导热,一维导热方程-有限差分法-matlab实现(汇编)
  20. excel 打开文件后自动卡死的解决方法

热门文章

  1. es文件管理连接ftp服务器,es文件连接ftp服务器
  2. Gradle之实现apk软件多开
  3. python的基础算法实现(等差求和,阶乘)
  4. java web入门经典 pdf_Java Web入门经典 (王国辉陈英) PDF
  5. 码农给妹妹总结的高考备考心得
  6. mc服务器tp到指定,我的世界tp指令怎么输 TP指令大全
  7. java代码画樱花飘落_一行代码引入博客园樱花飘落特效
  8. 智能门锁 c语言程序,新型汽车智能门锁控制器的设计(附C语言程序)☆
  9. 9本新书,经典升级,值得在3月里读读
  10. 练习四级英语听力推荐用哪个APP?