videoToolbox:硬解码

前言:VTDecompressionSession

工作流程:

1:创建解压的会话。

2:配置会话属性。

3:解压视频帧数据。

4:释放会话、释放资源。

介绍  VTDecompressionSession

管理传入视频数据解压缩的会话对象。

解压缩会话支持视频帧序列的解压缩。

核心思路

1:  用NSInputStream读入原始H.264码流,

2:  用CADisplayLink控制显示速率,

3:  用NALU的前四个字节识别SPS和PPS并存储,

4:  当读入IDR帧的时候初始化VideoToolbox,并开始同步解码;

5:  解码得到的CVPixelBufferRef会传入OpenGL ES类进行解析渲染。

0.(可选)创建一个视频格式信息

当你要解压H264格式的视频,你要用SPS,PPS数据来创建一个CMVideoFormatDescription,得到它的格式信息

一:创建解压的会话。

1.1:方法说明:
OSStatus VTDecompressionSessionCreate(
    
CFAllocatorRef allocator,   
//1:分配器,传NULL会使用默认的分配器
CMVideoFormatDescriptionRef videoFormatDescription, //2:源视频帧的描述。
CFDictionaryRef videoDecoderSpecification,  //3:必须使用的特定视频解码器。传递NULL以让VideoToolbox选择解码器。
CFDictionaryRef destinationImageBufferAttributes,  //4:
目标图片缓存的属性.传NULL会设为没有requirements. const VTDecompressionOutputCallbackRecord *outputCallback,//5:回调输出.如果,你要用VTDecompressionSessionDecodeFrameWithOutputHandler(_:_:_:_:_:)来解码视频帧,你可以设为NULL.不然就得不到输出数据.
 VTDecompressionSessionRef  _Nullable *decompressionSessionOut  //6:用于接收新的decompression session
);  

 

1.2:实例解析

      VTDecodeFrameFlags flags = 0;

VTDecodeInfoFlags flagOut = 0;

// 默认是同步操作。

// 调用didDecompress,返回后再回调

OSStatus decodeStatus = VTDecompressionSessionDecodeFrame(mDecodeSession,

sampleBuffer,

flags,

&outputPixelBuffer,

&flagOut);

05:videoToolbox:硬解码的更多相关文章

  1. iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):2 H264数据写入文件

    本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Para ...

  2. 使用VideoToolbox硬编码H.264<转>

    文/落影loyinglin(简书作者)原文链接:http://www.jianshu.com/p/37784e363b8a著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. ======= ...

  3. iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述

    本文档尝试用Video Toolbox进行H.265(HEVC)硬件编码,视频源为iPhone后置摄像头.去年做完硬解H.264,没做编码,技能上感觉有些缺失.正好刚才发现CMFormatDescri ...

  4. 查看Android支持的硬解码信息

    通过/system/etc/media_codecs.xml可以确定当前设备支持哪些硬解码.通过/system/etc/media_profiles.xml可以知道设备支持的具体profile和lev ...

  5. 【GPU编解码】GPU硬解码---DXVA

    前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...

  6. 【GPU编解码】GPU硬解码---CUVID

    问题描述:项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈. 解决思路: 利用GPU解码高清视频,降低解码所占用CPU资源,加速解 ...

  7. Android 用MediaCodec实现视频硬解码

    http://blog.csdn.net/halleyzhang3/article/details/11473961 http://www.360doc.com/content/14/0119/10/ ...

  8. 【GPU编解码】GPU硬解码---DXVA (转)

    前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...

  9. MediaCodec在Android视频硬解码组件的应用

    https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用   cheenc 201 ...

随机推荐

  1. npm install 安装很慢

    npm install 安装很慢 设置国内镜像 npm config set registry https://registry.npm.taobao.org npm install

  2. LSTM 反向传播算法

    1. https://www.cnblogs.com/pinard/p/6519110.html (详细原理!) 2. https://blog.csdn.net/abeldeng/article/d ...

  3. Codeforces 985D

    题意略. 思路:这个题本来打算先推一下公式,然后解方程来算.函数图像大概如下: 最左端为H.但是由于中间那个尖的地方(假设它的高度为h),可能在那个地方有多堆沙包,所以推公式貌似不行. 但是最高高度h ...

  4. 深入理解vmware虚拟网络

    0x01:vmware workstation VMware Workstation是一款非常不错的虚拟机软件,许多爱好者用VMware,Workstation设计多种实现环境做测试.VMware W ...

  5. Nacos高可用集群解决方案-Docker版本

    文章主旨 本文目的是配置高可用的Nacos集群 架构图 整体架构为:Nginx + 3 x Nacos +高可用MySQL 高可用MySQL使用主从复制结构的可以参考Docker搭建MySQL主从集群 ...

  6. 持续集成高级篇之基于win32-openssh搭建jenkins混合集群(一)

    系列目录 前面的demo我们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点往往是不能满足需求的.比如,.net项目要使用windows节点构建,java项目如果部署 ...

  7. 「每日五分钟,玩转JVM」:对象从哪来

    面向对象 众所周知,Java是一门面向对象的高级编程语言,那么现在问题来了,对象从哪来呢?有些人会说通过new关键字来创建一个对象,说的很好,本篇我们就来解密在new一个对象的过程中,JVM都给我们做 ...

  8. 答辩过了,但我知道我写的是一坨shi

    如果时间可以重来, 请好好珍惜大学里最重要的一份答卷. 以后的你会发现, 这种完全独立做出科研成果的机会, 可能不会再有. 1.保研了,才发现科研是多么难的一件事. 一直以来,读的喜欢的专业,考试成绩 ...

  9. 一位996、CRUD开发者的一天

    记一笔流水账 今天我打算记一笔流水账,主要记录我的一天中干的事情,并思考效率低下的原因,同时分析一些可用的解决方案. 清早·开始做计划 早上六点四十,被梦想唤醒,然后看一会书,吃早餐,送娃上学. 九点 ...

  10. 牛客小白月赛4 C 病菌感染 dfs

    链接:https://www.nowcoder.com/acm/contest/134/C来源:牛客网 题目描述 铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们. 培养皿可 ...