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 };
00158
00159 struct _AnxSource {
00160 AnxImporter * importer;
00161 AnxList * tracks;
00162 AnxSourceTrack * current_track;
00163
00164
00165 int eos;
00166 double start_time;
00167 double end_time;
00168 void * custom_data;
00169 };
00170
00171 #ifdef __cplusplus
00172 extern "C" {
00173 #endif
00174
00180 int anx_importer_register (AnxImporter * importer);
00181
00187 int anx_importer_unregister (AnxImporter * importer);
00188
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00193 #endif