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_WRITE_H__
00034 #define __ANX_WRITE_H__
00035 
00061 #include <annodex/anx_types.h>
00062 
00063 #ifdef __cplusplus
00064 extern "C" {
00065 #endif
00066 
00071 void anx_init_importers (char * content_type_pattern);
00072 
00077 long anx_write_get_next_page_size (ANNODEX * annodex);
00078 
00089 int
00090 anx_write_import (ANNODEX * annodex, char * filename,
00091                   char * id, char * content_type,
00092                   double seek_offset, double seek_end, int flags);
00093 
00100 int
00101 anx_write_set_anno_callbacks (ANNODEX * annodex,
00102                               AnxImportHead import_head_callback,
00103                               AnxImportClip import_clip_callback,
00104                               void * user_data);
00105 
00111 void *
00112 anx_write_get_anno_user_data (ANNODEX * annodex);
00113 
00121 int
00122 anx_write_set_ii_callback (ANNODEX * annodex,
00123                            AnxImportImport import_import_callback,
00124                            void * user_data);
00125 
00131 void *
00132 anx_write_get_ii_user_data (ANNODEX * annodex);
00133 
00140 int
00141 anx_insert_clip (ANNODEX * annodex, double at_time, AnxClip * clip);
00142 
00143 double anx_writer_get_end (ANNODEX * annodex);
00144 int anx_writer_set_end (ANNODEX * annodex, double end_time);
00145 
00152 long anx_write (ANNODEX * annodex, long n);
00153 
00162 long anx_write_output (ANNODEX * annodex, unsigned char * buf, long n);
00163 
00164 int anx_request_header (ANNODEX * annodex);
00165 int anx_request_media_sync (ANNODEX * annodex);
00166 
00167 #ifdef _UNIMPLEMENTED_  
00168   
00169 
00170 
00171 typedef struct _AnxSchedule AnxSchedule;
00172 typedef struct _AnxImport AnxImport;
00173 
00174 typedef enum _AnxSchedType {
00175   ANX_SCHED_CLIP,
00176   ANX_SCHED_IMPORT
00177 } AnxSchedType;
00178                                        
00179 struct _AnxImport {
00180   char * location;     
00181   char * content_type;
00182   int flags;
00183 };
00184 
00185 struct _AnxSchedule {
00186   double start_time;
00187   AnxSchedType type;
00188   union {
00189     AnxClip * clip;
00190     AnxImport * import;
00191   } data;
00192 };
00193 
00194 AnxSchedule *
00195 anx_schedule_query (ANNODEX * annodex, double at_time, AnxSchedType type);
00196 
00197 int
00198 anx_schedule_remove (ANNODEX * annodex, double at_time, AnxSchedType type);
00199 
00200 AnxSchedule *
00201 anx_schedule_first (ANNODEX * annodex);
00202 
00203 AnxSchedule *
00204 anx_schedule_next (ANNODEX * annodex, AnxSchedule * schedule);
00205 
00206 AnxSchedule *
00207 anx_schedule_prev (ANNODEX * annodex, AnxSchedule * schedule);
00208 
00209 #endif 
00210 
00211 #ifdef __cplusplus
00212 }
00213 #endif
00214 
00215 #endif