12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #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
|