sig
  module Encoder :
    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.Encoder.mpeg2_aac
          | `Mpeg_4 of Fdkaac.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.Encoder.aot
          | `Bandwidth of bool
          | `Bitrate of int
          | `Bitrate_mode of Fdkaac.Encoder.bitrate_mode
          | `Granule_length of int
          | `Samplerate of int
          | `Sbr_mode of bool
          | `Transmux of Fdkaac.Encoder.transmux ]
      val create : int -> Fdkaac.Encoder.t
      val set : Fdkaac.Encoder.t -> Fdkaac.Encoder.param -> unit
      val get :
        Fdkaac.Encoder.t -> Fdkaac.Encoder.param_name -> Fdkaac.Encoder.param
      val encode : Fdkaac.Encoder.t -> string -> int -> int -> string
      val flush : Fdkaac.Encoder.t -> string
    end
end