字幕数据提取模块包括两部分:字幕控制信息的提取和字幕数据包的提取。
用户控制模块发送字幕启动请求时,提取模块就启动SI 引擎。首先,启动本节目的PMT 表滤波工作,获取PMT 数据并进行分析。若当前节目没有字幕信息,则发送无字幕消息至用户模块;若当前节目带有字幕信息,则根据PMT 中的私有数据段和字幕描述符,获取字幕数据对应的PID、字幕的语言代码、字幕类型、合成页及可选的辅助页,并存放到字幕索引信息表中。其次,根据字幕索引信息表启动字幕有效数据的PES 滤波,提取对应字幕数据包。字幕数据提取总体流程如图3 所示。
图3 字幕数据提取流程
当获得字幕的PID 及其它信息后,则按字幕语言的不同,把当前节目所携带的所有语言的字幕列表,供用户选择。当用户选择完一个条目后,可利用该条目相应的控制信息获取字幕PES 包,把字幕PID,合成页id 和辅助页id 注册进滤波通道,并启动滤波器。
此时,若滤波器接收到相匹配的数据,则会产生相应的中断,通知上层进程读取数据;当获取一个完整的PES 包后,就传送给字幕解码器进行解码显示。
3.2 字幕数据解码模块
字幕数据解码模块负责对字幕PES 包进行解码。
字幕PES 包解码流程如图4 所示。
图4 字幕PES 包解析流程。
字幕解码主要是对PES 包进行分析,包括PES包头的检测,PES 包头信息的提取和字幕段的分析。
滤波得到一个PES 包后,首先判断包头是否合法,包括判断前四个字节是否为0×000001BD 和PES包长度是否合法。
PES 包头信息提取包括提取PTS、PES 包头长度等。PTS 是该分组中承载的所要显示的数据的显示时间。根据包头长度可以定位到PES 的负载位置,进而分析PES 包的负载。
分析PES 包的负载,首先判断前两个字节(定义字节和字幕流id)是否分别为0×20、0×00.若都符合,则可以确定这个包就是所要的封装有字幕数据的PES 包。然后进入字幕段分析,字幕字段的内容有四种情况。先找到同步头字节0×0f,再往后分析8bit 的段类型(segment_type),通过判断该字节值来确定data_field()携带的是哪种类型的数据。当segment_type为0×10 时[3],该段为页分段;当segment_type 为0×11时,则该段为区域分段;当segment_byte 为0×12 时,该段为CLUT 分段;当segment_byte 为0×13 时,该段为对象数据分段。最后,根据不同的类型调用不同的函数对各种类型的分段进行下一步的分析。
在页分段的解析中找到该页的页id、显示终止时间、显示状态、该页由几个区域组成、每个区域的区域 id 和每个区域的水平垂直坐标,并把这些数据存储起来。然后,根据从页分段中获取的区域的id 找到相应的区域分段,获取该区域的宽高、像素深度、该区域填充的颜色、颜色表id(CLUT_id)、区域的数据对象个数、每个数据对象编号(object_id),并存储这些数据。
最后,通过CLUT_id 找到颜色表,得到颜色的Y、Cr、Cb、T 值。通过object_id 找到对象数据的内容,包括编码方式及编码数据。用相应的解码方式把这些相关的编码数据解码出来,并放入缓冲区。其中,在页分析时,当解析出的该页的显示终止时间已经过了,则并不需要分析该页,把跟与该页相关的数据缓冲区进行清空操作。
由于一个PES 包可能包含多个字幕段(subtitling_segment),因此必须循环分析到最后一个字幕段。对每个字幕段分析完后,都要判断下一个字节是下一个字幕段的同步头(0×0f)还是字幕数据结束标志(0×ff)。若是下一个字幕段的同步头则继续分析,若是数据结束标志则代表该PES 包携带的负载分析完毕。最后,把得到的数据存放到显示缓冲区,通过分析得到的PTS 创建一个定时时间,当时间到的时候从缓冲区中把数据读出,并调用OSD 层驱动显示数据。
在该解码中,对于合成页(composition_page_id)的处理分为两种,这是因为同一个PID 可能传送不同语言的字幕流,即语言不同的多个信息共享同一个PID流,所以在处理的时候可以把合成页设置为滤波器的深度。当一路数据流进来的时候,对符合该PID 的PES 包中对应的页ID 进行判断,与页ID 相同的就提取,不同的就丢弃,这是其中的一种解析提取方式。另一种方式是采用多种语言共用的PID 值去设置滤波器,把与该PID 值符合的字幕流提取出来,送去PES包解析。经过PES 解析出该页ID,这时再判断该页ID是否与在PMT 表解析得到的页ID 一样。如果一样的话,说明正是要找的包,反之则说明是一个无效的PES 包,则丢弃该包。
上一篇:数字机顶盒字幕解码显示系统设计一
下一篇:数字机顶盒字幕解码显示系统设计
推荐阅读最新更新时间:2023-10-12 20:41
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知