module Mad:sig
..end
Functions for decoding mp3 files using the libmad.
exception Mad_error of string
An error occured with libmad.
exception Read_error of string
An error occured while reading a file.
exception End_of_stream
The end of the mp3 stream was reached.
exception Openfile_error of string
Could not open a file.
exception Closefile_error of string
Could not close a file.
type
mad_file
An mp3 file opened for decoding.
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 : |
|
mode : |
|
emphasis : |
|
bitrate : |
|
samplerate : |
|
channels : |
|
samples_per_channel : |
|
original : |
|
copyright : |
|
private_bit : |
val openfile : string -> mad_file
Open an mp3 file.
Openfile_error
if an error occured while trying to open the file.val openstream : (int -> string * int) -> mad_file
openstream read_func
opens a stream where read_func n
should be a
function which returns n
bytes of data or less, the second component of
the result being the number of bytes to read in the fist component.
read:(int -> string * int) -> seek:(int -> int) -> tell:(unit -> int) -> unit
: Skip ID3 tags that may be present at
the beginning of a stream. This function
may be used to a mp3 file opened using openstream
.
ID3 tags are always skipped when using openfile
.
seek
is a callback to seek to an absolute
position on the encoded data, and tell
a callback
to fetch the current position. read
is the reading
callback.
val close : mad_file -> unit
Close an mp3 file previously opened with openfile
.
Closefile_error
if an error occured while trying to close the file.val get_current_position : mad_file -> int
Get the current position (in bytes) of the decoder in the mp3 file which
should have been opened with openfile
.
type
time_unit =
| |
Hours |
| |
Minutes |
| |
Seconds |
| |
Deciseconds |
| |
Centiseconds |
| |
Milliseconds |
val get_current_time : mad_file -> time_unit -> int
Get the current time position (in the given unit) of the decoder.
val decode_frame : mad_file -> string
Decode an mp3 frame. Returned data in interleaved when there are two channels, and mono data when there is only one.
val decode_frame_float : mad_file -> float array array
Decode an mp3 frame.
val skip_frame : mad_file -> unit
Skip one frame. The current time/position is updated but the frame is not decoded.
val get_frame_format : mad_file -> frame_format
val get_output_format : mad_file -> int * int * int
val duration : string -> float
Compute the duration of a file, in seconds. Never raises any exception, but returns 0. in case of error.