Ë
    ÖÉ�jÞ  ã                   óB  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ dZd	Zd
Z ej*                  de«      Zdedej*                  dej*                  defd„Z G d„ de«      Z G d„ dee¬«      Z G d„ de«      Z G d„ de«      Zy)é    N)ÚABCMetaÚabstractmethod)ÚUnion)Ú
AudioFrameÚ
VideoFrame)ÚFrame)ÚPacket)ÚAsyncIOEventEmitterg{®Gáz”?i�_ g¡?é   ÚptsÚ	from_baseÚto_baseÚreturnc                 ó2   — ||k7  rt        | |z  |z  «      } | S )N)Úint)r   r   r   s      úT/home/uftp/webrtc-recorder/.venv/lib/python3.12/site-packages/aiortc/mediastreams.pyÚconvert_timebaser      s$   € ð �GÒÜ�#˜	‘/ GÑ+Ó,ˆØ€Jó    c                   ó   — e Zd Zy)ÚMediaStreamErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r      s   „ Ør   r   c                   ó|   ‡ — e Zd ZdZdZd	ˆ fd„Zedefd„«       Zedefd„«       Z	e
deeef   fd„«       Zd	d„Zˆ xZS )
ÚMediaStreamTrackz/
    A single media track within a stream.
    Úunknownr   c                 ót   •— t         ‰| �  «        d| _        t        t	        j
                  «       «      | _        y )NF)ÚsuperÚ__init__Ú_MediaStreamTrack__endedÚstrÚuuidÚuuid4Ú_id)ÚselfÚ	__class__s    €r   r    zMediaStreamTrack.__init__&   s'   ø€ Ü‰ÑÔØˆŒÜ”t—z‘z“|Ó$ˆ�r   c                 ó   — | j                   S )z@
        An automatically generated globally unique ID.
        )r%   ©r&   s    r   ÚidzMediaStreamTrack.id+   s   € ð
 �x‰xˆr   c                 ó"   — | j                   rdS dS )NÚendedÚlive)r!   r)   s    r   Ú
readyStatezMediaStreamTrack.readyState2   s   € àŸ,š,ˆwÐ2¨FÐ2r   c              ƒ   ó   K  — y­w)z‘
        Receive the next :class:`~av.audio.frame.AudioFrame`,
        :class:`~av.video.frame.VideoFrame` or :class:`~av.packet.Packet`
        Nr   r)   s    r   ÚrecvzMediaStreamTrack.recv6   s   è ø� ùs   ‚c                 ón   — | j                   s)d| _         | j                  d«       | j                  «        y y )NTr,   )r!   ÚemitÚremove_all_listenersr)   s    r   ÚstopzMediaStreamTrack.stop=   s/   € Ø�|Š|ØˆDŒLØ�I‰I�gÔð ×%Ñ%Õ'ð r   )r   N)r   r   r   Ú__doc__Úkindr    Úpropertyr"   r*   r.   r   r   r   r	   r0   r4   Ú__classcell__)r'   s   @r   r   r      ss   ø„ ñð €Dõ%ð
 ð�Cò ó ðð ð3˜Cò 3ó ð3ð ð˜E %¨ -Ñ0ò ó ð÷(r   r   )Ú	metaclassc                   ó6   — e Zd ZU dZdZeed<   eed<   defd„Z	y)ÚAudioStreamTrackz2
    A dummy audio track which reads silence.
    ÚaudioÚ_startÚ
_timestampr   c              ƒ   óp  K  — | j                   dk7  rt        ‚d}t        t        |z  «      }t	        | d«      rd| xj
                  |z  c_        | j                  | j
                  |z  z   t        j                  «       z
  }t        j                  |«      ƒ d{  –—†  n t        j                  «       | _        d| _        t        dd|¬«      }|j                  D ]&  }|j                  t        |j                  «      «       Œ( | j
                  |_        ||_        t#        j$                  d	|«      |_        |S 7 Œ�­w)
zË
        Receive the next :class:`~av.audio.frame.AudioFrame`.

        The base implementation just reads silence, subclass
        :class:`AudioStreamTrack` to provide a useful implementation.
        r-   i@  r>   Nr   Ús16Úmono)ÚformatÚlayoutÚsamplesr   )r.   r   r   ÚAUDIO_PTIMEÚhasattrr>   r=   ÚtimeÚasyncioÚsleepr   ÚplanesÚupdateÚbytesÚbuffer_sizer   Úsample_rateÚ	fractionsÚFractionÚ	time_base)r&   rN   rD   ÚwaitÚframeÚps         r   r0   zAudioStreamTrack.recvQ   sõ   è ø€ ð �?‰?˜fÒ$Ü"Ð"àˆÜ”k KÑ/Ó0ˆä�4˜Ô&Ø�OŠO˜wÑ&�OØ—;‘; $§/¡/°KÑ"?Ñ@Ä4Ç9Á9Ã;ÑNˆDÜ—-‘- Ó%×%Ñ%äŸ)™)›+ˆDŒKØˆDŒOä %°ÀÔHˆØ—‘ò 	+ˆAØ�H‰H”U˜1Ÿ=™=Ó)Õ*ð	+à—O‘OˆŒ	Ø'ˆÔÜ#×,Ñ,¨Q°Ó<ˆŒØˆð &ús   ‚BD6ÂD4ÂBD6N)
