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. Python模块之netmiko

    一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...

  2. 一.安全NA之syslog SNMP SSH NTP

    一.常用命令 配置模式下: no logging console #关闭屏幕实时显示日志,不影响到日志buffer里(show logging) logging console #打开屏幕实时日志显示 ...

  3. Day 03--设计与完善(一)

    1.今天我们把软件原型基本完成了,功能流程一套下来,像一个真正的软件了.这是几个主要模块: 首先是首页,登入小程序后可以直观地看到各个食堂,并显示自己的定位.屏幕下方还可以时刻切换查看自己以前的订单. ...

  4. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  5. SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet

    转自:https://my.oschina.net/lichhao/blog SpringMVC简介 SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的 ...

  6. Windows下如何使用Tensorflow Object Detection API

    https://blog.csdn.net/mr_jor/article/details/79071963 记得要把model里的research文件夹和research\slim 文件夹 添加到PY ...

  7. 单元测试之NUnit二

    NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 本文介绍常用的NUni ...

  8. Spring数据库连接

    1.C3P0数据库连接 2.DBCP数据库连接 3.Druid数据库连接 C3P0数据库连接: 1.先到(http://www.mvnrepository.com/)Maven网址找到C3P0的数据源 ...

  9. vuex详解vue简单使用

    vue概念:vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享的数据,保存到 vuex 中,方便 整个程序中的任何组件直接获取或修改我们的公共数据: 配置vuex的步骤: 1.运行cnp ...

  10. spring、spring mvc与spring boot的区别是什么?

    Spring 的功能 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 ao ...