Ë
    ÛÍ:j¼  ã                   ó  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
  e j                  e e«       «      Ze j                  defd„«       Zd	d	d
d
dddddddœ
Ze j$                  e j&                   G d„ de«      «       «       Zy)é    N)Úget_audio_format)Úget_audio_layout)Ú
AudioPlane)Ú	err_check)Úcheck_ndarrayÚreturnc                  ó    — t        t        «      S ©N)Ú
AudioFrameÚ_cinit_bypass_sentinel© ó    úc/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/audio/frame.pyÚalloc_audio_framer      s   € äÔ,Ó-Ð-r   Úf8Úf4Úi2Úi4Úu1)
ÚdblÚdblpÚfltÚfltpÚs16Ús16pÚs32Ús32pÚu8Úu8pc            	       ón  — e Zd ZdZdd„Zej                  dej                  dej                  dej                  dej                  fd„«       Zd„ Zej                  d	„ «       Zd
„ Zedd„«       Zed„ «       Zed„ «       Zed„ «       Zej*                  d„ «       Zed„ «       Zej*                  d„ «       Zd„ Zy)r   zA frame of audio.c                 ó’   — |t         u ry t        |«      }t        |«      }| j                  |j                  |j
                  ||«       y r
   )r   ÚAudioFormatÚAudioLayoutÚ_initÚ
sample_fmtÚlayout)ÚselfÚformatr&   ÚsamplesÚalignÚ	cy_formatÚ	cy_layouts          r   Ú	__cinit__zAudioFrame.__cinit__#   s@   € ØÔ+Ñ+Øä!,¨VÓ!4ˆ	Ü!,¨VÓ!4ˆ	Ø�
‰
�9×'Ñ'¨×)9Ñ)9¸7ÀEÕJr   r(   r&   Ú
nb_samplesr*   c           
      óœ  — || j                   _        || j                   _        || j                   _        | j	                  «        | j
                  j                  dk7  �ro|�rkt        j                  t        j                  | j                  «      «       t        t        j                  t        j                  | j
                  j                  |||«      «      | _        t        j                   t        j"                  t$           t        j'                  | j                  «      «      | _        | j                  st)        d«      ‚t        t        j+                  | j                   | j
                  j                  t        j                   t        j,                  | j                   j                  «      | j                  | j                  |«      «       y y y )Nr   z!cannot allocate AudioFrame buffer)Úptrr.   r(   Ú	ch_layoutÚ_init_user_attributesr&   Únb_channelsÚlibÚav_freepÚcythonÚaddressÚ_bufferr   Úav_samples_get_buffer_sizeÚNULLÚ_buffer_sizeÚcastÚpointerÚuint8_tÚ	av_mallocÚMemoryErrorÚavcodec_fill_audio_frameÚAVSampleFormat)r'   r(   r&   r.   r*   s        r   r$   zAudioFrame._init+   s?  € ð )ˆ�‰ÔØ ˆ�‰ŒØ#ˆ�‰Ôð 	×"Ñ"Ô$à�;‰;×"Ñ" aÓ'ªJä�L‰LœŸ™¨¯©Ó5Ô6ô !*Ü×.Ñ.Ü—K‘K §¡×!8Ñ!8¸*ÀfÈeóó!ˆDÔô
 "Ÿ;™;Ü—‘œwÑ'¬¯©°t×7HÑ7HÓ)IóˆDŒLð —<’<Ü!Ð"EÓFÐFô Ü×,Ñ,Ø—H‘HØ—K‘K×+Ñ+Ü—K‘K¤× 2Ñ 2°D·H±H·O±OÓDØ—L‘LØ×%Ñ%Øóõ	ð# -7Ð'r   c                 óh   — t         j                  t        j                  | j                  «      «       y r
   )r4   r5   r6   r7   r8   ©r'   s    r   Ú__dealloc__zAudioFrame.__dealloc__V   s   € Ü�‰”V—^‘^ D§L¡LÓ1Õ2r   c                 óØ   — t        | j                  j                  «      | _        t	        t        j                  t        j                  | j                  j                  «      «      | _	        y r
   )
