sig
  exception Not_enough_data
  exception Bad_data
  exception Out_of_sync
  module Page :
    sig
      type t = string * string
      val serialno : Ogg.Page.t -> nativeint
      val eos : Ogg.Page.t -> bool
      val bos : Ogg.Page.t -> bool
      val continued : Ogg.Page.t -> bool
      val packets : Ogg.Page.t -> int
      val version : Ogg.Page.t -> int
      val granulepos : Ogg.Page.t -> Int64.t
      val pageno : Ogg.Page.t -> nativeint
      val set_checksum : Ogg.Page.t -> unit
    end
  module Sync :
    sig
      type t
      val create : (int -> string * int) -> Ogg.Sync.t
      val create_from_file : string -> Ogg.Sync.t * Unix.file_descr
      val read : Ogg.Sync.t -> Ogg.Page.t
      val reset : ?read_func:(int -> string * int) -> Ogg.Sync.t -> unit
    end
  module Stream :
    sig
      type stream
      type packet
      val create : ?serial:nativeint -> unit -> Ogg.Stream.stream
      val serialno : Ogg.Stream.stream -> nativeint
      val eos : Ogg.Stream.stream -> bool
      val get_page : Ogg.Stream.stream -> Ogg.Page.t
      val put_page : Ogg.Stream.stream -> Ogg.Page.t -> unit
      val get_packet : Ogg.Stream.stream -> Ogg.Stream.packet
      val peek_packet : Ogg.Stream.stream -> Ogg.Stream.packet
      val put_packet : Ogg.Stream.stream -> Ogg.Stream.packet -> unit
      val flush_page : Ogg.Stream.stream -> Ogg.Page.t
      type t = Ogg.Stream.stream
      val pageout : Ogg.Stream.t -> string
      val pagesout : Ogg.Stream.t -> string
      val flush : Ogg.Stream.t -> string
      val pagesout_eos : Ogg.Stream.t -> string
    end
  module Skeleton :
    sig
      val fishead :
        ?presentation_numerator:Int64.t ->
        ?presentation_denominator:Int64.t ->
        ?basetime_numerator:Int64.t ->
        ?basetime_denominator:Int64.t ->
        ?utc:Int32.t -> unit -> Ogg.Stream.packet
      val eos : unit -> Ogg.Stream.packet
    end
end