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_int64.h>
00037 #include <annodex/anx_types.h>
00038 #include <annodex/anx_core.h>
00039
00068 typedef struct _AnxImporter AnxImporter;
00069
00073 typedef struct _AnxSourceTrack AnxSourceTrack;
00074
00079 typedef struct _AnxSource AnxSource;
00080
00093 typedef AnxSource* (*AnxImporterOpenFunc) (const char * path, const char * id,
00094 int ignore_raw,
00095 double start_time, double end_time,
00096 AnxImportCallbacks * import_callbacks);
00097
00111 typedef AnxSource * (*AnxImporterOpenFDFunc) (int fd, const char * id,
00112 int ignore_raw,
00113 double start_time, double end_time,
00114 AnxImportCallbacks * import_callbacks);
00115
00123 typedef long (*AnxImporterReadFunc) (AnxSource * source, unsigned char * buf,
00124 long n, long bound);
00125
00131 typedef long (*AnxImporterSizeofNextReadFunc) (AnxSource * source, long bound);
00132
00137 typedef int (*AnxImporterCloseFunc) (AnxSource * source);
00138
00139 struct _AnxImporter {
00140 AnxImporterOpenFunc open;
00141 AnxImporterOpenFDFunc openfd;
00142 AnxImporterCloseFunc close;
00143 AnxImporterReadFunc read;
00144 AnxImporterSizeofNextReadFunc sizeof_next_read;
00145 char * content_type;
00146 };
00147
00148 struct _AnxSourceTrack {
00149 char * id;
00150 char * content_type;
00151 long nr_header_packets;
00152 anx_int64_t granule_rate_n;
00153 anx_int64_t granule_rate_d;
00154 anx_int64_t start_granule;
00155 anx_int64_t end_granule;
00156 anx_int64_t current_granule;
00157 int eos;
00158 };
00159
00160 struct _AnxSource {
00161 AnxImporter * importer;
00162 AnxList * tracks;
00163 AnxSourceTrack * current_track;
00164
00165
00166 int eos;
00167 double start_time;
00168 double end_time;
00169 void * custom_data;
00170 };
00171
00172 #ifdef __cplusplus
00173 extern "C" {
00174 #endif
00175
00181 int anx_importer_register (AnxImporter * importer);
00182
00188 int anx_importer_unregister (AnxImporter * importer);
00189
00190 #ifdef __cplusplus
00191 }
00192 #endif
00193
00194 #endif