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
00423 typedef void OGGZ;
00424
00431 OGGZ * oggz_new (int flags);
00432
00440 OGGZ * oggz_open (char * filename, int flags);
00441
00449 OGGZ * oggz_open_stdio (FILE * file, int flags);
00450
00459 int oggz_flush (OGGZ * oggz);
00460
00468 int oggz_close (OGGZ * oggz);
00469
00480 int oggz_get_bos (OGGZ * oggz, long serialno);
00481
00492 int oggz_get_eos (OGGZ * oggz, long serialno);
00493
00525 typedef int (*OggzReadPacket) (OGGZ * oggz, ogg_packet * op, long serialno,
00526 void * user_data);
00527
00551 int oggz_set_read_callback (OGGZ * oggz, long serialno,
00552 OggzReadPacket read_packet, void * user_data);
00553
00564 long oggz_read (OGGZ * oggz, long n);
00565
00575 long oggz_read_input (OGGZ * oggz, unsigned char * buf, long n);
00576
00663 typedef int (*OggzWriteHungry) (OGGZ * oggz, int empty, void * user_data);
00664
00682 int oggz_write_set_hungry_callback (OGGZ * oggz,
00683 OggzWriteHungry hungry,
00684 int only_when_empty,
00685 void * user_data);
00723 int oggz_write_feed (OGGZ * oggz, ogg_packet * op, long serialno, int flush,
00724 int * guard);
00725
00740 long oggz_write_output (OGGZ * oggz, unsigned char * buf, long n);
00741
00755 long oggz_write (OGGZ * oggz, long n);
00756
00765 long oggz_write_get_next_page_size (OGGZ * oggz);
00766
00906 int oggz_set_metric_linear (OGGZ * oggz, long serialno,
00907 ogg_int64_t granule_rate_numerator,
00908 ogg_int64_t granule_rate_denominator);
00909
00927 typedef ogg_int64_t (*OggzMetric) (OGGZ * oggz, long serialno,
00928 ogg_int64_t granulepos, void * user_data);
00929
00952 int oggz_set_metric (OGGZ * oggz, long serialno, OggzMetric metric,
00953 void * user_data);
00954
00962 ogg_int64_t oggz_tell_units (OGGZ * oggz);
00963
00971 ogg_int64_t oggz_seek_units (OGGZ * oggz, ogg_int64_t units, int whence);
00972
00973 #ifdef _UNIMPLEMENTED
00974
01026 typedef int (*OggzOrder) (OGGZ * oggz, ogg_packet * op, void * target,
01027 void * user_data);
01033 int oggz_set_order (OGGZ * oggz, long serialno, OggzOrder order,
01034 void * user_data);
01035
01036 long oggz_seek_byorder (OGGZ * oggz, void * target);
01037
01038 #endif
01039
01050 int oggz_purge (OGGZ * oggz);
01051
01065 int oggz_set_data_start (OGGZ * oggz, off_t offset);
01066
01079 off_t oggz_tell (OGGZ * oggz);
01080
01088 off_t oggz_seek (OGGZ * oggz, off_t offset, int whence);
01089
01090 #ifdef _UNIMPLEMENTED
01091 long oggz_seek_packets (OGGZ * oggz, long serialno, long packets, int whence);
01092 #endif
01093
01104 long oggz_serialno_new (OGGZ * oggz);
01105
01106 #include <oggz/oggz_io.h>
01107
01108 #endif