博远 广告协议设计V2.0
- 当前实现功能
- 滚动文字和图片
- 挂角BMP图片和GIF图片
- 前端软件的基本处理
- 前端实现定时发送。
- PMT增加Private_AD_Descriptor。
- 前端软件的内部处理(待讨论)
- 给出每条滚动字幕的消耗时间计算公式,包括字数,移动速度(字/秒),屏幕宽度(等效字数),播出次数等输入参数。按照时间=(字数+屏幕宽度)/移动速度×播出次数。
- 计算出每条字幕每次播出需要的时间,然后再取整计算出需要多少AD_SCROLL发送周期。然后在用户设置参数时,可以告诉用户,在指定的播出时间段内,播出次数能否满足要求。这个计算需要考虑多条字幕。还要显示出,消耗的AD_SCROLL周期数/播出时间段的总AD_SCROLL周期数= X%
- 根据多条字幕的设置,自动计算出哪个AD_SCROLL周期发送哪几条字幕。如果有多条字幕在同一个时间段播出,需要自动计算交叉播出的方式。
- 机顶盒模块的处理
- 机顶盒需要不停的接收这个表,
- 收到表后,分析描述子,判断是否需要在当前节目中显示。
- 取出PMT中Private_AD_Descriptor中的节目序号,scroll_program_despritor中的program_data对应的位如果为1,表示在该节目中播放。
- 如果需要显示,按照指定的显示次数,显色图片或字体颜色,背景颜色显示内容
- 机顶盒显示100个字,大约需要55秒。最多只能显示120个汉字。
- 表的定义如下:table id=0x94;PID在PMT中的Private_AD_Descriptor指定
语法 |
位数 |
缩写 |
AD_Section( ) { table_id section_syntax_indicator ‘0’ reserved section_length reserved SaveControl reserved version_number current_next_indicator section_number last_section_number ad_scroll_table_version reserved ad_scroll_id AD_Type descriptors_loop_length //描述子长度 for(k=0;k<N;k++) { scroll_program_descriptor( ) [AD_Scroll_descriptor] [AD_Corner_descriptor] } reserved data_length//数据总长度 for(i=0;i<N;i++){ data_byte } CRC32 } |
8 1 1 2 12 16 1 1 5 1 8 8 8 32 16 8 16 16 32 8 32 |
uimsbf bslbf bslbf bslbf uimsbf uimsbf bslbf uimsbf bslbf uimsbf bslbf uimsbf uimsbf uimsbf uimsbf uimsbf uimsbf uimsbf uimsbf |
- 表内容的解释
- adl_id 一条广告的ID值
- AD_Type:1-开机画面、2-频道切换、3-频道列表、4-主菜单、5-EPG、6-音频广播背景、7-飞字、8-挂角广告
- 有效数据分段长度固定为4000,最后段长度为数据总长- last_section_number*4000.
- 表中的滚动节目描述子,表示该字幕在哪些节目中显示
语法 |
位数 |
缩写 |
scroll_program_descriptor( ) { scroll_program_tag = 0xD1 scroll_program_length = 0x20 program_data1 program_data2 program_data3 program_data4 program_data5 program_data6 program_data7 program_data8 } |
8 8 32 32 32 32 32 32 32 32 |
uimsbf uimsbf uimsbf |
- 飞字描述子
AD_Scroll_descriptor( ) { Descriptor_Tag = 0xD3 Descriptor _length scroll_times //滚动次数 startxPos//开始的x坐标 startyPos//开始的y坐标 move_ direction//滚动方向 Scroll_Velocity//速度(字/秒或 像素/秒) Start_Time//开始时间 TextOrBMP if( textOrBmp==’0’) { font_colour //字体颜色 background_colour //背景颜色 } } |
8 8 8 16 16 8 8 40 8 8 8 |
uimsbf uimsbf uimsbf |
-
- textOrBmp:0-文本滚动字幕1-bmp图片滚动字幕,其它有待扩展。
- startxPos,startyPos:滚动字幕开始的坐标
- move_ direction:1-从左向右0-从右向左2-从下向上3-从上向下
- scroll_times 一条字幕的重复显示次数
- font_colour 字体颜色,约定256色调色板的颜色索引值,定义0表示,1表示。。。。。。
- background_colour 背景颜色,约定256色调色板的颜色索引值,定义0表示,1表示。。。。。。
- 挂角描述子
AD_Corner_descriptor( ) { Descriptor_Tag = 0xD4 Descriptor _length StartXPos StartYPos Width Height PicFormat(1-bmp 2-gif) StartTime(开始时间UTC) Duration } |
8 8 16 16 16 16 1 40 24 |
uimsbf uimsbf |
- BMP图片数据结构
typedef struct bmpInfo
{
U16 size;
U16 width;
U16 height;
U8 biCompression;0-无压缩1-RLE8压缩;
U16 ColorPaletteLen;//调色板数据长度
U8 ColorPalette [ColorPaletteLen];
U8 data[size-2-2-2-1-2- ColorPaletteLen]
}
- Private_AD_Descriptor定义
语法 |
位数 |
缩写 |
Private_AD_Descripto( ) { Private_AD_Tag = 0xD2 // length = 0x03 Program_ID; AD_PID; } |
8 8 8 16 |
uimsbf uimsbf uimsbf uimsbf |
文章来源: blog.csdn.net,作者:悟空胆好小,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/xushx_bigbear/article/details/122730503
- 点赞
- 收藏
- 关注作者
评论(0)