Fawkes API  Fawkes Development Version
fvff.h
1 
2 /***************************************************************************
3  * fvff.h - FireVision file format
4  *
5  * Created: Fri Mar 28 11:12:38 2008
6  * Copyright 2008 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __FIREVISION_FVUTILS_FILEFORMAT_FVFF_H_
25 #define __FIREVISION_FVUTILS_FILEFORMAT_FVFF_H_
26 
27 #pragma pack(push,4)
28 
29 #ifndef __STDC_LIMIT_MACROS
30 #define __STDC_LIMIT_MACROS
31 #endif
32 #include <stdint.h>
33 
34 #define FVFF_COMMENT_SIZE 256
35 
36 namespace firevision {
37 #if 0 /* just to make Emacs auto-indent happy */
38 }
39 #endif
40 
41 /** Header for a FireVision file format file.
42  * The header defines the basic parameters needed to correctly interpret the
43  * following file contents.
44  *
45  * The header defines a magic by which a rectinfo can be identified. This is
46  * defined by the actual content of the file.
47  * The version is stored as a sequential number. This version has to be changed
48  * whenever either the header or the file data format changes. The version is set
49  * by the concrete data implementation.
50  * The file defines the endianess of the supplied data.
51  * There are several reserved bits that may be used later to store flags. The field
52  * num_blocks define how many info blocks there are in this file.
53  *
54  * Directly following the header is the content specific header. It has to be exactly
55  * the size given in spec_head_size.
56  */
57 typedef struct _fvff_header_t {
58  uint16_t magic_token; /**< magic token */
59  uint16_t version : 4; /**< version of the data file, this header defines version 1 */
60  uint16_t endianess : 1; /**< endianess of the file, 0 means little endian, 1 means big endian */
61  uint16_t reserved : 11; /**< reserved for future use */
62  uint16_t num_blocks; /**< number of rectification info blocks in this file */
63  uint32_t spec_head_size; /**< data specific header size */
64  uint64_t created_sec; /**< creation unix timestamp, seconds */
65  uint64_t created_usec; /**< creation unix timestamp, useconds */
66  char comment[FVFF_COMMENT_SIZE]; /**< optional comment */
68 
69 
70 /** Block header.
71  * Each block in a FvFF file has a block header. This header defines only the basic
72  * characteristics that are needed to parse the file.
73  * Directly following the header is the content specific block header. The size has to
74  * be set in spec_head_size.
75  */
76 typedef struct _fvff_block_header_t {
77  uint32_t type; /**< The type of the block, content-specific */
78  uint32_t size; /**< size in bytes of this block, does not include any headers */
79  uint32_t spec_head_size; /**< the size of the following content specific block header */
81 
82 } // end namespace firevision
83 
84 
85 #pragma pack(pop)
86 #endif
uint32_t size
size in bytes of this block, does not include any headers
Definition: fvff.h:78
uint16_t num_blocks
number of rectification info blocks in this file
Definition: fvff.h:62
uint16_t endianess
endianess of the file, 0 means little endian, 1 means big endian
Definition: fvff.h:60
uint16_t magic_token
magic token
Definition: fvff.h:58
uint64_t created_sec
creation unix timestamp, seconds
Definition: fvff.h:64
uint64_t created_usec
creation unix timestamp, useconds
Definition: fvff.h:65
uint32_t spec_head_size
data specific header size
Definition: fvff.h:63
uint16_t version
version of the data file, this header defines version 1
Definition: fvff.h:59
uint16_t reserved
reserved for future use
Definition: fvff.h:61
uint32_t spec_head_size
the size of the following content specific block header
Definition: fvff.h:79
Header for a FireVision file format file.
Definition: fvff.h:57
uint32_t type
The type of the block, content-specific.
Definition: fvff.h:77
char comment[FVFF_COMMENT_SIZE]
optional comment
Definition: fvff.h:66