§
    -?Äj¸  ã                   ój   — d dl Z d dlZd dlZddlmZ  G d„ dej        ¦  «        Zd„ Zdd„Zd	„ Z	d
„ Z
dS )é    Né   )Úloggerc                   óB   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zd	d„Zd„ Z	dS )
Ú
LogCatcherzÞThread to keep reading from stderr so that the buffer does not
    fill up and stalls the ffmpeg process. On stderr a message is send
    on every few frames with some meta information. We only keep the
    last ones.
    c                 óÀ   — || _         d| _        g | _        d| _        t          j                             | ¦  «         d| _        d| _        |  	                    ¦   «          d S )NÚ ó    TF)
Ú_fileÚ_headerÚ_linesÚ
_remainderÚ	threadingÚThreadÚ__init__ÚdaemonÚ_should_stopÚstart)ÚselfÚfiles     úHC:\Projects\Historical\venv\Lib\site-packages\imageio_ffmpeg/_parsing.pyr   zLogCatcher.__init__   sU   € ØˆŒ
ØˆŒØˆŒØˆŒÝÔ×!Ò! $Ñ'Ô'Ð'ØˆŒØ!ˆÔØ�
Š
‰Œˆˆˆr	   c                 ó   — d| _         d S )NT)r   ©r   s    r   Ústop_mezLogCatcher.stop_me   s   € Ø ˆÔÐÐr	   c                 ó   — | j         S )z>Get header text. Empty string if the header is not yet parsed.)r   r   s    r   ÚheaderzLogCatcher.header   s   € ð Œ|Ðr	   r   c                 ó„  — |dk    r€t          j         ¦   «         |z   }|                      ¦   «         rVt          j         ¦   «         |k     r?t          j        d¦  «         |                      ¦   «         rt          j         ¦   «         |k     °?d                     | j        ¦  «        }| j        dz   |                     dd¦  «        z   S )aG  Get the whole text written to stderr so far. To preserve
        memory, only the last 50 to 100 frames are kept.

        If a timeout is given, wait for this thread to finish. When
        something goes wrong, we stop ffmpeg and want a full report of
        stderr, but this thread might need a tiny bit more time.
        r   g{®Gáz„?ó   
ú
úutf-8Úignore)ÚtimeÚis_aliveÚsleepÚjoinr   r   Údecode)r   ÚtimeoutÚetimeÚliness       r   Úget_textzLogCatcher.get_text!   s¤   € ð �QŠ;ˆ;Ý”I‘K”K 'Ñ)ˆEØ—-’-‘/”/ð !¥d¤i¡k¤k°EÒ&9Ð&9Ý”
˜4Ñ Ô Ð ð —-’-‘/”/ð !¥d¤i¡k¤k°EÒ&9Ð&9ð —
’
˜4œ;Ñ'Ô'ˆØŒ|˜dÑ" U§\¢\°'¸8Ñ%DÔ%DÑDÐDr	   c                 ó  — t           }| j        �sIt          j        d¦  «         	 | j                             d¦  «        }n# t          $ r Y �nw xY w|s�n|                     dd¦  «                             dd¦  «        }|                     d¦  «        }| j	        |d         z   |d<   | 
                    d¦  «        | _	        | j                             |¦  «         | j        sSt          | j        ¦  «        r>d                     | j        ¦  «        }| xj        |                     dd¦  «        z  c_        n| j        r || j        ¦  «        | _        | j        �¯I	 | j                             ¦   «          d S # t$          $ r Y d S w xY w)	Nr   é   ó   r   s   

éÿÿÿÿr   r    )Úlimit_linesr   r!   r#   r
   ÚreadÚ
