module Stream:sig..end
type stream 
The stream values track the current encode/decode state of the
 current logical bitstream.
type packet 
A data packet to pass to the decoder
val create : ?serial:nativeint -> unit -> streamCreate a stream.
val serialno : stream -> nativeintGet a stream's serial number.
val eos : stream -> boolReturns true if the end of stream has been reached.
val get_page : ?fill:int -> stream -> Ogg.Page.tThis function forms packets into pages. Internally, it assembles the accumulated packet bodies into an Ogg page suitable for writing to a stream.
If no fill argument is passed, this function will only return 
 a page when a "reasonable" amount of packet data is available. 
 Normally this is appropriate since it limits the overhead of the 
 Ogg page headers in the bitstream.
If a fill argument is passed, this function will return a page when at
 least four packets have been accumulated and accumulated packet data meets
 or exceeds the specified number of bytes, and/or when the accumulated
 packet data meets/exceeds the maximum page size regardless of accumulated
 packet count.
Call flush_page if immediate  page generation is desired. This 
 may be occasionally necessary, for example, to limit the temporal 
 latency of a variable bitrate stream.
val put_page : stream -> Ogg.Page.t -> unitThis function adds a complete page to the bitstream.
In a typical decoding situation, this function would be called after 
 using Sync.read to create a valid Page.t
Raises Bad_data if the serial number of the page did not match the 
 serial number of the bitstream, or the page version was incorrect.
val get_packet : stream -> packetThis function assembles a data packet for output to the codec decoding engine.
Each successive call returns the next complete packet built from those segments.
 In a typical decoding situation, this should be used after calling 
 put_page to submit a page of data to the bitstream.
This function should *not* be used. Because of ocaml's paradigm, it is necessary to copy each packet since they are only valid until this function is called again. When dealing with many packets, this will lead to multiple unecessary memory allocation and desallocation.
Raises Not_enough_data if more data is needed and another page should be submitted.
Raises Out_of_sync  if we are out of sync and there is a gap in the data.
val peek_packet : stream -> packetThis function assembles a data packet for output to the codec decoding engine without advancing the stream.
Raises Not_enough_data if more data is needed and another page should be submitted.
Raises Out_of_sync  if we are out of sync and there is a gap in the data
val peek_granulepos : stream -> Stdlib.Int64.tThis function picks up the granule position of the next packet in the stream without advancing it.
Raises Not_enough_data if more data is needed and another page should be submitted.
Raises Out_of_sync  if we are out of sync and there is a gap in the data
val skip_packet : stream -> unitThis function discards the next packet in the stream.
Raises Not_enough_data if more data is needed and another page should be submitted.
Raises Out_of_sync  if we are out of sync and there is a gap in the data
val put_packet : stream -> packet -> unitThis function submits a packet to the bitstream for page encapsulation. After this is called, more packets can be submitted, or pages can be written out.
This function is provided to ease ogg strea multiplexing, where packet submission order is important. It should not be used to encoder further data.
val flush_page : stream -> Ogg.Page.tThis function checks for remaining packets inside the stream and forces remaining packets into a page, regardless of the size of the page.
This should only be used when you want to flush an undersized page from the
 middle of the stream. Otherwise, get_page should always be used.
This function can be used to verify that all packets have been flushed.
Raises Not_enough_data if  all packet data has already been flushed into pages,
 and there are no packets to put into the page.
val packet_granulepos : packet -> Stdlib.Int64.tReturns a packet's granule position.