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_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
end