r   r   r   r5   r6   ÚfloatÚ__annotations__r   r   r0   r   r   r   r;   r;   G   s$   … ñð €DàƒMØƒOð˜Eô r   r;   c                   ó`   — e Zd ZU dZdZeed<   eed<   deee	j                  f   fd„Zdefd„Zy)	ÚVideoStreamTrackz7
    A dummy video track which reads green frames.
    Úvideor=   r>   r   c              ƒ   ó¬  K  — | j                   dk7  rt        ‚t        | d«      r|| xj                  t	        t
        t        z  «      z  c_        | j                  | j                  t        z  z   t        j                  «       z
  }t        j                  |«      ƒ d {  –—†  n t        j                  «       | _        d| _        | j                  t        fS 7 Œ7­w)Nr-   r>   r   )r.   r   rF   r>   r   ÚVIDEO_PTIMEÚVIDEO_CLOCK_RATEr=   rG   rH   rI   ÚVIDEO_TIME_BASE)r&   rR   s     r   Únext_timestampzVideoStreamTrack.next_timestampy   s˜   è ø€ Ø�?‰?˜fÒ$Ü"Ð"ä�4˜Ô&Ø�OŠOœs¤;Ô1AÑ#AÓBÑB�OØ—;‘; $§/¡/Ô4DÑ"DÑEÌÏ	É	ËÑSˆDÜ—-‘- Ó%×%Ñ%äŸ)™)›+ˆDŒKØˆDŒOØ�‰¤Ð/Ð/ð	 &ús   ‚BCÂCÂ8Cc              ƒ   óè   K  — | j                  «       ƒ d{  –—† \  }}t        dd¬«      }|j                  D ]&  }|j                  t	        |j
                  «      «       Œ( ||_        ||_        |S 7 ŒY­w)zâ
        Receive the next :class:`~av.video.frame.VideoFrame`.

        The base implementation just reads a 640x480 green frame at 30fps,
        subclass :class:`VideoStreamTrack` to provide a useful implementation.
        Ni€  ià  )ÚwidthÚheight)r^   r   rJ   rK   rL   rM   r   rQ   )r&   r   rQ   rS   rT   s        r   r0   zVideoStreamTrack.recv†   si   è ø€ ð  $×2Ñ2Ó4×4‰ˆˆYä ¨SÔ1ˆØ—‘ò 	+ˆAØ�H‰H”U˜1Ÿ=™=Ó)Õ*ð	+àˆŒ	Ø#ˆŒØˆð 5ús   ‚A2–A0—AA2N)r   r   r   r5   r6   rU   rV   r   ÚtuplerO   rP   r^   r   r0   r   r   r   rX   rX   o   s@   … ñð €DàƒMØƒOð0 e¨C°×1CÑ1CÐ,CÑ&Dó 0ð˜Eô r   rX   )rH   rO   rG   r#   Úabcr   r   Útypingr   Úavr   r   Úav.framer   Ú	av.packetr	   Úpyee.asyncior
   rE   r\   r[   rP   r]   r   r   Ú	Exceptionr   r   r;   rX   r   r   r   ú<module>rj      s°   ðÛ Û Û Û ß 'Ý ç %Ý Ý Ý ,à€ØÐ Ø€Ø$�)×$Ñ$ QÐ(8Ó9€ðØ	ðØ"×+Ñ+ðØ6?×6HÑ6Hðàóô	�yô 	ô%(Ð*°gõ %(ôP%Ð'ô %ôP%Ð'õ %r   