1 package de.desy.video.sw;
2
3 import java.util.Date;
4
5 import de.desy.tine.types.*;
6 import de.desy.tine.types.IMAGE.*;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public final class CVideoHeader3 {
25
26
27 public FrameHeader frameHeader = null;
28
29 public SourceHeader sourceHeader = null;
30
31
32 public static final int HDRSIZE=188;
33
34 public static final int TRANSPORT_LENGTH_V3 = 1024*1024*6;
35
36
37 public static final long CF_IMAGE_MAGIC_01 = 0x33565356;
38
39
40 public static final long CF_IMAGE_NO_CAMERA_PORT_ID = 0;
41
42
43
44
45
46
47
48 public static final int CF_IMAGE_INITIAL_VERSION = 0x1;
49
50 public static final int CF_IMAGE_VERSION = CF_IMAGE_INITIAL_VERSION;
51
52 public static final int CF_IMAGE_MAX_VERSION = CF_IMAGE_INITIAL_VERSION;
53
54
55 public static final long CF_IMAGE_FORMAT_GRAY = 0;
56
57 public static final long CF_IMAGE_FORMAT_RGB = 1;
58
59 public static final long CF_IMAGE_FORMAT_RGBA = 2;
60
61 public static final long CF_IMAGE_FORMAT_RGB15 = 3;
62
63 public static final long CF_IMAGE_FORMAT_RGB16 = 4;
64
65 public static final long CF_IMAGE_FORMAT_JPEG = 5;
66
67 public static final long CF_IMAGE_FORMAT_TIFF = 6;
68
69 public static final long CF_IMAGE_FORMAT_YUV411 = 7;
70
71 public static final long CF_IMAGE_FORMAT_YUV422 = 8;
72
73 public static final long CF_IMAGE_FORMAT_YUV444 = 9;
74
75 public static final long CF_IMAGE_FORMAT_HUFFYUV = 10;
76
77 public static final long CF_IMAGE_FORMAT_BMP = 11;
78
79 public static final long CF_IMAGE_FORMAT_BAYER = 12;
80
81
82 public static final long CF_IMAGE_FORMAT_FIRST = CF_IMAGE_FORMAT_GRAY;
83
84 public static final long CF_IMAGE_FORMAT_LAST = CF_IMAGE_FORMAT_BAYER;
85
86
87
88
89
90 public static final long CF_IMAGE_FLAG_LITTLE_ENDIAN_BYTE_ORDER = 0x1;
91
92
93
94 public static final long CF_IMAGE_FLAG_IMAGE_LOSSLESS = 0x2;
95
96 public static final long CF_IMAGE_FLAG_HORIZONTAL_FLIP_180 = 0x4;
97
98 public static final long CF_IMAGE_FLAG_VERTICAL_FLIP_180 = 0x8;
99
100
101 private IMAGE m_intHdr = null;
102
103
104
105
106
107
108
109 public CVideoHeader3()
110 {
111 m_intHdr = new IMAGE();
112
113 frameHeader = m_intHdr.getFrameHeader();
114 sourceHeader = m_intHdr.getSourceHeader();
115
116 init();
117 }
118
119
120
121
122
123
124 public CVideoHeader3( IMAGE img )
125 {
126 m_intHdr = img;
127 sourceHeader = img.getSourceHeader();
128 frameHeader = img.getFrameHeader();
129 }
130
131
132
133
134
135
136 public IMAGE getImage() {
137 return m_intHdr;
138 }
139
140
141
142
143
144
145 public static final String flagsToString(long aFlags)
146 {
147 int flags = (int) aFlags;
148
149 String retString = "";
150
151 if ((flags&CF_IMAGE_FLAG_LITTLE_ENDIAN_BYTE_ORDER) != 0)
152 retString += "LITTLEENDIAN";
153 else
154 retString += "BIGENDIAN";
155
156 if ((flags&CF_IMAGE_FLAG_IMAGE_LOSSLESS) != 0)
157 retString += " LOSSLESS";
158 else
159 retString += " LOSSY";
160
161 if ((flags&CF_IMAGE_FLAG_HORIZONTAL_FLIP_180) != 0)
162 retString += " HORIZONTAL_FLIP_180";
163
164 if ((flags&CF_IMAGE_FLAG_VERTICAL_FLIP_180) != 0)
165 retString += " VERTICAL_FLIP_180";
166
167 return retString;
168 }
169
170
171
172
173
174
175 public final Date getTimestampAsDate()
176 {
177 long l_timestamp = (sourceHeader.timestampSeconds*1000L)+(sourceHeader.timestampMicroseconds/1000L);
178
179 return new Date(l_timestamp);
180 }
181
182
183
184
185
186
187
188 public static final String formatToString(long aformat)
189 {
190 switch( ((int) aformat) )
191 {
192 case ((int)CF_IMAGE_FORMAT_GRAY):
193 return("IMAGE_FORMAT_GRAY");
194
195 case ((int)CF_IMAGE_FORMAT_RGB):
196 return("IMAGE_FORMAT_RGB");
197
198 case ((int)CF_IMAGE_FORMAT_RGBA):
199 return("IMAGE_FORMAT_RGBA");
200
201 case ((int)CF_IMAGE_FORMAT_RGB15):
202 return("IMAGE_FORMAT_RGB15");
203
204 case ((int)CF_IMAGE_FORMAT_RGB16):
205 return("IMAGE_FORMAT_RGB16");
206
207 case ((int)CF_IMAGE_FORMAT_JPEG):
208 return("IMAGE_FORMAT_JPEG");
209
210 case ((int)CF_IMAGE_FORMAT_TIFF):
211 return("IMAGE_FORMAT_TIFF");
212
213 case ((int)CF_IMAGE_FORMAT_YUV411):
214 return("IMAGE_FORMAT_YUV411");
215
216 case ((int)CF_IMAGE_FORMAT_YUV422):
217 return("IMAGE_FORMAT_YUV422");
218
219 case ((int)CF_IMAGE_FORMAT_YUV444):
220 return("IMAGE_FORMAT_YUV444");
221
222 case ((int)CF_IMAGE_FORMAT_HUFFYUV):
223 return("IMAGE_FORMAT_HUFFYUV");
224
225 case ((int)CF_IMAGE_FORMAT_BMP):
226 return("IMAGE_FORMAT_BMP");
227
228 case ((int)CF_IMAGE_FORMAT_BAYER):
229 return("IMAGE_FORMAT_BAYER");
230
231 default:
232 return("Unknown!");
233 }
234 }
235
236
237
238
239
240
241
242
243 public int getAppendedWidth()
244 {
245 if (frameHeader.aoiWidth != -1)
246 return frameHeader.aoiWidth;
247 else
248 return frameHeader.sourceWidth;
249 }
250
251
252
253
254
255
256
257
258 public int getAppendedHeight()
259 {
260 if (frameHeader.aoiHeight != -1)
261 return frameHeader.aoiHeight;
262 else
263 return frameHeader.sourceHeight;
264 }
265
266
267
268
269 private void init()
270 {
271 sourceHeader.versionTag = CF_IMAGE_VERSION;
272 sourceHeader.totalLength = HDRSIZE;
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309 }
310 }
311