getting frames by display link


jcl43

New Member
Joined
Mar 10, 2008
Messages
2
Reaction score
0
Hi all, I am working on an application that involves real time video editing with Core Framework in Cocoa. For testing we basically have a DVI cam hooked up to a Mac Book Pro and need to be able to edit the stream it produces. I successfully got the video into quick time using QTKit, but am having trouble aquiring the frames with a display link. The example in the Core Video guide shows it initializing the video source from file with this method:

  • (id)initWithFilePath:(NSString*)theFilePath
, but I need to get the frames I can already access into the display link for OpenGL rendering and Core Image effects. If anyone has any ideas or advice I would greatly appreciate it. Thanks in advance!
 
Ad

Advertisements

jcl43

New Member
Joined
Mar 10, 2008
Messages
2
Reaction score
0
Right now i have it output via QTCaptureView. But if I want to do openGL rendering/Core Image effects on the frame does it need to be an NSOpenGLView?

Here is what I have for code so far:
Code:
 [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  VideoDisplayController.m[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Prototype492[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Created by Christopher Sanders on 3/7/08.[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Copyright 2008 __CIS492__. All rights reserved.[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#643820][FONT=Monaco]#import [/FONT][/COLOR][COLOR=#C41A16][FONT=Monaco]"VideoDisplayController.h"[/FONT][/COLOR][COLOR=#643820][FONT=Monaco][/FONT][/COLOR]
  [FONT=Monaco] [/FONT]
  [COLOR=#AA0D91][FONT=Monaco]@implementation[/FONT][/COLOR][FONT=Monaco] VideoDisplayController [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]    start the video capture session if it's not running[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]IBAction[/COLOR])startVideoCapture:([COLOR=#AA0D91]id[/COLOR])sender[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]if[/COLOR](![[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]isRunning[/COLOR]])[/FONT]
  [FONT=Monaco]    {[/FONT]
  [FONT=Monaco]        [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]startRunning[/COLOR]];[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]    stop the video capture session if it's running[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]IBAction[/COLOR])stopVideoCapture:([COLOR=#AA0D91]id[/COLOR])sender[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]if[/COLOR]([[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]isRunning[/COLOR]])[/FONT]
  [FONT=Monaco]    {[/FONT]
  [FONT=Monaco]        [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]stopRunning[/COLOR]];[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]initialization of UI elements[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]void[/COLOR])awakeFromNib[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco]    [COLOR=#2E0D6E]NSLog[/COLOR]([COLOR=#C41A16]@"initializing video controller"[/COLOR]);[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]if[/COLOR](![COLOR=#3F6E74]captureSession[/COLOR]) {[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]        [COLOR=#007400]//creating capture session[/COLOR][/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]        [COLOR=#3F6E74]captureSession[/COLOR] = [[[COLOR=#5C2699]QTCaptureSession[/COLOR] [COLOR=#2E0D6E]alloc[/COLOR]] [COLOR=#2E0D6E]init[/COLOR]];[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]        [COLOR=#007400]//flags for connecting inputs and outputs[/COLOR][/FONT]
  [FONT=Monaco]        [COLOR=#AA0D91]BOOL[/COLOR] successConnect = [COLOR=#AA0D91]NO[/COLOR];[/FONT]
  [FONT=Monaco]        [COLOR=#5C2699]NSError[/COLOR] *error = [COLOR=#AA0D91]nil[/COLOR];[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]      [/FONT]
  [FONT=Monaco]        [COLOR=#007400]//finding and creating the input device and adding it to the capture session[/COLOR][/FONT]
  [FONT=Monaco]        [COLOR=#007400]//if unsuccessful, send a message to error log[/COLOR][/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]        [COLOR=#007400]//note: using QTMediaTypeMuxed for DV camera... otherwise use QTMediaTypeVideo[/COLOR][/FONT]
  [FONT=Monaco]        [COLOR=#3F6E74]videoCaptureDevice[/COLOR] = [[COLOR=#5C2699]QTCaptureDevice[/COLOR] [COLOR=#2E0D6E]defaultInputDeviceWithMediaType[/COLOR]:[COLOR=#5C2699]QTMediaTypeMuxed[/COLOR]];[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]        [COLOR=#007400]//if the video capture device is found, attempt to open it and add it to the capture session[/COLOR][/FONT]
  [FONT=Monaco]        [COLOR=#AA0D91]if[/COLOR]([COLOR=#3F6E74]videoCaptureDevice[/COLOR])[/FONT]
  [FONT=Monaco]        {[/FONT]
  [FONT=Monaco]            successConnect = [[COLOR=#3F6E74]videoCaptureDevice[/COLOR] [COLOR=#2E0D6E]open[/COLOR]:&error];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]      [/FONT]
  [FONT=Monaco]          [COLOR=#AA0D91]if[/COLOR](!successConnect)[/FONT]
  [FONT=Monaco]          {[/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]              [COLOR=#2E0D6E]NSLog[/COLOR]([COLOR=#C41A16]@"error opening video capture device"[/COLOR]);[/FONT]
  [FONT=Monaco]                [COLOR=#3F6E74]videoCaptureDevice[/COLOR] = [COLOR=#AA0D91]nil[/COLOR];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]              [COLOR=#007400]//other error handling code goes here[/COLOR][/FONT]
  [FONT=Monaco]          }[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]            [COLOR=#3F6E74]captureVideoDeviceInput[/COLOR] = [[[COLOR=#5C2699]QTCaptureDeviceInput[/COLOR] [COLOR=#2E0D6E]alloc[/COLOR]] [COLOR=#2E0D6E]initWithDevice[/COLOR]:[COLOR=#3F6E74]videoCaptureDevice[/COLOR]];[/FONT]
  [FONT=Monaco]      [/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]            [COLOR=#007400]//attempt to add capture device input to the capture session[/COLOR][/FONT]
  [FONT=Monaco]          successConnect = [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]addInput[/COLOR]:[COLOR=#3F6E74]captureVideoDeviceInput[/COLOR] [COLOR=#2E0D6E]error[/COLOR]:&error];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]          [COLOR=#AA0D91]if[/COLOR](!successConnect)[/FONT]
  [FONT=Monaco]          {[/FONT]
  [FONT=Monaco]              [COLOR=#2E0D6E]NSLog[/COLOR]([COLOR=#C41A16]@"error adding video capture device input to capture session"[/COLOR]);[/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]                [COLOR=#007400]//other error handling code goes here[/COLOR][/FONT]
  [FONT=Monaco]            }[/FONT]
  [FONT=Monaco]        [/FONT]
  [FONT=Monaco]            [COLOR=#007400]//adding decompressed video output to capture session[/COLOR][/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]            [COLOR=#3F6E74]decompressedVideoOutput[/COLOR] = [[[COLOR=#5C2699]QTCaptureDecompressedVideoOutput[/COLOR] [COLOR=#2E0D6E]alloc[/COLOR]] [COLOR=#2E0D6E]init[/COLOR]];[/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]            [COLOR=#007400]//assigning delegate to decompressed video output[/COLOR][/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]            [[COLOR=#3F6E74]decompressedVideoOutput[/COLOR] [COLOR=#2E0D6E]setDelegate[/COLOR]: [COLOR=#AA0D91]self[/COLOR]];[/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]            successConnect = [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]addOutput[/COLOR]:[COLOR=#3F6E74]decompressedVideoOutput[/COLOR] [COLOR=#2E0D6E]error[/COLOR]:&error];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]            [COLOR=#AA0D91]if[/COLOR](!successConnect)[/FONT]
  [FONT=Monaco]            {[/FONT]
  [FONT=Monaco]                [COLOR=#2E0D6E]NSLog[/COLOR]([COLOR=#C41A16]@"error adding decompressed video output to capture session"[/COLOR]);[/FONT]
  [FONT=Monaco]                  [/FONT]
  [FONT=Monaco]                  [COLOR=#007400]//other error handling code goes here[/COLOR][/FONT]
  [FONT=Monaco]            [/FONT]
  [FONT=Monaco]            }[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]            [COLOR=#007400]//linking capture session to the capture view[/COLOR][/FONT]
  [FONT=Monaco]          [captureView [COLOR=#2E0D6E]setCaptureSession[/COLOR]:[COLOR=#3F6E74]captureSession[/COLOR]];[/FONT]
  [FONT=Monaco]        [/FONT]
  [FONT=Monaco]          [COLOR=#007400]//[captureSession startRunning];[/COLOR][/FONT]
  [FONT=Monaco]        }[/FONT]
  [FONT=Monaco]        [COLOR=#AA0D91]else[/COLOR][/FONT]
  [FONT=Monaco]        {[/FONT]
  [FONT=Monaco]            [COLOR=#2E0D6E]NSLog[/COLOR]([COLOR=#C41A16]@"couldn't find video capture device"[/COLOR]);[/FONT]
  [FONT=Monaco]        }[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]delegate method called when decompressedVideoOutput receives a frame[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]it is not called in the main thread, so a synhronized block is used[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]delegates of decompressedVideoOutput receive this message [/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]and then can used the provided video frame for further image processing[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco] [/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]captureOutput - the QTCaptureDecompressedVideoOutput instance that sent the frame (decompressedVideoOutput)[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]videoFrame - Core Video image buffer containing the decompressed frame[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]sampleBuffer sample buffer containing additional info about the frame[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]connection - connnection from which vdieo was received[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]void[/COLOR])captureOutput:([COLOR=#5C2699]QTCaptureOutput[/COLOR] *)captureOutput [/FONT]
  [FONT=Monaco]        didOutputVideoFrame:([COLOR=#5C2699]CVImageBufferRef[/COLOR])videoFrame[/FONT]
  [FONT=Monaco]        withSampleBuffer:([COLOR=#5C2699]QTSampleBuffer[/COLOR] *)sampleBuffer [/FONT]
  [FONT=Monaco]        fromConnection:([COLOR=#5C2699]QTCaptureConnection[/COLOR] *)connection[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]CVImageBufferRef[/COLOR] releasedImageBuffer;[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#2E0D6E]CVBufferRetain[/COLOR](videoFrame);[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]@synchronized[/COLOR]([COLOR=#AA0D91]self[/COLOR])[/FONT]
  [FONT=Monaco]    {[/FONT]
  [FONT=Monaco]        [COLOR=#007400]//basically, have frame to be released refer to the current frame[/COLOR][/FONT]
  [FONT=Monaco]      [COLOR=#007400]//then update the reference to the current frame with the next frame in the "video stream"[/COLOR][/FONT]
  [FONT=Monaco]        releasedImageBuffer = [COLOR=#3F6E74]currentImageBuffer[/COLOR];[/FONT]
  [FONT=Monaco]        [COLOR=#3F6E74]currentImageBuffer[/COLOR] = videoFrame;[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#2E0D6E]CVBufferRelease[/COLOR](releasedImageBuffer);[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]event that's fired when window is closed[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]stop the session and close any opened devices[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]void[/COLOR])windowWillClose:([COLOR=#5C2699]NSNotification[/COLOR] *)notification[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]if[/COLOR]([[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]isRunning[/COLOR]])[/FONT]
  [FONT=Monaco]    {[/FONT]
  [FONT=Monaco]        [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]stopRunning[/COLOR]];[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]if[/COLOR]([[COLOR=#3F6E74]videoCaptureDevice[/COLOR] [COLOR=#2E0D6E]isOpen[/COLOR]])[/FONT]
  [FONT=Monaco]    {[/FONT]
  [FONT=Monaco]        [[COLOR=#3F6E74]videoCaptureDevice[/COLOR] [COLOR=#2E0D6E]close[/COLOR]];[/FONT]
  [FONT=Monaco]    }[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]/*[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]event that fires when memory is to be deallocated when object is killed[/FONT][/COLOR]
  [COLOR=#007400][FONT=Monaco]*/[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]void[/COLOR])dealloc[/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [[COLOR=#3F6E74]captureSession[/COLOR] [COLOR=#2E0D6E]release[/COLOR]];[/FONT]
  [FONT=Monaco]    [[COLOR=#3F6E74]captureVideoDeviceInput[/COLOR] [COLOR=#2E0D6E]release[/COLOR]];[/FONT]
  [FONT=Monaco]    [[COLOR=#3F6E74]decompressedVideoOutput[/COLOR] [COLOR=#2E0D6E]release[/COLOR]];[/FONT]
  [FONT=Monaco]    [/FONT]
  [FONT=Monaco]    [[COLOR=#AA0D91]super[/COLOR] [COLOR=#2E0D6E]dealloc[/COLOR]];[/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#AA0D91][FONT=Monaco]@end[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  VideoDisplayController.h[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Prototype492v1.1[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Updated by Christopher Sanders on 3/8/08.[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//  Copyright 2008 CIS492. All rights reserved.[/FONT][/COLOR][FONT=Monaco][/FONT]
  [COLOR=#007400][FONT=Monaco]//[/FONT][/COLOR][FONT=Monaco][/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#643820][FONT=Monaco]#import [/FONT][/COLOR][COLOR=#C41A16][FONT=Monaco]<Cocoa/Cocoa.h>[/FONT][/COLOR][COLOR=#643820][FONT=Monaco][/FONT][/COLOR]
  [COLOR=#643820][FONT=Monaco]#import [/FONT][/COLOR][COLOR=#C41A16][FONT=Monaco]<QTKit/QTkit.h>[/FONT][/COLOR][COLOR=#643820][FONT=Monaco][/FONT][/COLOR]
  [COLOR=#643820][FONT=Monaco]#import [/FONT][/COLOR][COLOR=#C41A16][FONT=Monaco]"VideoView.h"[/FONT][/COLOR][COLOR=#643820][FONT=Monaco][/FONT][/COLOR]
  [FONT=Monaco] [/FONT]
  [COLOR=#AA0D91][FONT=Monaco]@interface[/FONT][/COLOR][FONT=Monaco] VideoDisplayController : [COLOR=#5C2699]NSOpenGLView[/COLOR] [/FONT]
  [FONT=Monaco]{[/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]QTCaptureSession[/COLOR] *[COLOR=#3F6E74]captureSession[/COLOR];[/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]QTCaptureDevice[/COLOR] *[COLOR=#3F6E74]videoCaptureDevice[/COLOR];[/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]QTCaptureDeviceInput[/COLOR] *[COLOR=#3F6E74]captureVideoDeviceInput[/COLOR];[/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]QTCaptureDecompressedVideoOutput[/COLOR] *[COLOR=#3F6E74]decompressedVideoOutput[/COLOR];[/FONT]
  [FONT=Monaco]   [/FONT]
  [FONT=Monaco]    [COLOR=#007400]//stores most recent frame grabbed from a CVImageBufferRef[/COLOR][/FONT]
  [FONT=Monaco]    [COLOR=#5C2699]CVImageBufferRef[/COLOR] [COLOR=#3F6E74]currentImageBuffer[/COLOR];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    [COLOR=#007400]//this is the panel on which the video from the DV camera will be displayed[/COLOR][/FONT]
  [FONT=Monaco]    [COLOR=#AA0D91]IBOutlet[/COLOR] [COLOR=#5C2699]QTCaptureView[/COLOR] *captureView;[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]    //[COLOR=#AA0D91]IBOutlet[/COLOR] [COLOR=#3F6E74]VideoView[/COLOR] *[COLOR=#3F6E74]openGLVideoView[/COLOR];[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]}[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]IBAction[/COLOR])startVideoCapture:([COLOR=#AA0D91]id[/COLOR])sender;[/FONT]
  [FONT=Monaco]- ([COLOR=#AA0D91]IBAction[/COLOR])stopVideoCapture:([COLOR=#AA0D91]id[/COLOR])sender;[/FONT]
  [FONT=Monaco] [/FONT]
  [FONT=Monaco] [/FONT]
  [COLOR=#AA0D91][FONT=Monaco]@end[/FONT][/COLOR][FONT=Monaco][/FONT]
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top