Ë
    ÛÍ:jr  ã                   óÆ   — d dl 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 dlmZmZ d dlmZ d d	lmZ e j(                  e j*                   G d
„ de«      «       «       Zy)é    N)Úlibav)Ú
ByteSourceÚ
bytesource)ÚCodecContext)Ú	err_check)ÚPacket)ÚSubtitleProxyÚSubtitleSet)ÚPyBytes_FromStringAndSize)Úmemcpyc                   óÐ   — e Zd Zededz  fd„«       Zej                  dedz  ddfd„«       Zdd„Zdede	fd„Z
ej                  dd	e	dz  fd
„«       Zej                  d	e	fd„«       Zy)ÚSubtitleCodecContextÚreturnNc                 ó0  — | j                   j                  t        j                  k(  s| j                   j                  dk  ryt        t        j                  t        j                  | j                   j                  «      | j                   j                  «      S )zAGet the subtitle header data (ASS/SSA format for text subtitles).r   N)ÚptrÚsubtitle_headerÚcythonÚNULLÚsubtitle_header_sizer   ÚcastÚp_char©Úselfs    ún/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/subtitles/codeccontext.pyr   z$SubtitleCodecContext.subtitle_header   se   € ð �H‰H×$Ñ$¬¯©Ò3Ø�x‰x×,Ñ,°Ò1àÜ(Ü�K‰KœŸ™ t§x¡x×'?Ñ'?Ó@Ø�H‰H×)Ñ)ó
ð 	
ó    Údatac                 ó¤  — |€Ut        j                  t        j                  | j                  j
                  «      «       d| j                  _        d| _        yt        |«      }t        j                  t        j                  t        j                  | j                  j
                  |j                  t         j                  z   «      «      | j                  _        | j                  j
                  st        d«      ‚t        | j                  j
                  |j                  |j                  «       |j                  | j                  _        d| _        y)zSet the subtitle header data.Nr   zCannot allocate subtitle_headerT)ÚlibÚav_freepr   Úaddressr   r   r   r   r   Úp_ucharÚ
av_reallocÚlengthÚAV_INPUT_BUFFER_PADDING_SIZEÚMemoryErrorr   Úsubtitle_header_set)r   r   Úsources      r   r   z$SubtitleCodecContext.subtitle_header   sâ   € ð ˆ<Ü�L‰LœŸ™¨¯©×(@Ñ(@ÓAÔBØ,-ˆD�H‰HÔ)ð $(ˆÕ ô   Ó%ˆFÜ'-§{¡{Ü—‘Ü—‘Ø—H‘H×,Ñ,Ø—M‘M¤C×$DÑ$DÑDóó(ˆD�H‰HÔ$ð —8‘8×+Ò+Ü!Ð"CÓDÐDÜ�4—8‘8×+Ñ+¨V¯Z©Z¸¿¹ÔGØ,2¯M©MˆD�H‰HÔ)Ø#'ˆÕ r   c                 ó°   — | j                   rJ| j                  r=t        j                  t	        j
                  | j                   j                  «      «       y y y ©N)r   r&   r   r   r   r    r   r   s    r   Ú__dealloc__z SubtitleCodecContext.__dealloc__2   s7   € Ø�8Š8˜×0Ò0Ü�L‰LœŸ™¨¯©×(@Ñ(@ÓAÕBð 1ˆ8r   Úsubtitlec                 óÐ  — | j                   j                  st        d«      ‚| j                  d¬«       t	        j
                  t        j                  t        j                  d«      «      }|t        j                  k(  r
t        «       ‚t        j                  | j                  |dt	        j                  |j                  j                  «      «      }|dk  r!t        j                  |«       t!        |d«       t#        |«      }t%        |j                  j&                  ||«       t        j                  |«       |j                  j                  j(                  |j                  _        |j                  j                  j(                  |j                  _        |j                  j                  j,                  |j                  j                  j.                  z
  |j                  _        |S )zÀ
        Encode a SubtitleSet into a Packet.

        Args:
            subtitle: The SubtitleSet to encode

        Returns:
            A Packet containing the encoded subtitle data
        z Cannot encode with unknown codecF©Ústricti   r   zavcodec_encode_subtitle())Úcodecr   Ú
