sig
  val get_lame_version : unit -> string
  val get_lame_short_version : unit -> string
  val get_lame_very_short_version : unit -> string
  val get_lame_url : unit -> string
  val get_psy_version : unit -> string
  type encoder
  val create_encoder : unit -> Lame_dynlink.Lame_t.encoder
  val set_in_samplerate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_num_channels : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_out_samplerate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_quality : Lame_dynlink.Lame_t.encoder -> int -> unit
  type mode = Stereo | Joint_stereo | Dual_channel | Mono
  val set_mode :
    Lame_dynlink.Lame_t.encoder -> Lame_dynlink.Lame_t.mode -> unit
  type vbr_mode = Vbr_off | Vbr_rh | Vbr_abr | Vbr_mtrh | Vbr_max_indicator
  val set_vbr_mode :
    Lame_dynlink.Lame_t.encoder -> Lame_dynlink.Lame_t.vbr_mode -> unit
  val set_vbr_quality : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_vbr_mean_bitrate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_vbr_min_bitrate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_vbr_max_bitrate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_vbr_hard_min : Lame_dynlink.Lame_t.encoder -> bool -> unit
  val set_brate : Lame_dynlink.Lame_t.encoder -> int -> unit
  val set_compression_ratio : Lame_dynlink.Lame_t.encoder -> float -> unit
  val set_private : Lame_dynlink.Lame_t.encoder -> bool -> unit
  val get_private : Lame_dynlink.Lame_t.encoder -> bool
  val set_copyright : Lame_dynlink.Lame_t.encoder -> bool -> unit
  val get_copyright : Lame_dynlink.Lame_t.encoder -> bool
  val set_original : Lame_dynlink.Lame_t.encoder -> bool -> unit
  val get_original : Lame_dynlink.Lame_t.encoder -> bool
  exception Init_params_failed
  val init_params : Lame_dynlink.Lame_t.encoder -> unit
  val init_bitstream : Lame_dynlink.Lame_t.encoder -> unit
  exception Init_params_not_called
  exception Psychoacoustic_problem
  exception Unknown_error of int
  val encode_buffer_part :
    Lame_dynlink.Lame_t.encoder -> string -> int -> int -> string
  val encode_buffer : Lame_dynlink.Lame_t.encoder -> string -> int -> string
  val encode_buffer_float_part :
    Lame_dynlink.Lame_t.encoder ->
    float array -> float array -> int -> int -> string
  val encode_buffer_float :
    Lame_dynlink.Lame_t.encoder ->
    float array -> float array -> int -> string
  val encode_flush : Lame_dynlink.Lame_t.encoder -> string
  val encode_flush_nogap : Lame_dynlink.Lame_t.encoder -> string
  module Id3tag :
    sig
      val init : Lame_dynlink.Lame_t.encoder -> unit
      val set_title : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_artist : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_album : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_year : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_comment : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_track : Lame_dynlink.Lame_t.encoder -> string -> unit
      val set_genre : Lame_dynlink.Lame_t.encoder -> string -> unit
    end
  type mpeg_version = Mpeg_1 | Mpeg_2 | Mpeg_2_5
  val get_version :
    Lame_dynlink.Lame_t.encoder -> Lame_dynlink.Lame_t.mpeg_version
  val get_encoder_delay : Lame_dynlink.Lame_t.encoder -> int
  val get_framesize : Lame_dynlink.Lame_t.encoder -> int
  val get_nb_samples_to_encode : Lame_dynlink.Lame_t.encoder -> int
  val get_nb_encoded_frames : Lame_dynlink.Lame_t.encoder -> int
  val get_nb_frames : Lame_dynlink.Lame_t.encoder -> int
end