VideoToolbox框架详细解析(一) —— 基本概览

版本记录

版本号 时间
V1.0 2017.12.23

前言

对于做过视频的开发者,大家应该对视频编码很了解,特别是硬编码和软编码,特别是硬编码效率高,使用方便。接下来几篇我们就讲解一下VideoToolbox框架。该框架的主要作用就是直接使用硬件加速的视频编码和解码功能。

Overview

首先看一下该框架的基本信息。

VideoToolbox框架详细解析(一) —— 基本概览_第1张图片

VideoToolbox是一个底层框架,可以直接访问硬件编码器和解码器。 它提供视频压缩和解压缩服务,并在CoreVideo像素缓冲区中存储的光栅raster图像格式之间进行转换。 这些服务以会话对象(压缩,解压缩和像素传输)的形式提供,它们以Core Foundation(CF)类型呈现。 不需要直接访问硬件编码器和解码器的应用程序App就不需要直接使用VideoToolbox


框架基本结构

下面我们先看一下该框架的基本结构。

VideoToolbox框架详细解析(一) —— 基本概览_第2张图片

该框架在使用的时候需要引入框架

#import

下面我们就看一下头文件和API

/* VideoToolbox.h

   Copyright (c) 2008-2014 Apple Computer, Inc.
   All rights reserved. */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#if !TARGET_OS_IPHONE
#include 
#include 
#endif // !TARGET_OS_IPHONE

框架详细结构

下面我们就看一下详细结构。

1. Data Compression - 数据压缩

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

2. Data Decompression - 数据解压

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

3. Data Conversion - 数据转换

  • VTPixelTransferSession
    • 用于将视频数据从源像素缓冲区复制和/或转换到目标像素缓冲区的会话对象。

4. Session Configuration - 会话配置

  • VTSession
    • 提供通用接口来配置VideoToolbox session对象的抽象对象。

5. Multipass Compression - 多通道压缩

  • VTMultiPassStorage

    • 用于存储多通道视频编码元数据的对象。
  • VTFrameSilo

    • 存储大量样本缓冲区sample buffers的对象,由多通道压缩会话生成。

6. Utilities - 使用

  • VTCreateCGImageFromCVPixelBuffer
    • 使用提供的像素缓冲区pixel buffer创建Core Graphics位图图像或图像遮罩。
  • VTRegisterProfessionalVideoWorkflowVideoDecoders

    • 加载适合客户专业视频工作流程的解码器。
  • VTRegisterProfessionalVideoWorkflowVideoEncoders

    • 加载适合客户专业视频工作流程的编码器。
  • VTCopyVideoEncoderList

    • 构建可用视频编码器的列表。
  • Video Encoder List Keys

    • 用于调用VTCopyVideoEncoderList的字典键。

7. Errors

  • Error Code Constants

    • VideoToolbox操作错误代码的常量。

后记

未完,待续~~~

VideoToolbox框架详细解析(一) —— 基本概览_第3张图片

你可能感兴趣的:(VideoToolbox框架详细解析(一) —— 基本概览)