-
Notifications
You must be signed in to change notification settings - Fork 271
GPUPicture_IO
pengbin edited this page Mar 20, 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 的效率高一些
2. 采集后先用CPU的滤镜或贴纸处理, 处理后通过 picIn 输入到GPU, 经过美颜后送入预览,并通过 picOut 送入streamer 编码推流.
一般CPU上的滤镜和贴纸比较常用的是BGRA.
3. 采集图像通过 picIn 输入到GPU, 经过美颜处理后通过 picOut导出, 送入CPU的贴纸等效果,结果通过 picIn送回GPU预览, 同时送入streamer 编码推流.