sig
  val proto : (string * Lang.t * Lang.value option * string option) list
  class virtual output :
    content_kind:Frame.content_kind ->
    output_kind:string ->
    ?name:string ->
    infallible:bool ->
    on_start:(unit -> unit) ->
    on_stop:(unit -> unit) ->
    Lang.value ->
    bool ->
    object
      val memo : Frame.t
      val mutable ns_kind : string
      val mutable request_start : bool
      val mutable request_stop : bool
      method abort_track : unit
      method private add_metadata : Request.metadata -> unit
      method advance : unit
      method after_output : unit
      method clock : Source.clock_variable
      method private create_request :
        ?metadata:(string * string) list ->
        ?persistent:bool ->
        ?indicators:Request.indicator list -> string -> Request.t
      method get : Frame.t -> unit
      method private get_frame : Frame.t -> unit
      method get_ready : ?dynamic:bool -> Source.source list -> unit
      method id : string
      method is_active : bool
      method is_output : bool
      method is_ready : bool
      method kind : Frame.content_kind
      method leave : ?dynamic:bool -> Source.source -> unit
      method private log : Dtools.Log.t
      method private metadata_queue : Request.metadata Queue.t
      method on_shutdown : (unit -> unit) -> unit
      method output : unit
      method output_get_ready : unit
      method virtual output_reset : unit
      method private virtual output_send : Frame.t -> unit
      method private virtual output_start : unit
      method private virtual output_stop : unit
      method register_command :
        descr:string -> ?usage:string -> string -> (string -> string) -> unit
      method remaining : int
      method seek : int -> int
      method private set_clock : unit
      method set_id : ?definitive:bool -> string -> unit
      method private sleep : unit
      method stype : Source.source_t
      method private wake_up : Source.source list -> unit
    end
  class virtual encoded :
    content_kind:Frame.content_kind ->
    output_kind:string ->
    name:string ->
    infallible:bool ->
    on_start:(unit -> unit) ->
    on_stop:(unit -> unit) ->
    autostart:bool ->
    Lang.value ->
    object
      val memo : Frame.t
      val mutable ns_kind : string
      val mutable request_start : bool
      val mutable request_stop : bool
      method abort_track : unit
      method private add_metadata : Request.metadata -> unit
      method advance : unit
      method after_output : unit
      method clock : Source.clock_variable
      method private create_request :
        ?metadata:(string * string) list ->
        ?persistent:bool ->
        ?indicators:Request.indicator list -> string -> Request.t
      method private virtual encode : Frame.t -> int -> int -> string
      method get : Frame.t -> unit
      method private get_frame : Frame.t -> unit
      method get_ready : ?dynamic:bool -> Source.source list -> unit
      method id : string
      method private virtual insert_metadata :
        Encoder.Meta.export_metadata -> unit
      method is_active : bool
      method is_output : bool
      method is_ready : bool
      method kind : Frame.content_kind
      method leave : ?dynamic:bool -> Source.source -> unit
      method private log : Dtools.Log.t
      method private metadata_queue : Request.metadata Queue.t
      method on_shutdown : (unit -> unit) -> unit
      method output : unit
      method output_get_ready : unit
      method virtual output_reset : unit
      method private output_send : Frame.t -> unit
      method private virtual output_start : unit
      method private virtual output_stop : unit
      method register_command :
        descr:string -> ?usage:string -> string -> (string -> string) -> unit
      method remaining : int
      method seek : int -> int
      method private virtual send : string -> unit
      method private set_clock : unit
      method set_id : ?definitive:bool -> string -> unit
      method private sleep : unit
      method stype : Source.source_t
      method private wake_up : Source.source list -> unit
    end
end