TS流包有效数据位置计算(adaption_field_control)

unsigned int GetSectionStart(unsigned char *ucPacketBuffer, struct ts_packet_head  *pstPacketHead)
{
	unsigned int uiSectionStart = 0;

	switch(pstPacketHead->adaptation_field_control)
	{
		case 0:	break;
		case 1:	uiSectionStart = 4;
				break;
		case 2: break;
		case 3: uiSectionStart = 5 + ucPacketBuffer[4];
			    break;
	}

	if(pstPacketHead->payload_uint_start_indicator)
	{
		uiSectionStart = uiSectionStart + ucPacketBuffer[uiSectionStart] + 1;
	}

	return uiSectionStart;
}

在写这段程序的时候查了好久才想通,结果后面回过来看的时候又忘记了,还是稍微总结下吧。

       adaption_field_control为“调整字段控制”,表示TS分组首部后面是否跟随有调整字段和有效负载。01仅含有效负载,10仅含调整字段,11含有调整字段和有效负载。为00解码器不进行处理。空分组没有调整字段。如果有调整字段就是包数据的第一位(除去包头)指定调整字段长度。

      因为00和10都没有有效负载所以不进行处理,为1表示只有有效负载,数据从第5个字节(数组下标为4)开始;如果为11则从调整字段后一位(第6个字节,数组下标5)加上调整字段长度为包有效数据开始位置。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值