Mad

`sig
exception Mad_error of string
exception Read_error of string
exception End_of_stream
exception Openfile_error of string
exception Closefile_error of string
type mad_file
type mpeg_layer = Layer_I | Layer_II | Layer_III
type emphasis = None | MS_50_15 | CCITT_J_17 | Reserved
type channel_mode = Single_channel | Dual_channel | Joint_stereo | Stereo
type frame_format = {
layer : Mad.mpeg_layer;
mode : Mad.channel_mode;
emphasis : Mad.emphasis;
bitrate : int;
samplerate : int;
channels : int;
samples_per_channel : int;
original : bool;
copyright : bool;
private_bit : bool;
}
val openfile : string -> Mad.mad_file
val openstream : (int -> string * int) -> Mad.mad_file
val skip_id3tags :
read:(int -> string * int) ->
seek:(int -> int) -> tell:(unit -> int) -> unit
val close : Mad.mad_file -> unit
val get_current_position : Mad.mad_file -> int
type time_unit =
Hours
| Minutes
| Seconds
| Deciseconds
| Centiseconds
| Milliseconds
val get_current_time : Mad.mad_file -> Mad.time_unit -> int
val decode_frame : Mad.mad_file -> string
val decode_frame_float : Mad.mad_file -> float array array
val skip_frame : Mad.mad_file -> unit
val get_frame_format : Mad.mad_file -> Mad.frame_format
val get_output_format : Mad.mad_file -> int * int * int
val duration : string -> float
end`