
    ^j                        d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$  G d d          Z% G d d	e          Z& G d
 de#          Z'd Z(d Z)dS )    )
memmovebyrefc_uint32sizeofcastc_void_pcreate_string_bufferPOINTERc_charc_long)cfCFSTR)kCFURLPOSIXPathStyleAudioStreamBasicDescriptioncaExtAudioFileRef$kExtAudioFileProperty_FileDataFormatkAudioFormatLinearPCMkAudioFormatFlagIsSignedIntegerkAudioFormatFlagIsPacked&kExtAudioFileProperty_ClientDataFormatAudioFile_ReadProcAudioFile_GetSizeProcAudioBufferList&kExtAudioFileProperty_FileLengthFramesAudioFileID	err_check)StreamingSourceStaticSource)AudioFormatMediaDecoder	AudioDatac                       e Zd Zd ZdS )MemoryFileObjectc                     | _         t           j         dd           rt           j         dd           st          d           j                             dd            j                                          _         j                             d           g  _         fd} fd}t          |           _        t          |           _
        d S )Nseektellz%File object does not support seeking.r      c                     j                             |           j                             |          }t          |          }t	          |||           ||j        _        dS )Nr   )filer&   readlenr   contentsvalue)refoffsetrequested_lengthbufferactual_countdata	data_sizeselfs          X/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/media/codecs/coreaudio.pyread_data_cbz/MemoryFileObject.__init__.<locals>.read_data_cb   sX    INN6"""9>>"233DD		IFD),,,*3L!'1    c                     j         S N)	file_size)r/   r6   s    r7   
getsize_cbz-MemoryFileObject.__init__.<locals>.getsize_cb#   s    >!r9   )r*   getattr	Exceptionr&   r'   r<   r4   r   getsize_funcr   	read_func)r6   r*   r8   r=   s   `   r7   __init__zMemoryFileObject.__init__   s    	ty&$// 	Ewty&RV7W7W 	ECDDD 		q!))	q		 	 	 	 		" 	" 	" 	" 	" 2*==+L99r9   N)__name__
__module____qualname__rB    r9   r7   r$   r$      s#        : : : : :r9   r$   c                   B    e Zd Zd	dZed
d            Zd ZddZd ZdS )CoreAudioSourceNc                 p   d | _         || _        d| _        d | _        d | _        d | _        t                      }|ot          |          }t          j	        d |t          d          }t          t          j        |t          |                               t          j        |           nt!          |          | _        t%                      | _        t          t          j        d | j        j        d | j        j        d dt          | j                                       t          t          j        | j        dt          |                               || _        t/                      }t1          t3          |                    }t          t          j        | j        t6          t          |          t          |                               |                     |          | _        t          t          j        | j        t>          t3          | j                  t          | j                                       tA                      }t1          t3          |                    }t          t          j        | j        tB          t          |          t          |                               tE          | j        j#        | j        j$        tK          | j        j&                            | _'        |j(        | _)        | j        j*        | _+        | j)        | j        j&        z  | _,        | j,        | j)        z  | _-        d S )NFr   )channelssample_sizesample_rate)._bl_file_deleted	_file_obj_audfile_audrefr   r   r   CFURLCreateWithFileSystemPathr   r   r   ExtAudioFileOpenURLr   	CFReleaser$   file_objr   AudioFileOpenWithCallbacksrA   r@   ExtAudioFileWrapAudioFileIDr   r   r   ExtAudioFileGetPropertyr   convert_formatconvert_descExtAudioFileSetPropertyr   r   r   r    mChannelsPerFramemBitsPerChannelintmSampleRateaudio_formatr.   _num_framesmBytesPerFrame_bytes_per_frame	_duration_duration_per_frame)	r6   filenamer*   audreffn_strurl_refformat_infosizelengths	            r7   rB   zCoreAudioSource.__init__+   s   
 ""<8__F6tVEY[`aaGb,WeFmmDDEEEL    ,T22DM'MMDMb3dm-tT]5OQUdm$$& &    b4T]E5QW==YYZZZ133{++,,",T\-Q-24[[-2;-?-?A A 	B 	B 	B
 !//<<",L24$%%$#$$	
 
 	 	 	 {++,,",L2$KK&MM	
 
 	 	 	 (1B1T484E4U478I8U4V4VX X X "< $ 1 @)D,=,II#'>D4D#D   r9      c                     t                      }| j        |_        t          |_        t          t
          z  |_        | j        |_        ||_        | j        |j        z  dz  |_	        d|_
        |j	        |_        |S )N      )r   r`   r   	mFormatIDr   r   mFormatFlagsr]   r^   mBytesPerPacketmFramesPerPacketrc   )original_descbitdepthadescs      r7   rZ   zCoreAudioSource.convert_formatl   sq    +--)5/<?WW"/"A ( - ?%BW W[\ \!"$4r9   c                 (   | j         r | j                                          d | _         | j        r-t          t	          j        | j                             d | _        | j        r/t          t	          j        | j                             d | _        d S d S r;   )rN   closerQ   r   r   AudioFileCloserR   ExtAudioFileDisposer6   s    r7   __del__zCoreAudioSource.__del__y   s    : 	JDJ= 	!b'66777 DM< 	 b,T\::;;;DLLL	  	 r9           c                    t          || j        j        z            }| j        st	          |          }t                      | _        d| j        _        | j        j        | j        j        d         _	        || j        j        d         _
        t          |t                    | j        j        d         _        	 t          j        | j        t#          |          t#          | j                             | j        j        d         j
        }|snat          | j        j        d         j        t%          t&                              }|d |         }t)          ||d|| j        j        z  g           S d S )Nrq   r   Tr   )r   r[   rc   rM   r	   r   mNumberBuffersr]   mBuffersmNumberChannelsmDataByteSizer   r   mDatar   ExtAudioFileReadrR   r   r
   r   r"   ra   rL   )r6   	num_bytescompensation_time
num_framesr2   rl   r4   slices           r7   get_audio_datazCoreAudioSource.get_audio_data   s/   i4+<+KKLL
x 	@))44F&((DH&'DH#373D3VDHa 01:DHa .)-fh)?)?DHa &		YeJ.?.?txQQQ8$Q'5D )!,2GFOODDD$KEUD#td6G6S/SUWXXXtr9   c                     d | _         t          dt          || j                            }t	          || j        z            }t          j        | j        |           d S )Nr   )	rM   maxminre   r_   rf   r   ExtAudioFileSeekrR   )r6   	timestamppositions      r7   r&   zCoreAudioSource.seek   sT    SDN;;<<	y4#;;<<
DL(33333r9   r;   )rn   )r   )	rC   rD   rE   rB   staticmethodrZ   r~   r   r&   rF   r9   r7   rH   rH   *   s        ?E ?E ?E ?EB 
 
 
 \
        04 4 4 4 4r9   rH   c                       e Zd Zd ZddZdS )CoreAudioDecoderc                     dS )N)z.aacz.ac3z.aifz.aiffz.aifcz.cafz.mp3z.mp4z.m4az.sndz.auz.sd2z.wavrF   r}   s    r7   get_file_extensionsz$CoreAudioDecoder.get_file_extensions   s    vvr9   Tc                 `    |rt          ||          S t          t          ||                    S r;   )rH   r   )r6   rg   r*   	streamings       r7   decodezCoreAudioDecoder.decode   s3     	A"8T222$ ? ?@@@r9   N)T)rC   rD   rE   r   r   rF   r9   r7   r   r      s@        w w wA A A A A Ar9   r   c                       t                      gS r;   )r   rF   r9   r7   get_decodersr      s    r9   c                      g S r;   rF   rF   r9   r7   get_encodersr      s    Ir9   N)*ctypesr   r   r   r   r   r   r	   r
   r   r   pyglet.libs.darwinr   r   pyglet.libs.darwin.coreaudior   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pyglet.mediar   r   pyglet.media.codecsr    r!   r"   r$   rH   r   r   r   rF   r9   r7   <module>r      sP                          ) ( ( ( ( ( ( (k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k 7 6 6 6 6 6 6 6 D D D D D D D D D D: : : : : : : ::x4 x4 x4 x4 x4o x4 x4 x4~	A 	A 	A 	A 	A| 	A 	A 	A         r9   