§
    \
j  ã                   ó’   — d dl Z d dlZd dlmZmZ d dlmZ  G d„ d eee¦  «        ¦  «        Z G d„ d eee¦  «        ¦  «        Z	dS )é    N)ÚABCMetaÚabstractmethod)Úwith_metaclassc                   ó.  — e Zd ZdZdZdZd„ Zd„ Zd„ Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d	„ ¦   «         Zd
„ Zd„ Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zej        d„ ¦   «         ZdS )ÚAbstractAudioPlayerz)Base class for driver audio players.
    é   g      $@c                 óÖ   — || _         t          j        |¦  «        | _        d| _        d| _        t          j        t          j        d¦  «        | j	        z  ¦  «        | _
        d| _        dS )zâCreate a new audio player.

        :Parameters:
            `source` : `Source`
                Source to play from.
            `player` : `Player`
                Player to receive EOS and video frame sync events.

        r   ç        g{®Gáz„?gš™™™™™¹?N)ÚsourceÚweakrefÚproxyÚplayerÚaudio_diff_avg_countÚaudio_diff_cumÚmathÚexpÚlog10ÚAUDIO_DIFF_AVG_NBÚaudio_diff_avg_coefÚaudio_diff_threshold©Úselfr   r   s      úS/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/media/drivers/base.pyÚ__init__zAbstractAudioPlayer.__init__5   s`   € ð ˆŒÝ”m FÑ+Ô+ˆŒð %&ˆÔ!Ø!ˆÔÝ#'¤8­D¬J°tÑ,<Ô,<¸tÔ?UÑ,UÑ#VÔ#VˆÔ Ø$'ˆÔ!Ð!Ð!ó    c                 ó   — dS )zLCalled before the audio driver is going to be destroyed (a planned destroy).N© ©r   s    r   Úon_driver_destroyz%AbstractAudioPlayer.on_driver_destroyK   ó   € àˆr   c                 ó   — dS )z6Called after the audio driver has been re-initialized.Nr   r   s    r   Úon_driver_resetz#AbstractAudioPlayer.on_driver_resetO   r    r   c                 ó   — dS )zBegin playback.Nr   r   s    r   ÚplayzAbstractAudioPlayer.playS   ó   € € € r   c                 ó   — dS )zStop (pause) playback.Nr   r   s    r   ÚstopzAbstractAudioPlayer.stopW   r%   r   c                 ó   — dS )z7Stop playing and clean up all resources used by player.Nr   r   s    r   ÚdeletezAbstractAudioPlayer.delete[   r%   r   c                 ó8   — |D ]}|                      ¦   «          ŒdS )z7Begin simultaneous playback on a list of audio players.N)r$   ©r   Úaudio_playersr   s      r   Ú_play_groupzAbstractAudioPlayer._play_group_   ó,   € ð $ð 	ð 	ˆFØKŠK‰MŒMˆMˆMð	ð 	r   c                 ó8   — |D ]}|                      ¦   «          ŒdS )z6Stop simultaneous playback on a list of audio players.N)r'   r+   s      r   Ú_stop_groupzAbstractAudioPlayer._stop_groupe   r.   r   c                 ó"   — d| _         d| _        dS )z„Clear all buffered data and prepare for replacement data.

        The player should be stopped before calling this method.
        r   r
   N)r   r   r   s    r   ÚclearzAbstractAudioPlayer.cleark   s   € ð %&ˆÔ!Ø!ˆÔÐÐr   c                 ó   — dS )a3  Return approximation of current playback time within current source.

        Returns ``None`` if the audio player does not know what the playback
        time is (for example, before any valid audio data has been read).

        :rtype: float
        :return: current play cursor time, in seconds.
        Nr   r   s    r   Úget_timezAbstractAudioPlayer.get_timet   r%   r   c                 ó   — dS )z¾Prefill the audio buffer with audio data.

        This method is called before the audio player starts in order to 
        reduce the time it takes to fill the whole audio buffer.
        Nr   r   s    r   Úprefill_audioz!AbstractAudioPlayer.prefill_audio€   r%   r   c                 ój  — |                       ¦   «         pd}| j        j        }||z
  }t          |¦  «        | j        k     re|| j        | j        z  z   | _        | j        | j        k     r| xj        dz  c_        n;| j        d| j        z
  z  }t          |¦  «        | j	        k    r|S nd| _        d| _        dS )a¼  Queries the time difference between the audio time and the `Player`
        master clock.

        The time difference returned is calculated using a weighted average on
        previous audio time differences. The algorithms will need at least 20
        measurements before returning a weighted average.

        :rtype: float
        :return: weighted average difference between audio time and master
            clock from `Player`
        r   é   r
   )
r4   r   ÚtimeÚabsÚAV_NOSYNC_THRESHOLDr   r   r   r   r   )r   Ú
audio_timeÚp_timeÚdiffÚavg_diffs        r   Úget_audio_time_diffz'AbstractAudioPlayer.get_audio_time_diffˆ   sÈ   € ð —]’]‘_”_Ð)¨ˆ
Ø”Ô!ˆØ˜FÑ"ˆÝˆt‰9Œ9tÔ/Ò/Ð/Ø"&¨Ô)<¸tÔ?WÑ)WÑ"WˆDÔØÔ(¨4Ô+AÒAÐAØÐ)Ô)¨QÑ.Ð)Ô)Ð)àÔ.°!°dÔ6NÑ2NÑOÝx‘=”= 4Ô#<Ò<Ð<Ø#Oð =ð )*ˆDÔ%Ø"%ˆDÔØˆsr   c                 ó   — dS )zSee `Player.volume`.Nr   )r   Úvolumes     r   Ú
set_volumezAbstractAudioPlayer.set_volume¤   r    r   c                 ó   — dS )z-See :py:attr:`~pyglet.media.Player.position`.Nr   )r   Úpositions     r   Úset_positionz AbstractAudioPlayer.set_position¨   r    r   c                 ó   — dS )zSee `Player.min_distance`.Nr   )r   Úmin_distances     r   Úset_min_distancez$AbstractAudioPlayer.set_min_distance¬   r    r   c                 ó   — dS )zSee `Player.max_distance`.Nr   )r   Úmax_distances     r   Úset_max_distancez$AbstractAudioPlayer.set_max_distance°   r    r   c                 ó   — dS )z*See :py:attr:`~pyglet.media.Player.pitch`.Nr   )r   Úpitchs     r   Ú	set_pitchzAbstractAudioPlayer.set_pitch´   r    r   c                 ó   — dS )zSee `Player.cone_orientation`.Nr   )r   Úcone_orientations     r   Úset_cone_orientationz(AbstractAudioPlayer.set_cone_orientation¸   r    r   c                 ó   — dS )zSee `Player.cone_inner_angle`.Nr   )r   Úcone_inner_angles     r   Úset_cone_inner_anglez(AbstractAudioPlayer.set_cone_inner_angle¼   r    r   c                 ó   — dS )zSee `Player.cone_outer_angle`.Nr   )r   Úcone_outer_angles     r   Úset_cone_outer_anglez(AbstractAudioPlayer.set_cone_outer_angleÀ   r    r   c                 ó   — dS )zSee `Player.cone_outer_gain`.Nr   )r   Úcone_outer_gains     r   Úset_cone_outer_gainz'AbstractAudioPlayer.set_cone_outer_gainÄ   r    r   c                 ó   — | j         S )zSource to play from.)Ú_sourcer   s    r   r   zAbstractAudioPlayer.sourceÈ   s   € ð Œ|Ðr   c                 ó8   — t          j        |¦  «        | _        d S ©N)r   r   r]   )r   Úvalues     r   r   zAbstractAudioPlayer.sourceÍ   s   € å”} UÑ+Ô+ˆŒˆˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r;   r   r   r"   r   r$   r'   r)   r-   r0   r2   r4   r6   r@   rC   rF   rI   rL   rO   rR   rU   rX   r[   Úpropertyr   Úsetterr   r   r   r   r   ,   sê  € € € € € ðð ð ÐàÐð(ð (ð (ð,ð ð ðð ð ð ðð ñ „^ðð ð%ð %ñ „^ð%ð ðFð Fñ „^ðFðð ð ðð ð ð ð"ð "ñ „^ð"ð ðð ñ „^ðð ðð ñ „^ððð ð ð8ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ðð ñ „Xðð „]ð,ð ,ñ „]ð,ð ,ð ,r   r   c                   óP   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚAbstractAudioDriverc                 ó   — d S r_   r   r   s      r   Úcreate_audio_playerz'AbstractAudioDriver.create_audio_playerÓ   r    r   c                 ó   — d S r_   r   r   s    r   Úget_listenerz AbstractAudioDriver.get_listener×   r    r   c                 ó   — d S r_   r   r   s    r   r)   zAbstractAudioDriver.deleteÛ   r    r   N)ra   rb   rc   r   rj   rl   r)   r   r   r   rh   rh   Ò   sc   € € € € € Øðð ñ „^ðð ðð ñ „^ðð ðð ñ „^ðð ð r   rh   )
r   r   Úabcr   r   Úpyglet.utilr   Úobjectr   rh   r   r   r   ú<module>rq      sÃ   ððH €€€Ø €€€à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à &Ð &Ð &Ð &Ð &Ð &ðc,ð c,ð c,ð c,ð c,˜.˜.¨°&Ñ9Ô9ñ c,ô c,ð c,ðLð ð ð ð ˜.˜.¨°&Ñ9Ô9ñ ô ð ð ð r   