-
Notifications
You must be signed in to change notification settings - Fork 271
GPUPicture_IO
pengbin edited this page Apr 25, 2017
·
15 revisions
为了支持图像的采集和处理, 我们往往会需要在内存和GPU之间传输图像
本SDK提供了 KSYGPUPicInput和KSYGPUOutput两个类来实现这个传输的过程.
直播过程中我们用到图像的像素格式主要有3种
像素格式 | iOS OSType |
---|---|
NV12 | kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange |
I420 | kCVPixelFormatType_420YpCbCr8Planar |
BGRA | kCVPixelFormatType_32BGRA |
KSYGPUPicInput 和 KSYGPUOutput 能够支持以上3种格式的输入和输出.
下面列举一些可能的传输情况: KSYGPUPicInput 和 KSYGPUOutput 下文简称 picIn, picOut.
- 最基本的纯GPU处理的情况: 摄像头采集得到 NV12 的图像, 直接通过 picIn 输入到GPU, 经过美颜后送入预览,并通过 picOut 送入streamer 编码推流.
其中, 到streamer选择 NV12 的效率高一些
- 采集后先用CPU的滤镜或贴纸处理, 处理后通过 picIn 输入到GPU, 经过美颜后送入预览,并通过 picOut 送入streamer 编码推流.
一般CPU上的滤镜和贴纸比较常用的是BGRA.
- 采集图像通过 picIn 输入到GPU, 经过美颜处理后通过 picOut导出, 送入CPU的贴纸等效果,结果通过 picIn送回GPU预览, 同时送入streamer 编码推流.