class Ecore_Audio_In (Ecore_Audio)
{
   legacy_prefix: null;
   eo_prefix: ecore_audio_obj_in;
   data: Ecore_Audio_Input;
   methods {
      @property speed {
         set {
            [[Set the playback speed of the input.

              @since 1.8
            ]]
         }
         get {
            [[Get the playback speed of the input.

              @since 1.8
            ]]
         }
         values {
            speed: double; [[The speed, 1.0 is the default]]
         }
      }
      @property samplerate {
         set {
            [[Set the sample-rate of the input

              @since 1.8
            ]]
         }
         get {
            [[Get the he sample-rate of the input

              @since 1.8
            ]]
         }
         values {
            samplerate: int; [[The samplerate in Hz]]
         }
      }
      @property channels {
         set {
            [[Set the amount of channels the input has

              @since 1.8
            ]]
         }
         get {
            [[Get the amount of channels the input has

              @since 1.8
            ]]
         }
         values {
            channels: int; [[The number of channels]]
         }
      }
      @property preloaded {
         set {
            [[Set the preloaded state of the input

              @since 1.8
            ]]
         }
         get {
            [[Get the the preloaded state of the input

              @since 1.8
            ]]
         }
         values {
            preloaded: bool; [[true if the input should be cached, false otherwise]]
         }
      }
      @property looped {
         set {
            [[Set the looped state of the input

              If the input is looped and reaches the end it will start from the
              beginning again. At the same time the event
              \@ref ECORE_AUDIO_EV_IN_LOOPED will be emitted

              @since 1.8
            ]]
         }
         get {
            [[Get the looped state of the input

              @since 1.8
            ]]
         }
         values {
            looped: bool; [[true if the input should be looped, false otherwise]]
         }
      }
      @property length {
         set {
            [[Set the length of the input

              This function is only implemented by some classes
              (i.e. ECORE_AUDIO_OBJ_IN_TONE_CLASS)

              @since 1.8
            ]]
         }
         get {
            [[Get the length of the input

              @since 1.8
            ]]
         }
         values {
            length: double; [[The length of the input in seconds]]
         }
      }
      @property output {
         get {
            [[Get the output that this input is attached to

              @since 1.8
            ]]
         }
         values {
            output: Eo *; [[The output]]
         }
      }
      @property remaining {
         get {
            [[Get the remaining time of the input

              @since 1.8
            ]]
         }
         values {
            remaining: double; [[The amount of time in seconds left to play]]
         }
      }
      read {
         [[Read from the input

           @since 1.8
         ]]
         return: ssize; [[The amount of samples written to buf]]
         params {
            @in buf: void *; [[The buffer to read into]]
            @in len: size; [[The amount of samples to read]]
         }
      }
      read_internal {
         [[Internal read function

           @since 1.8
         ]]
         return: ssize; [[The amount of samples written to buf]]
         params {
            @in buf: void *; [[The buffer to read into]]
            @in len: size; [[The amount of samples to read]]
         }
      }
      seek {
         [[Seek within the input

           @since 1.8
         ]]
         return: double; [[The current absolute position in seconds within
                           the input]]
         params {
            @in offs: double; [[The offset in seconds]]
            @in mode: int; [[The seek mode. Is absolute with SEEK_SET,
                             relative to the current position with SEEK_CUR
                             and relative to the end with SEEK_END.]]
         }
      }
   }
   implements {
      Eo.Base.constructor;
      Eo.Base.destructor;
      Ecore_Audio.vio_set;
      @virtual .preloaded.get;
      @virtual .preloaded.set;
      @virtual .seek;
      @virtual .length.set;
   }
   events {
      in,looped; [[Called when an input has looped.]]
      in,stopped; [[Called when an input has stopped playing.]]
      in,samplerate,changed; [[Called when the input samplerate has changed.]]
   }
}
