
    ^j
$                         d dl mZ d dlmZmZmZmZ d dlZd dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ erd d	lmZmZ  ed
          Z G d de	          Z G d de          Z G d de
          ZdS )    )deque)TYPE_CHECKINGListOptionalTupleN)AbstractAudioDriverAbstractAudioPlayer
MediaEvent)AbstractListener)	interface)PlayerWorkerThread)debug_print)SourcePlayerdebug_mediac                        e Zd Zddee         ddf fdZdd
ZddZdedede	fdZ
deeef         fdZdee         fdZdede	fdZddZ xZS )OpenALDriverNdevice_namereturnc                 h   t                                                       t          j        |          | _        | j                                        | _        | j                                         t          |           | _	        t                      | _        | j                                         d S N)super__init__r   OpenALDevicedevicecreate_contextcontextmake_currentOpenALListener	_listenerr   workerstart)selfr   	__class__s     a/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/media/drivers/openal/adaptation.pyr   zOpenALDriver.__init__   s    ,[99{1133!!###'--(**    sourcer   playerr   OpenALAudioPlayerc                 F    | j         
J d            t          | ||          S NzDevice was closed)r   r)   )r#   r'   r(   s      r%   create_audio_playerz OpenALDriver.create_audio_player   s+    {&&(;&&& vv666r&   c                 n   | j         t          d          sJ d S t          d          sJ | j                                         | j                                          | j        j                                         | j                                          | j                                         d | _         d S )Nz)Duplicate OpenALDriver.delete(), ignoringzDelete OpenALDriver)	r   _debugr!   stopdelete_sourcesr   buffer_pooldeletecloser#   s    r%   r2   zOpenALDriver.delete#   s    <EFFFFFF+,,,,, 	##%%%&&(((r&   majorminorc                 6    ||f|                                  k    S r   )get_version)r#   r5   r6   s      r%   have_versionzOpenALDriver.have_version5   s    u~!1!1!3!333r&   c                 V    | j         
J d            | j                                         S r+   )r   r8   r4   s    r%   r8   zOpenALDriver.get_version8   s-    {&&(;&&&{&&(((r&   c                 V    | j         
J d            | j                                         S r+   )r   get_extensionsr4   s    r%   r<   zOpenALDriver.get_extensions<   s-    {&&(;&&&{))+++r&   	extensionc                 .    ||                                  v S r   )r<   )r#   r=   s     r%   have_extensionzOpenALDriver.have_extension@   s    D//1111r&   r   c                     | j         S r   )r    r4   s    r%   get_listenerzOpenALDriver.get_listenerC   s
    ~r&   r   )r'   r   r(   r   r   r)   r   N)r   r   )__name__
__module____qualname__r   strr   r,   r2   intboolr9   r   r8   r   r<   r?   rA   __classcell__r$   s   @r%   r   r      s       
 
HSM 
T 
 
 
 
 
 
7 7 7 7   $4# 4c 4d 4 4 4 4)U38_ ) ) ) ),S	 , , , ,2 2 2 2 2 2       r&   r   c                       e Zd ZddZdeddfdZdeeeef         ddfd	Zd
eeeef         ddfdZd
eeeef         ddfdZ	dS )r   driverr   r   Nc                 h    t          j        |          | _        t          j                    | _        d S r   )weakrefproxy_driverr   r   _al_listener)r#   rL   s     r%   r   zOpenALListener.__init__H   s*    }V,,%466r&   volumec                 ,    || j         _        || _        d S r   )rQ   gain_volumer#   rR   s     r%   _set_volumezOpenALListener._set_volumeL   s    !'r&   positionc                 ,    || j         _        || _        d S r   )rQ   rX   	_positionr#   rX   s     r%   _set_positionzOpenALListener._set_positionP   s    %-"!r&   orientationc                 <    || j         z   | j        _        || _        d S r   )_up_orientationrQ   r]   _forward_orientationr#   r]   s     r%   _set_forward_orientationz'OpenALListener._set_forward_orientationT   s#    (3d6J(J%$/!!!r&   c                 <    | j         |z   | j        _        || _        d S r   )r`   rQ   r]   r_   ra   s     r%   _set_up_orientationz"OpenALListener._set_up_orientationX   s#    (,(AK(O%*r&   )rL   r   r   N)
rC   rD   rE   r   floatrW   r   r\   rb   rd    r&   r%   r   r   G   s        7 7 7 7% D    "eE5%,?&@ "T " " " "0E%:M4N 0SW 0 0 0 0+uUE55H/I +d + + + + + +r&   r   c                   8    e Zd Zd' fd	Zd(d
Zd(dZd(dZd( fdZd(dZd(dZ	d(dZ
defdZdefdZd(dZd(dZdeddfdZdeeeef         ddfdZdeddfdZdeddfdZdeddfdZdeeeef         ddfd Zd!eddfd"Zd#eddfd$Zd%eddfd&Z xZS ))r)   rL   r   r'   r   r(   r   r   Nc                    t                                          ||           || _        |j                                        | _        d| _        d| _        d| _        d| _	        d| _
        t                      | _        d S )Nr   F)r   r   rL   r   create_sourcealsource_buffer_cursor_play_cursor_write_cursor_pyglet_source_exhausted_has_underrunr   _queued_buffer_sizes)r#   rL   r'   r(   r$   s       r%   r   zOpenALAudioPlayer.__init__^   s    (((4466     ).% # %*GG!!!r&   c                     | j         A| j        j                            |            | j                                          d | _         d S d S r   )rj   rL   r!   remover2   r4   s    r%   r2   zOpenALAudioPlayer.delete}   sJ    =$K%%d+++M  """ DMMM %$r&   c                     t          d          sJ | j        J | j        J | j        j        s| j                                         | j        j                            |            d S )NzOpenALAudioPlayer.play())r.   rL   rj   
is_playingplayr!   addr4   s    r%   ru   zOpenALAudioPlayer.play   ss    011111{&&&}(((}' 	!M   t$$$$$r&   c                     t          d          sJ | j        J | j        J | j        j                            |            | j                                         d S )NzOpenALAudioPlayer.stop())r.   rL   rj   r!   rr   pauser4   s    r%   r/   zOpenALAudioPlayer.stop   sf    011111{&&&}(((!!$'''r&   c                 j   t          d          sJ | j        J | j        J t                                                       | j                                         | j                                         d| _        d| _        d| _        d| _	        d| _
        | j                                         d S )NzOpenALAudioPlayer.clear()r   F)r.   rL   rj   r   clearr/   rk   rl   rm   rn   ro   rp   )r#   r$   s    r%   rz   zOpenALAudioPlayer.clear   s    122222{&&&}((((-%"!'')))))r&   c                     | j                                         }t          |          D ])}| xj        | j                                        z  c_        *d S r   )rj   unqueue_buffersrangerk   rp   popleft)r#   buffers_processed_s      r%   _check_processed_buffersz*OpenALAudioPlayer._check_processed_buffers   sd     M99;;()) 	G 	GA 4#<#D#D#F#FF	G 	Gr&   c                 8    | j         | j        j        z   | _        d S r   )rk   rj   byte_offsetrl   r4   s    r%   _update_play_cursorz%OpenALAudioPlayer._update_play_cursor   s     /$-2KKr&   c                    |                                   |                                  |                     | j                   | j        rT| j        sK| j        j        s?d| _        t          d          sJ t          d          
                    | j                   d S |                                 }|r'| j        j        s| j                                         d S d S d S )NTz"OpenALAudioPlayer: Dispatching eoson_eos)r   r   dispatch_media_eventsrl   rn   ro   rj   rt   r.   r
   sync_dispatch_to_playerr(   _maybe_refillru   )r#   refilleds     r%   workzOpenALAudioPlayer.work   s    %%'''  """""4#4555( 	% Jdm.F J%)"BCCCCC8$$<<T[IIIF%%'' 	!DM4 	! M     	! 	! 	! 	!r&   c                     | j         rdS | j        | j        z
  }|| j        k    rdS | j        |z
  }|                     | j        j                            |                     dS )NFT)	rn   rm   rl    _buffered_data_comfortable_limit_buffered_data_ideal_size_refillr'   audio_format
