#import <Foundation/Foundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
#import "GPUImageContext.h"
|
|
extern NSString *const kGPUImageColorSwizzlingFragmentShaderString;
|
|
@protocol GPUImageMovieWriterDelegate <NSObject>
|
|
@optional
|
- (void)movieRecordingCompleted;
|
- (void)movieRecordingFailedWithError:(NSError*)error;
|
|
@end
|
|
@interface GPUImageMovieWriter : NSObject <GPUImageInput>
|
{
|
BOOL alreadyFinishedRecording;
|
|
NSURL *movieURL;
|
NSString *fileType;
|
AVAssetWriter *assetWriter;
|
AVAssetWriterInput *assetWriterAudioInput;
|
AVAssetWriterInput *assetWriterVideoInput;
|
AVAssetWriterInputPixelBufferAdaptor *assetWriterPixelBufferInput;
|
|
GPUImageContext *_movieWriterContext;
|
CVPixelBufferRef renderTarget;
|
CVOpenGLESTextureRef renderTexture;
|
|
CGSize videoSize;
|
GPUImageRotationMode inputRotation;
|
}
|
|
@property(readwrite, nonatomic) BOOL hasAudioTrack;
|
@property(readwrite, nonatomic) BOOL shouldPassthroughAudio;
|
@property(readwrite, nonatomic) BOOL shouldInvalidateAudioSampleWhenDone;
|
@property(nonatomic, copy) void(^completionBlock)(void);
|
@property(nonatomic, copy) void(^failureBlock)(NSError*);
|
@property(nonatomic, assign) id<GPUImageMovieWriterDelegate> delegate;
|
@property(readwrite, nonatomic) BOOL encodingLiveVideo;
|
@property(nonatomic, copy) BOOL(^videoInputReadyCallback)(void);
|
@property(nonatomic, copy) BOOL(^audioInputReadyCallback)(void);
|
@property(nonatomic, copy) void(^audioProcessingCallback)(SInt16 **samplesRef, CMItemCount numSamplesInBuffer);
|
@property(nonatomic) BOOL enabled;
|
@property(nonatomic, readonly) AVAssetWriter *assetWriter;
|
@property(nonatomic, readonly) CMTime duration;
|
@property(nonatomic, assign) CGAffineTransform transform;
|
@property(nonatomic, copy) NSArray *metaData;
|
@property(nonatomic, assign, getter = isPaused) BOOL paused;
|
@property(nonatomic, retain) GPUImageContext *movieWriterContext;
|
|
// Initialization and teardown
|
- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize;
|
- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSDictionary *)outputSettings;
|
|
- (void)setHasAudioTrack:(BOOL)hasAudioTrack audioSettings:(NSDictionary *)audioOutputSettings;
|
|
// Movie recording
|
- (void)startRecording;
|
- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform;
|
- (void)finishRecording;
|
- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler;
|
- (void)cancelRecording;
|
- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer;
|
- (void)enableSynchronizationCallbacks;
|
|
@end
|