KSYGPUPicInput.h
3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//
// 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