Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "CaptureSessionManager.h"
- @implementation CaptureSessionManager
- @synthesize captureSession;
- @synthesize previewLayer;
- #pragma mark Capture Session Configuration
- - (id)init {
- if ((self = [super init])) {
- [self setCaptureSession:[[AVCaptureSession alloc] init]];
- }
- return self;
- }
- - (void)addVideoPreviewLayer {
- [self setPreviewLayer:[[[AVCaptureVideoPreviewLayer alloc] initWithSession:[self captureSession]] autorelease]];
- [[self previewLayer] setVideoGravity:AVLayerVideoGravityResizeAspectFill];
- }
- - (void)addVideoInput {
- AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
- if (videoDevice) {
- NSError *error;
- AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
- if (!error) {
- if ([[self captureSession] canAddInput:videoIn])
- [[self captureSession] addInput:videoIn];
- //else
- // NSLog(@"Couldn't add video input");
- }
- // else
- // NSLog(@"Couldn't create video input");
- }
- //else
- // NSLog(@"Couldn't create video capture device");
- }
- - (void)dealloc {
- [[self captureSession] stopRunning];
- [previewLayer release], previewLayer = nil;
- [captureSession release], captureSession = nil;
- [super dealloc];
- }
- @end
- [self setCaptureManager:[[CaptureSessionManager alloc] init]];
- [[self captureManager] addVideoInput];
- [[self captureManager] addVideoPreviewLayer];
- CGRect layerRect = [[[self view] layer] bounds];
- [[[self captureManager] previewLayer] setBounds:layerRect];
- [[[self captureManager] previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect),
- CGRectGetMidY(layerRect))];
- [[[self view] layer] addSublayer:[[self captureManager] previewLayer]];
- [[captureManager captureSession] startRunning];
- -(void)viewDidDisappear:(BOOL)animated{
- [super viewDidDisappear:YES];
- [[[self captureManager] previewLayer]removeFromSuperlayer];
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- [[captureManager captureSession] stopRunning];
- });
- }
- [[[self view] layer] addSublayer:[[self captureManager] previewLayer]];
- -(void)deallocSession
- {
- [captureVideoPreviewLayer removeFromSuperlayer];
- for(AVCaptureInput *input1 in session.inputs) {
- [session removeInput:input1];
- }
- for(AVCaptureOutput *output1 in session.outputs) {
- [session removeOutput:output1];
- }
- [session stopRunning];
- session=nil;
- outputSettings=nil;
- device=nil;
- input=nil;
- captureVideoPreviewLayer=nil;
- stillImageOutput=nil;
- self.vImagePreview=nil;
- }
- [captureSession stopRunning];
- for(AVCaptureInput *input in captureSession.inputs) {
- [captureSession removeInput:input];
- }
- for(AVCaptureOutput *output in captureSession.outputs) {
- [captureSession removeOutput:output];
- }
- func stopRecording() {
- captureSession.stopRunning()
- for input in captureSession.inputs {
- captureSession.removeInput(input)
- }
- for output in captureSession.outputs {
- captureSession.removeOutput(output)
- }
- }
- let session = AVCaptureSession()
- if let outputMovie = outputMovie, outputMovie.isRecording {
- outputMovie.stopRecording()
- }
- self.session.stopRunning()
- if let inputs = self.session.inputs as? [AVCaptureDeviceInput] {
- for input in inputs {
- self.session.removeInput(input)
- }
- }
- if let outputs = self.session.outputs as? [AVCaptureOutput] {
- for output in outputs {
- self.session.removeOutput(output)
- }
- }
- session.stopRunning()
- for(var i = 0 ; i < session.inputs.count ; i++){
- session.removeInput(session.inputs[i] as! AVCaptureInput)
- }
- for(var i = 0 ; i < session.outputs.count ; i++){
- session.removeOutput(session.outputs[i] as! AVCaptureOutput)
- }
Add Comment
Please, Sign In to add comment