SODB、RBSP和EBSP

一、SODB、RBSP和EBSP的基本概念

SODB:数据比特串,即编码后的最原始的数据;

RBSP:原始字节序列载荷,即在SODB的后面添加了trailing bits,即一个bit 1和若干个bit 0,以便字节对齐;

EBSP:扩展字节序列载荷,即在RBSP的基础上添加了仿校验字节0x03.

二、联系、区别与作用

SODB是编码收的原始数据,经过封装后为RBSP,RBSP是NAL单元的数据部分的封装格式。在NAL内部为了防止与起始码竞争,从而引入填充字节0x03,这样便形成了EBSP。

1、RBSP的形成过程

如果SODB的内容是空的,那么RBSP的内容也是空的;

否则,RBSP的第一个字节取自SODB的第1到第8个比特,RBSP字节内部按照从左到右从高到低的顺序排列。以此类推,RBSP中的每个字节都直接取自SODP的相应比特。RBSP的最后一个字节包含SODB的最后几个比特,以及trailing bits。其中,trailing bits的第一个比特为1,其余的比特为0,保证字节对齐。最后,在结尾添加0x0000,即CABAC ZERO WORD,从而形成RBSP。

2、EBSP的形成过程

NALU数据+起始码就形成了AnnexB格式,起始码包括两种,0x00000001和0x000001。为了不让NALU的主体与起始码之间产生竞争,在对RBSP进行扫描时,如果遇到连续的两个0x00字节,则在该两个字节后面添加一个0x03字节。在解码的时候将该0x03字节去掉,也成为脱壳操作。

通过该种方式形成EBSP,这需要将近两倍的整帧图像码流大小。为了减少存储器需求,在每个macroblock结束后,即检查该macroblock的SODB的起始码竞争问题,并保留SODB的最后两个字节的零字节个数,以便与下一个macroblock的SODB的开始字节形成连续的起始码竞争检测。对一帧图像的最后一个macroblock,先添加结尾停止bit,在检查起始码竞争。


注:起始码包括两种情况,即4字节和3字节。在SPS、PPS和Access Unit的第一个NALU使用4字节起始码,其余情况均使用3字节起始码。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Coin3D中,双面渲染在渲染场景的时候进行调用。如果你想要启用双面渲染,需要设置材质的backfaceculling属性为false。下面是一个简单的c++示例代码,演示如何在Coin3D中启用双面渲染: ```c++ #include <Inventor/SoDB.h> #include <Inventor/SoInput.h> #include <Inventor/SoSceneManager.h> #include <Inventor/nodes/SoCone.h> #include <Inventor/nodes/SoMaterial.h> #include <Inventor/nodes/SoSeparator.h> int main(int argc, char **argv) { // 初始化Coin3D SoDB::init(); // 创建场景管理器 SoSceneManager *sceneManager = new SoSceneManager(); // 创建材质节点 SoMaterial *material = new SoMaterial(); material->backfaceCulling = false; // 启用双面渲染 // 创建圆锥体节点 SoCone *cone = new SoCone(); cone->bottomRadius = 1.0; cone->height = 2.0; // 创建分离器节点 SoSeparator *root = new SoSeparator(); root->addChild(material); root->addChild(cone); // 将根节点添加到场景管理器中 sceneManager->setSceneGraph(root); // 显示场景 sceneManager->show(); // 进入Coin3D事件循环 SoDB::show(); SoDB::eventLoop(); // 清理内存 delete sceneManager; return 0; } ``` 在上面的代码中,我们创建了一个圆锥体节点和一个材质节点,并将材质节点的backfaceculling属性设置为false,从而启用了双面渲染。然后,我们将这些节点添加到分离器节点中,并将分离器节点作为场景的根节点。最后,我们创建了一个场景管理器,并将根节点添加到场景管理器中,然后显示场景并进入Coin3D的事件循环。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值