00001 #ifndef _CAMOGM__H_
00002 #define _CAMOGM__H_
00003
00004 #define CAMOGM_FRAME_NOT_READY 1 // frame pointer valid, but not yet acquired
00005 #define CAMOGM_FRAME_INVALID 2 // invalid frame pointer
00006 #define CAMOGM_FRAME_CHANGED 3 // frame parameters have changed
00007 #define CAMOGM_FRAME_NEXTFILE 4 // need to switch to a new file segment
00008 #define CAMOGM_FRAME_BROKEN 5 // frame broken (buffer overrun)
00009 #define CAMOGM_FRAME_FILE_ERR 6 // error with file I/O
00010 #define CAMOGM_FRAME_MALLOC 7 // can not allocate memory
00011 #define CAMOGM_FRAME_OTHER 8 // other errors
00012
00013 #define CAMOGM_FORMAT_NONE 0 // no video output
00014 #define CAMOGM_FORMAT_OGM 1 // output as Ogg Media file
00015 #define CAMOGM_FORMAT_JPEG 2 // output as individual JPEG files
00016 #define CAMOGM_FORMAT_MOV 3 // output as Apple Quicktime
00017
00018 #define D(x) {if (debug_file && debug_level){x;fflush(debug_file);}}
00019 #define D0(x) {if (debug_file){x;fflush(debug_file);}}
00020 #define D1(x) {if (debug_file && (debug_level > 0)){x;fflush(debug_file);}}
00021 #define D2(x) {if (debug_file && (debug_level > 1)){x;fflush(debug_file);}}
00022 #define D3(x) {if (debug_file && (debug_level > 2)){x;fflush(debug_file);}}
00023 #define D4(x) {if (debug_file && (debug_level > 3)){x;fflush(debug_file);}}
00024 #define D5(x) {if (debug_file && (debug_level > 4)){x;fflush(debug_file);}}
00025 #define D6(x) {if (debug_file && (debug_level > 5)){x;fflush(debug_file);}}
00026
00027
00028 #define DD(x) {if (debug_file){fprintf(debug_file,"%s:%d:",__FILE__,__LINE__);x;fflush(debug_file);}}
00029
00030 #define JPEG_HEADER_SIZE 0x26f // will not change
00031
00032 #include <stdio.h>
00033 #include <ogg/ogg.h>
00034
00035 #include <asm/elphel/c313a.h>
00036 #include <asm/elphel/ext353.h>
00037 #include <asm/elphel/exifa.h>
00038 #include "ogmstreams.h"
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 typedef struct {
00079 int segment_duration;
00080 int segment_length;
00081 int save_gp;
00082 char path_prefix[256];
00083 char path[300];
00084 int cirbuf_rp;
00085 int fd_circ;
00086 int fd_head;
00087 int fd_sens;
00088 int fd_exif;
00089 int head_size;
00090 char jpegHeader [JPEG_HEADER_SIZE];
00091 int metadata_start;
00092 struct interframe_params_t frame_params;
00093 struct interframe_params_t this_frame_params;
00094 int jpeg_len;
00095 int frame_period ;
00096 int width;
00097 int height;
00098 int starting;
00099 int running;
00100 int serialno;
00101 FILE* vf;
00102 int ivf;
00103 int last;
00104
00105 int exif;
00106
00107
00108 int exifSize;
00109 unsigned char ed[MAX_EXIF_SIZE];
00110
00111 int circ_buff_size;
00112 int senspars_size;
00113 char debug_name[256];
00114
00115 int set_samples_per_unit;
00116 double timescale;
00117 double set_timescale;
00118 int max_frames;
00119 int set_max_frames;
00120 int frames_per_chunk;
00121 int set_frames_per_chunk;
00122 int frameno;
00123 int* frame_lengths;
00124 off_t frame_data_start;
00125 ogg_int64_t time_unit;
00126 int formats;
00127 int format;
00128 int set_format;
00129 elph_packet_chunk packetchunks[7];
00130 int chunk_index;
00131 int buf_overruns;
00132 int buf_min;
00133 int set_frames_skip;
00134 int frames_skip;
00135
00136 int frames_skip_left;
00137
00138
00139 int kml_enable;
00140 int kml_used;
00141 char kml_path[300];
00142 FILE* kml_file;
00143 double kml_horHalfFov;
00144 double kml_vertHalfFov;
00145 double kml_near;
00146 int kml_height_mode;
00147 double kml_height;
00148 int kml_period;
00149 int kml_last_ts;
00150 int kml_last_uts;
00151 struct exif_dir_table_t kml_exif[ExifKmlNumber] ;
00152
00153 int audio_enable;
00154 int audio_rate;
00155 int audio_channels;
00156 int audio_format;
00157 int allow_sync;
00158
00159 } camogm_state;
00160 extern int debug_level;
00161 extern FILE* debug_file;
00162 extern camogm_state * state;
00163 void put_uint16(void *buf, u_int16_t val);
00164 void put_uint32(void *buf, u_int32_t val);
00165 void put_uint64(void *buf, u_int64_t val);
00166
00167 #endif // _CAMOGM__H_