00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __ANX_IMPORT_H__
00034 #define __ANX_IMPORT_H__
00035
00036 #include <annodex/anx_types.h>
00037 #include <annodex/anx_core.h>
00038
00067 typedef struct _AnxImporter AnxImporter;
00068
00072 typedef struct _AnxSourceTrack AnxSourceTrack;
00073
00078 typedef struct _AnxSource AnxSource;
00079
00092 typedef AnxSource* (*AnxImporterOpenFunc) (const char * path, const char * id,
00093 int ignore_raw,
00094 double start_time, double end_time,
00095 AnxImportCallbacks * import_callbacks);
00096
00110 typedef AnxSource * (*AnxImporterOpenFDFunc) (int fd, const char * id,
00111 int ignore_raw,
00112 double start_time, double end_time,
00113 AnxImportCallbacks * import_callbacks);
00114
00122 typedef long (*AnxImporterReadFunc) (AnxSource * source, unsigned char * buf,
00123 long n, long bound);
00124
00130 typedef long (*AnxImporterSizeofNextReadFunc) (AnxSource * source, long bound);
00131
00136 typedef int (*AnxImporterCloseFunc) (AnxSource * source);
00137
00138 struct _AnxImporter {
00139 AnxImporterOpenFunc open;
00140 AnxImporterOpenFDFunc openfd;
00141 AnxImporterCloseFunc close;
00142 AnxImporterReadFunc read;
00143 AnxImporterSizeofNextReadFunc sizeof_next_read;
00144 char * content_type;
00145 };
00146
00147 struct _AnxSourceTrack {
00148 char * id;
00149 char * content_type;
00150 long nr_header_packets;
00151 anx_int64_t granule_rate_n;
00152 anx_int64_t granule_rate_d;
00153 anx_int64_t start_granule;
00154 anx_int64_t end_granule;
00155 anx_int64_t current_granule;
00156 int eos;
00157 anx_int64_t basegranule;
00158 int preroll;
00159 int granuleshift;
00160 };
00161
00162 struct _AnxSource {
00163 AnxImporter * importer;
00164 AnxList * tracks;
00165 AnxSourceTrack * current_track;
00166
00167
00168 int eos;
00169 double start_time;
00170 double end_time;
00171 void * custom_data;
00172 double current_time;
00173 int written_secondaries;
00174 double duration;
00175 long byte_length;
00176 };
00177
00178 #ifdef __cplusplus
00179 extern "C" {
00180 #endif
00181
00187 int anx_importer_register (AnxImporter * importer);
00188
00194 int anx_importer_unregister (AnxImporter * importer);
00195
00196
00203 AnxImporter *anx_importer_find (char * content_type);
00204
00205 #ifdef __cplusplus
00206 }
00207 #endif
00208
00209 #endif