align_ceil)r#   remaining_bytesmissing_bytess      r%   r   zOpenALAudioPlayer._maybe_refill   sl    ( 	5,t/@@dCCC56HT[-88GGHHHtr&   c                     | j         S r   )rl   r4   s    r%   get_play_cursorz!OpenALAudioPlayer.get_play_cursor   s      r&   c                    |                      || j                  }|	d| _        d S |                     | j        |j                   | j                                        }|                    || j	        j
                   | j                            |           | xj        |j        z  c_        | j                            |j                   d S )NT)_get_and_compensate_audio_datarl   rn   append_eventsrm   eventsrj   
get_bufferdatar'   r   queue_bufferlengthrp   append)r#   refill_size
audio_databufs       r%   r   zOpenALAudioPlayer._refill   s    88dFWXX
,0D)F 	4-z/@AAA m&&((T[5666""3''' 	j//!(():;;;;;r&   c                 .    |                                   d S r   )r   r4   s    r%   prefill_audiozOpenALAudioPlayer.prefill_audio   s    r&   rR   c                     || j         _        d S r   )rj   rT   rV   s     r%   
set_volumezOpenALAudioPlayer.set_volume   s    #r&   rX   c                     || j         _        d S r   )rj   rX   r[   s     r%   set_positionzOpenALAudioPlayer.set_position   s    !)r&   min_distancec                     || j         _        d S r   )rj   reference_distance)r#   r   s     r%   set_min_distancez"OpenALAudioPlayer.set_min_distance   s    +7(((r&   max_distancec                     || j         _        d S r   )rj   r   )r#   r   s     r%   set_max_distancez"OpenALAudioPlayer.set_max_distance   s    %1"""r&   pitchc                     || j         _        d S r   )rj   r   )r#   r   s     r%   	set_pitchzOpenALAudioPlayer.set_pitch   s    #r&   cone_orientationc                     || j         _        d S r   )rj   	direction)r#   r   s     r%   set_cone_orientationz&OpenALAudioPlayer.set_cone_orientation   s    "2r&   cone_inner_anglec                     || j         _        d S r   )rj   r   )r#   r   s     r%   set_cone_inner_anglez&OpenALAudioPlayer.set_cone_inner_angle       )9&&&r&   cone_outer_anglec                     || j         _        d S r   )rj   r   )r#   r   s     r%   set_cone_outer_anglez&OpenALAudioPlayer.set_cone_outer_angle   r   r&   cone_outer_gainc                     || j         _        d S r   )rj   r   )r#   r   s     r%   set_cone_outer_gainz%OpenALAudioPlayer.set_cone_outer_gain   s    (7%%%r&   )rL   r   r'   r   r(   r   r   NrB   )rC   rD   rE   r   r2   ru   r/   rz   r   r   r   rH   r   rG   r   r   r   re   r   r   r   r   r   r   r   r   r   r   rI   rJ   s   @r%   r)   r)   ]   s       , , , , , ,>! ! ! !% % % %   * * * * * * G G G GL L L L! ! ! !&
t 
 
 
 
! ! ! ! !< < < <&   $ $4 $ $ $ $*U5%+>%? *D * * * *8U 8t 8 8 8 82U 2t 2 2 2 2$u $ $ $ $ $3U5%;N5O 3TX 3 3 3 3:U :t : : : ::U :t : : : :85 8T 8 8 8 8 8 8 8 8r&   r)   )collectionsr   typingr   r   r   r   rN   pyglet.media.drivers.baser   r	   r
   pyglet.media.drivers.listenerr   pyglet.media.drivers.openalr   !pyglet.media.player_worker_threadr   pyglet.utilr   pyglet.mediar   r   r.   r   r   r)   rf   r&   r%   <module>r      sq         7 7 7 7 7 7 7 7 7 7 7 7  Z Z Z Z Z Z Z Z Z Z : : : : : : 1 1 1 1 1 1 @ @ @ @ @ @ # # # # # # ,++++++++ 
]	#	#2 2 2 2 2& 2 2 2j+ + + + +% + + +,c8 c8 c8 c8 c8+ c8 c8 c8 c8 c8r&   