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 __OGGZ_H__
00034 #define __OGGZ_H__
00035
00036 #include <stdio.h>
00037 #include <sys/types.h>
00038
00039 #include <ogg/ogg.h>
00040 #include <oggz/oggz_constants.h>
00041 #include <oggz/oggz_table.h>
00042
00437 typedef void OGGZ;
00438
00445 OGGZ * oggz_new (int flags);
00446
00454 OGGZ * oggz_open (char * filename, int flags);
00455
00463 OGGZ * oggz_open_stdio (FILE * file, int flags);
00464
00473 int oggz_flush (OGGZ * oggz);
00474
00482 int oggz_close (OGGZ * oggz);
00483
00494 int oggz_get_bos (OGGZ * oggz, long serialno);
00495
00506 int oggz_get_eos (OGGZ * oggz, long serialno);
00507
00539 typedef int (*OggzReadPacket) (OGGZ * oggz, ogg_packet * op, long serialno,
00540 void * user_data);
00541
00565 int oggz_set_read_callback (OGGZ * oggz, long serialno,
00566 OggzReadPacket read_packet, void * user_data);
00567
00578 long oggz_read (OGGZ * oggz, long n);
00579
00589 long oggz_read_input (OGGZ * oggz, unsigned char * buf, long n);
00590
00677 typedef int (*OggzWriteHungry) (OGGZ * oggz, int empty, void * user_data);
00678
00696 int oggz_write_set_hungry_callback (OGGZ * oggz,
00697 OggzWriteHungry hungry,
00698 int only_when_empty,
00699 void * user_data);
00737 int oggz_write_feed (OGGZ * oggz, ogg_packet * op, long serialno, int flush,
00738 int * guard);
00739
00754 long oggz_write_output (OGGZ * oggz, unsigned char * buf, long n);
00755
00769 long oggz_write (OGGZ * oggz, long n);
00770
00779 long oggz_write_get_next_page_size (OGGZ * oggz);
00780
00951 int oggz_set_metric_linear (OGGZ * oggz, long serialno,
00952 ogg_int64_t granule_rate_numerator,
00953 ogg_int64_t granule_rate_denominator);
00954
00972 typedef ogg_int64_t (*OggzMetric) (OGGZ * oggz, long serialno,
00973 ogg_int64_t granulepos, void * user_data);
00974
00997 int oggz_set_metric (OGGZ * oggz, long serialno, OggzMetric metric,
00998 void * user_data);
00999
01007 ogg_int64_t oggz_tell_units (OGGZ * oggz);
01008
01016 ogg_int64_t oggz_seek_units (OGGZ * oggz, ogg_int64_t units, int whence);
01017
01018 #ifdef _UNIMPLEMENTED
01019
01071 typedef int (*OggzOrder) (OGGZ * oggz, ogg_packet * op, void * target,
01072 void * user_data);
01078 int oggz_set_order (OGGZ * oggz, long serialno, OggzOrder order,
01079 void * user_data);
01080
01081 long oggz_seek_byorder (OGGZ * oggz, void * target);
01082
01083 #endif
01084
01095 int oggz_purge (OGGZ * oggz);
01096
01110 int oggz_set_data_start (OGGZ * oggz, off_t offset);
01111
01124 off_t oggz_tell (OGGZ * oggz);
01125
01133 off_t oggz_seek (OGGZ * oggz, off_t offset, int whence);
01134
01135 #ifdef _UNIMPLEMENTED
01136 long oggz_seek_packets (OGGZ * oggz, long serialno, long packets, int whence);
01137 #endif
01138
01149 long oggz_serialno_new (OGGZ * oggz);
01150
01151 #include <oggz/oggz_io.h>
01152
01153 #endif