Ë
    ÛÍ:j”(  ã                   óÎ  — d Z ddlZddlZddlmZmZ ddlZddlmZm	Z	 ddl
mZmZ ej                  Zej                   Zej$                  Zej(                  Zej,                  Zej0                  Zej4                  Zej8                  ZeZej>                  dej@                  fd„«       Z! ejD                  e#d«      a$ ejD                  ej@                  ejJ                  «      a&dejN                  jP                  jR                  vr+ ejT                  d«      jW                  ej*                  «       d	„ Z,d
„ Z-d„ Z.d„ Z/ ejD                  ej`                  d«      a1 ejD                  e# e«       «      Z2 ejD                  e#d«      a3 ejD                  ej@                  d«      a4d„ Z5d„ Z6 ejD                  e#d«      a7 ejD                  ej@                  d«      a8ej>                  d„ «       Z9 ejD                  e:g «      Z; ejD                  e<i «      Z=ej|                  ej~                   G d„ d«      «       «       Z@ ej‚                  ej„                  ej†                     ejˆ                  ¬«      ZE ejŒ                  d«      ZGej�                  ej’                   ej”                  d¬«      dej–                  dejˆ                  fd„«       «       «       ZL ejD                  ej†                  «      ZM ejœ                  eGeL«      eM_O        ej>                  dej@                  dePdePfd„«       ZQej�                  dej@                  dej¤                  dejˆ                  fd„«       ZSej�                  d „ «       ZTej�                  ej’                   ej”                  d¬«      dej–                  dej@                  d!ej¤                  d"ejª                  dej¬                  f
d#„«       «       «       ZWej�                  ej’                   ej”                  d¬«      dej–                  dej@                  d!ej¤                  d"ejª                  dej¬                  f
d$„«       «       «       ZXej³                  eX«       y)%a[  
FFmpeg has a logging system that it uses extensively. It's very noisy, so PyAV turns it
off by default. This unfortunately has the effect of making raised errors have less
detailed messages. It's therefore recommended to use VERBOSE when developing.

.. _enable_logging:

Enabling Logging
~~~~~~~~~~~~~~~~~

You can hook into the logging system with Python by setting the log level::

    import av

    av.logging.set_level(av.logging.VERBOSE)


PyAV hooks into that system to translate FFmpeg logs into Python's
`logging system <https://docs.python.org/3/library/logging.html#logging.basicConfig>`_.

If you are not already using Python's logging system, you can initialize it
quickly with::

    import logging
    logging.basicConfig()


Note that handling logs with Python sometimes doesn't play nicely with multi-threaded workflows.
An alternative is :func:`restore_default_callback`.

This restores FFmpeg's default logging system, which prints to the terminal.
Like with setting the log level to ``None``, this may also result in raised errors
having less detailed messages.


API Reference
~~~~~~~~~~~~~

é    N)ÚLockÚ	get_ident)ÚfprintfÚstderr)ÚfreeÚmallocÚlevelc                 óô   — | t         j                  k  ry| t         j                  k  ry| t         j                  k  ry| t         j                  k  ry| t         j
                  k  ry| t         j                  k  ryy)z2Convert a library log level to a Python log level.é2   é(   é   é   é
   é   é   )ÚlibÚAV_LOG_FATALÚAV_LOG_ERRORÚAV_LOG_WARNINGÚAV_LOG_INFOÚAV_LOG_VERBOSEÚAV_LOG_DEBUG©r	   s    ú_/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/logging.pyÚadapt_levelr   @   sk   € ð ”× Ñ Ò ØØ	”#×"Ñ"Ò	"ØØ	”#×$Ñ$Ò	$ØØ	”#—/‘/Ò	!ØØ	”#×$Ñ$Ò	$ØØ	”#×"Ñ"Ò	"Øàó    Úlibavc                  ó   — t         S )z5Returns the current log level. See :func:`set_level`.)Úlevel_threshold© r   r   Ú	get_levelr!   [   s   € äÐr   c                 ó²   — | €| a t        j                  t        «       yt	        | «      t
        u r| a | at        j                  t        «       yt        d«      ‚)aÚ  set_level(level)

    Sets PyAV's log level. It can be set to constants available in this
    module: ``PANIC``, ``FATAL``, ``ERROR``, ``WARNING``, ``INFO``,
    ``VERBOSE``, ``DEBUG``, or ``None`` (the default).

    PyAV defaults to totally ignoring all ffmpeg logs. This has the side effect of
    making certain Exceptions have no messages. It's therefore recommended to use:

         av.logging.set_level(av.logging.VERBOSE)

    When developing your application.
    Nzlevel must be: int | None)	r   r   Úav_log_set_callbackÚnolog_callbackÚtypeÚintÚc_level_thresholdÚlog_callbackÚ
