Files
FreeJ/xcode/CVFileInput.h
xant df140ec070 Allow to disable preview on each inputlayer to save cpu cycles if
running on slower systems (rendering the preview someway wastes
both cpu and gpu and can be 'undesired' if doing intensive video-mixing
using filters and such)
2009-03-07 15:30:20 +01:00

93 lines
2.7 KiB
Objective-C

//
// CVFileInput.h
// freej
//
// Created by xant on 2/16/09.
// Copyright 2009 __MyCompanyName__. All rights reserved.
//
#ifndef __CV_FILEINPUT_H__
#define __CV_FILEINPUT_H__
#include <context.h>
#import <Cocoa/Cocoa.h>
#import <QuickTime/QuickTime.h>
#import <QTKit/QTKit.h>
#import "CFreej.h";
#include "CVLayer.h"
#include "CVFilterPanel.h"
@interface CVFileInput : NSOpenGLView {
NSRecursiveLock *lock;
id delegate;
QTMovie *qtMovie;
QTTime movieDuration; // cached duration of the movie - just for convenience
QTVisualContextRef qtVisualContext; // the context the movie is playing in
CVImageBufferRef currentFrame; // the current frame from the movie
CVImageBufferRef lastFrame;
// this is a "fake" buffer exposed to freej core
// XXX - freej actaully needs a buffer pointer but it's not going to use it.
// The blitter does...but on OSX the blitter is implemented in the CVScreen class.
// This means we could expose any address to freej and that would work anyway.
CVOpenGLBufferRef pixelBuffer;
bool newFrame;
CIImage *renderedImage;
CIImage *freejImage;
CIImage *previewImage;
bool doPreview;
CVFilterPanel *filterPanel;
// display link
CVDisplayLinkRef displayLink; // the displayLink that runs the show
CGDirectDisplayID viewDisplayID;
// filters for CI rendering
CIFilter *colorCorrectionFilter; // hue saturation brightness control through one CI filter
CIFilter *compositeFilter; // composites the timecode over the video
CIFilter *alphaFilter;
CIFilter *exposureAdjustFilter;
CIFilter *rotateFilter;
CIFilter *translateFilter;
CIFilter *effectFilter;
CIFilter *scaleFilter;
NSMutableArray *paramNames;
//CIFilter *resizeFilter;
CIContext *ciContext;
CIContext *cifjContext;
bool needsReshape;
//CVImageBufferRef freejFrame;
CVLayer *layer;
IBOutlet CFreej *freej;
IBOutlet NSSlider *alphaBar;
bool doFilters;
NSTimer *renderTimer;
}
@property (readwrite) CVLayer *layer;
- (void)awakeFromNib;
- (id)init;
- (bool)stepBackward;
- (bool)setpForward;
- (void)updateCurrentFrame;
- (QTTime)movieDuration;
- (QTTime)currentTime;
- (void)setTime:(QTTime)inTime;
- (CVReturn)_renderTime:(const CVTimeStamp *)timeStamp;
- (void *)grabFrame;
- (IBAction)setMovieTime:(id)sender;
- (IBAction)togglePlay:(id)sender;
- (IBAction)setFilterParameter:(id)sender;
- (IBAction)setAlpha:(id)sender;
- (IBAction)setBlendMode:(id)sender;
- (IBAction)openFile:(id)sender;
- (IBAction)toggleFilters:(id)sender;
- (IBAction)togglePreview:(id)sender;
- (CIImage *)getTexture;
- (void)mouseDown:(NSEvent *)theEvent;
- (bool)isOpaque;
@end
#endif