| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #import <Foundation/Foundation.h>
- #import <AVFoundation/AVFoundation.h>
- #import <GPUImage/GPUImage.h>
- /** GPU图像输出
-
- 从GPU中取得处理后的图像, 通过回调函数将pixelBuffer和时间戳送出
-
- * 本模块含有一个GPUImageInput的接口, 从其他filter接收渲染结果
- * 通过inputSize 查询输入的图像尺寸
- * 通过outputSize 设置输出的图像尺寸
- * 通过cropRegion 设置裁剪区域
- * 初始化时可指定输出数据的像素格式
- * 支持的输出颜色格式包括:
- - kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: (NV12)
- - kCVPixelFormatType_420YpCbCr8BiPlanarFullRange:(NV12)
- - kCVPixelFormatType_420YpCbCr8Planar:(I420)
- - kCVPixelFormatType_420YpCbCr8PlanarFullRange:(I420)
- - kCVPixelFormatType_32BGRA:(BGRA)
- - kCVPixelFormatType_4444AYpCbCr8:(AYUV) 排列顺序为 (A Y' Cb Cr)
- */
- @interface KSYGPUPicOutput : NSObject <GPUImageInput>
- /// @name Initialization
- /**
- @abstract 初始化方法
- */
- - (id) init;
- /**
- @abstract 指定输出格式的初始化
- @param fmt 输出格式
- @see outputPixelFormat
- */
- - (id) initWithOutFmt:(OSType) fmt;
- /// @name query and settings
- /**
- @abstract output format (默认:kCVPixelFormatType_32BGRA)
- @discussion 非法颜色格式都会被当做 kCVPixelFormatType_32BGRA 处理
- */
- @property(nonatomic, readonly) OSType outputPixelFormat;
- /**
- @abstract GPUImageInput - (BOOL)enabled;
- */
- @property(nonatomic) BOOL enabled;
- /**
- @abstract 是否使用自定义输出尺寸 (默认为NO)
- @discussion NO: outputSize自动跟随输入图像的变化而变化
- @discussion YES: outputSize使用外部自定义设置,忽略输入尺寸
- */
- @property(nonatomic, assign) BOOL bCustomOutputSize;
- /**
- @abstract output picture size
- @discussion 当bCustomOutputSize设置为NO时,outputSize无法被修改
- @discussion 可以对裁剪后的图像再进行缩放
- @discussion 输出尺寸必须为4的整数倍, 内部会进行向上取整
- @see bCustomOutputSize
- */
- @property(nonatomic, assign) CGSize outputSize;
- /**
- @abstract 裁剪区域 将输入的图像按照区域裁剪出中间的一块
- @discussion cropRegion 标记了左上角的位置和宽高, 范围都是0.0 到1.0
- */
- @property(readwrite, nonatomic) CGRect cropRegion;
- /**
- @abstract input picture size
- */
- @property(nonatomic, readonly) CGSize inputSize;
- /** 是否冻结图像(主动提供重复图像)
- @discussion 比如:视频采集被打断时, bAutoRepeat为NO,则停止提供图像; 为YES, 则主动提供最后一帧图像
- */
- @property(nonatomic, readwrite) BOOL bAutoRepeat;
- /** 0表示根据过去输入的图像来猜测帧率, 1~30 表示按照设定的帧率提供重复的帧, 默认为0 */
- @property(nonatomic, readwrite) int targetFps;
- /**
- @abstract input roation mode
- @return 图像的旋转模式
- */
- - (GPUImageRotationMode) getInputRotation;
- #pragma mark - raw data
- /**
- @abstract 视频处理回调接口
- @discussion pixelBuffer 美颜处理后,编码之前的视频数据
- @discussion timeInfo 时间戳
- @warnning 请注意本函数的执行时间,如果太长可能导致不可预知的问题
- */
- @property(nonatomic, copy) void(^videoProcessingCallback)(CVPixelBufferRef pixelBuffer, CMTime timeInfo );
- @end
|