sig
  type t
  type mode = [ `Audio | `Both | `Undefined | `Video ]
  val create :
    Generator.From_audio_video.mode -> Generator.From_audio_video.t
  val mode : Generator.From_audio_video.t -> Generator.From_audio_video.mode
  val set_mode :
    Generator.From_audio_video.t -> Generator.From_audio_video.mode -> unit
  val audio_length : Generator.From_audio_video.t -> int
  val video_length : Generator.From_audio_video.t -> int
  val length : Generator.From_audio_video.t -> int
  val remaining : Generator.From_audio_video.t -> int
  val add_metadata : Generator.From_audio_video.t -> Frame.metadata -> unit
  val add_break :
    ?sync:[ `Drop | `Ignore | `Strict ] ->
    Generator.From_audio_video.t -> unit
  val put_audio :
    Generator.From_audio_video.t -> Frame.audio_t array -> int -> int -> unit
  val put_video :
    Generator.From_audio_video.t -> Frame.video_t array -> int -> int -> unit
  val fill : Generator.From_audio_video.t -> Frame.t -> unit
  val remove : Generator.From_audio_video.t -> int -> unit
  val clear : Generator.From_audio_video.t -> unit
end