§
    ÜóÉjm  ã                   óz   — d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
 e j         G d„ d¦  «        ¦   «         ZdS )é    N)Ú	err_check)Úopaque_container)Úavdict_to_dictÚavrational_to_fractionÚto_avrational)ÚSideDataContainerc                   óx  — e Zd ZdZd„ Zd„ Zd„ Zej        dde	dej
        fd„¦   «         Zej        d	„ ¦   «         Zej        d
ej        fd„¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Ze ej        d¦  «        d„ ¦   «         ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zej        d„ ¦   «         ZdS )ÚFramez‹
    Base class for audio and video frames.

    See also :class:`~av.audio.frame.AudioFrame` and :class:`~av.video.frame.VideoFrame`.
    c                 óŒ   — t           j        5  t                               ¦   «         | _        d d d ¦  «         d S # 1 swxY w Y   d S ©N)ÚcythonÚnogilÚlibÚav_frame_allocÚptr)ÚselfÚargsÚkwargss      úm/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/av/frame.pyÚ	__cinit__zFrame.__cinit__   s�   € ÝŒ\ð 	,ð 	,Ý×)Ò)Ñ+Ô+ˆDŒHð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   �9¹=Á =c                 ó²   — t           j        5  t                               t          j        | j        ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )r   r   r   Úav_frame_freeÚaddressr   ©r   s    r   Ú__dealloc__zFrame.__dealloc__   sŽ   € ÝŒ\ð 	8ð 	8Ý×Ò�fœn¨T¬XÑ6Ô6Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   �2AÁAÁAc                 óT   — d| j         j        › d| j        › dt          | ¦  «        d›d�S )Nz<av.z pts=z at 0xÚxú>)Ú	__class__Ú__name__ÚptsÚidr   s    r   Ú__repr__zFrame.__repr__   s3   € ØQ�d”nÔ-ÐQÐQ°D´HÐQÐQÅBÀtÁHÄHÐQÐQÐQÐQÐQó    TÚsourceÚdata_layoutc                 ó   — |j         | _         t                               | j        |j        ¦  «         |rZ|j        j        | j        _        |j        j        | j        _        |j        j        | j        _        |j        j        | j        _        d S d S r   )Ú
