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 的相关文章

随机推荐

  • 已解决FileNotFoundError: [Errno 2] No such file or directory: ‘D:\\1. PDF‘

    已解决FileNotFoundError Errno 2 No such file or directory D 1 PDF 文章目录 报错代码报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错代码 粉丝群里的一个小伙伴
  • 绑定域名到 GitHub Pages

    GitHub Pages 绑定来自阿里云的域名 简介 我在阿里云上注册了一个新域名 xff1a yuanzb com xff0c 我已经在GitHub Pages上建立了自己的博客 xff1a http yuanzb github io y
  • 数组元素交叉排列的算法题(a1 a2 a3 .. an b1 b2 b3 .. bn -->a 1 b1, a2 b2, a3 b3, .. an bn ) 概论思想(perfect shuffle 算法)

    perfect shuffle 算法 今天又发现一个关于完美洗牌的算法 这个比较简单一些 xff0c 由 microsoft的Peiyush Jain提出 原论文 xff1a A Simple In Place Algorithm for
  • [操作系统]学习操作系统的经典书籍

    http blog chinaunix net u1 43966 showart 396940 html 介绍了一些操作系统学习的经典书籍 xff0c 包括理论上的 具体操作系统的 Abraham Silberschatz的两本书 xff1
  • Spring源码之AbstractApplicationContext解析(refresh)

    Spring源码之AbstractApplicationContext解析 阅读前提须知 1 此源码是在我公司的随便一个Spring boot项目中查看的 xff0c 具体方法就是双击shift xff0c 搜索AbstractApplic
  • 岁月清浅,邀你入梦

    这世间本应美好 xff0c 怎无奈痛苦缠身 xff0c 卿心亦真 xff0c 免世人之苦 xff0c 乐自身之本 卿之容 xff0c 多沉醉 xff0c 于心赞 xff0c 日夜思 淡若微风的陪伴 xff0c 奈何情深缘浅 只相识 xff0
  • sqli-labs环境搭建

    sqli labs环境搭建 链接 xff1a https www fujieace com penetration test sqli labs ec html
  • python打印等腰三角形

    d 61 int input 39 enter an int 39 l 61 39 39 2 d 1 d 初始化列表 for i in range d l i 61 list l i 字符串转列表 x 61 i y 61 0 x 61 d
  • 实战|如何消除又臭又长的if...else判断更优雅的编程?

    最近在做代码重构 xff0c 发现了很多代码的烂味道 其他的不多说 xff0c 今天主要说说那些又臭又长的if else要如何重构 在介绍更更优雅的编程之前 xff0c 让我们一起回顾一下 xff0c 不好的if else代码 一 又臭又长
  • 最新版Ubuntu 17.10与Windows双系统安装、配置与美化教程(转载)

    感谢原创 xff0c 原文地址 http www jianshu com p 62d947731401 TOC 本教程基于Ubuntu 17 10 xff0c 但是除了下面的Gnome插件部分 xff0c 同时也支持Ubuntu16以上的几
  • Win8.1系统下VirtualBox的各种网络配置方法——Bridged networking

    概述配置仅界面设置桥接到无线网络接口与桥接到有线网络接口的网络相比不同操作系统下桥接网络的缺点 概述 VirtualBox使用主机系统上的一个设备驱动器 用于过滤物理网络适配器的数据 xff0c 因此也被称为网络过滤驱动器 net filt
  • 设置电脑网络唤醒-华硕主板+向日葵

    我一直用向日葵的开机棒唤醒电脑 xff0c 后来重装系统 xff0c 就开机棒失效了 由于是重装系统 xff0c 所以BIOS的设置没问题的 xff0c 就怀疑是新系统需要设置 xff0c 找了好久找到这个教程 xff0c 记录一下 参考这
  • 各种排序的运行时间对比

    冒泡排序 cpp view plain copy time 34 220s include lt cstring gt include lt iostream gt include lt fstream gt include lt algo
  • Cordova概述

    Cordova Apache Cordova is an open source mobile development framework It allows you to use standard web technologies HTM
  • Ubuntu18.04 项目配置

    有问题多重启就好啦 1 换源2 配置输入法3 安装Nvidia驱动4 安装Cuda5 下载谷歌浏览器并安装6 安装Anaconda37 pip换源8 Ubuntu18 04 无法通过蓝牙链接 Airpods9 安装PyCharm10 安装P
  • 基于numpy的CNN实现,进行MNIST手写数字识别

    主要框架来自于这篇文章 xff1a https blog csdn net qq 36393962 article details 99354969 xff0c 下面会以原文来代称这篇文章 本文在原文的基础上增加了交叉熵以及mnist数据集
  • libevent 的http模块实现http服务器

    首先声明 xff0c libevent的http模块是为单线程设计的 xff0c 如果业务逻辑中有耗时操作 xff0c 则需要自行设计线程池以便提高吞吐量 xff0c 每个工作线程中都要运行一个event base loop和一个evhtt
  • swig 使用案例

    包含数组 结构体嵌套 xff0c 函数指针传递等基本操作 swig默认不支持数组元素的写入 xff0c 如果想操作数组元素 xff0c 可以附加一些接口函数实现 比如下面在处理结构体的数组成员时 xff0c 使用 extend命令扩展了对应
  • 攻击防御实例——SQL注入

    攻击防御实例 SQL注入 1 i 表示匹配的时候不区分大小写 2 s 匹配任何不可见字符 xff0c 包括空格 制表符 换页符等等 等价于 f n r t v 3 information schema xff1a 是一个数据库 xff0c
  • 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