Skip to content

GPUPicture_IO

pengbin edited this page Dec 6, 2016 · 15 revisions

图像到GPU的输入输出

为了支持图像的采集和处理, 我们往往会需要在内存和GPU之间传输图像

本SDK提供了 KSYGPUPicInput和KSYGPUOutput两个类来实现这个传输的过程.

直播过程中我们用到图像的像素格式主要有3种

像素格式 iOS OSType
NV12 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
I420 kCVPixelFormatType_420YpCbCr8Planar
BGRA kCVPixelFormatType_32BGRA

KSYGPUPicInput 和 KSYGPUOutput 能够支持以上3种格式的输入和输出.

下面列举一些可能的传输情况: KSYGPUPicInput 和 KSYGPUOutput 下文简称 picIn, picOut.

  1. 最基本的纯GPU处理的情况: 摄像头采集得到 NV12 的图像, 直接通过 picIn 输入到GPU, 经过美颜后送入预览,并通过 picOut 送入streamer 编码推流.

![basic flow](http://g.gravizo.com/svg?digraph G { rankdir = LR; node [shape="box"]; KSYAVFCapture;picIn;picOut;preview;streamer; node [shape="Mrecord"]; GPUFilters; KSYAVFCapture -> picIn[label="NV12"]; picIn -> GPUFilters; GPUFilters -> picOut; picOut -> streamer[label="BGRA/NV12/I420"]; GPUFilters -> preview; } )

其中, 到streamer选择 NV12 的效率高一些

  1. 采集后先用CPU的滤镜或贴纸处理, 处理后通过 picIn 输入到GPU, 经过美颜后送入预览,并通过 picOut 送入streamer 编码推流.

![basic flow](http://g.gravizo.com/svg?digraph G { rankdir = LR; node [shape="box"]; KSYAVFCapture;picIn;picOut;preview;streamer; CPUFilters[label="滤镜或贴纸"]; node [shape="Mrecord"]; GPUFilters; KSYAVFCapture -> CPUFilters[label="BGRA"]; CPUFilters->picIn[label="BGRA"]; picIn -> GPUFilters; GPUFilters -> picOut; picOut -> streamer[label="BGRA/NV12/I420"]; GPUFilters -> preview; } )
一般CPU上的滤镜和贴纸比较常用的是BGRA.

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally