-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReadPGLFrames.m
More file actions
158 lines (151 loc) · 8.12 KB
/
ReadPGLFrames.m
File metadata and controls
158 lines (151 loc) · 8.12 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
function [frames] = ReadPGLFrames(frame_numbers , moviename)
% This function reads the PGL movie files and returns the desired frames
% movienames are Biglebowski, Everest, Animals, Cats, PinkCats, GWN, LSRC
%
% Make sure the movienameroot is correct
movieroot='e:/Natural_Movies/';
for f = 1:length(frame_numbers)
% Due to the Zero Based Frame numbers of the Presenter code and the
% One based values in Matlab, we subtract 1. The stiminfo object has
% the start and end frames corrected for 1 based indexing, hense the
% subtraction of 1. Scene change files and the frame numbers are 0
% based.
frame_number = frame_numbers(f)-1;
if frame_number < 0
frame_number = 0;
fprintf([ 'WARNING: FRAME NUMBER IS LESS THAN ZERO, CHANGING TO ZERO FRAME' '\n'])
end
switch(moviename)
case{'BigLebowski','Biglebowski','biglebowski','pbiglebowski'}
startstop=[0,3523;3524,7047;7048,10571;10572,13599]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'BigLebowski/pbiglebowski00x.pgl']; % Movies must be named as seen above to be read properly.
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*476*640,0);
frame=fread(fid,[640 476*1],'uint8')';
fclose(fid);
end
end
case{'Everest','everest'}
startstop=[0,3494;3495,6989;6990,10484;10485,13979;13980,14999]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'Everest/Everest00x.pgl']; % Movies must be named as seen above to be read properly.
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*480*640,0);
frame=fread(fid,[640 480*1],'uint8')';
fclose(fid);
end
end
case{'Animals','animals'}
startstop=[0,3763;3764,7527;7528,11291;11292,14999]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'Animals/Animals00x.pgl'];
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*460*620,0);
frame=fread(fid,[620 460*1],'uint8')';
fclose(fid);
end
end
case{'Cats','cats'}
startstop=[0,4556;4557,8999]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'Cats/Cats00x.pgl']; % Movies must be named as seen above to be read properly.
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*380*620,0);
frame=fread(fid,[620 380*1],'uint8')';
fclose(fid);
end
end
case{'PinkCats','pinkcats'}
startstop=[0,4556;4557,8999]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'PinkCats/PinkCats00x.pgl']; % Movies must be named as seen above to be read properly.
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*380*620,0);
frame=fread(fid,[620 380*1],'uint8')';
fclose(fid);
end
end
case{'gwn10'}
startstop=[0,9999];
moviefile=[movieroot 'gwn10/gwn10.pgl']; % Movies must be named as seen above to be read properly.
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*200*200,0);
frame=fread(fid,[200 200*1],'uint8')';
fclose(fid);
case{'gwn15'}
startstop=[0,4999];
moviefile=[movieroot 'gwn15/gwn15.pgl']; % Movies must be named as seen above to be read properly.
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*300*300,0);
frame=fread(fid,[300 300*1],'uint8')';
fclose(fid);
case{'LSRC'}
startstop=[0,6709;6710,9999]; % number of first and last frames in sections of the movie
movienameroot=[movieroot 'LSRC/LSRC00x.pgl']; % Movies must be named as seen above to be read properly.
for section = 1:size(startstop,1)
sec = find((frame_number >= startstop(section,1)) & (frame_number <= startstop(section,2)));
if ~isempty(sec)
frame_number = frame_number-startstop(section,1);
moviefile=strrep(movienameroot,'x',int2str(section-1));
fid=fopen(moviefile, 'r'); %open binary file
head=fread(fid, 11, 'char');
startframe=fread(fid, 1, 'uint32');
lastframe=fread(fid, 1, 'uint32');
numframes=fread(fid, 1, 'uint32');
fseek(fid,(frame_number)*400*400,0);
frame=fread(fid,[400 400*1],'uint8')';
fclose(fid);
end
end
end %Switch
frames(:,:,f) = frame;
end