
    3j'                     f   S SK r S SKJrJr  S SKJr  \ R                  \ R                   " S S5      5       5       r\ R                  " \
\
" 5       5      r\ R                  \ R                   " S S5      5       5       r\ R                  S\S	\ R                  S
\4S j5       r\ R                   " S S5      5       r\ R                  \ R                   " S S\5      5       5       r\ R                  \ R                   " S S5      5       5       r\ R                  \ R                   " S S\5      5       5       rg)    N)PyBuffer_FillInfoPyBytes_FromString)memcpyc                       \ rS rSrS rSrg)SubtitleProxy   c                 j    [         R                  [        R                  " U R                  5      5        g N)libavsubtitle_freecythonaddressstructselfs    O/home/wildlama/miniconda3/lib/python3.13/site-packages/av/subtitles/subtitle.py__dealloc__SubtitleProxy.__dealloc__	   s    FNN4;;78     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    9r   r   c                   ^   \ rS rSrSrSS jr\  SS\S\S\S\S	\S
\	4S jj5       r
S r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S\4S j5       rS rS rS rSrg)SubtitleSet   za
A :class:`SubtitleSet` can contain many :class:`Subtitle` objects.

Wraps :ffmpeg:`AVSubtitle`.
Nc                   ^  U[         L a  [        5       T l        ST l        g [	        U[        5      (       aI  UT l        [        U 4S j[        T R                  R                  R                  5       5       5      T l        g [        S5      e)Nr   c              3   <   >#    U  H  n[        TU5      v   M     g 7fr
   )build_subtitle.0ir   s     r   	<genexpr>(SubtitleSet.__cinit__.<locals>.<genexpr>!   s      1SAtQ''1Ss   z@SubtitleSet requires a SubtitleProxy or use SubtitleSet.create())
_cinit_bypass_sentinelr   proxyrects
isinstancetupleranger   	num_rects	TypeError)r   proxy_or_sentinels   ` r   	__cinit__SubtitleSet.__cinit__   sq     66&DJDJ)=99*DJ 16tzz7H7H7R7R1S DJ R r   textstartendptssubtitle_formatreturnc           	      F   [        [        5      nXER                  R                  l        XR                  R                  l        X%R                  R                  l        X5R                  R                  l        SUR                  R                  l        [        R                  " [        R                  [        R                  [        R                        [        R                  [        R                  " [        R                  [        R                     5      5      5      UR                  R                  l        UR                  R                  R                   [        R"                  :X  a  [%        S5      e[        R                  " [        R                  [        R                     [        R                  [        R                  " [        R                  5      5      5      nU[        R"                  :X  ag  [        R'                  UR                  R                  R                   5        [        R"                  UR                  R                  l        [%        S5      eXeR                  R                  R                   S'   SUl        SUl        SUl        SUl        SUl        [        R2                  Ul        [        R"                  Ul        SUl        [;        U 5      n[        R                  " [        R<                  [        R?                  US-   5      5      Ul         UR@                  [        R"                  :X  a  [%        S5      e[C        UR@                  [        R                  " [        R<                  U 5      U5        SUR@                  U'   [E        US5      4Ul        U$ )am  
Create a SubtitleSet for encoding.

:param text: The subtitle text in ASS dialogue format
    (e.g. ``b"0,0,Default,,0,0,0,,Hello World"``)
:param start: Start display time as offset from pts (typically 0)
:param end: End display time as offset from pts (i.e., duration)
:param pts: Presentation timestamp in stream time_base units
:param subtitle_format: Subtitle format (default 1 for text)
:return: A SubtitleSet ready for encoding

.. note::
    All timing values should be in stream time_base units.
    For MKV (time_base=1/1000), units are milliseconds.
    For MP4 (time_base=1/1000000), units are microseconds.
   z'Failed to allocate subtitle rects arrayz Failed to allocate subtitle rectr   z Failed to allocate subtitle text)#r   r'   r(   r   formatstart_display_timeend_display_timer5   r-   r   castpointerr   AVSubtitleRect
av_malloczsizeofr)   NULLMemoryErrorav_freexywh	nb_colorsSUBTITLE_ASStyper2   flagslenp_char	av_mallocassr   AssSubtitle)r2   r3   r4   r5   r6   subsetrecttext_lens           r   createSubtitleSet.create)   sQ   0 **@A%4"16./2,"%()%$*KKNN6>>#*<*<=>NN6==8J8J)KLM%
! <<$$3GHH39;;NN3--.NN6==););<=4
 6;;KK++112(.FLL%@AA'+!!!$$$	KK	
&)$i;;v}}cmmHqL.IJ88v{{"@AAtxxV]]D98D#FA.0r   c                 ~    SU R                   R                   SU R                   R                   S[        U 5      S S3$ )N<. at 0xrE   >)	__class__r   r   idr   s    r   __repr__SubtitleSet.__repr__o   s=    ))*!DNN,C,C+DF2d8TU,VWX	
r   c                 B    U R                   R                  R                  $ r
   r(   r   r:   r   s    r   r:   SubtitleSet.formatt   s    zz  '''r   valuec                 8    XR                   R                  l        g r
   ra   r   rc   s     r   r:   rb   x   s    #(

 r   c                 B    U R                   R                  R                  $ r
   r(   r   r;   r   s    r   r;   SubtitleSet.start_display_time|   s    zz  333r   c                 8    XR                   R                  l        g r
   rg   re   s     r   r;   rh      s    /4

,r   c                 B    U R                   R                  R                  $ r
   r(   r   r<   r   s    r   r<   SubtitleSet.end_display_time   s    zz  111r   c                 8    XR                   R                  l        g r
   rk   re   s     r   r<   rl      s    -2

*r   c                 B    U R                   R                  R                  $ )z$Same as packet pts, in av.time_base.r(   r   r5   r   s    r   r5   SubtitleSet.pts   s     zz  $$$r   c                 8    XR                   R                  l        g r
   ro   re   s     r   r5   rp      s     %

r   c                 ,    [        U R                  5      $ r
   )rM   r)   r   s    r   __len__SubtitleSet.__len__   s    4::r   c                 ,    [        U R                  5      $ r
   )iterr)   r   s    r   __iter__SubtitleSet.__iter__   s    DJJr   c                      U R                   U   $ r
   )r)   r   r$   s     r   __getitem__SubtitleSet.__getitem__   s    zz!}r   )r(   r)   r
   )r   r9   )r   r   r   r   __doc__r0   staticmethodbytesintr   rU   r^   propertyr:   setterr;   r<   r5   rs   rw   r{   r   r   r   r   r   r      sM     
  CCC C 	C
 C 
C CJ

 ( ( ]])C ) ) 4 4 5 5 5 2 2 3c 3 3 % % 	ZZ& & & r   r   subtitleindexr7   c                    US:  dG  [         R                  " [         R                  U5      U R                  R                  R
                  :  a  [        S5      eU R                  R                  R                  U   nUR                  [        R                  :X  a  [        X5      $ UR                  [        R                  :X  d  UR                  [        R                  :X  a  [        X5      $ [        SUR                  -  5      e)z~Build an av.Stream for an existing AVStream.

The AVStream MUST be fully constructed and ready for use before this is called.
r    subtitle rect index out of rangezunknown subtitle type %r)r   r=   uintr(   r   r-   
ValueErrorr)   rK   r   SUBTITLE_BITMAPBitmapSubtitlerJ   SUBTITLE_TEXTrQ   )r   r   ptrs      r   r!   r!      s     qyFKKU3x~~7L7L7V7VV;<<.6nn.C.C.I.I%.PC
xx3&&&h..
xx3###sxx33D3D'D8++
/#((:
;;r   c                   D    \ rS rSrSrS\S\R                  4S jrS r	Sr
g)	Subtitle   z[
An abstract base class for each concrete type of subtitle.
Wraps :ffmpeg:`AVSubtitleRect`
r   r   c                    US:  dG  [         R                  " [         R                  U5      UR                  R                  R
                  :  a  [        S5      eUR                  U l        U R                  R                  R                  U   U l        U R                  R                  [        R                  :X  a  SU l	        g U R                  R                  [        R                  :X  a  SU l	        g U R                  R                  [        R                  :X  a  SU l	        g U R                  R                  [        R                  :X  a  SU l	        g [        SU R                  R                  < 35      e)Nr   r   s   nones   bitmaps   texts   asszunknown subtitle type )r   r=   r   r(   r   r-   r   r)   r   rK   r   SUBTITLE_NONEr   r   rJ   r   r   r   s      r   r0   Subtitle.__cinit__   s    AI{{6;;.(..2G2G2Q2QQ?@@^^
::$$**5188==C---DIXX]]c111!DIXX]]c///DIXX]]c...DI5dhhmm5FGHHr   c                 P    SU R                   R                   S[        U 5      S S3$ )Nz<av.rZ   rE   r[   )r\   r   r]   r   s    r   r^   Subtitle.__repr__   s(    dnn--.fRXaLBBr   )r(   r   rK   N)r   r   r   r   r}   r   r   r   r0   r^   r   r   r   r   r   r      s'    
I+ Ifjj I(Cr   r   c                       \ rS rSrS\S\R                  4S jrS r\	S 5       r
\	S 5       r\	S 5       r\	S	 5       r\	S
 5       rS rS rS rSrg)r      r   r   c                 L   ^  [        U 4S j[        S5       5       5      T l        g )Nc              3   |   >#    U  H1  nTR                   R                  U   (       d  M#  [        TU5      v   M3     g 7fr
   )r   linesizeBitmapSubtitlePlaner"   s     r   r%   +BitmapSubtitle.__cinit__.<locals>.<genexpr>   s4      
2:Qdhh>O>OPQ>R(a(((s   "<<   )r+   r,   planesr   s   `  r   r0   BitmapSubtitle.__cinit__   s      
27(
 
r   c                     SU R                   R                   SU R                   R                   SU R                   SU R                   SU R
                   SU R                   S[        U 5      S S3$ )	NrX   rY    rE   z at ,z; at 0xr[   )r\   r   r   widthheightrE   rF   r]   r   s    r   r^   BitmapSubtitle.__repr__   sh    ))*!DNN,C,C+DAzzl!DKK=TVVHAdffXWRXaLPQS	
r   c                 .    U R                   R                  $ r
   )r   rE   r   s    r   rE   BitmapSubtitle.x       xxzzr   c                 .    U R                   R                  $ r
   )r   rF   r   s    r   rF   BitmapSubtitle.y   r   r   c                 .    U R                   R                  $ r
   )r   rG   r   s    r   r   BitmapSubtitle.width   r   r   c                 .    U R                   R                  $ r
   )r   rH   r   s    r   r   BitmapSubtitle.height   r   r   c                 .    U R                   R                  $ r
   )r   rI   r   s    r   rI   BitmapSubtitle.nb_colors   s    xx!!!r   c                 ,    [        U R                  5      $ r
   )rM   r   r   s    r   rs   BitmapSubtitle.__len__   s    4;;r   c                 ,    [        U R                  5      $ r
   )rv   r   r   s    r   rw   BitmapSubtitle.__iter__   s    DKK  r   c                      U R                   U   $ r
   r   rz   s     r   r{   BitmapSubtitle.__getitem__   s    {{1~r   r   N)r   r   r   r   r   r   r   r0   r^   r   rE   rF   r   r   rI   rs   rw   r{   r   r   r   r   r   r      s    
+ 
fjj 


         " " !r   r   c                   z    \ rS rSrS\S\R                  4S jrS\R                  \	   S\R                  4S jr
Srg	)
r      r   r   c                 v   US:  a  [        S5      eUR                  R                  U   (       d  [        S5      eXl        X l        UR                  R
                  UR                  R                  -  U l        [        R                  " [        R                  UR                  R                  U   5      U l        g )Nr   z"BitmapSubtitles have only 4 planeszplane does not exist)r   r   r   r   r   rG   rH   buffer_sizer   r=   p_voiddata_bufferr   s      r   r0   BitmapSubtitlePlane.__cinit__   s    A:ABB||$$U+344 
#<<>>HLLNN:{{6==(,,2C2CE2JKr   viewrL   c                 J    [        XU R                  U R                  SU5        g )Nr   )r   r   r   )r   r   rL   s      r   __getbuffer__!BitmapSubtitlePlane.__getbuffer__  s    $dllD4D4DaOr   )r   r   r   r   N)r   r   r   r   r   r   r   r0   r>   	Py_bufferr   r   r   r   r   r   r      s?    	L. 	L 	LP&.."; PFJJ Pr   r   c                   N    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	Sr
g)	rQ   i  zQ
Represents an ASS/Text subtitle format, as opposed to a bitmap Subtitle format.
c                 >    SU R                   < S[        U 5      S S3$ )Nz<av.AssSubtitle rZ   rE   r[   )dialoguer]   r   s    r   r^   AssSubtitle.__repr__  s"    !$--!2&D!AFFr   c                     U R                   R                  [        R                  La  [	        U R                   R                  5      $ g)z\
Returns the subtitle in the ASS/SSA format. Used by the vast majority of subtitle formats.
r   )r   rP   r   rB   r   r   s    r   rP   AssSubtitle.ass  s.    
 88<<v{{*%dhhll33r   c                    SnSnSnU R                   n[        R                  " [        R                  5      u  pV[	        5       n[        U5      nUS:  a$  X(:  a  XB   S:X  a  US-  nUS-  nUS:  a  X(:  a  M  X(:  av  XB   nUS-   U:  a  SOXBS-      nUS:X  a  US:X  a  UR                  S5        US	-  nM?  U(       d!  US
:X  a	  US:w  a  SnOUR                  U5        OUS:X  a  SnUS-  nX(:  a  Mv  [        U5      $ )z;
Extract the dialogue from the ass format. Strip comments.
r   F   ,   r9   \   N   
      {   T}   )rP   r   declareuchar	bytearrayrM   appendr   )	r   comma_countr$   stateass_textchar	next_charresultrT   s	            r   r   AssSubtitle.dialogue#  s   
 %& "(( ..6%K&)(mAo!,{g%q FA Ao!,
 l;DUh.HUOIxI$8h'Q7?yH'< EMM$'FA! l$ V}r   c                     U R                   R                  [        R                  La  [	        U R                   R                  5      $ g)z>
Rarely used attribute. You're probably looking for dialogue.
r   )r   r2   r   rB   r   r   s    r   r2   AssSubtitle.textI  s.    
 88==+%dhhmm44r   r   N)r   r   r   r   r}   r^   r   rP   r   r2   r   r   r   r   rQ   rQ     sJ    G   # #J  r   rQ   )r   cython.cimports.cpythonr   r   cython.cimports.libc.stringr   finalcclassr   r   objectr'   r   cfuncr   r   r!   r   r   rQ   r   r   r   <module>r      sM    I . 9 9  9
  9  J J  JZ <[ < < < <$ C C C< 'X '  'T P P  P" >( >  >r   