ValueErrorÚreplaceÚsplitr   Úpopr   Úextendr   Úget_output_video_liner$   r%   ÚcloseÚ	Exception)r   Úlimit_lines_localÚliner(   r   s        r   ÚrunzLogCatcher.run3   s�  € å'ÐàÔ#ñ 	=ÝŒJ�q‰MŒMˆMðØ”z—’ rÑ*Ô*��øÝð ð ð Ø‘ðøøøàð Ùà—<’<  uÑ-Ô-×5Ò5°g¸uÑEÔEˆDØ—J’J˜uÑ%Ô%ˆEØ”¨¨q¬Ñ1ˆE�!‰HØ#Ÿiši¨™mœmˆDŒOàŒK×Ò˜uÑ%Ô%Ð%Ø”<ð =Ý(¨¬Ñ5Ô5ð EØ"ŸZšZ¨¬Ñ4Ô4�FØ�L”L F§M¢M°'¸8Ñ$DÔ$DÑD�L”LøØ”ð =Ø/Ð/°´Ñ<Ô<�”ð+ Ô#ñ 	=ð2	ØŒJ×ÒÑÔÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøs#   ¥A  Á 
AÁAÅE5 Å5
FÆFN)r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úpropertyr   r)   r:   © r	   r   r   r      s~   € € € € € ðð ðð ð ð!ð !ð !ð ðð ñ „XððEð Eð Eð Eð$ ð  ð  ð  ð  r	   r   c                 óª   — d}| D ]M}|                      ¦   «         }|                     d¦  «        rd}Œ.|r|                     d¦  «        rd|v r|c S ŒNdS )z[Get the line that defines the video stream that ffmpeg outputs,
    and which we read.
    Fs   Output Ts   Stream s    Video:N©ÚlstripÚ
startswith)r(   Ú	in_outputr9   Úslines       r   r5   r5   V   s~   € ð €IØð ð ˆØ—’‘”ˆØ×Ò˜JÑ'Ô'ð 	ØˆIˆIØð 	Ø×Ò 
Ñ+Ô+ð °
¸eÐ0CÐ0CØ���øðð r	   é    c                 óP   — t          | ¦  «        d|z  k    rdg| | d…         z   } | S )z(When number of lines > 2*N, reduce to N.é   s#   ... showing only last few lines ...N)Úlen)r(   ÚNs     r   r.   r.   d   s3   € å
ˆ5�z„z�A˜‘EÒÐØ7Ð8¸5À!ÀÀÀ¼:ÑEˆØ€Lr	   c                  óŒ  — t          | ¦  «        dk    rt          | d         ¦  «        S t          | ¦  «        dk    r.dt          | d         ¦  «        z  t          | d         ¦  «        z   S t          | ¦  «        dk    rGdt          | d         ¦  «        z  dt          | d         ¦  «        z  z   t          | d         ¦  «        z   S dS )zZconverts a time to second. Either cvsecs(min, secs) or
    cvsecs(hours, mins, secs).
    r   r   rI   é<   é   i  N)rJ   Úfloat)Úargss    r   ÚcvsecsrQ   k   s¤   € õ ˆ4�y„y�A‚~€~Ý�T˜!”W‰~Œ~ÐÝ	ˆT‰Œ�aŠˆØ•E˜$˜qœ'‘N”NÑ"¥U¨4°¬7¡^¤^Ñ3Ð3Ý	ˆT‰Œ�aŠˆØ•e˜D œG‘n”nÑ$ r­E°$°q´'©N¬NÑ':Ñ:½UÀ4ÈÄ7¹^¼^ÑKÐKð 
ˆr	   c                 óŽ  — |                       ¦   «         }i }|d                              dd¦  «        d                              d¦  «        d         }|                     ¦   «         dz   |d                              ¦   «         z   |d<   d„ |D ¦   «         }|d         }|                     d	d¦  «        d                              ¦   «                              dd¦  «        d                              ¦   «         |d
<   t	          j        d|                     d	d¦  «        d         ¦  «        d                              ¦   «         |d<   d„ |D ¦   «         }t          |¦  «        dk    re|d         }|                     dd¦  «        d                              ¦   «                              dd¦  «        d                              ¦   «         |d<   d}|d         fD ]F}t	          j        d|¦  «        }	|	r-t          |	d         d                              ¦   «         ¦  «        }ŒG||d<   |d         }t	          j        d|¦  «        }
||
 	                    ¦   «         |
 
                    ¦   «         dz
  …                              d¦  «        }t          t          t          |¦  «        ¦  «        |d<   |d         }t	          j        d|¦  «        }
||
 	                    ¦   «         |
 
                    ¦   «         dz
  …                              d¦  «        }t          t          t          |¦  «        ¦  «        |d<   |d         |d         k    r4t          j        d                     |d         |d         ¦  «        ¦  «         t	          j        d¦  «        }|                     | ¦  «        }
d}|
�|
                     ¦   «         d         }t          |¦  «        |d<   d„ |D ¦   «         d         }t	          j        d|¦  «        }
d}|
�M||
 	                    ¦   «         dz   |
 
                    ¦   «         …                              d¦  «        }t'          |Ž }||d<   |S )Nr   Úversionr   r-   Ú	Copyrightú Úffmpeg_versionc                 óh   — g | ]/}|                      ¦   «                              d ¦  «        rd|v ¯-|‘Œ0S )úStream z Video: rB   ©Ú.0Úls     r   ú
