interface Efl.Player {
   legacy_prefix: null;
   methods {
        @property playable {
             [[Whether or not the object data can be played.]]
             get {
             }
             values {
                  play: bool; [[true if the object have playable data, false otherwise]]
             }
        }
        @property play {
             set {
                  [[Set play/pause state of the media file.

                    This functions sets the currently playing status of the
                    video. Using this function to play or pause the video
                    doesn't alter it's current position.
                  ]]
             }
             get {
                  [[Get play/pause state of the media file.]]
             }
             values {
                  play: bool; [[true if playing, false otherwise.]]
             }
        }
        @property position {
             set {
                  [[Set the position in the media file.

                    This functions sets the current position of the media file
                    to "sec", this only works on seekable streams. Setting the
                    position doesn't change the playing state of the media file.
                  ]]
             }
             get {
                  [[Get the position in the media file.

                    The position is returned as the number of seconds since the
                    beginning of the media file.
                  ]]
             }
             values {
                  sec: double; [[The position (in seconds).]]
             }
        }
        @property progress {
             get {
                  [[Get how much of the file has been played.

                    This function gets the progress in playing the file, the
                    return value is in the [0, 1] range.
                  ]]
             }
             values {
                  progress: double; [[The progress within the [0, 1] range.]]
             }
        }
        @property play_speed {
             [[Control the play speed of the media file.

               This function control the speed with which the media file will
               be played. 1.0 represents the normal speed, 2 double speed, 0.5
               half speed and so on.
             ]]
             set {
             }
             get {
             }
             values {
                  speed: double; [[The play speed in the [0, infinity) range.]]
             }
        }
        @property audio_volume {
             [[Control the audio volume.

               Controls the audio volume of the stream being played. This has
               nothing to do with the system volume. This volume will be
               multiplied by the system volume. e.g.: if the current volume
               level is 0.5, and the system volume is 50%, it will be
               0.5 * 0.5 = 0.25.
             ]]
             set {
             }
             get {
             }
             values {
                  volume: double; [[The volume level]]
             }
        }
        @property audio_mute {
             [[This property controls the audio mute state.]]
             set {
             }
             get {
             }
             values {
                  mute: bool; [[The mute state. True or false.]]
             }
        }
        @property length {
             [[Get the length of play for the media file.]]
             get {
             }
             values {
                  length: double; [[The length of the stream in seconds.]]
             }
        }
        @property seekable {
             [[Get whether the media file is seekable.]]
             get {
             }
             values {
                  seekable: bool; [[True if seekable.]]
             }
        }
   }
}
