Initial clean commit
This commit is contained in:
144
Example/SellyCloudSDK/Live/Beauty/FURenderKit.framework/Headers/FURenderIO.h
Executable file
144
Example/SellyCloudSDK/Live/Beauty/FURenderKit.framework/Headers/FURenderIO.h
Executable file
@@ -0,0 +1,144 @@
|
||||
//
|
||||
// FURenderInput.h
|
||||
// FURenderKit
|
||||
//
|
||||
// Created by liuyang on 2021/1/4.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "CNamaSDK.h"
|
||||
|
||||
typedef enum : NSUInteger {
|
||||
FUImageBufferFormatRGBA,
|
||||
FUImageBufferFormatBGRA,
|
||||
FUImageBufferFormatYUV420V,
|
||||
FUImageBufferFormatYUV420F,
|
||||
FUImageBufferFormatYUVI420,
|
||||
} FUImageBufferFormat;
|
||||
|
||||
typedef enum : NSUInteger {
|
||||
FUImageOrientationUP,
|
||||
FUImageOrientationRight,
|
||||
FUImageOrientationDown,
|
||||
FUImageOrientationLeft
|
||||
} FUImageOrientation;
|
||||
|
||||
/// CPU image 数据
|
||||
struct FUImageBuffer {
|
||||
Byte *buffer0; // 格式与传入 buffer 类型对应关系:RGBA: rgba_buffer; BGRA: bgra_buffer; YUV420V/YUV420F/YUVI420: y_buffer
|
||||
size_t stride0; // 格式与传入 stride 类型对应关系:RGBA: rgba_stride; BGRA: bgra_stride; YUV420V/YUV420F/YUVI420: y_stride
|
||||
|
||||
Byte *buffer1; // 格式与传入 buffer 类型对应关系:RGBA/BGRA: NULL; YUV420V/YUV420F: uv_buffer; YUVI420: u_buffer
|
||||
size_t stride1; // 格式与传入 stride 类型对应关系:RGBA/BGRA: 0; YUV420V/YUV420F: uv_stride; YUVI420: u_stride
|
||||
|
||||
Byte *buffer2; // 格式与传入 buffer 类型对应关系:RGBA/BGRA: NULL; YUV420V/YUV420F: NULL; YUVI420: v_buffer
|
||||
size_t stride2; // 格式与传入 stride 类型对应关系:RGBA/BGRA: 0; YUV420V/YUV420F: 0; YUVI420: v_stride
|
||||
|
||||
CGSize size; // 图像宽高
|
||||
FUImageBufferFormat format; // 图像格式
|
||||
|
||||
};
|
||||
typedef struct FUImageBuffer FUImageBuffer;
|
||||
|
||||
FUImageBuffer FUImageBufferMakeRGBA(Byte *buffer0, size_t width, size_t height, size_t stride0);
|
||||
FUImageBuffer FUImageBufferMakeBGRA(Byte *buffer0, size_t width, size_t height, size_t stride0);
|
||||
FUImageBuffer FUImageBufferMakeYUV420F(Byte *buffer0, Byte *buffer1, size_t width, size_t height, size_t stride0, size_t stride1);
|
||||
FUImageBuffer FUImageBufferMakeYUV420V(Byte *buffer0, Byte *buffer1, size_t width, size_t height, size_t stride0, size_t stride1);
|
||||
FUImageBuffer FUImageBufferMakeI420(Byte *buffer0, Byte *buffer1, Byte *buffer2, size_t width, size_t height, size_t stride0, size_t stride1, size_t stride2);
|
||||
FUImageBuffer FUImageBufferMake(Byte *buffer0, Byte *buffer1, Byte *buffer2, size_t width, size_t height, size_t stride0, size_t stride1, size_t stride2, FUImageBufferFormat format);
|
||||
|
||||
|
||||
/// 纹理数据
|
||||
struct FUTexture {
|
||||
GLuint ID; // 纹理ID
|
||||
CGSize size; // 纹理宽高
|
||||
};
|
||||
typedef struct FUTexture FUTexture;
|
||||
|
||||
#pragma -mark FURenderConfig
|
||||
@interface FURenderConfig : NSObject
|
||||
|
||||
/// 自定义输出结果的大小,当前只会对输出的纹理及pixelBuffer有效
|
||||
@property (nonatomic, assign) CGSize customOutputSize;
|
||||
|
||||
/// 当前图片是否来源于前置摄像头,默认为 NO
|
||||
@property (nonatomic, assign) BOOL isFromFrontCamera;
|
||||
|
||||
/// 当前图片是否来源于镜像摄像头,默认为 NO
|
||||
@property (nonatomic, assign) BOOL isFromMirroredCamera;
|
||||
|
||||
/// 原始图像的朝向
|
||||
@property (nonatomic, assign) FUImageOrientation imageOrientation;
|
||||
|
||||
/// 贴纸水平镜像
|
||||
@property (nonatomic, assign) BOOL stickerFlipH;
|
||||
|
||||
/// 贴纸垂直镜像
|
||||
@property (nonatomic, assign) BOOL stickerFlipV;
|
||||
|
||||
/// 重力开关,开启此功能可以根据已设置的 imageRotation 自动适配AI检测的方向。
|
||||
@property (nonatomic, assign) BOOL gravityEnable;
|
||||
|
||||
/// 设置为YES 只会生效美颜结果
|
||||
@property (nonatomic, assign) BOOL onlyRenderBeauty;
|
||||
|
||||
/// 设置输入pixelBuffer/imageBuffer的旋转方向,以使buffer数据与textureTransform作用后纹理的方向一致,该参数仅用于AI算法检测,不会改变buffer的方向或镜像属性
|
||||
@property (nonatomic, assign) TRANSFORM_MATRIX bufferTransform;
|
||||
|
||||
/// 设置输入纹理的旋转及镜像信息,设置该属性会影响输出纹理的方向。默认基于 CPU 图像创建的纹理与CPU 图像成上下镜像关系,此时 textureTransform 对应的值为 DEFAULT,以此类推,如果对默认生成的纹理做了其他变换,则将该参数设置为对应的变换即可。
|
||||
@property (nonatomic, assign) TRANSFORM_MATRIX textureTransform;
|
||||
|
||||
/// 设置输出pixelBuffer/imageBuffer的旋转方向,以使buffer数据与textureTransform作用后纹理的方向一致,该参数仅用于AI算法检测,不会改变buffer的方向或镜像属性
|
||||
@property (nonatomic, assign) TRANSFORM_MATRIX outputTransform;
|
||||
|
||||
/// 是否渲染到当前的FBO,设置为YES时,返回的 FURenderOutput 内的所有数据均为空值。
|
||||
@property (nonatomic, assign) BOOL renderToCurrentFBO;
|
||||
|
||||
//是否读回到输入的buffer, 如果手机在后台状态也不回写数据,返回的output对象内部buffer为空。
|
||||
@property (nonatomic, assign) BOOL readBackToPixelBuffer;
|
||||
|
||||
/// 设置为YES 且 renderToCurrentFBO 为 NO 时,只会输出纹理,不会输出CPU层的图像。
|
||||
@property (nonatomic, assign) BOOL onlyOutputTexture;
|
||||
|
||||
/// 控制输出图像是否保留透明信息,默认值为NO,可能会输出不透明的图像,开启该参数可以保持图像中透明信息。
|
||||
@property (nonatomic, assign) BOOL keepAlpha;
|
||||
|
||||
/// 如果 renderKit 有 glDisplayView ,控制绘制结果将直接渲染到 glDisplayView
|
||||
@property (nonatomic, assign) BOOL autoDisplay;
|
||||
|
||||
@end
|
||||
|
||||
#pragma -mark FURenderInput
|
||||
@interface FURenderInput : NSObject
|
||||
|
||||
/// 输入的纹理
|
||||
@property (nonatomic, assign) FUTexture texture;
|
||||
|
||||
/// 输入的 pixelBuffer
|
||||
@property (nonatomic, assign) CVPixelBufferRef pixelBuffer;
|
||||
|
||||
/// 输入的 imageBuffer,如果同时传入了 pixelBuffer,将优先使用 pixelBuffer
|
||||
/// 输入 imageBuffer,在 renderConfig 的 onlyOutputTexture 为 NO 时,render 结果会直接读会输入的 imageBuffer,大小格式与输入均保持一致。
|
||||
@property (nonatomic, assign) FUImageBuffer imageBuffer;
|
||||
|
||||
/// 设置render相关的输入输出配置,详细参数请查看 FURenderConfig 类的接口注释。
|
||||
@property (nonatomic, strong, readonly) FURenderConfig *renderConfig;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma -mark FURenderOutput
|
||||
@interface FURenderOutput : NSObject
|
||||
|
||||
/// 输出的纹理
|
||||
@property (nonatomic, assign) FUTexture texture;
|
||||
|
||||
/// 输出的 pixelBuffer
|
||||
@property (nonatomic, assign) CVPixelBufferRef pixelBuffer;
|
||||
|
||||
/// 输出的 imageBuffer,内部数据与输入的 imageBuffer 一致。
|
||||
@property (nonatomic, assign) FUImageBuffer imageBuffer;
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user