单个NAL单元的处理

  下面贴出安卓N版本AAVCAssembler::addSingleNALUnit函数对单个NAL单元的处理:
  

void AAVCAssembler::addSingleNALUnit(const sp<ABuffer> &buffer) {
    ALOGV("addSingleNALUnit of size %zu", buffer->size());
#if !LOG_NDEBUG
    hexdump(buffer->data(), buffer->size());
#endif
   //该buffer是单个NAL单元
   //获取该单个NAL单元标识的时间戳
    uint32_t rtpTime;
    CHECK(buffer->meta()->findInt32("rtp-time", (int32_t *)&rtpTime));
   
   //mAccessUnitRTPTime变量是标识具有相同时间戳的单个NAL单元是属于同一帧数据
   //如果正在被处理的这个单个NAL单元被标识的时间戳和当前的mAccessUnitRTPTime变量值不相同
   //说明该单个NAL单元是不和mNALUnits里的NAL单元属于同一帧的数据的,调用submitAccessUnit()
   //对mNALUnits里的NAL单元进行处理,大致的处理过程就是将mNALUnits组装成一个完整的一帧数据
   //然后发送出去
    if (!mNALUnits.empty() && rtpTime != mAccessUnitRTPTime) {
        submitAccessUnit();
    }

   //替换mAccessUnitRTPTime的值,收集下一帧数据的NAL单元
    mAccessUnitRTPTime = rtpTime;

    //将该NAL单元收集到mNALUnits容器里
    mNALUnits.push_back(buffer);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值