GPUImageVideoCamera 方法解析

GPUImageVideoCamera 方法解析

颜色矩阵转换

extern const GLfloat kColorConversion601[];//标准清晰度
extern const GLfloat kColorConversion601FullRange[];//全彩
extern const GLfloat kColorConversion709[];//高清晰度

片段着色器:

extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString;
extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString;
extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString;

代理:

-(void)willOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer;//将要输出samp leBuffer

私有属性:

    NSUInteger numberOfFramesCaptured;//已采集的帧数
    CGFloat totalFrameTimeDuringCapture;//采集的总帧数
    AVCaptureSession *_captureSession;//采集会话层
    AVCaptureDevice *_inputCamera;//视频输入设备
    AVCaptureDevice *_microphone;//音频输入设备
    AVCaptureDeviceInput *videoInput;//视频输入
    AVCaptureVideoDataOutput *videoOutput;//视频数据输出

    BOOL capturePaused;//停止采集
    GPUImageRotationMode outputRotation, internalRotation;//输入和输出旋转方式
    dispatch_semaphore_t frameRenderingSemaphore;//帧渲染信号量

    BOOL captureAsYUV;//yuv格式采集
    GLuint luminanceTexture, chrominanceTexture;//亮度纹理、色度纹理

    __unsafe_unretained id<GPUImageVideoCameraDelegate> _delegate;//摄像头采集协议

属性:

    @property(readonly, retain, nonatomic) AVCaptureSession *captureSession;//会话层
    @property (readwrite, nonatomic, copy) NSString *captureSessionPreset;//采集分辨率
    @property (readwrite) int32_t frameRate;//帧率
    @property (readonly, getter = isFrontFacingCameraPresent) BOOL frontFacingCameraPresent;//前置摄像头
    @property (readonly, getter = isBackFacingCameraPresent) BOOL backFacingCameraPresent;//后置摄像头
    @property(readwrite, nonatomic) BOOL runBenchmark;//基准
    @property(readonly) AVCaptureDevice *inputCamera;//输入摄像头
    @property(readwrite, nonatomic) UIInterfaceOrientation outputImageOrientation;//摄像头朝向
    @property(readwrite, nonatomic) BOOL horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera;//前者摄像头水平镜像,后置摄像头水平镜像
    @property(nonatomic, assign) id<GPUImageVideoCameraDelegate> delegate;//摄像头代理

方法集合:

-(id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition;//根据分辨率、摄像头朝向初始化摄像头
    -(BOOL)addAudioInputsAndOutputs;//添加音频的输入和输出
    -(BOOL)removeAudioInputsAndOutputs;//移除音频的输入和输出
    -(void)removeInputsAndOutputs;//移除输入和输出设备
    -(void)startCameraCapture;//开始采集
    -(void)stopCameraCapture;//停止采集
    -(void)pauseCameraCapture;//暂停采集
    -(void)resumeCameraCapture;//恢复采集
    -(void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer;//处理视频数据
    -(void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer;//处理音频数据
    -(AVCaptureDevicePosition)cameraPosition;//摄像头位置(前置/后置)
    -(AVCaptureConnection *)videoCaptureConnection;//视频连接
    -(void)rotateCamera;//转换摄像头
    -(CGFloat)averageFrameDurationDuringCapture;//平均帧时长
    - (void)resetBenchmarkAverage;
    + (BOOL)isBackFacingCameraPresent;
    + (BOOL)isFrontFacingCameraPresent;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,662评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,445评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,234评论 25 708
  • 我站在围观的群众里 警察问我: “你干什么?” 我说 “我只是无聊随便看看而已。”
    留子尧阅读 133评论 0 1
  • 母亲从来没有对我发过脾气。 无论是小时候任性的要吃的,还是长大后不顾一切去外地找他。母亲总是笑迎迎地去让父亲消气的...
    程一六阅读 458评论 0 1

友情链接更多精彩内容