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