
    3jr                         S SK r S SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  S SKJr  S S	KJr  \ R(                  \ R*                   " S
 S\5      5       5       rg)    N)libav)
ByteSource
bytesource)CodecContext)	err_check)Packet)SubtitleProxySubtitleSet)PyBytes_FromStringAndSize)memcpyc                       \ rS rSr\S\S-  4S j5       r\R                  S\S-  SS4S j5       rSS jrS\	S\
4S	 jr\R                  SS
\
S-  4S jj5       r\R                  S
\
4S j5       rSrg)SubtitleCodecContext   returnNc                 6   U R                   R                  [        R                  :X  d  U R                   R                  S::  a  g[        [        R                  " [        R                  U R                   R                  5      U R                   R                  5      $ )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    S/home/wildlama/miniconda3/lib/python3.13/site-packages/av/subtitles/codeccontext.pyr   $SubtitleCodecContext.subtitle_header   se     HH$$3xx,,1(KKtxx'?'?@HH))
 	
    datac                    UcP  [         R                  " [        R                  " U R                  R
                  5      5        SU R                  l        O[        U5      n[        R                  " [        R                  [         R                  " U R                  R
                  UR                  [         R                  -   5      5      U R                  l        U R                  R
                  (       d  [        S5      e[        U R                  R
                  UR                  UR                  5        UR                  U R                  l        SU l        g)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   r      s     <LL(@(@AB,-DHH)%F'-{{HH,,MMC$D$DD(DHH$ 88++!"CDD488++VZZG,2MMDHH)#' r   c                     U R                   (       aQ  U R                  (       a?  [        R                  " [        R
                  " U R                   R                  5      5        g g g N)r   r(   r    r!   r   r"   r   r   s    r   __dealloc__ SubtitleCodecContext.__dealloc__2   s7    8800LL(@(@AB 18r   subtitlec                    U R                   R                  (       d  [        S5      eU R                  SS9  [        R
                  " [        R                  [        R                  " S5      5      nU[        R                  :X  a
  [        5       e[        R                  " U R                  US[        R                  " UR                  R                  5      5      nUS:  a"  [        R                  " U5        [!        US5        [#        U5      n[%        UR                  R&                  X#5        [        R                  " U5        UR                  R                  R(                  UR                  l        UR                  R                  R(                  UR                  l        UR                  R                  R,                  UR                  R                  R.                  -
  UR                  l        U$ )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_subtitle$SubtitleCodecContext.encode_subtitle6   sH    zz~~?@@			$kk&..#--:TU&++-55HHNN8>>001	
 7KKc67vzz)C!..22

!..22

NN!!22nn##667 	


 r   rA   c           	         U R                   R                  (       d  [        S5      eUc  [        S5      eU R	                  SS9  [        5       nSn[        [        R                  " U R                  [        R                  " UR                  5      [        R                  " U5      UR                  5      5        U(       a  [        [        U5      5      $ / $ )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 NoneFr0   r   )r2   r   r3   RuntimeErrorr4   r	   r   r    avcodec_decode_subtitle2r   r"   r8   listr
   r   rA   r7   	got_frames       r   decodeSubtitleCodecContext.decode_   s     zz~~:;;>677			, !	((u||,y)

		
 E*++	r   c           	      z   U R                   R                  (       d  [        S5      eU R                  SS9  [	        5       nSn[        [        R                  " U R                  [        R                  " UR                  5      [        R                  " U5      UR                  5      5        U(       a  [        U5      $ g)z,
Returns SubtitleSet if you really need it.
rE   Fr0   r   N)r2   r   r3   r4   r	   r   r    rG   r   r"   r8   r
   rI   s       r   decode2SubtitleCodecContext.decode2z   s    
 zz~~:;;			, !	((u||,y)

		
 u%%r   )r(   )r   Nr+   )__name__
__module____qualname____firstlineno__propertybytesr   setterr,   r
   r   rB   r   ccallrK   rN   __static_attributes__ r   r   r   r      s     

 

 

 (EDL (T ( (*C' ' 'R \\Vd]  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   rY   r   r   <module>rd      sN     ( < 9 . , L C . D< D  Dr   