ValueErrorr   s    r   Ú	set_levelr*   `   sM   € ð" €}ØˆÜ×Ñ¤Õ/Ü	ˆe‹œÑ	ØˆØ!ÐÜ×Ñ¤Õ-äÐ4Ó5Ð5r   c                 ó.   — t         j                  | «       y)a  Set libav's log level.  It can be set to constants available in this
    module: ``PANIC``, ``FATAL``, ``ERROR``, ``WARNING``, ``INFO``,
    ``VERBOSE``, ``DEBUG``.

    When PyAV logging is disabled, setting this will change the level of
    the logs printed to the terminal.
    N)r   Úav_log_set_levelr   s    r   Úset_libav_levelr-   |   s   € ô ×Ñ˜Õr   c                  óJ   — t         j                  t         j                  «       y)zCRevert back to FFmpeg's log callback, which prints to the terminal.N)r   r#   Úav_log_default_callbackr    r   r   Úrestore_default_callbackr0   ‡   s   € ä×ÑœC×7Ñ7Õ8r   Tc                  ó   — t         S )zWill identical logs be emitted?)Úskip_repeatedr    r   r   Úget_skip_repeatedr3   ’   s   € äÐr   c                 ó   — t        | «      ay)z%Set if identical logs will be emittedN)Úboolr2   )Úvs    r   Úset_skip_repeatedr7   —   s   € ô ˜“G�Mr   c                  ó`   — t         rt        5  t         t        fcddd«       S y# 1 sw Y   yxY w)z-Get the last log that was at least ``ERROR``.N)r   N)Úerror_countÚ	skip_lockÚ
last_errorr    r   r   Úget_last_errorr<   ¢   s1   € õ Üñ 	+Ü¤
Ð*÷	+ñ 	+ð ÷	+ð 	+ús   �$¤-c                   óŽ   — e Zd ZdZ ej
                  ed¬«      Z ej
                  ed¬«      Zd
dej                  fd„Z
d„ Zd„ Zy	)ÚCapturea!  A context manager for capturing logs.

    :param bool local: Should logs from all threads be captured, or just one
        this object is constructed in?

    e.g.::

        with Capture() as logs:
            # Do something.
        for log in logs:
            print(log.message)

    Úreadonly)Ú
visibilityÚprivateÚlocalc                 ót   — g | _         |r$t        j                  t        «       g «      | _        y t
        | _        y ©N)ÚlogsÚthread_capturesÚ
