class Ecore_Audio_In (Ecore_Audio)
{
   legacy_prefix: null;
   eo_prefix: ecore_audio_obj_in;
   data: Ecore_Audio_Input;
      properties {
      speed {
         set {
            /*@
            Set the playback speed of the input.

            @since 1.8 */
         }
         get {
            /*@
            Get the playback speed of the input.

            @since 1.8 */
         }
         values {
            double speed; /*The speed, 1.0 is the default*/
         }
      }
      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 {
            int samplerate; /*The samplerate in Hz*/
         }
      }
      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 {
            int channels; /*The number of channels*/
         }
      }
      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 {
            bool preloaded; /*EINA_TRUE if the input should be cached, EINA_FALSE otherwise*/
         }
      }
      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 {
            bool looped; /*EINA_TRUE if the input should be looped, EINA_FALSE otherwise*/
         }
      }
      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 {
            double length; /*The length of the input in seconds*/
         }
      }
      output {
         get {
            /*@
            Get the output that this input is attached to

            @since 1.8 */
         }
         values {
            Eo *output; /*The output*/
         }
      }
      remaining {
         get {
            /*@
            Get the remaining time of the input

            @since 1.8 */
         }
         values {
            double remaining; /*The amount of time in seconds left to play*/
         }
      }
   }
   methods {
      read {
         /*@
         Read from the input

         @since 1.8 */
         return: ssize; /*The amount of samples written to buf*/
         params {
            @in void *buf; /*The buffer to read into*/
            @in size len; /*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 void *buf; /*The buffer to read into*/
            @in size len; /*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 double offs; /*The offset in seconds*/
            @in int mode; /*mode 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. */
   }
}
