module Lame:sig..end
Bindings to the lame library to encode mp3 files.
val get_lame_version : unit -> stringGet the lame version number.
val get_lame_short_version : unit -> stringGet the lame version number (shorter than get_lame_version).
val get_lame_very_short_version : unit -> stringGet the lame version number (shorter than get_lame_short_version).
val get_lame_url : unit -> stringGet the url of the lame website.
val get_psy_version : unit -> stringGet the version of the psy model.
type encoder
Type for lame encoders.
val create_encoder : unit -> encoderCreate a new lame encoder.
val set_in_samplerate : encoder -> int -> unitInput sample rate in Hz (default: 44100).
val set_num_channels : encoder -> int -> unitNumber of channels in input stream (default: 2).
val set_out_samplerate : encoder -> int -> unitOutput sample rate in Hz (default: 0, which means LAME picks best value based on the amount of compression). MPEG only allows:
val set_quality : encoder -> int -> unitInternal algorithm selection. True quality is determined by the bitrate but this variable will effect quality by selecting expensive or cheap algorithms. The quality is an integer between 0 and 9, where 0=best (very slow) and 9=worst. More precisely:
type mode =
| |
Stereo |
(* | stereo, channels encoded independely | *) |
| |
Joint_stereo |
(* | stereo, channels encoded together | *) |
| |
Dual_channel |
(* | not supported | *) |
| |
Mono |
(* | mono | *) |
Compression mode.
val set_mode : encoder -> mode -> unitSet the compression mode.
type vbr_mode =
| |
Vbr_off |
(* | constant bitrate | *) |
| |
Vbr_rh |
|||
| |
Vbr_abr |
|||
| |
Vbr_mtrh |
|||
| |
Vbr_max_indicator |
VBR (Variable BitRate) mode.
val set_vbr_mode : encoder -> vbr_mode -> unitSet the VBR mode.
val set_vbr_quality : encoder -> int -> unitSet the VBR quality level (0:highest, 9: lowest).
val set_vbr_mean_bitrate : encoder -> int -> unitSet the VBR mean birate in kbps. Only used by Vbr_abr mode.
val set_vbr_min_bitrate : encoder -> int -> unitSet the minimal VBR bitrate in kbps.
val set_vbr_max_bitrate : encoder -> int -> unitSet the maximal VBR bitrate in kbps.
val set_vbr_hard_min : encoder -> bool -> unitIf true, enforce the minimal VBR bitrate. Normally it will be violated
for analog silence.
val set_brate : encoder -> int -> unitSet the bitrate of compressed data. You can either set this or use
set_compression_ratio.
val set_compression_ratio : encoder -> float -> unitSet the compression ratio (default: 11).
val set_private : encoder -> bool -> unitGet/set private bit.
val get_private : encoder -> bool
val set_copyright : encoder -> bool -> unitGet/set copyright bit.
val get_copyright : encoder -> bool
val set_original : encoder -> bool -> unitGet/set original bit.
val get_original : encoder -> bool
exception Init_params_failed
A call to init_params failed for some reason.
val init_params : encoder -> unitInitialize lame's parameters. Should be called before encoding (and after
having set the parameters). Raises Init_params_failed on error.
val init_bitstream : encoder -> unitWrite id3v2 and Xing headers into the front of the bitstream, and set
frame counters and bitrate histogram data to 0. Normally, this is called by
init_params. You can call this after encode_flush_nogap.
exception Init_params_not_called
You should have called init_params.
exception Psychoacoustic_problem
A problem occured with psychoacoustics.
exception Unknown_error of int
This should not have happened. Please report.
val encode_buffer_part : encoder -> string -> int -> int -> stringencode_buffer_part enc buf ofs smpl encodes samples
samples (per channel) of buf starting at position ofs.
val encode_buffer : encoder -> string -> int -> stringSame as encode_buffer_part but with ofs = 0.
val encode_buffer_float_part : encoder -> float array -> float array -> int -> int -> stringencode_buffer_float_part enc left right ofs smpl encodes samples
samples of left and right channels starting at position ofs.
Floats are expected to range over -1;1.
val encode_buffer_float : encoder -> float array -> float array -> int -> stringSame as encode_buffer_float_part but with ofs = 0.
val encode_flush : encoder -> stringFlush the PCM buffers, padding with zeros if needed to make a complete frame. Will also write id3v1 tags (if any) into the bitstream.
val encode_flush_nogap : encoder -> stringFlush the PCM buffers, padding with zeros if needed to make a complete frame. This function will not write id3v1 tags into the bitstream.
module Id3tag:sig..end
type mpeg_version =
| |
Mpeg_1 |
(* | MPEG v1 | *) |
| |
Mpeg_2 |
(* | MPEG v2 | *) |
| |
Mpeg_2_5 |
(* | MPEG v2.5 | *) |
MPEG version.
val get_version : encoder -> mpeg_versionThe MPEG version used by the encoder.
val get_encoder_delay : encoder -> intGet the encoder delay.
val get_framesize : encoder -> intSize of an mpeg frame in bytes.
val get_nb_samples_to_encode : encoder -> intNumber of PCM samples buffered, but not yet encoded to mp3 data.
val get_nb_encoded_frames : encoder -> intNumber of frames encoded so far.
val get_nb_frames : encoder -> intEstimate of the total number of frames to be encoded
(only valid if set_nb_samples was called).