setdefaultr   ÚcapturesÚglobal_captures)ÚselfrB   s     r   Ú__init__zCapture.__init__Ä   s)   € ØˆŒ	ÙÜ+×6Ñ6´y³{ÀBÓGˆD�Mä+ˆD�Mr   c                 ód   — | j                   j                  | j                  «       | j                  S rD   )rH   ÚappendrE   )rJ   s    r   Ú	__enter__zCapture.__enter__Ë   s"   € Ø�‰×Ñ˜TŸY™YÔ'Ø�y‰yÐr   c                 ó8   — | j                   j                  «        y rD   )rH   Úpop)rJ   Útype_ÚvalueÚ	tracebacks       r   Ú__exit__zCapture.__exit__Ï   s   € Ø�‰×ÑÕr   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚcythonÚdeclareÚlistrE   rH   ÚbintrK   rN   rT   r    r   r   r>   r>   °   sG   „ ñð ˆ6�>‰>˜$¨:Ô6€DØˆv�~‰~˜d¨yÔ9€Hñ,˜fŸk™kó ,òór   r>   )Úclass_Únamez4const char *(*item_name_func)(void *) noexcept nogilF)ÚcheckÚptrÚreturnc                 óp   — t        j                  t         j                  t           | «      }|j                  S rD   )rY   ÚcastÚpointerÚlog_contextr^   )r`   Úobjs     r   Úlog_context_namerg   Û   s'   € ô (.§{¡{´6·>±>Ä+Ñ3NÐPSÓ'T€CØ�8‰8€Or   r^   Úmessagec           	      óÔ  — t        j                  t         j                  t           t	        t        j
                  t        «      «      «      }t        j                  t        «      |_        ||_	        |j                  d«      }t        j                  t        j                  t         j                  |«      | dt        j                  t         j                  |«      «       t        |«       y)zTSend a log through the library logging system.

    This is mostly for testing.
    zutf-8z%sN)rY   rc   rd   re   r   ÚsizeofÚaddressÚ	log_classr]   r^   Úencoder   Úav_logÚp_voidÚp_charr   )r	   r^   rh   rf   Úmessage_bytess        r   Úlogrr   ç   s”   € ô (.§{¡{Ü�‰”{Ñ#¤V¬F¯M©M¼+Ó,FÓ%Gó(€Cô —‘¤	Ó*€C„JØ€C„HØ"Ÿ>™>¨'Ó2€Mä‡J�JÜ�‰”F—M‘M 3Ó'ØØÜ�‰”F—M‘M =Ó1ô	ô 	ˆ…Ir   Úc_nameÚ	c_messagec                 ó>  — |t         j                  urt        j                  t        |«      nd}t        j                  t        |«      j                  dd«      }| ||f}| t        k  }d}d }t        5  |rZt        xr	 t        |k(  }|r
t        dz  a
n;t        r5t        dk(  rt        }n#t        d   t        d   dt        d   t        fz  f}da
|a	| t        j                  k(  rt        dz  a|ad d d «       |�t        |«       |r|st        |«       y y y # 1 sw Y   Œ(xY w)	NÚ Úutf8ÚbackslashreplaceFr   r   z%s (repeated %d more times)é   )rY   ÚNULLrc   ÚstrÚbytesÚdecoder   r:   r2   Úlast_logÚ
skip_countr   r   r9   r;   Úlog_callback_emit)	r	   rs   rt   r^   rh   rr   Úis_interestingÚis_repeatedÚ
repeat_logs	            r   Úlog_callback_gilr„   ý   s  € ð (.´V·[±[Ñ'@Œ6�;‰;”s˜FÔ#Àb€DÜ�k‰kœ% Ó+×2Ñ2°6Ð;MÓN€GØ�$˜Ð
 €Cð
 #(¬?Ñ":€Nð  %€KØ€Jä	ñ ÙÜ'Ò;¬H¸©OˆKáÜ˜a‘‘
åä ’?Ü!)‘Jô ! ™Ü  ™Ø5¼À!¹ÄjÐ8QÑQð"�Jð
 �
àˆHð ”C×$Ñ$Ò$Ü˜1ÑˆKØˆJ÷1ð4 ÐÜ˜*Ô%á™kÜ˜#Õð *€~÷;ð ús   Á1A;DÄDc                 ó  — | \  }}}t         j                  t        «       «      xs t        }|r|d   j	                  | «       y t        |«      }|rd|z   nd}t        j                  |«      }|j                  ||j                  «       «       y )Néÿÿÿÿzlibav.zlibav.generic)
rF   Úgetr   rI   rM   r   ÚloggingÚ	getLoggerrr   Ústrip)rr   Ú	lib_levelr^   rh   rH   Úpy_levelÚlogger_nameÚloggers           r   r€   r€   5  sx   € à"Ñ€Iˆt�Wä×"Ñ"¤9£;Ó/ÒB´?€HÙØ�‰×Ñ˜CÔ Øä˜9Ó%€Há%)�(˜T’/¨€KÜ×Ñ˜{Ó+€FØ
‡J�Jˆx˜Ÿ™›Õ)r   ÚformatÚargsc           	      ó|  — t        «       }|sy |t        kD  r|t        j                  k7  ry t	        d||«       t
        j                  }| rIt        j                  t
        j                  t
        j                  t        j                        | «      d   nt
        j                  }|r|j                  r|j                  | «      }t
        j                  5  	 t        |||«       d d d «       y # t        $ r; t        t        d|||«       t!        j"                  «       \  }}	}
