264 nal type

2023-05-16

/*NUAL HEAD
 +---------------+
 |0|1|2|3|4|5|6|7|
 +-+-+-+-+-+-+-+-+
 |F|NRI|  Type   |
 +---------------+
 */


F  = Forbidden_zero_bit =0;

NRI = Nal_ref_idc:表示NAL的优先级。0~3,取值越大,表示当前NAL越重要,需要优先受到保护。如果当前NAL是属于参考帧的片,或是序列参数集,或是图像参数集这些重要的单位时,本句法元素必需大于0。
Type = Nal_unit_type:当前NAL 单元的类型



#define TYPE_SPS_FRAME     0x67  //byte: 01100111     F:0   NRI:11   TYPE:00111  =  NALU_TYPE_SPS
#define TYPE_PPS_FRAME     0x68  //byte: 01101000     F:0   NRI:11   TYPE:01000  =  NALU_TYPE_PPS
#define TYPE_IDR_FRAME     0x65  //byte: 01100101     F:0   NRI:11   TYPE:00101  =  NALU_TYPE_IDR
#define TYPE_SLICE_FRAME   0x41  //byte: 01000001     F:0   NRI:10   TYPE:00001  =  NALU_TYPE_SLICE
#define TYPE_SEI_FRAME     0x06  //byte: 00000110     F:0   NRI:00   TYPE:00110  =  NALU_TYPE_SEI
#define TYPE_S_FRAME       0x61  //byte: 01100001     F:0   NRI:11   TYPE:00001  =  NALU_TYPE_SLICE




/*
 /H264定义的类型 values for nal_unit_type
 typedef enum {
 NALU_TYPE_SLICE    = 1,     byte: 00001   //非IDR图像的编码条带
 NALU_TYPE_DPA      = 2,     byte: 00010   //编码条带数据分割块A 
 NALU_TYPE_DPB      = 3,     byte: 00011   //编码条带数据分割块B
 NALU_TYPE_DPC      = 4,     byte: 00100   //编码条带数据分割块C
 NALU_TYPE_IDR      = 5,     byte: 00101   //IDR图像的编码条带 
 NALU_TYPE_SEI      = 6,     byte: 00110   //增强信息(SEI)
 NALU_TYPE_SPS      = 7,     byte: 00111   //序列参数集(SPS)
 NALU_TYPE_PPS      = 8,     byte: 01000   //图像参数集(PPS)
 NALU_TYPE_AUD      = 9,     byte: 01001
 NALU_TYPE_EOSEQ    = 10,    byte: 01010
 NALU_TYPE_EOSTREAM = 11,    byte: 01011
 NALU_TYPE_FILL     = 12,    byte: 01100
 #if (MVC_EXTENSION_ENABLE)
 NALU_TYPE_PREFIX   = 14,    byte: 01110
 NALU_TYPE_SUB_SPS  = 15,    byte: 01111
 NALU_TYPE_SLC_EXT  = 20,    byte: 10100
 NALU_TYPE_VDRD     = 24     byte: 11000   // View and Dependency Representation Delimiter NAL Unit
 #endif
 } NaluType;
 */


