Repository navigation
Expand file tree
/
Copy pathVideo.h
More file actions
118 lines (84 loc) · 2.78 KB
/
Copy pathVideo.h
File metadata and controls
118 lines (84 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
glgif
Video - base class for video playback.
Copyright (C) 2009 James S Urquhart
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/
#import <Foundation/Foundation.h>
#import "VideoTexture.h"
#import "VideoSource.h"
#define MAX_CACHE 2
@class EAGLContext;
@interface Video : NSObject {
VideoTexture *tex;
VideoSource *src;
EAGLContext *context;
int width;
int height;
int bpp;
int req_pos;
int upload_size;
double fps_time;
double sync_time;
double last_sync;
char *data[MAX_CACHE];
float data_delay[MAX_CACHE];
int cacheCount;
bool frame;
bool ready;
bool flags;
// state
bool playing;
bool loop;
int v_frame; // read frame
int d_frame; // display frame
bool threadDone;
bool beingDestroyed;
NSLock *cacheLock;
//NSThread *thread;
id thumbDelegate;
}
@property(nonatomic, assign) id thumbDelegate;
@property(nonatomic, assign) VideoTexture *tex;
@property(nonatomic, readonly, assign) bool playing;
@property(nonatomic, assign) VideoSource *src;
// Gets next frame from Video
- (int)getFrame;
// Size of backend texture
- (int)calcTexSize;
// Pretty self-explanatory
- (void)play:(bool)doesLoop;
- (void)stop;
// Uploads next frame from video to texture
- (bool)nextFrame;
// Overrides...
// Init the video
- (id)initWithSource:(VideoSource*)source inContext:(EAGLContext*)ctx;
// Allocate the VideoTexture
- (void)allocTex;
// Data for the next frame (should be in VideoTexture's format)
- (char*)dataForNextFrame:(float*)ft shouldStop:(bool*)sstop recurseCount:(int)recurse;
// Reset to default state
- (void)resetState;
// Scaling factor to remove texture border
- (void)frameClipScale:(float*)scale;
// Size of frame in pixels
- (CGSize)frameSize;
@end