RDA TDT & TOT
首先看下面的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, , }, //LISBON 里斯本
{AREA_ENGLAND, TV_IDS_String_LondonGMT, , }, //LONDON 伦敦
{AREA_NETHERLANDS, TV_IDS_String_AmsterdamGMT1, , }, //AMSTERDAM 阿姆斯特丹
{AREA_GERMANY, TV_IDS_String_BerlinGMT1, , }, //BERLIN 柏林
{AREA_SERBIA, TV_IDS_String_BeogradGMT1, , }, //BEOGRAD 贝尔格莱德
{AREA_BELGIUM, TV_IDS_String_BrusselsGMT1, , }, //BRUSSELS 布鲁塞尔
{AREA_HUNGARY, TV_IDS_String_BudapestGMT1, , }, //BUDAPEST 布达佩斯
{AREA_DENMARK, TV_IDS_String_CopenhagenGMT1, , }, //COPENHAGEN 哥本哈根
{AREA_SPAIN, TV_IDS_String_MadridGMT1, , }, //MADRID 马德里
{AREA_FRANCE, TV_IDS_String_ParisGMT1, , }, //PARIS 巴黎
{AREA_ITALY, TV_IDS_String_RomeGMT1, , }, //ROME 罗马
{AREA_SWEDEN, TV_IDS_String_StockholmGMT1, , }, //STOCKHOLM 斯德哥尔摩
{AREA_NORWAY, TV_IDS_String_OsloGMT1, , }, //OSLO 奥斯陆
{AREA_POLAND, TV_IDS_String_WarsawGMT1, , }, //WARSAW 华沙
{AREA_GREECE, TV_IDS_String_AthensGMT2, , }, //ATHENS 雅典
{AREA_KENYA, TV_IDS_String_NairobiGMT3, , }, //NAIROBI 内罗毕
{AREA_SINGAPORE, TV_IDS_String_SingaporeGMT8, , }, //吉隆坡--马来西亚首都
{AREA_CHINA, TV_IDS_String_Chian_GMT8, , },
{AREA_HONGKONG, TV_IDS_String_HongKong_GMT8, , },
};
详细整理如下:
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, }, {TIMEZONE_ID_LONDON, TV_IDS_String_GMT_1, }, {TIMEZONE_ID_AMSTERDAM, TV_IDS_String_GMT_2, }, {TIMEZONE_ID_BERN, TV_IDS_String_GMT_3, }, {TIMEZONE_ID_BERLIN, TV_IDS_String_GMT_4, }, {TIMEZONE_ID_BEOGRAD, TV_IDS_String_GMT_5, }, {TIMEZONE_ID_BRUSSELS, TV_IDS_String_GMT_6, }, {TIMEZONE_ID_BUDAPEST, TV_IDS_String_GMT_7, }, {TIMEZONE_ID_COPENHAGEN, TV_IDS_String_GMT_8, }, {TIMEZONE_ID_MADRID, TV_IDS_String_GMT_9, }, {TIMEZONE_ID_PARIS, TV_IDS_String_GMT_10, }, {TIMEZONE_ID_ROME, TV_IDS_String_GMT_11, }, {TIMEZONE_ID_STOCKHOLM, TV_IDS_String_GMT_12, }, {TIMEZONE_ID_OSLO, TV_IDS_String_GMT_13, }, {TIMEZONE_ID_WARSAW, TV_IDS_String_GMT_14, }, {TIMEZONE_ID_ATHENS, TV_IDS_String_GMT_15, }, {TIMEZONE_ID_HELSINKI, TV_IDS_String_GMT_16, }, {TIMEZONE_ID_MOSCOW, TV_IDS_String_GMT_17, }, {TIMEZONE_ID_BANGKOK, TV_IDS_String_GMT_18, }, {TIMEZONE_ID_HONGKONG, TV_IDS_String_GMT_19, }, {TIMEZONE_ID_WESTERNAUSTRALIA, TV_IDS_String_GMT_20, }, {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, }, {TIMEZONE_ID_TASMANIA, TV_IDS_String_GMT_24, }, {TIMEZONE_ID_QUEENSLAND, TV_IDS_String_GMT_25, }, {TIMEZONE_ID_VICTORIA, TV_IDS_String_GMT_26, }, };
这里定义了各个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的更多相关文章
- TS流格式(转)
一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...
- TS流PAT/PMT详解
一 从TS流开始 从MPEG-2到DVB,看着看着突然就出现了一大堆表格,什么PAT.PMT.CAT……如此多的表该怎样深入了解呢? 我们知道,数字电视机顶盒接收到的是一段段的码流,我们称之为TS(T ...
- TS流解析 一
一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...
- TS 数据流分析学习
TS 流.包结构以及同步 1. TS 流: 可以将TS流理解为一种单一码流.混合码流. 单一码流:TS流的基本组成单位是长度为188字节的TS包. 混合码流:TS流有多种数据组成,一个TS包中的数据可 ...
- TS封装格式
ts流最早应用于数字电视领域,其格式非常复杂包含的配置信息表多达十几个,视频格式主要是mpeg2.苹果公司发明的http live stream流媒体是基于ts文件的,不过他大大简化了传统的ts流,只 ...
- TS各个表 与 SECTION 的解析 CAS原理
TS流,通过一个个的TS包来传送: TS包可以是传送PSI SI等各表的数据包,也可以是传送节目音视频数据(携带的PES包:音视频基本流包)的包:TS携带 PSI SI等表的数据时,各个表以各表对应的 ...
- TS流分析
http://blog.csdn.net/zxh821112/article/details/17587215 一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transpor ...
- 从TS流到PAT和PMT
转自:https://blog.csdn.net/rongdeguoqian/article/details/18214627 一 从TS流开始 最近开始学习数字电视机顶盒的开发,从MPEG-2到DV ...
- DTV_SI 汇总 & 兼谈LCN
前言 本章主要对数字广播DVB做一个系统的概况的描述,以及一些spc的相关的内容,虽然流程分析的不多,但是做为后续 章节资料的源泉,也是不可或缺的. 一. ATSC和DVB数字电视系统的比较 本文的主 ...
随机推荐
- Codeforces 757 F Team Rocket Rises Again
Discription It's the turn of the year, so Bash wants to send presents to his friends. There are n ci ...
- 你知道在springboot中如何使用WebSocket吗
一.背景 我们都知道 http 协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息.想要实现浏览器的主动推送有两种主流实现方式: 轮询:缺点很多,但是实现简单 webso ...
- nodejs启动前端项目步骤
在.nuxt目录下打开命令行: 一:npm rm node-sass 二:npm install node-sass 三:npm install 四:npm run dev
- 同一页面引入多个JS文件的编码问题
原来只是觉得IE解析HTML文件的时候,需要知道其传输编码,才能正确处理,而从来没有在意过JavaScript文件的编码问题.结果今天发现同一页面中的多个JavaScript文件如果保存编码不同,也会 ...
- Sentinel实现Redis高可用
实现目标: 一主两从,集群起始VIP在master上边,如果当前master挂了,sentinel自动选出一个slave当选master,并把VIP漂移到这台机器,然后把另一台slave指向的mast ...
- 《大话操作系统——做坚实的project实践派》(7)
写操作系统内核须要了解一个详细计算平台的CPU,包含这个CPU里的寄存器和异常中断处理机制
- winform中使用ReportViewer的时候,找不到报表数据面板.
最近在做winform的报表项目,看人家教程里都有报表数据面板,可我的怎么都找不到,我的是VS2012,最后终于找到,首先必须在报表设计TAB上(选中它),然后选择视图->报表数据
- error at ::0 can't find referenced pointcut pointCutName 错误解决方法
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: publi ...
- DRP——Dom4j使用
dom4j是一个Java的XMLAPI,类似于jdom.用来读写XML文件的.dom4j是一个很很优秀的JavaXMLAPI.具有性能优异.功能强大和极端易用使用的特点.Dom4j是一个易用的.开源的 ...
- JavaScript and ActionScript3
接触JavaScript和ActionScript3也有一段时间了,它们都是应用比较广泛的脚本语言,经过这几年的工作和学习,静下来的时候想总结一些东西,作为技术上的沉淀以及培训所用,所以就有了这篇文章 ...