Classes/RosyWriterRenderer.h
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
A generic protocol for renderer objects used by RosyWriterCapturePipeline |
*/ |
#import <Foundation/Foundation.h> |
#import <CoreMedia/CoreMedia.h> |
#import <CoreVideo/CoreVideo.h> |
@protocol RosyWriterRenderer <NSObject> |
@required |
/* Format/Processing Requirements */ |
@property(nonatomic, readonly) BOOL operatesInPlace; // When YES the input pixel buffer is written to by the renderer instead of writing the result to a new pixel buffer. |
@property(nonatomic, readonly) FourCharCode inputPixelFormat; // One of 420f, 420v, or BGRA |
/* Resource Lifecycle */ |
// Prepare and destroy expensive resources inside these callbacks. |
// The outputRetainedBufferCountHint tells out of place renderers how many of their output buffers will be held onto by the downstream pipeline at one time. |
// This can be used by the renderer to size and preallocate their pools. |
- (void)prepareForInputWithFormatDescription:(CMFormatDescriptionRef)inputFormatDescription outputRetainedBufferCountHint:(size_t)outputRetainedBufferCountHint; |
- (void)reset; |
/* Rendering */ |
// Renderers which operate in place should return the input pixel buffer with a +1 retain count. |
// Renderers which operate out of place should create a pixel buffer to return from a pool they own. |
// When rendering to a pixel buffer with the GPU it is not necessary to block until rendering has completed before returning. |
// It is sufficient to call glFlush() to ensure that the commands have been flushed to the GPU. |
- (CVPixelBufferRef)copyRenderedPixelBuffer:(CVPixelBufferRef)pixelBuffer; |
@optional |
// This property must be implemented if operatesInPlace is NO and the output pixel buffers have a different format description than the input. |
// If implemented a non-NULL value must be returned once the renderer has been prepared (can be NULL after being reset). |
@property(nonatomic, readonly) CMFormatDescriptionRef __attribute__((NSObject)) outputFormatDescription; |
@end |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13