sig
  type decoder = Faad.t
  type t
  type track = int
  type sample = int
  val is_mp4 : string -> bool
  val openfile :
    ?write:(Stdlib.Bytes.t -> int) ->
    ?seek:(int -> int) ->
    ?trunc:(unit -> int) -> (int -> Stdlib.Bytes.t * int * int) -> Faad.Mp4.t
  val openfile_fd : Unix.file_descr -> Faad.Mp4.t
  val tracks : Faad.Mp4.t -> int
  val find_aac_track : Faad.Mp4.t -> Faad.Mp4.track
  val init : Faad.Mp4.t -> Faad.Mp4.decoder -> Faad.Mp4.track -> int * int
  val seek : Faad.Mp4.t -> Faad.Mp4.track -> int -> int * int
  val samples : Faad.Mp4.t -> Faad.Mp4.track -> int
  val read_sample : Faad.Mp4.t -> Faad.Mp4.track -> Faad.Mp4.sample -> string
  val decode :
    Faad.Mp4.t ->
    Faad.Mp4.track ->
    Faad.Mp4.sample -> Faad.Mp4.decoder -> float array array
  val metadata : Faad.Mp4.t -> (string * string) array
end