博远 广告协议设计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)