Ë
    ÛÍ:j©  ã                   ór   — d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 e j                   G d„ d«      «       Zy)é    N)Ú	err_check)Úopaque_container)Úavrational_to_fractionÚto_avrational)ÚSideDataContainerc                   ó`  — 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d„ Zed„ «       Zej$                  d„ «       Zy)Ú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        j                  «       | _        d d d «       y # 1 sw Y   y xY w©N)ÚcythonÚnogilÚlibÚav_frame_allocÚptr)ÚselfÚargsÚkwargss      ú]/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/frame.pyÚ	__cinit__zFrame.__cinit__   s.   € Ü�\‰\ñ 	,Ü×)Ñ)Ó+ˆDŒH÷	,÷ 	,ñ 	,ús   ‘4´=c                 ó²   — t         j                  5  t        j                  t        j                  | j
                  «      «       d d d «       y # 1 sw Y   y xY wr   )r   r   r   Úav_frame_freeÚaddressr   ©r   s    r   Ú__dealloc__zFrame.__dealloc__   s9   € Ü�\‰\ñ 	8Ü×ÑœfŸn™n¨T¯X©XÓ6Ô7÷	8÷ 	8ñ 	8ús   ‘3AÁAc                 ój   — 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__   s2   € Ø�d—n‘n×-Ñ-Ð.¨e°D·H±H°:¸VÄBÀtÃHÈQÀ<ÈqÐQÐQó    TÚsourceÚdata_layoutc                 ó¨  — |j                   | _         t        j                  | j                  |j                  «       |r•|j                  j                  | j                  _        |j                  j
                  | j                  _        |j                  j                  | j                  _        |j                  j                  | j                  _        y y r   )Ú
_time_baser   Úav_frame_copy_propsr   ÚformatÚwidthÚheightÚ	ch_layout)r   r$   r%   s      r   Ú_copy_internal_attributeszFrame._copy_internal_attributes   s†   € ð !×+Ñ+ˆŒÜ×Ñ §¡¨&¯*©*Ô5Ùà$Ÿj™j×/Ñ/ˆD�H‰HŒOØ#ŸZ™Z×-Ñ-ˆD�H‰HŒNØ$Ÿj™j×/Ñ/ˆD�H‰HŒOØ!'§¡×!5Ñ!5ˆD�H‰HÕð r#   c                  ó   — y r   © r   s    r   Ú_init_user_attributeszFrame._init_user_attributes(   s   € àr#   Údstc                 óš  — |j                   st        d«      ‚| j                  j                   s|| _        y | j                  j                   |j                   k(  r$| j                  j                  |j                  k(  ry | j                  j
                  t        j                  k7  rDt        j                  | j                  j
                  | j                  |«      | j                  _        | j                  j                  dk7  rDt        j                  | j                  j                  | j                  |«      | j                  _	        || _        y )NzCannot rebase to zero time.r   )
ÚnumÚ
ValueErrorr'   Údenr   r    r   ÚAV_NOPTS_VALUEÚav_rescale_qÚduration)r   r1   s     r   Ú_rebase_timezFrame._rebase_time,   sÝ   € à�wŠwÜÐ:Ó;Ð;à�‰×"Ò"Ø!ˆDŒOØà�?‰?×Ñ #§'¡'Ò)¨d¯o©o×.AÑ.AÀSÇWÁWÒ.LØà�8‰8�<‰<œ3×-Ñ-Ò-Ü×+Ñ+¨D¯H©H¯L©L¸$¿/¹/È3ÓOˆD�H‰HŒLà�8‰8×Ñ Ò!Ü #× 0Ñ 0Ø—‘×!Ñ! 4§?¡?°Có!ˆD�H‰HÔð ˆ�r#   c                 ó~   — | j                   j                  t        j                  k(  ry| 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   r6   r   s    r   Údtsz	Frame.dtsB   s/   € ð �8‰8×Ñœs×1Ñ1Ò1ØØ�x‰x×ÑÐr#   c                 ój   — |€ t         j                  | j                  _        y || j                  _        y r   )r   r6   r   r;   ©r   Úvalues     r   r<   z	Frame.dtsO   s%   € àˆ=Ü"×1Ñ1ˆD�H‰HÕà$ˆD�H‰HÕr#   c                 ó~   — | j                   j                  t        j                  k(  ry| 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   r6   r   s    r   r    z	Frame.ptsV   s+   € ð �8‰8�<‰<œ3×-Ñ-Ò-ØØ�x‰x�|‰|Ðr#   c                 ój   — |€ t         j                  | j                  _        y || j                  _        y r   )r   r6   r   r    r>   s     r   r    z	Frame.ptsc   s#   € àˆ=Ü×-Ñ-ˆD�H‰H�Là ˆD�H‰H�Lr#   c                 ó.   — | j                   j                  S )zZ
        The duration of the frame in :attr:`time_base` units

        :type: int
        ©r   r8   r   s    r   r8   zFrame.durationj   s   € ð �x‰x× Ñ Ð r#   c                 ó&   — || j                   _        y r   rC   r>   s     r   r8   zFrame.durations   s   € à!ˆ�‰Õr#   c                 óì   — | j                   j                  t        j                  k(  ry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   r6   Úfloatr'   r3   r5   r   s    r   Útimez
Frame.timew   sN   € ð �8‰8�<‰<œ3×-Ñ-Ò-ØÜ�T—X‘X—\‘\Ó" T§_¡_×%8Ñ%8Ñ8¸4¿?¹?×;NÑ;NÑNÐNr#   c                 ó€   — | j                   j                  r(t        t        j                  | j                   «      «      S y)z‡
        The unit of time (in fractional seconds) in which timestamps are expressed.

        :type: fractions.Fraction | None
        N)r'   r3   r   r   r   r   s    r   Ú	time_basezFrame.time_base…   s.   € ð �?‰?×ÒÜ)¬&¯.©.¸¿¹Ó*IÓJÐJð r#   c                 óV   — t        |t        j                  | j                  «      «       y r   )r   r   r   r'   r>   s     r   rI   zFrame.time_base�   s   € ä�eœVŸ^™^¨D¯O©OÓ<Õ=r#   c                 ó˜   — | j                   j                  dk7  xs0 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“   s=   € ð �x‰x×*Ñ*¨aÑ/ò 
´4Ø�H‰H�N‰NœS×6Ñ6Ñ6ó4
ð 	
r#   c                 ób   — t        | j                  j                  t        j                  z  «      S )zPIs this frame a key frame?

        Wraps :ffmpeg:`AVFrame.key_frame`.

        )rM   r   rN   r   ÚAV_FRAME_FLAG_KEYr   s    r   Ú	key_framezFrame.key_framež   s"   € ô �D—H‘H—N‘N¤S×%:Ñ%:Ñ:Ó;Ð;r#   c                 óÀ   — |r.| j                   xj                  t        j                  z  c_        y | j                   xj                  t        j                   z  c_        y r   )r   rN   r   rR   ©r   Úvs     r   rS   zFrame.key_frame§   s:   € ñ Ø�H‰H�NŠNœc×3Ñ3Ñ3ŽNà�H‰H�NŠNœs×4Ñ4Ð4Ñ4ŽNr#   c                 óR   — | j                   €t        | «      | _         | j                   S r   )Ú
_side_datar   r   s    r   Ú	side_datazFrame.side_data¯   s"   € à�?‰?Ð"Ü/°Ó5ˆDŒOØ�‰Ðr#   c                 óX   — t         j                  | j                  «      }t        |«       y)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±XÓ>ˆÜ�#�r#   c                 óú   — | j                   j                  t        j                  urUt	        j
                  t        j                  t        j                  | j                   j                  j                  «      «      S y r   )	r   Ú
opaque_refr   ÚNULLr   ÚgetÚcastÚp_charÚdatar   s    r   ÚopaquezFrame.opaque½   sR   € à�8‰8×Ñ¤f§k¡kÑ1Ü#×'Ñ'Ü—‘œFŸM™M¨4¯8©8×+>Ñ+>×+CÑ+CÓDóð ð 2r#   c                 óÊ   — t         j                  t        j                  | j                  j
                  «      «       |�%t        j                  |«      | j                  _        y y r   )r   Úav_buffer_unrefr   r   r   r_   r   ÚaddrU   s     r   re   zFrame.opaqueÄ   sD   € ä×ÑœFŸN™N¨4¯8©8×+>Ñ+>Ó?Ô@àˆ=Ü"2×"6Ñ"6°qÓ"9ˆD�H‰HÕð r#   N)T)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r   Úcfuncr	   Úbintr-   r0   r   Ú
AVRationalr9   Úpropertyr<   Úsetterr    r8   Ú	cdivisionrG   rI   rP   rS   rY   r]   re   r/   r#   r   r	   r	   	   sâ  „ ñò,ò8òRð ‡\�\ñ	6°ð 	6ÀFÇKÁKò 	6ó ð	6ð ‡\�\ñó ðð ‡\�\ð §¡ò ó ðð* ñ
 ó ð
 ð 	‡Z�Zñ%ó ð%ð ñ
ó ð
ð 	‡Z�Zñ!ó ð!ð ñ!ó ð!ð ‡_�_ñ"ó ð"ð Ø€V×Ñ�dÓñ
Oó ó ð
Oð ñKó ðKð ×Ññ>ó ð>ð ñ
ó ð
ð ñ<ó ð<ð ×Ññ5ó ð5ð ñó ðò
ð ñó ðð ‡]�]ñ:ó ñ:r#   r	   )r   Úcython.cimports.av.errorr   Úcython.cimports.av.opaquer   Úcython.cimports.av.utilsr   r   Úav.sidedata.sidedatar   Úcclassr	   r/   r#   r   ú<module>rw      s4   ðÛ Ý .Ý 6ß Jå 2ð ‡�÷:ð :ó ñ:r#   