ValueErrorÚopenr   r   r!   r   Ú	av_mallocr   r%   Úavcodec_encode_subtitler    ÚproxyÚstructÚav_freer   r   r   r   ÚptsÚdtsÚend_display_timeÚstart_display_timeÚduration)r   r+   ÚbufÚretÚpackets        r   Úencode_subtitlez$SubtitleCodecContext.encode_subtitle6   sJ  € ð �z‰z�~Š~ÜÐ?Ó@Ð@à�	‰	˜ˆ	Ôä$Ÿk™k¬&¯.©.¼#¿-¹-ÈÓ:TÓUˆØ”&—+‘+ÒÜ“-Ðä×5Ñ5Ø�H‰HØØÜ�N‰N˜8Ÿ>™>×0Ñ0Ó1ó	
ˆð �Š7Ü�K‰K˜ÔÜ�cÐ6Ô7ä ›ˆÜˆv�z‰z�‰  SÔ)Ü�‰�CÔØ!Ÿ™×.Ñ.×2Ñ2ˆ�
‰
ŒØ!Ÿ™×.Ñ.×2Ñ2ˆ�
‰
Œà�N‰N×!Ñ!×2Ñ2Ø�n‰n×#Ñ#×6Ñ6ñ7ð 	�
‰
Ôð
 ˆr   r>   c           	      ó”  — | j                   j                  st        d«      ‚|€t        d«      ‚| j	                  d¬«       t        «       }d}t        t        j                  | j                  t        j                  |j                  «      t        j                  |«      |j                  «      «       |rt        t        |«      «      S g S )z‡Decode a subtitle packet, returning a list of :class:`.Subtitle` objects
        if a subtitle was decoded, or an empty list otherwise.úcannot decode unknown codeczpacket cannot be NoneFr-   r   )r/   r   r0   ÚRuntimeErrorr1   r	   r   r   Úavcodec_decode_subtitle2r   r    r5   Úlistr
   ©r   r>   r4   Ú	got_frames       r   ÚdecodezSubtitleCodecContext.decode_   s    € ð �z‰z�~Š~ÜÐ:Ó;Ð;àˆ>ÜÐ6Ó7Ð7à�	‰	˜ˆ	ÔÜ,›ˆØ !ˆ	äÜ×(Ñ(Ø—‘Ü—‘˜uŸ|™|Ó,Ü—‘˜yÓ)Ø—
‘
ó	ô	
ñ Üœ EÓ*Ó+Ð+Øˆ	r   c           	      óf  — | j                   j                  st        d«      ‚| j                  d¬«       t	        «       }d}t        t        j                  | j                  t        j                  |j                  «      t        j                  |«      |j                  «      «       |rt        |«      S y)z<
        Returns SubtitleSet if you really need it.
        rA   Fr-   r   N)r/   r   r0   r1   r	   r   r   rC   r   r    r5   r
   rE   s       r   Údecode2zSubtitleCodecContext.decode2z   sˆ   € ð
 �z‰z�~Š~ÜÐ:Ó;Ð;à�	‰	˜ˆ	Ôä,›ˆØ !ˆ	äÜ×(Ñ(Ø—‘Ü—‘˜uŸ|™|Ó,Ü—‘˜yÓ)Ø—
‘
ó	ô	
ñ Ü˜uÓ%Ð%Ør   )r   Nr)   )Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚbytesr   Úsetterr*   r
   r   r?   r   ÚccallrG   rI   © r   r   r   r      s©   „ ð ð

 ¨¡ò 

ó ð

ð ×Ñð( E¨D¡Lð (°Tò (ó ð(ó*Cð'¨ð '¸ó 'ðR ‡\�\ñ˜V d™]ò ó ðð4 ‡\�\ð˜fò ó ñr   r   )r   Úcython.cimportsr   r   Úcython.cimports.av.bufferr   r   Ú cython.cimports.av.codec.contextr   Úcython.cimports.av.errorr   Úcython.cimports.av.packetr   Ú%cython.cimports.av.subtitles.subtitler	   r
   Úcython.cimports.cpython.bytesr   Úcython.cimports.libc.stringr   ÚfinalÚcclassr   rQ   r   r   ú<module>r\      sN   ðÛ Ý (ß <Ý 9Ý .Ý ,ß LÝ CÝ .ð ‡�Ø‡�ôD˜<ó Dó ó ñDr   