Mad
* Functions for decoding mp3 files using the libmad. * *
type frame_format = {
layer : mpeg_layer;
mode : channel_mode;
emphasis : emphasis;
bitrate : int;
samplerate : int;
channels : int;
samples_per_channel : int;
original : bool;
copyright : bool;
private_bit : bool;
}
val openfile : string -> mad_file
* Open an mp3 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.
val skip_id3tags : read:read -> 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
. * *
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
.
* 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 decode_frame_floatarray : mad_file -> floatarray array
Decode an mp3 frame.
val decode_frame_float_ba :
mad_file ->
(float, Stdlib.Bigarray.float32_elt, Stdlib.Bigarray.c_layout)
Stdlib.Bigarray.Array1.t
array
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