_time_baser   Úav_frame_copy_propsr   ÚformatÚwidthÚheightÚ	ch_layout)r   r%   r&   s      r   Ú_copy_internal_attributeszFrame._copy_internal_attributes    sy   € ð !Ô+ˆŒÝ×Ò ¤¨&¬*Ñ5Ô5Ð5Øð 	6à$œjÔ/ˆDŒHŒOØ#œZÔ-ˆDŒHŒNØ$œjÔ/ˆDŒHŒOØ!'¤Ô!5ˆDŒHÔÐÐð	6ð 	6r$   c                 ó   — d S r   © r   s    r   Ú_init_user_attributeszFrame._init_user_attributes,   s   € àˆr$   Údstc                 óê  — |j         st          d¦  «        ‚| j        j         s	|| _        d S | j        j         |j         k    r| j        j        |j        k    rd S | j        j        t          j        k    r5t                               | j        j        | j        |¦  «        | j        _        | j        j	        dk    r5t                               | j        j	        | j        |¦  «        | j        _	        || _        d S )NzCannot rebase to zero time.r   )
ÚnumÚ
ValueErrorr(   Údenr   r!   r   ÚAV_NOPTS_VALUEÚav_rescale_qÚduration)r   r2   s     r   Ú_rebase_timezFrame._rebase_time0   sÔ   € àŒwð 	<ÝÐ:Ñ;Ô;Ð;àŒÔ"ð 	Ø!ˆDŒOØˆFàŒ?Ô #¤'Ò)Ð)¨d¬oÔ.AÀSÄWÒ.LÐ.LØˆFàŒ8Œ<�3Ô-Ò-Ð-Ý×+Ò+¨D¬H¬L¸$¼/È3ÑOÔOˆDŒHŒLàŒ8Ô Ò!Ð!Ý #× 0Ò 0Ø”Ô! 4¤?°Cñ!ô !ˆDŒHÔð ˆŒˆˆr$   c                 óR   — | j         j        t          j        k    rdS | j         j        S )aL  
        The decoding timestamp copied from the :class:`~av.packet.Packet` that triggered returning this frame in :attr:`time_base` units.

        (if frame threading isn't used) This is also the Presentation time of this frame calculated from only :attr:`.Packet.dts` values without pts values.

        :type: int | None
        N)r   Úpkt_dtsr   r7   r   s    r   Údtsz	Frame.dtsF   s'   € ð Œ8Ô�sÔ1Ò1Ð1Ø�4ØŒxÔÐr$   c                 óR   — |€t           j        | j        _        d S || j        _        d S r   )r   r7   r   r<   ©r   Úvalues     r   r=   z	Frame.dtsS   s*   € àˆ=Ý"Ô1ˆDŒHÔÐÐà$ˆDŒHÔÐÐr$   c                 óR   — | j         j        t          j        k    rdS | j         j        S )z¼
        The presentation timestamp in :attr:`time_base` units for this frame.

        This is the time at which the frame should be shown to the user.

        :type: int | None
        N)r   r!   r   r7   r   s    r   r!   z	Frame.ptsZ   s%   € ð Œ8Œ<�3Ô-Ò-Ð-Ø�4ØŒxŒ|Ðr$   c                 óR   — |€t           j        | j        _        d S || j        _        d S r   )r   r7   r   r!   r?   s     r   r!   z	Frame.ptsg   s$   € àˆ=ÝÔ-ˆDŒHŒLˆLˆLà ˆDŒHŒLˆLˆLr$   c                 ó   — | j         j        S )zZ
        The duration of the frame in :attr:`time_base` units

        :type: int
        ©r   r9   r   s    r   r9   zFrame.durationn   s   € ð ŒxÔ Ð r$   c                 ó   — || j         _        d S r   rD   r?   s     r   r9   zFrame.durationw   s   € à!ˆŒÔÐÐr$   c                 ó    — | j         j        t          j        k    rdS t	          | j         j        ¦  «        | j        j        z  | j        j        z  S )z©
        The presentation time in seconds for this frame.

        This is the time at which the frame should be shown to the user.

        :type: float | None
        N)r   r!   r   r7   Úfloatr(   r4   r6   r   s    r   Útimez
Frame.time{   sA   € ð Œ8Œ<�3Ô-Ò-Ð-Ø�4Ý�T”X”\Ñ"Ô" T¤_Ô%8Ñ8¸4¼?Ô;NÑNÐNr$   c                 ój   — | j         j        r&t          t          j        | j         ¦  «        ¦  «        S dS )z‡
        The unit of time (in fractional seconds) in which timestamps are expressed.

        :type: fractions.Fraction | None
        N)r(   r4   r   r   r   r   s    r   Ú	time_basezFrame.time_base‰   s8   € ð Œ?Ôð 	KÝ)­&¬.¸¼Ñ*IÔ*IÑJÔJÐJð	Kð 	Kr$   c                 óT   — t          |t          j        | j        ¦  «        ¦  «         d S r   )r   r   r   r(   r?   s     r   rJ   zFrame.time_base“   s$   € å�e�Vœ^¨D¬OÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r$   c                 ón   — | j         j        dk    p%t          | j         j        t          j        z  ¦  «        S )z=
        Is this frame corrupt?

        :type: bool
        r   )r   Údecode_error_flagsÚboolÚflagsr   ÚAV_FRAME_FLAG_CORRUPTr   s    r   Ú
is_corruptzFrame.is_corrupt—   s6   € ð ŒxÔ*¨aÒ/ð 
µ4ØŒHŒN�SÔ6Ñ6ñ4
ô 4
ð 	
r$   c                 óN   — t          | j        j        t          j        z  ¦  «        S )zPIs this frame a key frame?

        Wraps :ffmpeg:`AVFrame.key_frame`.

        )rN   r   rO   r   ÚAV_FRAME_FLAG_KEYr   s    r   Ú	key_framezFrame.key_frame¢   s   € õ �D”H”N¥SÔ%:Ñ:Ñ;Ô;Ð;r$   c                 óŒ   — |r!| j         xj        t          j        z  c_        d S | j         xj        t          j         z  c_        d S r   )r   rO   r   rS   ©r   Úvs     r   rT   zFrame.key_frame«   sA   € ð ð 	5ØŒHˆNŒN�cÔ3Ñ3ˆNŒNˆNˆNàŒHˆNŒN�sÔ4Ð4Ñ4ˆNŒNˆNˆNr$   c                 óF   — | j         €t          | ¦  «        | _         | j         S r   )Ú