t%        ||	|
«       Y ŒLw xY w# 1 sw Y   y xY w)Niÿ  r   z0av.logging: exception while handling %s[%d]: %s
)ÚPy_IsInitializedr'   r   r   Ú	vsnprintfrY   rz   rc   rd   ÚAVClassÚ	item_nameÚgilr„   Ú	Exceptionr   r   ÚsysÚexc_infoÚPyErr_Display)r`   r	   r�   r�   Úinitedrh   r^   ÚclsÚexcrQ   Útbs              r   r(   r(   E  s  € ô +Ó,€FÙØØÔ Ò  U¬c×.>Ñ.>Ò%>Øô ˆg�t˜V TÔ*ô !'§¡€Dñ ô 	�‰”F—N‘N¤6§>¡>´#·+±+Ñ#>Ñ?ÀÓEÀaÒHä�[‰[ð ñ
 ˆs�}Š}Ø�}‰}˜SÓ!ˆä	�‰ñ *ð	*Ü˜U D¨'Ô2÷*ð *øô ò 
	*ÜÜØCØØØôô !Ÿ\™\›^‰NˆC�˜Ü˜#˜u bÖ)ð
	*ú÷*ð *ús+   ÃD2ÃC+Ã+AD/Ä,D2Ä.D/Ä/D2Ä2D;c                  ó   — y rD   r    )r`   r	   r�   r�   s       r   r$   r$   r  s   € ð 	r   )ZrX   rˆ   r˜   Ú	threadingr   r   rY   Úcython.cimports.libc.stdior   r   Úcython.cimports.libc.stdlibr   r   r   ÚAV_LOG_PANICÚPANICr   ÚFATALr   ÚERRORr   ÚWARNINGr   ÚINFOr   ÚVERBOSEr   ÚDEBUGÚAV_LOG_TRACEÚTRACEÚCRITICALÚccallr&   r   rZ   Úobjectr   ÚAV_LOG_QUIETr'   ÚLoggerÚmanagerÚ
loggerDictr‰   ÚsetLevelr!   r*   r-   r0   r\   r2   r:   r~   r   r3   r7   r;   r9   r<   r[   rI   ÚdictrF   ÚfinalÚcclassr>   Ústructrd   r”   rp   re   ÚtypedefÚitem_name_funcÚcfuncÚnogilÚ	exceptvalro   rg   rl   rc   r•   r{   rr   Úp_const_charr„   r€   Úva_listÚvoidr(   r$   r#   r    r   r   ú<module>rÁ      sY  ðñ&óP Û 
ß %ã ß 6ß 4ð 	×Ñ€Ø×Ñ€Ø×Ñ€Ø
×
Ñ
€Ø
‡�€Ø
×
Ñ
€Ø×Ñ€Ø×Ñ€ð €ð ‡�ð�v—z‘zò ó ðð$ !�&—.‘. ¨Ó.€Ø"�F—N‘N 6§:¡:¨s×/?Ñ/?Ó@Ð ð �'—.‘.×(Ñ(×3Ñ3Ñ3Ø€G×Ñ�gÓ×'Ñ'¨¯©Ô8òò
6ò8 ò9ð
 �—‘˜vŸ{™{¨DÓ1€ØˆF�N‰N˜6¡4£6Ó*€	Øˆ6�>‰>˜& $Ó'€ØˆV�^‰^˜FŸJ™J¨Ó*€
òò
ð ˆV�^‰^˜F DÓ)€
Øˆf�n‰n˜VŸZ™Z¨Ó+€ð ‡�ñó ðð !�&—.‘.  rÓ*€Ø �&—.‘.  rÓ*€ð ‡�Ø‡�÷ð ó ó ððB ˆf�m‰mØ�>‰>˜#Ÿ+™+Ñ&Ø	�‰ô€ð
  �—‘Ð VÓW€ð ‡�Ø‡�Ø€×Ñ˜Ôð˜&Ÿ-™-ð ¨F¯M©Mò ó ó ó ðð
 ˆF�N‰N˜3Ÿ;™;Ó'€	Ø!�f—k‘k .Ð2BÓC€	Ô ð ‡�ðˆv�z‰zð  ð ¨sò ó ðð* ‡�ð4Ø�:‰:ð4Ø%×2Ñ2ð4Ø?E¿}¹}ò4ó ð4ðn ‡�ñ*ó ð*ð ‡�Ø‡�Ø€×Ñ˜Ôð'*Ø	�‰ð'*à�:‰:ð'*ð ×Ñð'*ð �+‰+ð	'*ð
 ‡[�[ò'*ó ó ó ð'*ðT ‡�Ø‡�Ø€×Ñ˜Ôð	Ø	�‰ð	à�:‰:ð	ð ×Ñð	ð �+‰+ð		ð
 ‡[�[ò	ó ó ó ð	ð × Ñ ˜Õ 'r   