-(BOOL)h264Parse:(NSData *)frameData{
    char firstChar;
    BOOL isOK = NO;
    [frameData getBytes:&firstChar length:1];
    if (firstChar == TYPE_SPS_FRAME) {
        NSLog(@"TYPE_SPS_FRAME");
        isOK = YES;
    }else if (firstChar == TYPE_PPS_FRAME){
        NSLog(@"TYPE_PPS_FRAME");
                isOK = YES;
    }else if (firstChar == TYPE_IDR_FRAME){
        NSLog(@"TYPE_IDR_FRAME");
                isOK = YES;
    }else if (firstChar == TYPE_SLICE_FRAME){
        NSLog(@"TYPE_SLICE_FRAME");
    }else if (firstChar == TYPE_SEI_FRAME){
        NSLog(@"TYPE_SEI_FRAME");
    }else if (firstChar == TYPE_S_FRAME){
        NSLog(@"TYPE_S_FRAME");
                isOK = YES;
    }
    
    char lastChar;
    [frameData getBytes:&lastChar length:1];
    if ((lastChar & 0x80) == 0X80) {
        NSLog(@"Start Frame......");
    }
    
    
    return isOK;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

264 nal type 的相关文章

随机推荐

  • np.maximum()函数详解——将数组中小于某值的数用0代替

    目标 xff1a 把数组中小于某个值的数都设为0 np max a axis 61 None out 61 None keepdims 61 False 求a中的最大值 np maximum xff1a a b out 61 自定义 a 与
  • python-opencv 使用LBP特征检测人脸

    概述 最近在做人脸检测相关功能 xff0c 目前注意到比较传统 xff08 非深度 xff09 人脸检测特征包括harr和LBP HOG用于行人检测更多些 xff0c opencv包括了这两种特征算法 xff0c 并且相对来说 xff0c
  • 机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR

    一 概述 这里主要记录自己的一些感悟 xff0c 不是很系统 想要详细系统的理论 xff0c 请参考文末的 图像处理之特征提取 个人不是专业cv工程师 xff0c 很多细节没有深究 xff0c 描述可能不严谨 在总结物体检测算法之前先把基础
  • win7 wifi 无Internet访问权限或者有限的访问权限

    自己家的无线路由器 xff0c 手机和笔记本都使用正常 xff0c 但是一台新笔记本连上之后总是提示 有限的访问权限 xff0c 无法连公网 网上的很多办法都不管用 xff0c 什么设置静态IP或者重启路由 xff0c 基本都是瞎扯 好在一
  • springboot 本地调试没问题,打包运行报错原因

    1 如果引用了本地jar包或者so库 xff0c dll库等文件 xff0c 需要在打包的时候都加载进去 如下图 xff1a 本地正常 xff0c 打包的时候谨记 xff0c 需要打包进去 xff0c 怎么验证是否打包成功呢 xff1f 我
  • CMakeList学习笔记

    hello cpp为源文件 构建一个CMakeLists txt cmake minimum required VERSION 2 8 project hello add executable hello hello cpp 在目录中的bu
  • C语言--iota函数

    一 iota函数 xff1a 功能 把一个整数转换为字符串 eg include lt stdlib h gt include lt stdio h gt void main int number 61 43 char string 100
  • STM32F103ZET6和STM32F103C8T6编程不一样吗?

    我把C C 43 43 选项卡中 STM32F10X HD USE STDPERIPH DRIVER 修改为 STM32F10X MD USE STDPERIPH DRIVER 编译成功 谢谢O O 初始化的时候要调用SystemInit
  • STM32F103ZET6和STM32F103C8T6芯片的区别

    是这样的 xff0c 一个具体的STM32F103系列芯片的内存有多大 xff0c 你看一下芯片上的型号就行了 STM32F103XY 注意 xff0c XY是个代号 xff0c X是表示封装有多少个引脚 xff0c 比如 xff0c 如果
  • Keil(MDK-ARM)使用教程——在线调试

    Keil xff08 MDK ARM xff09 使用教程 xff08 三 xff09 在线调试 由于我是直接使用 xff08 打开现有的软件工程 xff09 xff0c 如果跟着需要下载上面演示参考的软件工程 才行 工程默认是使用硬件在线
  • ch340是什么芯片

    CH340 是一个USB 总线的转接芯片 xff0c 实现USB 转串口 USB 转IrDA 红外或者USB 转打印口 在串口方式下 xff0c CH340 提供常用的MODEM联络信号 xff0c 用于为计算机扩展异步串口 xff0c 或
  • Ubuntu16的详细安装教程

    有一点很重要要说一下 xff0c 每个人学习Linux的动机都不一样 xff0c 而这个动机会决定你对Linux的态度 xff0c 如果你仅仅是想尝鲜 xff0c 装个笔什么的 xff0c 不当作自己的职业方向去学习Linux的 劝这类人还
  • 是否能在keil中混合编译c和c++程序

    keil中支持混合编译C和C 43 43 程序 xff0c 因为其本质最终都是编译成汇编 xff0c 所以是可以同时操作的 在混合编译时 xff0c 需要注意以下几点 xff1a 1 C文件扩展名必须为 C xff0c C 43 43 文件
  • ds18b20工作原理和测温原理介绍

    DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器 与传统的热敏电阻相比 xff0c 他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9 xff5e 12位的数字值读数方式 可以分别在9
  • 如何将.hex文件转化为.c文件

    说明楼主太初级 xff0c 迷恋于C 1 C与HEX并不是一一映射的 xff0c 有可能N个人写的C xff0c 会出同一个HEX xff0c 你希望回成哪个人写的呢 xff1f 或许你可能说 xff1a 任意一个孝可以 xff0c 只要能
  • 嵌入式linux 和 用stm32进行的嵌入式开发 这两者之间有什么关联性吗?

    作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 53880054 answer 164501004 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非
  • #if 0 ... #endif的真实用途

    在过去都没有去理会 if 的作用 xff0c 今天突发奇想 xff0c 开启编译器试一试 很多人都知道 if 0 endfif的作用跟 的作用是一样的 xff0c 就是注释 xff0c 可是注释为什么不用注释符号 就行了么 xff1f go
  • .hex文件和.bin文件区别

    HEX文件和BIN文件是我们经常碰到的2种文件格式 因为自己也是新手 xff0c 所以一直对这两个文件懵懵懂懂 xff0c 不甚了解 xff0c 最近在做STM32单片机的IAP更新 xff0c 其中要考虑HEX文件和BIN文件 xff0c
  • EEPROM和flash的区别

    From https blog csdn net yuanlulu article details 6163106 EEPROM的全称是 电可擦除可编程只读存储器 xff0c 即Electrically Erasable Programma
  • 264 nal type

    NUAL HEAD 43 43 0 1 2 3 4 5 6 7 43 43 43 43 43 43 43 43 43 F NRI Type 43 43 F xff1d Forbidden zero bit 61 0 NRI 61 Nal r