sig
  exception Invalid_handle
  exception Unsupported_parameter
  exception Invalid_config
  exception Error of int
  exception End_of_file
  exception Unknown of int
  val string_of_exception : exn -> string option
  type t
  type mpeg2_aac = [ `AAC_LC | `HE_AAC | `HE_AAC_v2 ]
  type mpeg4_aac = [ `AAC_ELD | `AAC_LC | `AAC_LD | `HE_AAC | `HE_AAC_v2 ]
  type aot =
      [ `Mpeg_2 of Fdkaac_dynlink.Fdkaac_t.Encoder.mpeg2_aac
      | `Mpeg_4 of Fdkaac_dynlink.Fdkaac_t.Encoder.mpeg4_aac ]
  type bitrate_mode = [ `Constant | `Full_bitreservoir | `Variable of int ]
  type transmux =
      [ `Adif | `Adts | `Latm | `Latm_out_of_band | `Loas | `Raw ]
  type param_name =
      [ `Afterburner
      | `Aot
      | `Bandwidth
      | `Bitrate
      | `Bitrate_mode
      | `Granule_length
      | `Samplerate
      | `Sbr_mode
      | `Transmux ]
  type param =
      [ `Afterburner of bool
      | `Aot of Fdkaac_dynlink.Fdkaac_t.Encoder.aot
      | `Bandwidth of bool
      | `Bitrate of int
      | `Bitrate_mode of Fdkaac_dynlink.Fdkaac_t.Encoder.bitrate_mode
      | `Granule_length of int
      | `Samplerate of int
      | `Sbr_mode of bool
      | `Transmux of Fdkaac_dynlink.Fdkaac_t.Encoder.transmux ]
  val create : int -> Fdkaac_dynlink.Fdkaac_t.Encoder.t
  val set :
    Fdkaac_dynlink.Fdkaac_t.Encoder.t ->
    Fdkaac_dynlink.Fdkaac_t.Encoder.param -> unit
  val get :
    Fdkaac_dynlink.Fdkaac_t.Encoder.t ->
    Fdkaac_dynlink.Fdkaac_t.Encoder.param_name ->
    Fdkaac_dynlink.Fdkaac_t.Encoder.param
  val encode :
    Fdkaac_dynlink.Fdkaac_t.Encoder.t -> string -> int -> int -> string
  val flush : Fdkaac_dynlink.Fdkaac_t.Encoder.t -> string
end