一个针对日本的数字电视应用(ISDBT)里字幕处理有一些问题,规范文档庞大又复杂,读起来还觉得语焉不详。接手遗留项目尝试处理字幕显示的问题,边读spec边看代码,先猜测、试图理解既有逻辑,再分析问题产生的原因,寻找解决方案。
文档是ARIB STD-B24 Version 5.1 Volume 1(Data Coding and Transmission Specification for Digital Broadcasting)。文档中出现的"02/0"表示0x20,“07/15"表示0x7F。
1. 一个data group里的多个data unit按照规范文档定义(见文档的Table 9-1 Data group),一个字幕数据(one caption data)最多由256个data groups组成。data group结构里有6位的group id,2位的group version,8位的group link number(从0开始),8位的last group link number(标明最后一个group)。但实际上绝少见到一个data group放不下的字幕数据。目前的实现只考虑了一个data group。
根据group id,group可以分为caption management group和caption statement group(见文档的Table 9-2 Correspondence to caption data and data group identification),这两类data group结构都在最后包含了若干个data unit(见文档的Table 9-3 Structure management data和Table 9-10 Caption statement data)。