<listcomp>z'parse_ffmpeg_header.<locals>.<listcomp>‚   óB   € ð ð ð Ø˜AŸHšH™JœJ×1Ò1°)Ñ<Ô<ðØAKÈqÀÀˆÀÀÀr	   zVideo: Úcodecz,\s*(?![^()]*\))Úpix_fmtc                 óh   — g | ]/}|                      ¦   «                              d ¦  «        rd|v ¯-|‘Œ0S )rX   z Audio: rB   rY   s     r   r\   z'parse_ffmpeg_header.<locals>.<listcomp>•   r]   r	   zAudio: Úaudio_codecz ([0-9]+\.?[0-9]*) (fps)Úfpsz [0-9]*x[0-9]*(,| )ÚxÚsource_sizeÚsizezIThe frame size for reading {} is different from the source frame size {}.zrotate\s+:\s([0-9]+)Úrotatec                 ó   — g | ]}d |v ¯|‘Œ	S )z
Duration: r@   rY   s     r   r\   z'parse_ffmpeg_header.<locals>.<listcomp>È   s"   € Ð2Ð2Ð2�! °Ð 1Ð 1ˆAÐ 1Ð 1Ð 1r	   z, [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]ú:Úduration)Ú
splitlinesr2   ÚstriprC   ÚrerJ   ÚfindallrO   Úsearchr   ÚendÚtupleÚmapÚintr   ÚwarningÚformatÚcompileÚgroupsrQ   )Útextr(   ÚmetaÚverÚ
videolinesr9   Ú
audiolinesÚ
audio_linerb   ÚmatchesÚmatchÚpartsÚ
reo_rotaterf   ri   Úhmss                   r   Úparse_ffmpeg_headerr‚   w   s  € Ø�OŠOÑÔ€EØ€Dð
 �Œ(�.Š.˜ AÑ
&Ô
& rÔ
*×
0Ò
0°Ñ
=Ô
=¸aÔ
@€CØ ŸYšY™[œ[¨3Ñ.°°q´·²Ñ1AÔ1AÑA€DÐ	Ñðð Øðñ ô €Jð
 �aŒ=€DØ—J’J˜y¨!Ñ,Ô,¨RÔ0×7Ò7Ñ9Ô9×?Ò?ÀÀQÑGÔGÈÔJ×PÒPÑRÔR€Dˆ�MÝ”hð 	Ø�
Š
�9˜aÑ Ô  Ô$ñ	ô 	ð ô		÷ 
Š‰Œð 	ˆ�Oðð Øðñ ô €Jõ ˆ:�„˜ÒÐØ ”]ˆ
à×Ò˜Y¨Ñ*Ô*¨2Ô.×5Ò5Ñ7Ô7×=Ò=¸cÀ1ÑEÔEÀaÔH×NÒNÑPÔPð 	ˆ]Ñð €CØ˜A”�ð /ð /ˆÝ”*Ð8¸$Ñ?Ô?ˆØð 	/Ý˜ œ
 1œ×+Ò+Ñ-Ô-Ñ.Ô.ˆCøØ€Dˆ�Kð �aŒ=€DÝŒIÐ+¨TÑ2Ô2€EØ�—’‘” §¢¡¤¨q¡Ð0Ô1×7Ò7¸Ñ<Ô<€EÝ¥¥C¨¡¤Ñ0Ô0€DˆÑð �bŒ>€DÝŒIÐ+¨TÑ2Ô2€EØ�—’‘” §¢¡¤¨q¡Ð0Ô1×7Ò7¸Ñ<Ô<€EÝ��S %™œÑ)Ô)€Dˆ�Lð ˆMÔ˜d 6œlÒ*Ð*ÝŒð7ß7=²vØ�V”˜d =Ô1ñ8ô 8ñ	
ô 	
ð 	
õ ”Ð3Ñ4Ô4€JØ×Ò˜dÑ#Ô#€EØ€FØÐØ—’‘” Ô"ˆÝ˜‘[”[€Dˆ�Nð 3Ð2�uÐ2Ñ2Ô2°1Ô5€DÝŒIÐDÀdÑKÔK€EØ€HØÐØ�5—;’;‘=”= 1Ñ$ u§y¢y¡{¤{Ð2Ô3×9Ò9¸#Ñ>Ô>ˆÝ˜3�<ˆØ€DˆÑà€Kr	   )rG   )rl   r   r!   Ú_utilsr   r   r   r5   r.   rQ   r‚   r@   r	   r   ú<module>r„      s¾   ðØ 	€	€	€	Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð ðKð Kð Kð Kð K�Ô!ñ Kô Kð Kð\ð ð ðð ð ð ð	Lð 	Lð 	LðYð Yð Yð Yð Yr	   