_side_datar   r   s    r   Ú	side_datazFrame.side_data³   s!   € àŒ?Ð"Ý/°Ñ5Ô5ˆDŒOØŒÐr$   c                 ó8   — t          | j        j        dd¦  «        S )z)Metadata attached to the frame by FFmpeg.zutf-8Ústrict)r   r   Úmetadatar   s    r   r]   zFrame.metadata¹   s   € õ ˜dœhÔ/°¸(ÑCÔCÐCr$   c                 ób   — t                                | j        ¦  «        }t          |¦  «         dS )z§
        Ensures that the frame data is writable. Copy the data to new buffer if it is not.
        This is a wrapper around :ffmpeg:`av_frame_make_writable`.
        N)r   Úav_frame_make_writabler   r   )r   Úrets     r   Úmake_writablezFrame.make_writable¾   s(   € õ
 ×4Ò4°T´XÑ>Ô>ˆÝ�#‰Œˆˆˆr$   c                 ó¶   — | j         j        t          j        ur@t	          j        t          j        t          j        | j         j        j        ¦  «        ¦  «        S d S r   )	r   Ú
opaque_refr   ÚNULLr   ÚgetÚcastÚp_charÚdatar   s    r   ÚopaquezFrame.opaqueÆ   sJ   € àŒ8Ô¥f¤kÐ1Ð1Ý#Ô'Ý”�FœM¨4¬8Ô+>Ô+CÑDÔDñô ð ð 2Ð1r$   c                 ó¶   — t                                t          j        | j        j        ¦  «        ¦  «         |� t          j        |¦  «        | j        _        d S d S r   )r   Úav_buffer_unrefr   r   r   rc   r   ÚaddrV   s     r   ri   zFrame.opaqueÍ   sL   € å×Ò�FœN¨4¬8Ô+>Ñ?Ô?Ñ@Ô@Ð@àˆ=Ý"2Ô"6°qÑ"9Ô"9ˆDŒHÔÐÐð ˆ=r$   N)T)r    Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r   Úcfuncr
   Úbintr.   r1   r   Ú
AVRationalr:   Úpropertyr=   Úsetterr!   r9   Ú	cdivisionrH   rJ   rQ   rT   rZ   r]   ra   ri   r0   r$   r   r
   r
      s½  € € € € € ðð ð,ð ,ð ,ð8ð 8ð 8ðRð Rð Rð „\ð	6ð 	6°ð 	6ÀFÄKð 	6ð 	6ð 	6ñ „\ð	6ð „\ðð ñ „\ðð „\ð ¤ð ð ð ñ „\ðð* ð
 ð 
 ñ „Xð
 ð 	„Zð%ð %ñ „Zð%ð ð
ð 
ñ „Xð
ð 	„Zð!ð !ñ „Zð!ð ð!ð !ñ „Xð!ð „_ð"ð "ñ „_ð"ð Ø€VÔ�dÑÔð
Oð 
Oñ Ôñ „Xð
Oð ðKð Kñ „XðKð Ôð>ð >ñ Ôð>ð ð
ð 
ñ „Xð
ð ð<ð <ñ „Xð<ð Ôð5ð 5ñ Ôð5ð ðð ñ „Xðð
 ðDð Dñ „XðDðð ð ð ðð ñ „Xðð „]ð:ð :ñ „]ð:ð :ð :r$   r
   )r   Úcython.cimports.av.errorr   Úcython.cimports.av.opaquer   Úcython.cimports.av.utilsr   r   r   Úav.sidedata.sidedatar   Úcclassr
   r0   r$   r   ú<module>r{      sÂ   ðØ €€€Ø .Ð .Ð .Ð .Ð .Ð .Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2ð „ðD:ð D:ð D:ð D:ð D:ñ D:ô D:ñ „ðD:ð D:ð D:r$   