(* raw values *) type oogg64 = (int * int * int * int);; type oogg32 = (int * int);; (* conversions *) val oogg32_to_int64 : oogg32 -> int64 val oogg64_to_int64 : oogg64 -> int64 val int64_to_oogg32 : int64 -> oogg32 val int64_to_oogg64 : int64 -> oogg64 val oogg32_to_string : oogg32 -> string val print_oogg32 : oogg32 -> unit val print_oogg64 : oogg64 -> unit val oogg64_to_float : oogg64 -> float (* meaningful values *) type serialNo = oogg32;; type granulePos = oogg64 option;; type checksum = oogg32;; type sequenceNo = oogg32;; val print_granulepos : granulePos -> unit;; (* raw byte streams *) type stream = IO.input;; type outStream = unit IO.output;; (* * an oogg Page record *) type rawPage = { continued : bool ; bos : bool ; eos : bool ; last_packet_complete : bool ; granulepos : granulePos ; serialno : serialNo ; sequenceno : sequenceNo ; checksum : checksum ; packet_sizes : int list ; raw_data : string list };; (* media types *) type mediaType = Skeleton | CMML | Vorbis | Theora | Unknown;; type page = { raw : rawPage ; time : float option ; identity : mediaType };; (* a stream of pages *) type rawPageStream = rawPage Stream.t;; type pageStream = page Stream.t;; (* the type of a media stream *) type mediaStream = { stream_serialno : serialNo ; stream_pages : rawPageStream ; stream_type : mediaType ; stream_time : (granulePos -> float option) };; val print_mediaType : mediaType -> unit;; type packet = { p_data : string ; mutable p_granulepos : granulePos ; mutable p_time : float option ; p_pageno : int ; p_serialno : serialNo ; p_continued : bool ; p_continues : bool ; p_page_seq : sequenceNo ; p_identity : mediaType ; p_bos : bool ; p_eos : bool };; type packetStream = packet Stream.t;; val read_ui32 : IO.input -> int64;; val write_ui32 : 'a IO.output -> int64 -> unit;; val read_oogg64 : IO.input -> oogg64;; val write_oogg64 : 'a IO.output -> oogg64 -> unit;; val read_oogg32 : IO.input -> oogg32;; val write_oogg32 : 'a IO.output -> oogg32 -> unit;; val read_granulepos : IO.input -> granulePos;; val write_granulepos : 'a IO.output -> granulePos -> unit;; val extract_be_int32 : string -> int -> int64;; val extract_le_int32 : string -> int -> int64;; val extract_le_int64 : string -> int -> int64;; val extract_le_oogg64 : string -> int -> oogg64;; val extract_int8 : string -> int -> int;;