| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- //
- // KSYGPUPicInput.h
- // KSYStreamer
- //
- // Created by yiqian on 1/30/16.
- // Copyright © 2016 yiqian. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import <AVFoundation/AVFoundation.h>
- #import <CoreMedia/CoreMedia.h>
- #import <GPUImage/GPUImage.h>
- /** GPU图像输输入
-
- * 将采集到的YUV/RGB数据上传到GPU, 传递给其他filter进行处理
- * 支持的颜色格式包括:
- - kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: (NV12)
- - kCVPixelFormatType_420YpCbCr8BiPlanarFullRange:(NV12)
- - kCVPixelFormatType_420YpCbCr8Planar:(I420)
- - kCVPixelFormatType_420YpCbCr8PlanarFullRange:(I420)
- - kCVPixelFormatType_32BGRA:(BGRA)
- * 支持图像裁剪
- * 支持图像旋转
- */
- @interface KSYGPUPicInput : GPUImageOutput
- /// Initialization and teardown
- - (id)init;
- /**
- @abstract 设置输入图像的像素格式
- @param fmt 像素格式
- */
- - (id)initWithFmt:(OSType)fmt;
- /**
- @abstract 裁剪区域 将输入的图像按照区域裁剪出中间的一块
- @discussion cropRegion 标记了左上角的位置和宽高, 范围都是0.0 到1.0, 非法值无法设置成功
- */
- @property(readwrite, nonatomic) CGRect cropRegion;
- /**
- @abstract 输出图像的尺寸
- @discussion 设置了裁剪区域, 并且改变了宽高比后, 需要调用此接口, 否则图像可能变形
- */
- - (void) forceProcessingAtSize:(CGSize)frameSize;
- /**
- @abstract 实际输出图像的尺寸
- @discussion forceProcessingAtSize: 也是对outputSize属性进行赋值
- */
- @property(nonatomic) CGSize outputSize;
- /**
- @abstract 输出画面的朝向
- @discussion 输出的画面旋转90度的整数倍, 默认为 kGPUImageNoRotation
- @discussion 直接连接到KSYGPUPicMixer时, 旋转90度的情况可能出现问题, 请尽量保证中间有其他滤镜
- */
- @property(nonatomic, assign) GPUImageRotationMode outputRotation;
- /**
- @abstract 是否允许超时丢帧
- @discussion 当video frame处理超时时,该属性为YES时,将丢弃新的video frame,为NO时将等待处理完毕的信号。
- @discussion 默认为YES。
- */
- @property(nonatomic, assign) BOOL alwaysDiscardsLateVideoFrames;
- /**
- @abstract 输入图像数据
- @param sampleBuffer 图像数据和时间信息
- */
- - (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer;
- /**
- @abstract 输入图像数据
- @param pixelBuffer 图像数据
- @param timeInfo 时间信息
- */
- - (void)processPixelBuffer:(CVPixelBufferRef)pixelBuffer
- time:(CMTime)timeInfo;
- /**
- @abstract 输入图像数据
- @param pData 图像数据每个分量的指针, 比如pData[0]为Y分量的指针
- @param pixelFmt 图像数据类型, 必须与init时指定的格式一致
- @param width 图像宽度
- @param height 图像高度
- @param strides 图像数据每个分量的行偏移, 比如 stride[0] 为Y分量的行偏移
- @param timeInfo 时间信息
- */
- - (void)processPixelData:(void**) pData
- format:(OSType) pixelFmt
- width:(size_t) width
- height:(size_t) height
- stride:(size_t*) strides
- time:(CMTime) timeInfo ;
- @end
- /** GPU图像输输入
- 过期的类, 请使用KSYGPUPicInput
- */
- @interface KSYGPUYUVInput : KSYGPUPicInput
- @end
|