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
00038 #include <ogg/ogg.h>
00039 #include <oggz/oggz_constants.h>
00040 #include <oggz/oggz_table.h>
00041
00422 typedef void OGGZ;
00423
00430 OGGZ * oggz_new (int flags);
00431
00439 OGGZ * oggz_open (char * filename, int flags);
00440
00448 OGGZ * oggz_open_stdio (FILE * file, int flags);
00449
00458 int oggz_flush (OGGZ * oggz);
00459
00467 int oggz_close (OGGZ * oggz);
00468
00479 int oggz_get_bos (OGGZ * oggz, long serialno);
00480
00491 int oggz_get_eos (OGGZ * oggz, long serialno);
00492
00524 typedef int (*OggzReadPacket) (OGGZ * oggz, ogg_packet * op, long serialno,
00525 void * user_data);
00526
00550 int oggz_set_read_callback (OGGZ * oggz, long serialno,
00551 OggzReadPacket read_packet, void * user_data);
00552
00563 long oggz_read (OGGZ * oggz, long n);
00564
00574 long oggz_read_input (OGGZ * oggz, unsigned char * buf, long n);
00575
00662 typedef int (*OggzWriteHungry) (OGGZ * oggz, int empty, void * user_data);
00663
00681 int oggz_write_set_hungry_callback (OGGZ * oggz,
00682 OggzWriteHungry hungry,
00683 int only_when_empty,
00684 void * user_data);
00722 int oggz_write_feed (OGGZ * oggz, ogg_packet * op, long serialno, int flush,
00723 int * guard);
00724
00739 long oggz_write_output (OGGZ * oggz, unsigned char * buf, long n);
00740
00754 long oggz_write (OGGZ * oggz, long n);
00755
00764 long oggz_write_get_next_page_size (OGGZ * oggz);
00765
00905 int oggz_set_metric_linear (OGGZ * oggz, long serialno,
00906 ogg_int64_t granule_rate_numerator,
00907 ogg_int64_t granule_rate_denominator);
00908
00926 typedef ogg_int64_t (*OggzMetric) (OGGZ * oggz, long serialno,
00927 ogg_int64_t granulepos, void * user_data);
00928
00951 int oggz_set_metric (OGGZ * oggz, long serialno, OggzMetric metric,
00952 void * user_data);
00953
00961 ogg_int64_t oggz_seek_units (OGGZ * oggz, ogg_int64_t units, int whence);
00962
00963 #ifdef _UNIMPLEMENTED
00964
01016 typedef int (*OggzOrder) (OGGZ * oggz, ogg_packet * op, void * target,
01017 void * user_data);
01023 int oggz_set_order (OGGZ * oggz, long serialno, OggzOrder order,
01024 void * user_data);
01025
01026 long oggz_seek_byorder (OGGZ * oggz, void * target);
01027
01028 #endif
01029
01043 int oggz_set_data_start (OGGZ * oggz, off_t offset);
01044
01057 off_t oggz_tell (OGGZ * oggz);
01058
01066 off_t oggz_seek (OGGZ * oggz, off_t offset, int whence);
01067
01068 #ifdef _UNIMPLEMENTED
01069 long oggz_seek_packets (OGGZ * oggz, long serialno, long packets, int whence);
01070 #endif
01071
01082 long oggz_serialno_new (OGGZ * oggz);
01083
01084
01085 #endif