一个针对日本的数字电视应用(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)。

本文深入分析了ISDBT数字电视中字幕处理的疑难问题,包括字幕数据结构、TIME命令的理解、多行显示及清除策略等,并提出了现有实现的改进方案。通过对ARIB STD-B24规范的解读,探讨了字幕数据单元的解析逻辑,尤其是对于只有一个0x0C的特殊处理方式以及无duration信息时的字幕显示策略。
最低0.47元/天 解锁文章
1168

被折叠的 条评论
为什么被折叠?