r   r0   r1   r&   r   r6   r<   r4   rB   r(   rD   s    r   r2   z AudioFrame._init_user_attributesY   s=   € ä& t§x¡x×'9Ñ'9Ó:ˆŒÜ&¤v§{¡{´3×3EÑ3EÀtÇxÁxÇÁÓ'WÓXˆ�r   c                 óú   — d| j                   j                  › d| j                  › d| j                  › d| j                  › d| j
                  j                  › d| j                  j                  › dt        | «      d›d�S )	Nz<av.z pts=z, z samples at zHz, z at 0xÚxú>)	Ú	__class__Ú__name__Úptsr)   Úrater&   Únamer(   ÚidrD   s    r   Ú__repr__zAudioFrame.__repr__^   sx   € à�4—>‘>×*Ñ*Ð+¨5°·±°
¸"¸T¿\¹\¸Nð KØŸ)™)˜ D¨¯©×)9Ñ)9Ð(:¸"¸T¿[¹[×=MÑ=MÐ<NÈfÔUWÐX\ÓU]Ð^_ÐT`Ð`aðcð	
r   c                 óÖ  — ddl }t        |t        «      r|n
t        |«      }t        |t        «      r|n
t        |«      }|j                  }	 |j                  t        |   «      }|j                  }t        | |d«       |j                  rA| j                  d   |k7  rt        d|› d| j                  d   › d�«      ‚| j                  d	   }n@| j                  d   d	k7  rt        d
| j                  d   › d�«      ‚| j                  d	   |z  }t        |||¬«      }	t        |	j                  «      D ]  \  }
}|j!                  | |
dd…f   «       Œ |	S # t        $ r t        d|› d�«      ‚w xY w)z7
        Construct a frame from a numpy array.
        r   Nz)Conversion from numpy array with format `z` is not yet supportedé   z+Expected planar `array.shape[0]` to equal `z` but got `ú`é   z7Expected packed `array.shape[0]` to equal `1` but got `)r(   r&   r)   )ÚnumpyÚ
isinstancer"   r#   rN   ÚdtypeÚformat_dtypesÚKeyErrorÚ
ValueErrorr3   r   Ú	is_planarÚshaper   Ú	enumerateÚplanesÚupdate)Úarrayr(   r&   ÚnpÚ	py_formatÚ	py_layoutrW   r3   r)   ÚframeÚiÚplanes               r   Úfrom_ndarrayzAudioFrame.from_ndarrayd   sw  € ó
 	ä(¨´Ô=‘FÄ;ÈvÓCVˆ	Ü(¨´Ô=‘FÄ;ÈvÓCVˆ	Ø—‘ˆð	Ø—H‘Hœ]¨6Ñ2Ó3ˆEð  ×+Ñ+ˆÜ�e˜U AÔ&Ø×ÒØ�{‰{˜1‰~ Ò,Ü ØAÀ+ÀÈkÐZ_×ZeÑZeÐfgÑZhÐYiÐijÐkóð ð —k‘k !‘n‰Gà�{‰{˜1‰~ Ò"Ü ØMÈeÏkÉkÐZ[ÉnÐM]Ð]^Ð_óð ð —k‘k !‘n¨Ñ3ˆGä )°IÀwÔOˆÜ! %§,¡,Ó/ò 	&‰HˆAˆuØ�L‰L˜˜q¢!˜t™Õ%ð	&àˆøô1 ò 	ÜØ;¸F¸8ÐCYÐZóð ð	ús   ÁE ÅE(c           	      óØ   — d}| j                   j                  |   r|dz  }| j                   j                  |   rŒt        t        |«      D �cg c]  }t	        | |«      ‘Œ c}«      S c c}w )zW
        A tuple of :class:`~av.audio.plane.AudioPlane`.

        :type: tuple
        r   rT   )r0   Úextended_dataÚtupleÚranger   )r'   Úplane_countre   s      r   r^   zAudioFrame.planesŒ   s`   € ð #$ˆØ�h‰h×$Ñ$ [Ò1Ø˜1ÑˆKð �h‰h×$Ñ$ [Ó1ô ´5¸Ó3EÖF¨a”j  qÕ)ÒFÓGÐGùÒFs   ÁA'c                 ó.   — | j                   j                  S )zL
        Number of audio samples (per channel).

        :type: int
        )r0   r.   rD   s    r   r)   zAudioFrame.samples™   s   € ð �x‰x×"Ñ"Ð"r   c                 ó.   — | j                   j                  S )z[
        Sample rate of the audio data, in samples per second.

        :type: int
        ©r0   Úsample_raterD   s    r   rp   zAudioFrame.sample_rate¢   s   € ð �x‰x×#Ñ#Ð#r   c                 ó&   — || j                   _        y r
   ro   ©r'   Úvalues     r   rp   zAudioFrame.sample_rate«   ó   € à$ˆ�‰Õr   c                 ó.   — | j                   j                  S )z%Another name for :attr:`sample_rate`.ro   rD   s    r   rM   zAudioFrame.rate¯   s   € ð �x‰x×#Ñ#Ð#r   c                 ó&   — || j                   _        y r
   ro   rr   s     r   rM   zAudioFrame.rate´   rt   r   c           
      óÐ  — ddl }	 |j                  t        | j                  j                     «      }| j                  j                  r| j                  }n#| j                  | j                  j                  z  }|j                  | j                  D �cg c]  }|j                  |||¬«      ‘Œ c}«      S # t
        $ r$ t        d| j                  j                  ›d�«      ‚w xY wc c}w )zVGet a numpy array of this frame.

        .. note:: Numpy must be installed.

        r   NzConversion from z( format to numpy array is not supported.)rW   Úcount)rU   rW   rX   r(   rN   rY   rZ   r[   r)   r&   r3   Úvstackr^   Ú
frombuffer)r'   ra   rW   rx   rH   s        r   Ú
to_ndarrayzAudioFrame.to_ndarray¸   sÆ   € ó 	ð	Ø—H‘Hœ]¨4¯;©;×+;Ñ+;Ñ<Ó=ˆEð �;‰;× Ò Ø—L‘L‰Eà—L‘L 4§;¡;×#:Ñ#:Ñ:ˆEà�y‰yØAEÇÁÖM¸AˆR�]‰]˜1 E°ˆ]Õ7ÒMó
ð 	
øô ò 	ÜØ" 4§;¡;×#3Ñ#3Ð"6Ð6^Ð_óð ð	üò Ns   †,B3 ÂC#Â3-C N)r   Ústereor   rT   )r   r|   )rK   Ú
__module__Ú__qualname__Ú__doc__r-   r6   Úcfuncr4   rB   ÚAVChannelLayoutÚuintr$   rE   r2   rP   Ústaticmethodrg   Úpropertyr^   r)   rp   ÚsetterrM   r{   r   r   r   r   r      s"  „ ñ óKð ‡\�\ð(à×"Ñ"ð(ð ×#Ñ#ð(ð —K‘Kð	(ð
 �{‰{ò(ó ð(òT3ð ‡\�\ñYó ðYò
ð ò%ó ð%ðN ñ
Hó ð
Hð ñ#ó ð#ð ñ$ó ð$ð ×Ññ%ó ð%ð ñ$ó ð$ð 
‡[�[ñ%ó ð%ó
r   r   )r6   Úcython.cimports.av.audio.formatr   Úcython.cimports.av.audio.layoutr   Úcython.cimports.av.audio.planer   Úcython.cimports.av.errorr   Úcython.cimports.av.utilsr   ÚdeclareÚobjectr   r€   r   r   rX   ÚfinalÚcclassÚFramer   r   r   ú<module>r�      s    ðÛ Ý <Ý <Ý 5Ý .Ý 2à'˜Ÿ™¨±³Ó9Ð ð ‡�ð.˜:ò .ó ð.ð
 ØØØØØØØØ
Øñ€ð ‡�Ø‡�ôn
�ó n
ó ó ñn
r   