博远 广告协议设计V2.0

举报
aiot_bigbear 发表于 2022/09/25 02:05:28 2022/09/25
【摘要】   当前实现功能 滚动文字和图片挂角BMP图片和GIF图片 前端软件的基本处理 前端实现定时发送。PMT增加Private_AD_Descriptor。前端软件的内部处理(待讨论) 给出每条滚动字幕的消耗时间计算公式,包括字数,移动速度(字/秒),屏幕宽度(等效字数),播出次数等输入参数。按照时间=(字数+屏幕宽...

 

  • 当前实现功能
  1. 滚动文字和图片
  2. 挂角BMP图片和GIF图片
  • 前端软件的基本处理
    1. 前端实现定时发送。
    2. PMT增加Private_AD_Descriptor。
  • 前端软件的内部处理(待讨论)
    1. 给出每条滚动字幕的消耗时间计算公式,包括字数,移动速度(字/秒),屏幕宽度(等效字数),播出次数等输入参数。按照时间=(字数+屏幕宽度)/移动速度×播出次数。
    2. 计算出每条字幕每次播出需要的时间,然后再取整计算出需要多少AD_SCROLL发送周期。然后在用户设置参数时,可以告诉用户,在指定的播出时间段内,播出次数能否满足要求。这个计算需要考虑多条字幕。还要显示出,消耗的AD_SCROLL周期数/播出时间段的总AD_SCROLL周期数= X%
    3. 根据多条字幕的设置,自动计算出哪个AD_SCROLL周期发送哪几条字幕。如果有多条字幕在同一个时间段播出,需要自动计算交叉播出的方式。
  • 机顶盒模块的处理
    1. 机顶盒需要不停的接收这个表,
    2. 收到表后,分析描述子,判断是否需要在当前节目中显示。
    3. 取出PMT中Private_AD_Descriptor中的节目序号,scroll_program_despritor中的program_data对应的位如果为1,表示在该节目中播放。
    4. 如果需要显示,按照指定的显示次数,显色图片或字体颜色,背景颜色显示内容
    5. 机顶盒显示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

  • 表内容的解释
    1. adl_id  一条广告的ID值
    2. AD_Type:1-开机画面、2-频道切换、3-频道列表、4-主菜单、5-EPG、6-音频广播背景、7-飞字、8-挂角广告
    3. 有效数据分段长度固定为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

    1. textOrBmp:0-文本滚动字幕1-bmp图片滚动字幕,其它有待扩展。
    2. startxPos,startyPos:滚动字幕开始的坐标
    3. move_ direction:1-从左向右0-从右向左2-从下向上3-从上向下
    4. scroll_times 一条字幕的重复显示次数
    5. font_colour 字体颜色,约定256色调色板的颜色索引值,定义0表示,1表示。。。。。。
    6. 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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。