§
    Û×j°}  ã                   óp  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	ddl
mZmZmZmZ ddddd	d
œZdddddœZddddddœZdddddœZdZdZdZd6d„Zd7d„Zd„ Zdefd„Zdefd„Zd „ Zd!„ Zd"„ Zd#„ Z ed$¬%¦  «        dd&œd'„¦   «         Z d(„ Z!d)„ Z"d*„ Z#d+„ Z$d8d-„Z%d.„ Z&d/„ Z'd0„ Z(d9d2„Z)d9d3„Z*d:d4„Z+d5„ Z,dS );é    N)Ú	lru_cacheé   )Úclamp_virtual_frame_rangeÚget_virtual_media_entryÚparse_virtual_media_pathÚstrip_virtual_media_suffixÚ	smpte2084úarib-std-b67Úbt709Ú2020_10Ú2020_12)r	   r
   r   z	bt2020-10z	bt2020-12Ú2020Ú709Ú170mÚ470bg)Úbt2020r   Ú	smpte170mÚbt470bgÚ2020_nclÚ2020_cl)Úbt2020ncÚbt2020cr   r   r   ÚlimitedÚfull)Útvr   Úpcr   éË   é@   é   c                 óü  — | dv r|S t          | t          t          f¦  «        rt          | ¦  «        S t          | ¦  «                             ¦   «         }d|v r|                     dd¦  «        \  }}nGd|v r|                     dd¦  «        \  }}n)	 t          |¦  «        S # t          t          f$ r |cY S w xY w	 t          |¦  «        }t          |¦  «        }n# t          t          f$ r |cY S w xY w|dk    r|n||z  S )N)NÚ úN/Az0:1z0/0ú:r   ú/r   )Ú
isinstanceÚintÚfloatÚstrÚstripÚsplitÚ	TypeErrorÚ
ValueError)ÚvalueÚdefaultÚtextÚnumÚdens        úAC:\Users\johnn\OneDrive\Documents\AI\shared\utils\video_decode.pyÚ_parse_media_ratior3      s&  € ØÐ/Ð/Ð/ØˆÝ�%�#�u˜Ñ&Ô&ð Ý�U‰|Œ|ÐÝˆu‰:Œ:×ÒÑÔ€DØ
ˆd€{€{Ø—:’:˜c 1Ñ%Ô%‰ˆˆSˆSØ	�ˆˆØ—:’:˜c 1Ñ%Ô%‰ˆˆSˆSð	Ý˜‘;”;ÐøÝ�:Ð&ð 	ð 	ð 	ØˆNˆNˆNð	øøøðÝ�C‰jŒjˆÝ�C‰jŒjˆˆøÝ•zÐ"ð ð ð Øˆˆˆðøøøà˜Q’h�hˆ7ˆ7 C¨#¡IÐ-s$   ÂB ÂB5Â4B5Â9C ÃC.Ã-C.ç        c                 ó–  — | dv r|S t          | t          t          f¦  «        rt          | ¦  «        S t          | ¦  «                             ¦   «         }d|vr)	 t          |¦  «        S # t
          t          f$ r |cY S w xY w	 d}|                     d¦  «        D ]}|dz  t          |¦  «        z   }Œ|S # t
          t          f$ r |cY S w xY w)N)Nr!   r"   r#   r4   g      N@)r%   r&   r'   r(   r)   r+   r,   r*   )r-   r.   r/   ÚtotalÚparts        r2   Ú_parse_media_durationr8   .   sö   € ØÐ!Ð!Ð!ØˆÝ�%�#�u˜Ñ&Ô&ð Ý�U‰|Œ|ÐÝˆu‰:Œ:×ÒÑÔ€DØ
�$€€ð	Ý˜‘;”;ÐøÝ�:Ð&ð 	ð 	ð 	ØˆNˆNˆNð	øøøðØˆØ—J’J˜s‘O”Oð 	/ð 	/ˆDØ˜D‘L¥5¨¡;¤;Ñ.ˆEˆEØˆøÝ•zÐ"ð ð ð Øˆˆˆðøøøs$   ÁA' Á'A=Á<A=Â0B2 Â2CÃCc                 ód  — dd l }d| z  }d|z  }||z  }|                     ||z  ¦  «        }	|	|z  }
g }	 |dk    rt          |¦  «        |k    rnZt          ||
z
  |z  d¦  «        }|                     |¦  «        }|	|z  }	|	|k    rn#|                     |	¦  «         |
||z  z  }
||z  }Œt|d |…         S )Nr   r   Té   )ÚmathÚceilÚlenÚroundÚappend)Ú	video_fpsÚvideo_frames_countÚmax_target_frames_countÚ
target_fpsÚstart_target_framer;   Úvideo_frame_durationÚtarget_frame_durationÚtarget_timeÚframe_noÚcur_timeÚ	frame_idsÚdiffÚadd_frames_counts                 r2   Ú_resample_frame_indicesrM   B   s  € Ø€K€K€Kà˜y™=ÐØ 
™NÐØ$Ð'<Ñ<€KØ�yŠy˜Ð';Ñ;Ñ<Ô<€HØÐ.Ñ.€HØ€Ið
-Ø" aÒ'Ð'­C°	©N¬NÐ>UÒ,UÐ,UØÝ�k HÑ,Ð0DÑDÀaÑHÔHˆØŸ9š9 T™?œ?ÐØÐ$Ñ$ˆØÐ)Ò)Ð)ØØ×Ò˜Ñ"Ô"Ð"ØÐ$Ð';Ñ;Ñ;ˆØÐ,Ñ,ˆð
-ð Ð-Ð-Ð-Ô.Ð.ó    Úbinary_namec           	      óü  — ddddœ}t           j                             |                     | d¦  «        d¦  «        }t          |¦  «        dk    r!t           j                             |¦  «        r|S t           j                             t           j                             t           j                             t           j                             t          ¦  «        ¦  «        ¦  «        ¦  «        }t           j         	                    |d| t           j
        dk    rd	ndz   ¦  «        }t           j                             |¦  «        r|S t          j        | t           j
        dk    rd	ndz   ¦  «        pt          j        | ¦  «        S )
NÚFFMPEG_BINARYÚFFPROBE_BINARYÚFFPLAY_BINARY)ÚffmpegÚffprobeÚffplayr!   r   Úffmpeg_binsÚntz.exe)ÚosÚenvironÚgetr=   ÚpathÚisfileÚdirnameÚabspathÚ__file__ÚjoinÚnameÚshutilÚwhich)rO   Úenv_mapÚbinary_pathÚ	repo_rootÚ	candidates        r2   Ú_resolve_media_binaryri   Y   s  € Ø(Ð5EÐQ`ÐaÐa€GÝ”*—.’. §¢¨[¸"Ñ!=Ô!=¸rÑBÔB€KÝ
ˆ;ÑÔ˜!ÒÐ¥¤§¢¨{Ñ ;Ô ;ÐØÐÝ”—’¥¤§¢µ´·²ÅÄÇÂÕPXÑ@YÔ@YÑ0ZÔ0ZÑ [Ô [Ñ\Ô\€IÝ”—’˜Y¨°{ÕPRÔPWÐ[_ÒP_ÐP_ÀfÀfÐegÑ7hÑiÔi€IÝ	„w‡~‚~�iÑ Ô ð ØÐÝŒ<˜µ´¸D²° v vÀbÑIÑJÔJÐgÍfÌlÐ[fÑNgÔNgÐgrN   c                 ó    — t          | ¦  «        S ©N)ri   )rO   s    r2   Úresolve_media_binaryrl   e   s   € Ý  Ñ-Ô-Ð-rN   c                 ó   — t          | ¦  «        }|�|€|S t          |                     d¦  «        pd¦  «        }t          ||¦  «        \  }}t	          |¦  «        }|j        |d<   ||d<   ||d<   |€|S t          d||z
  dz   ¦  «        }||d<   t          |                     d¦  «        pd¦  «        }t          |                     d	¦  «        pd¦  «        }	|dk    r|nt          |	pd¦  «        }
|
dk    r||
z  |d
<   |S )NÚframe_countr   Úsource_pathÚvirtual_start_frameÚvirtual_end_framer   Ú	fps_floatr4   ÚfpsÚduration)r   r&   r[   r   Údictro   Úmaxr'   )Ú
video_pathÚmetadataÚspecÚtotal_framesÚstart_frameÚ	end_frameÚvirtual_metadataÚvirtual_frame_countrr   rs   Úeffective_fpss              r2   Ú_augment_virtual_metadatar€   i   s1  € Ý# JÑ/Ô/€DØ€|�xÐ'ØˆÝ�x—|’| MÑ2Ô2Ð7°aÑ8Ô8€LÝ6°t¸\ÑJÔJÑ€K�Ý˜H‘~”~ÐØ&*Ô&6Ð�]Ñ#Ø.9ÐÐ*Ñ+Ø,5ÐÐ(Ñ)ØÐØÐÝ˜a ¨[Ñ!8¸1Ñ!<Ñ=Ô=ÐØ&9Ð�]Ñ#ÝÐ&×*Ò*¨;Ñ7Ô7Ð>¸3Ñ?Ô?€IÝ
Ð×"Ò" 5Ñ)Ô)Ð.¨QÑ
/Ô
/€CØ!*¨Q¢ �I�IµE¸#¸(À±O´O€MØ�qÒÐØ':¸]Ñ'JÐ˜Ñ$ØÐrN   c           
      óÚ  — t          |t          ¦  «        sd S |                     d¦  «        dk    r(|                     d¦  «        }|€d S |j        \  }}d}d}n×|                     d¦  «        dk    r¼|                     d¦  «        }|�"t	          t          |dd¦  «        ¦  «        d	k    rd S t	          |j        d
         ¦  «        }t	          |j        d         ¦  «        }t	          |j        d         ¦  «        }t          t          |                     d¦  «        pd¦  «        d¦  «        }nd S t          | i dt          | ¦  «        �t          | ¦  «        j        nd“d|“d|“d|“d|“d|“dt	          t          |¦  «        ¦  «        “d|“d|dk    rt          ||z  ¦  «        nd“dd“dd“dd“dd“dd“dd“dd“dd “d t          |                     d!¦  «        ¦  «        d"œ¥¦  «        S )#NÚkindÚimageç      ð?r   ÚvideoÚtensorÚndimr   é   é   é   rs   r4   ro   r!   ÚwidthÚheightÚdisplay_widthÚdisplay_heightrr   rn   rt   Ú
start_timeÚsample_aspect_ratioú1:1Údisplay_aspect_ratioÚcolor_transferÚcolor_primariesÚcolor_spaceÚcolor_rangeÚneeds_sar_fixFÚhdr)Úneeds_tonemapr˜   )r%   ru   r[   Úsizer&   ÚgetattrÚshaperv   r'   r€   r   ro   r>   Úbool)rw   Úentryrƒ   r‹   rŒ   rr   rn   r†   s           r2   Ú_build_vsource_metadatarŸ      su  € Ý�e�TÑ"Ô"ð ØˆtØ‡y‚y�ÑÔ˜GÒ#Ð#Ø—	’	˜'Ñ"Ô"ˆØˆ=Ø�4Øœ
‰ˆˆvØˆ	ØˆˆØ	�Š�6Ñ	Ô	˜gÒ	%Ð	%Ø—’˜8Ñ$Ô$ˆØˆ>�S¥¨°¸Ñ!;Ô!;Ñ<Ô<ÀÒAÐAØ�4Ý�F”L ”OÑ$Ô$ˆÝ�V”\ !”_Ñ%Ô%ˆÝ˜&œ, qœ/Ñ*Ô*ˆÝ�˜eŸiši¨Ñ.Ô.Ð5°#Ñ6Ô6¸Ñ<Ô<ˆ	ˆ	àˆtÝ$ Zð 2ØÕKcÐdnÑKoÔKoÐK{Õ/°
Ñ;Ô;ÔGÐGð  BDð2à�ð2ð 	�&ð2ð 	˜ð	2ð
 	˜&ð2ð 	�Yð2ð 	�s•5˜Ñ#Ô#Ñ$Ô$ð2ð 	�{ð2ð 	°iÀ!²m°m•E˜+¨	Ñ1Ñ2Ô2Ð2Èð2ð 	�cð2ð 	˜uð2ð 	 ð2ð 	˜"ð2ð 	˜2ð2ð 	�rð2ð  	�rð!2ð" 	˜ð#2ð$ Ý�E—I’I˜eÑ$Ô$Ñ%Ô%ð'2ð 2ð 2ñ ô ð rN   c                 ó†   — dD ]=}	 t          |                      |¦  «        ¦  «        c S # t          t          f$ r Y Œ:w xY wd S )N)Úbest_effort_timestamp_timeÚpts_timeÚpkt_pts_time)r'   r[   r+   r,   )ÚframeÚkeys     r2   Ú_frame_timestampr¦   ª   s^   € ØIð ð ˆð	Ý˜Ÿš 3™œÑ(Ô(Ð(Ð(Ð(øÝ�:Ð&ð 	ð 	ð 	ØˆDð	øøøàˆ4s   †!*ª>½>c                 óø  — |dk    s|dk    rdS t          t          t          d|t          d|¦  «        z
  ¦  «        |z  ¦  «        ¦  «        }|dk    rdS d}t          d|t          d||z
  ¦  «        |z  z   ¦  «        }|ddddd|d	›d
�dddd| g}t          j        |ddddd¬¦  «        }	|	j        dk    r|S 	 d„ d„ t          j        |	j        ¦  «         	                    d¦  «        pg D ¦   «         D ¦   «         }
n$# t          j
        t          t          f$ r |cY S w xY w|
rt          |
¦  «        |||z  z
  k     r|S t          dt          t          t          |
¦  «        |z
  |z  ¦  «        ¦  «        dz   ¦  «        S )Nr   r4   r   ú-vÚerrorú-select_streamsúv:0z-read_intervalsz.6fz%+#96z-show_entriesz6frame=best_effort_timestamp_time,pts_time,pkt_pts_timeú-ofÚjsonTúutf-8ÚignoreF©Úcapture_outputr/   ÚencodingÚerrorsÚcheckc                 ó   — g | ]}|®|‘ŒS rk   © )Ú.0Ú	timestamps     r2   ú
<listcomp>z1_probe_mkv_sparse_frame_count.<locals>.<listcomp>À   s;   € ð  að  að  a Ið  KTð  K`�ið  K`ð  K`ð  K`rN   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rk   )r¦   )r·   r¤   s     r2   ú	<genexpr>z0_probe_mkv_sparse_frame_count.<locals>.<genexpr>À   sC   è è € ð  2Gð  2GÈeÕ2BÀ5Ñ2IÔ2Ið  2Gð  2Gð  2Gð  2Gð  2Gð  2GrN   Úframesr   )r&   r>   rv   Ú
subprocessÚrunÚ
returncoder­   ÚloadsÚstdoutr[   ÚJSONDecodeErrorr+   r,   Úmin)ro   Úffprobe_pathrt   r�   rr   rh   Útail_framesÚ
tail_startÚ	probe_cmdÚprobeÚ
timestampss              r2   Ú_probe_mkv_sparse_frame_countrÊ   ³   s  € Ø�1‚}€}˜	 Qš˜ØˆqÝ•E�#˜c 8­c°#°zÑ.BÔ.BÑ#BÑCÔCÀiÑOÑPÔPÑQÔQ€IØ�A‚~€~ØˆqØ€KÝ�S˜*¥s¨1¨i¸+Ñ.EÑ'FÔ'FÈÑ'RÑRÑSÔS€JØ˜t WÐ.?ÀÐHYÐ^hÐ[sÐ[sÐ[sÐ[sð  vEð  Gð  AFð  HNð  P[ð  \€IÝŒN˜9°TÀÈwÐ_gÐotÐuÑuÔu€EØÔ˜1ÒÐØÐðð að  að  2Gð  2GÕX\ÔXbÐchÔcoÑXpÔXp×XtÒXtÐu}ÑX~ÔX~ð  YEð  CEð  2Gñ  2Gô  2Gð  añ  aô  aˆ
ˆ
øÝÔ ¥)­ZÐ8ð ð ð ØÐÐÐðøøøàð �˜Z™œ¨:¸ÀiÑ8OÑ+OÒOÐOØÐÝˆq•#•e�S ™_œ_¨zÑ9¸YÑFÑGÔGÑHÔHÈ1ÑLÑMÔMÐMs   Â8AC; Ã;DÄDé€   )Úmaxsize)Úfile_versionc          
      óî  — t          j        | ¦  «        } t          | ¦  «        x}�t          | |¦  «        S t          j        t	          | ¦  «        ¦  «        }t          d¦  «        }|€d S |dddddddd	|g
}t          j        |d
d
ddd¬¦  «        }|j        dk    rd S 	 t          j
        |j        ¦  «        }n# t          j        $ r Y d S w xY w|                     d¦  «        pg }t          |¦  «        dk    rd S |d         }	t          |	                     d¦  «        pd¦  «        }
t          |	                     d¦  «        pd¦  «        }t!          |	                     d¦  «        pd¦  «        }t!          |	                     d¦  «        pd¦  «        }|dk    s|dk    rd S t#          |	                     d¦  «        d¦  «        pd}t#          |	                     d¦  «        ¦  «        }|}t%          |dz
  ¦  «        dk    r't'          dt!          ||z  ¦  «        dz  dz  ¦  «        }n.|�,|dk    r&t'          dt!          ||z  ¦  «        dz  dz  ¦  «        }t#          |	                     d¦  «        d¦  «        p$t#          |	                     d¦  «        d¦  «        pd}|	                     d¦  «        p+|                     d¦  «        pi                      d¦  «        pd}	 t)          |¦  «        }n# t*          t,          f$ r d}Y nw xY w	 t)          |	                     d ¦  «        pd¦  «        }n# t*          t,          f$ r d}Y nw xY w	 t!          |	                     d!¦  «        ¦  «        }n¼# t*          t,          f$ r¨ d}|                     ¦   «                              d"¦  «        rIt3          ||t5          |	                     d#¦  «        pi                      d$¦  «        |¦  «        ||¦  «        }|dk    r-|dk    r%|dk    rt!          t7          ||z  ¦  «        ¦  «        nd}Y nw xY w|	                     d%¦  «        pg }d}|D ]e}|                     d&¦  «        �N	 t!          t7          t)          |d&         ¦  «        ¦  «        ¦  «        }ŒH# t*          t,          t8          f$ r Y Œaw xY wŒf||k    }|}t%          |¦  «        d'z  d(k    r||}}t          |	                     d)¦  «        pd¦  «                             ¦   «         }t          |	                     d*¦  «        pd¦  «                             ¦   «         }t          |	                     d+¦  «        pd¦  «                             ¦   «         }t          |	                     d,¦  «        pd¦  «                             ¦   «         }t          |	                     d¦  «        pd-¦  «        }t          |	                     d¦  «        pd¦  «        }|d.v p|d/k    pt;          d0„ |D ¦   «         ¦  «        } t=          | i d|
“d1|“d|“d|“d2|“d3|“d&|“d4|“d5|dk    rt!          t7          |¦  «        ¦  «        nd“d6|“d|“d |“d|“d|“d)|“d*|“d+|“||| d7œ¥¦  «        S )8NrU   r¨   r©   rª   r«   z-show_streamsz-show_formatr¬   r­   Tr®   r¯   Fr°   r   ÚstreamsÚ
codec_namer!   Úprofiler‹   rŒ   r�   r„   r’   g�íµ ÷Æ°>rŠ   Úavg_frame_rater4   Úr_frame_ratert   Úformatr�   Ú	nb_framesz.mkvÚtagsÚDURATIONÚside_data_listÚrotationé´   éZ   r“   r”   r•   r–   r‘   >   r	   r
   r   c              3   ó†   K  — | ]<}t          |                     d ¦  «        pd¦  «                             ¦   «         dv V — Œ=dS )Úside_data_typer!   >   úmastering display metadataúcontent light level metadataN)r(   r[   Úlower)r·   Úitems     r2   r»   z.probe_video_stream_metadata.<locals>.<genexpr>  sk   è è € ð cð cð }A�ˆD�HŠHÐ%Ñ&Ô&Ð,¨"Ñ-Ô-×3Ò3Ñ5Ô5Ð9wÐwðcð cð cð cð cð crN   Úcodec_profiler�   rŽ   rr   rs   rn   )r–   r—   r™   )rY   Úfspathr   rŸ   r   ri   r½   r¾   r¿   r­   rÀ   rÁ   rÂ   r[   r=   r(   r&   r3   Úabsrv   r'   r+   r,   rà   ÚendswithrÊ   r8   r>   ÚOverflowErrorÚanyr€   )!rw   rÍ   rž   ro   rÄ   rÇ   rÈ   Ú
probe_datarÏ   ÚstreamrÐ   râ   r‹   rŒ   ÚsarÚdarr�   rr   rt   r�   rn   Ú	side_datarÙ   rá   r—   rŽ   r“   r”   r•   r–   r�   r’   Úis_hdrs!                                    r2   Úprobe_video_stream_metadatarî   È   sÀ  € õ ”˜:Ñ&Ô&€JÝ(¨Ñ4Ô4Ð4ˆÐAÝ& z°5Ñ9Ô9Ð9Ý”)Õ6°zÑBÔBÑCÔC€KÝ(¨Ñ3Ô3€LØÐØˆtØ˜t WÐ.?ÀÈÐYgÐinÐpvð  yDð  E€IÝŒN˜9°TÀÈwÐ_gÐotÐuÑuÔu€EØÔ˜1ÒÐØˆtðÝ”Z ¤Ñ-Ô-ˆ
ˆ
øÝÔð ð ð Øˆtˆtðøøøà�nŠn˜YÑ'Ô'Ð-¨2€GÝ
ˆ7�|„|�qÒÐØˆtØ�QŒZ€FÝ�V—Z’Z Ñ-Ô-Ð3°Ñ4Ô4€JÝ˜Ÿ
š
 9Ñ-Ô-Ð3°Ñ4Ô4€MÝ�—
’
˜7Ñ#Ô#Ð( qÑ)Ô)€EÝ�—’˜HÑ%Ô%Ð*¨Ñ+Ô+€FØ�‚z€z�V˜q’[�[ØˆtÝ
˜VŸZšZÐ(=Ñ>Ô>ÀÑ
DÔ
DÐ
KÈ€CÝ
˜VŸZšZÐ(>Ñ?Ô?Ñ
@Ô
@€CØ€MÝ
ˆ3�‰9�~„~˜ÒÐÝ˜A¥ E¨C¡KÑ 0Ô 0°AÑ 5¸Ñ:Ñ;Ô;ˆˆØ	ˆ˜S 1šW˜WÝ˜A¥ F¨S¡LÑ 1Ô 1°QÑ 6¸!Ñ;Ñ<Ô<ˆÝ" 6§:¢:Ð.>Ñ#?Ô#?ÀÑEÔEð  DÕI[Ð\b×\fÒ\fÐguÑ\vÔ\vÐx{ÑI|ÔI|ð  Dð  AD€IØ�zŠz˜*Ñ%Ô%Ð`¨*¯.ª.¸Ñ*BÔ*BÐ*HÀb×)MÒ)MÈjÑ)YÔ)YÐ`Ð]`€HðÝ˜‘?”?ˆˆøÝ•zÐ"ð ð ð ØˆˆˆðøøøðÝ˜6Ÿ:š: lÑ3Ô3Ð:°sÑ;Ô;ˆ
ˆ
øÝ•zÐ"ð ð ð Øˆ
ˆ
ˆ
ðøøøðdÝ˜&Ÿ*š* [Ñ1Ô1Ñ2Ô2ˆˆøÝ•zÐ"ð dð dð dØˆØ×ÒÑÔ×'Ò'¨Ñ/Ô/ð 	wÝ7¸À\ÕShÐjp×jtÒjtÐu{Ñj|Ôj|ð  kCð  AC÷  jHò  jHð  ISñ  jTô  jTð  V^ñ  T_ô  T_ð  akð  mvñ  wô  wˆKØ˜!ÒÐØ>FÈºl¸lÈyÐ[\Ê}È}�#�e H¨yÑ$8Ñ9Ô9Ñ:Ô:Ð:ÐbcˆKøøðdøøøð —
’
Ð+Ñ,Ô,Ð2°€IØ€HØð ð ˆØ�8Š8�JÑÔÐ+ðÝ�u¥U¨4°
Ô+;Ñ%<Ô%<Ñ=Ô=Ñ>Ô>��øÝ�z­=Ð9ð ð ð Ø�ðøøøð ,ð
 " UÒ*€MØ€Nå
ˆ8�}„}�sÑ˜bÒ Ð Ø(6¸�~ˆÝ˜ŸšÐ$4Ñ5Ô5Ð;¸Ñ<Ô<×BÒBÑDÔD€NÝ˜&Ÿ*š*Ð%6Ñ7Ô7Ð=¸2Ñ>Ô>×DÒDÑFÔF€OÝ�f—j’j Ñ/Ô/Ð5°2Ñ6Ô6×<Ò<Ñ>Ô>€KÝ�f—j’j Ñ/Ô/Ð5°2Ñ6Ô6×<Ò<Ñ>Ô>€KÝ˜fŸjšjÐ)>Ñ?Ô?ÐHÀ5ÑIÔIÐÝ˜vŸzšzÐ*@ÑAÔAÐGÀRÑHÔHÐØÐ<Ð<ð ÀÐS[Ò@[ð Õ_bð cð cð ENðcñ cô cñ `ô `€Fõ % Zð 2Ø�jð2à˜ð2ð 	�ð2ð 	�&ð	2ð
 	˜ð2ð 	˜.ð2ð 	�Hð2ð 	�Yð2ð 	¨	°Aª¨�s•5˜Ñ#Ô#Ñ$Ô$Ð$¸1ð2ð 	�{ð2ð 	�Hð2ð 	�jð2ð 	Ð2ð2ð 	Ð 4ð2ð 	˜.ð2ð  	˜?ð!2ð" 	�{ð#2ð$ #Ø&Øð)2ð 2ð 2ñ ô ð s[   ÂB8 Â8CÃ
CËK. Ë.LÌLÌ$L- Ì-MÍMÍ"M* Í*B6P#Ð"P#Ñ/R	Ò	R#Ò"R#c           
      óØ  — |                      d¦  «        dk    r­t          |¦  «        dk    st          |¦  «        dk    r2t          j        d|d         |d         dft          j        ¬¦  «        }�nÞt          j        |d                              d¦  «        t
          j        ¬¦  «        d          }t          j        |¦  «        }�n‰|d	         }	t          |                      d
¦  «        pd¦  «        }
|                      d¦  «        }|€|	d d …|
d …f         n|	d d …|
t          |¦  «        dz   …f         }	t          |	j	        d         ¦  «        }|�t          |¦  «        dk    r`t          dt          |¦  «        ¦  «        }
|	d d …|
|
t          dt          |¦  «        ¦  «        z   …f                              dddd¦  «        }nÙ|d         dk    r|d         n1t          dt          t          |d         pd¦  «        ¦  «        ¦  «        }t          ||t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }t          |¦  «        dk    r"|	d d …|f                              dddd¦  «        n#|	d d …d d…f                              dddd¦  «        }|                      d¦  «        r2|                     t          j        ¦  «                             ¦   «         }nk|                     d¦  «                             d¦  «                             dd¦  «                             t          j        ¦  «                             ¦   «         }|dk    r|n|                     ¦   «         S )Nr‚   rƒ   r   rŽ   r�   r‰   ©ÚdtypeÚRGBr†   rp   rq   r   rŠ   rs   rr   r˜   r„   g     à_@éÿ   Útorch)r[   r&   rô   ÚemptyÚuint8ÚnpÚasarrayÚconvertÚ
from_numpyrœ   r'   rv   Úpermuter>   rM   r=   ÚtoÚfloat32Ú
contiguousÚaddÚmulÚclamp_Únumpy)rw   rx   rž   r{   Ú
max_framesrC   Úbridger¼   rƒ   r†   Ústart_indexÚ	end_indexrn   Ú
source_fpsÚ	frame_noss                  r2   Ú_decode_virtual_media_framesr	  +  s*  € Ø‡y‚y�ÑÔ˜GÒ#Ð#Ýˆ{ÑÔ˜aÒÐ¥3 z¡?¤?°aÒ#7Ð#7Ý”[ ! XÐ.>Ô%?ÀÈ/ÔAZÐ\]Ð!^ÕfkÔfqÐrÑrÔrˆF‰Få”J˜u Wœ~×5Ò5°eÑ<Ô<ÅBÄHÐMÑMÔMÈdÔSˆEÝÔ% eÑ,Ô,ˆF‰Fà�x”ˆÝ˜(Ÿ,š,Ð'<Ñ=Ô=ÐBÀÑCÔCˆØ—L’LÐ!4Ñ5Ô5ˆ	Ø,5Ð,=�˜˜˜˜;˜<˜<˜Ô(Ð(À6È!È!È!È[ÕY\Ð]fÑYgÔYgÐjkÑYkÐMkÐJkÔClˆÝ˜&œ, qœ/Ñ*Ô*ˆØÐ¥ zÑ!2Ô!2°aÒ!7Ð!7Ý˜a¥ [Ñ!1Ô!1Ñ2Ô2ˆKØ˜A˜A˜A˜{¨;½¸QÅÀJÁÄÑ9PÔ9PÑ+PÐPÐPÔQ×YÒYÐZ[Ð]^Ð`aÐcdÑeÔeˆFˆFà,4°U¬O¸aÒ,?Ð,?˜ %œ˜ÅSÈÍCÕPUÐV^Ð_jÔVkÐVpÐopÑPqÔPqÑLrÔLrÑEsÔEsˆJÝ/°
¸KÍÈZÉÌÕZ_Ð`jÑZkÔZkÕmpÐq|Ñm}Ôm}Ñ~Ô~ˆIÝADÀYÁÄÐRSÒASÐAS�V˜A˜A˜A˜y˜LÔ)×1Ò1°!°Q¸¸1Ñ=Ô=Ð=ÐY_Ð`aÐ`aÐ`aÐceÐdeÐceÐ`eÔYf×YnÒYnÐopÐrsÐuvÐxyÑYzÔYzˆFØ�9Š9�UÑÔð 	\Ø—Y’Y�uœ}Ñ-Ô-×8Ò8Ñ:Ô:ˆFˆFà—Z’Z ‘_”_×(Ò(¨Ñ/Ô/×6Ò6°q¸#Ñ>Ô>×AÒAÅ%Ä+ÑNÔN×YÒYÑ[Ô[ˆFØ˜wÒ&Ð&ˆ6ˆ6¨F¯LªL©N¬NÐ:rN   c                 óH   — t          | ¦  «        }|d uo|d         p|d         S )Nr—   r™   )rî   )rw   rx   s     r2   Úvideo_needs_corrected_decoder  F  s.   € Ý*¨:Ñ6Ô6€HØ˜4ÐÐ\ X¨oÔ%>Ð%[À(È?ÔB[Ð\rN   c                 ó<  — ddt           › �g}t                               | d         ¦  «        x}r|                     d|› �¦  «         t                               | d         ¦  «        x}r|                     d|› �¦  «         t
                               | d         ¦  «        x}r|                     d|› �¦  «         t                               |                      d	¦  «        ¦  «        x}r|                     d
|› �¦  «         dd                     |¦  «        z   dddgS )Nút=linearúnpl=r“   útin=r”   úpin=r•   úmin=r–   úrin=úzscale=r#   úformat=gbrpf32leztonemap=reinhardz(zscale=t=bt709:p=bt709:m=bt709:r=limited©Ú_HDR_REFERENCE_WHITE_NITSÚ_ZSCALE_TRANSFER_MAPr[   r?   Ú_ZSCALE_PRIMARIES_MAPÚ_ZSCALE_MATRIX_MAPÚ_ZSCALE_RANGE_MAPra   ©rx   Úzscale_partsÚtransferÚ	primariesÚmatrixr–   s         r2   Ú_build_hdr_tonemap_filterr   K  s=  € ØÐ BÕ'@Ð BÐ BÐC€LÝ'×+Ò+¨HÐ5EÔ,FÑGÔGÐG€xð /Ø×ÒÐ- 8Ð-Ð-Ñ.Ô.Ð.Ý)×-Ò-¨hÐ7HÔ.IÑJÔJÐJ€yð 0Ø×ÒÐ. 9Ð.Ð.Ñ/Ô/Ð/Ý#×'Ò'¨°Ô(?Ñ@Ô@Ð@€vð -Ø×Ò˜O 6˜O˜OÑ,Ô,Ð,Ý'×+Ò+¨H¯LªL¸Ñ,GÔ,GÑHÔHÐH€{ð 2Ø×ÒÐ0 ;Ð0Ð0Ñ1Ô1Ð1Ø˜Ÿš Ñ.Ô.Ñ.Ð0BÐDVð  YCð  Dð  DrN   c                 ó>  — dt           › �ddddg}t                               | d         ¦  «        x}r|                     d|› �¦  «         t                               | d         ¦  «        x}r|                     d	|› �¦  «         t
                               | d
         ¦  «        x}r|                     d|› �¦  «         t                               |                      d¦  «        ¦  «        x}r|                     d|› �¦  «         dd                     |¦  «        z   dgS )Nr  r  zp=709zm=gbrzr=fullr“   r  r”   r  r•   r  r–   r  r  r#   r  r  r  s         r2   Ú_build_hdr_linear_filterr"  X  s3  € Ø6Õ4Ð6Ð6¸
ÀGÈWÐV^Ð_€LÝ'×+Ò+¨HÐ5EÔ,FÑGÔGÐG€xð /Ø×ÒÐ- 8Ð-Ð-Ñ.Ô.Ð.Ý)×-Ò-¨hÐ7HÔ.IÑJÔJÐJ€yð 0Ø×ÒÐ. 9Ð.Ð.Ñ/Ô/Ð/Ý#×'Ò'¨°Ô(?Ñ@Ô@Ð@€vð -Ø×Ò˜O 6˜O˜OÑ,Ô,Ð,Ý'×+Ò+¨H¯LªL¸Ñ,GÔ,GÑHÔHÐH€{ð 2Ø×ÒÐ0 ;Ð0Ð0Ñ1Ô1Ð1Ø˜Ÿš Ñ.Ô.Ñ.Ð0BÐCÐCrN   Fc                 ó¨  — g }|�9t          |¦  «        dk    r&|                     dt          |¦  «        d›�¦  «         |dk    s|�zdt          |¦  «        › �g}|�%|                     dt          |¦  «        › �¦  «         |                     dd                     |¦  «        z   ¦  «         |                     d¦  «         | d	         r4|d
t          | d         ¦  «        › dt          | d         ¦  «        › d�dgz  }|r'|t	          | ¦  «        z  }d                     |¦  «        S | d         r|t          | ¦  «        z  }d                     |¦  «        S )Nr   zfps=ú.12gzstart_frame=z
end_frame=ztrim=r#   zsetpts=PTS-STARTPTSr—   zscale=r�   rŽ   z:flags=lanczoszsetsar=1ú,r™   )r'   r?   r&   ra   r"  r   )rx   rC   r{   r|   Ú
hdr_linearÚfiltersÚ
trim_partss          r2   Ú_build_corrected_video_filterr)  e  sv  € Ø€GØÐ¥%¨
Ñ"3Ô"3°aÒ"7Ð"7Ø�ŠÐ6�e JÑ/Ô/Ð6Ð6Ð6Ñ7Ô7Ð7Ø�Q‚€˜)Ð/Ø7¥S¨Ñ%5Ô%5Ð7Ð7Ð8ˆ
ØÐ Ø×ÒÐ;­3¨y©>¬>Ð;Ð;Ñ<Ô<Ð<Ø�Š�w §¢¨*Ñ!5Ô!5Ñ5Ñ6Ô6Ð6Ø�ŠÐ,Ñ-Ô-Ð-Ø�Ô ð {ØÐm�S ¨/Ô!:Ñ;Ô;ÐmÐm½cÀ(ÐK[ÔB\Ñ>]Ô>]ÐmÐmÐmÐoyÐzÑzˆØð !ØÕ+¨HÑ5Ô5Ñ5ˆØ�xŠx˜Ñ Ô Ð Ø�Ô ð 7ØÕ,¨XÑ6Ô6Ñ6ˆØ�8Š8�GÑÔÐrN   c                 ó"  — t          |¦  «        }t          |¦  «        }d}||k     rh|                      ||z
  ¦  «        }|s|dk    rd nt          |d |…         ¦  «        S ||||t	          |¦  «        z   …<   |t	          |¦  «        z  }||k     °h|S )Nr   )Ú	bytearrayÚ
memoryviewÚreadÚbytesr=   )ré   rš   ÚbufÚviewÚread_posÚchunks         r2   Ú_read_exactr3  y  s¢   € Ý
�D‰/Œ/€CÝ�c‰?Œ?€DØ€HØ
�TŠ/ˆ/Ø—’˜D 8™OÑ,Ô,ˆØð 	EØ# qš=˜=�4�4­e°D¸¸(¸´OÑ.DÔ.DÐDØ/4ˆˆX�h¥ U¡¤Ñ+Ð+Ñ,Ø•C˜‘J”JÑˆð �TŠ/ˆ/ð €JrN   c                 ób   — 	 |                       d¦  «        }|sd S |                     |¦  «         Œ/)NTi   )r-  r?   )ré   Úchunksr2  s      r2   Ú_drain_streamr6  †  s<   € ðØ—’˜EÑ"Ô"ˆØð 	ØˆEØ�Š�eÑÔÐð	rN   c                 ój  — t          | pd¦  «                             ¦   «         D ]Ž}d}|                     |¦  «        }|dk     rŒ ||t          |¦  «        z   d …                              d d¦  «        d                              ¦   «         }	 t          |¦  «        c S # t          t          f$ r Y Œ‹w xY wd S )Nr!   z
 pts_time:r   r   )	r(   Ú
splitlinesÚfindr=   r*   r)   r'   r+   r,   )Ústderr_textÚlineÚ
pts_markerÚ	pts_indexÚpts_texts        r2   Ú_parse_first_showinfo_pts_timer?  Ž  sÉ   € Ý�KÐ% 2Ñ&Ô&×1Ò1Ñ3Ô3ð 	ð 	ˆØ!ˆ
Ø—I’I˜jÑ)Ô)ˆ	Ø�qŠ=ˆ=ØØ˜	¥C¨
¡O¤OÑ3Ð4Ð4Ô5×;Ò;¸DÀ!ÑDÔDÀQÔG×MÒMÑOÔOˆð	Ý˜‘?”?Ð"Ð"Ð"øÝ�:Ð&ð 	ð 	ð 	ØˆHð	øøøàˆ4s   ÂBÂB0Â/B0rô   c           
      óx  — t          | ¦  «        }|€t          d| › �¦  «        ‚t          | ¦  «        }t          j        |                     d¦  «        pt          | ¦  «        ¦  «        }t          d¦  «        }|€t          d¦  «        ‚t          |¦  «        }t          |¦  «        }|d         dk    s|                     d¦  «        �Dt          dt          |d         ¦  «        t          d|¦  «        z
  ¦  «        }	t          ||	¦  «        }|dk    r\|rt          j        nt          j        }
t          j        d|d         |d	         d
f|
¬¦  «        }|dk    rt          j        |¦  «        n|S |t          |                     d¦  «        pd¦  «        z   }t#          |                     d¦  «        p|                     d¦  «        pd¦  «        }||z   }d}d }|}|d uo|dk    o|dk    }|}|�h|r3t          d|t$          z
  t&          z
  ¦  «        }||z
  }||z   t&          z   }n3|dk    r)|dk    r#t          d|t$          z
  ¦  «        }||z
  }||z   }n|}|}t)          ||�|s|nd|�|s|nd |¬¦  «        }|rt+          |¦  «        dk    rdn|dz   }|d|rdnddddg}|r|dgz  }|dk    r7|dk    r1|dt#          |                     d¦  «        pd¦  «        ||z  z   d›gz  }|d|dd gz  }t+          |¦  «        dk    r|d!|gz  }|rd"nd#}|d$d%d&t-          |¦  «        d'd(d)|d*g	z  }t/          j        |t.          j        t.          j        d+¬,¦  «        }|d	         |d         z  d
z  |rd-nd.z  }|rt          j        nt          j        }|r|d
|d         |d	         fn||d         |d	         d
f}t          j        ||¬¦  «        }d}g }d }	 |j        �7t7          j        t:          |j        |fd/¬0¦  «        }|                     ¦   «          ||k     rÁt?          |j         |¦  «        }|�t+          |¦  «        |k     rn–|rEt          j!        |t          j        ¬¦  «         "                    d
|d         |d	         ¦  «        ||<   nDt          j!        |t          j        ¬¦  «         "                    |d         |d	         d
¦  «        ||<   |d.z  }||k     °Á| #                    ¦   «         } |�| $                    ¦   «          d1 $                    |¦  «         %                    d2d3¬4¦  «         &                    ¦   «         }!|j         �|j          '                    ¦   «          |j        �|j         '                    ¦   «          nF# |j         �|j          '                    ¦   «          |j        �|j         '                    ¦   «          w w xY w| dk    r|dk    rt          d5| › d6|!› �¦  «        ‚|d |…         }|r€|dk    rztQ          |!¦  «        }"t#          |                     d¦  «        pd¦  «        ||z  z   }#|"€|n/t          dt          tS          |#|"z
  |z  ¦  «        ¦  «        ¦  «        }$||$|$|z   …         }|r6t          j*        |d d …g d7¢f          +                    dd8d
d.¦  «        ¦  «        }|dk    rt          j        |¦  «        n|S )9Nú#Unable to probe video metadata for ro   rT   úffmpeg binary not foundrn   r   rq   rŽ   r�   r‰   rð   rô   rp   rr   rs   r4   )r{   r|   r&  Úshowinfoz	,showinfor¨   Úinfor©   ú-nostdinú-threadsÚ0z-copytsú-ssr�   r$  ú-iú-anú-snú-vfÚ	gbrpf32leÚrgb24ú	-fps_modeÚpassthroughú	-frames:vú-fÚrawvideoú-pix_fmtúpipe:1é€–˜ ©rÁ   ÚstderrÚbufsizerˆ   r   T©ÚtargetÚargsÚdaemonrN   r®   r¯   ©r³   zffmpeg decode failed for ú: ©rŠ   r   r   rŠ   ),rî   ÚRuntimeErrorr   rY   rã   r[   r   ri   r&   rv   rÃ   r÷   rý   rö   rõ   rô   rú   r'   Ú_VIRTUAL_MEDIA_PRESEEK_FRAMESÚ"_VIRTUAL_MEDIA_LOCAL_SEARCH_FRAMESr)  r=   r(   r½   ÚPopenÚPIPErX  Ú	threadingÚThreadr6  Ústartr3  rÁ   Ú
frombufferÚreshapeÚwaitra   Údecoder)   Úcloser?  r>   ÚascontiguousarrayÚ	transpose)%rw   r{   r  r  r&  rx   Úvirtual_specÚdecode_pathÚffmpeg_pathÚavailable_framesÚempty_dtyperõ   Úactual_startrr   Úactual_end_exclusiveÚfilter_start_frameÚfilter_end_frameÚdecode_seek_frameÚlocal_search_enabledÚrequested_framesÚvideo_filterÚcmdÚout_pix_fmtÚprocessÚframe_bytesÚframe_dtypeÚframes_shaper¼   rn   Ústderr_chunksÚstderr_threadÚ	raw_frameÚreturn_coderX  Úfirst_pts_timeÚtarget_pts_timeÚlocal_start_frames%                                        r2   Ú&_decode_contiguous_video_frames_ffmpegrŠ  œ  sg  € Ý*¨:Ñ6Ô6€HØÐÝÐMÀÐMÐMÑNÔNÐNÝ+¨JÑ7Ô7€LÝ”)˜HŸLšL¨Ñ7Ô7ÐaÕ;UÐV`Ñ;aÔ;aÑbÔb€KÝ'¨Ñ1Ô1€KØÐÝÐ4Ñ5Ô5Ð5Ý�kÑ"Ô"€KÝ�Z‘”€Jà�Ô Ò"Ð" h§l¢lÐ3FÑ&GÔ&GÐ&SÝ˜q¥# h¨}Ô&=Ñ">Ô">ÅÀQÈÑATÔATÑ"TÑUÔUÐÝ˜Ð%5Ñ6Ô6ˆ
Ø�Q‚€Ø$.Ð<•b”j�jµB´HˆÝ”˜!˜XÐ&6Ô7¸À/Ô9RÐTUÐVÐ^iÐjÑjÔjˆØ*0°GÒ*;Ð*;�uÔ Ñ&Ô&Ð&ÀÐFØ¥ X§\¢\Ð2GÑ%HÔ%HÐ%MÈAÑ!NÔ!NÑN€LÝ�h—l’l ;Ñ/Ô/ÐM°8·<²<ÀÑ3FÔ3FÐMÈ#ÑNÔN€IØ'¨*Ñ4ÐØÐØÐØ$ÐØ'¨tÐ3ÐZ¸	ÀAºÐZÈ,ÐYZÒJZÐØ!ÐØÐØð 
	4Ý # A |Õ6SÑ'SÕVxÑ'xÑ yÔ yÐØ!-Ð0AÑ!AÐØ1°JÑ>ÕAcÑcÐÐØ˜Š]ˆ]˜|¨aÒ/Ð/Ý # A |Õ6SÑ'SÑ TÔ TÐØ!-Ð0AÑ!AÐØ1°JÑ>ÐÐà!-ÐØ3ÐÝ0°Ð]iÐ]uð  SÐ]uÐGYÐGYð  YZð  zFð  zRð  [oð  zRð  fvð  fvð  uyð  FPð  Qñ  Qô  Q€LØð \Ý%(¨Ñ%6Ô%6¸!Ò%;Ð%;�z�zÀÐP[ÑA[ˆØ˜Ð(<ÐI˜f˜fÀ'È:ÐWaÐcfÐ
g€CØð Ø�	ˆ{ÑˆØ�1‚}€}Ð*¨QÒ.Ð.Ø��% §¢¨\Ñ :Ô :Ð A¸cÑBÔBÐFWÐZcÑFcÑdÐkÐkÐlÑlˆØˆD�+˜u eÐ,Ñ,€CÝ
ˆ<ÑÔ˜1ÒÐØ��|Ð$Ñ$ˆØ!+Ð8�+�+°€KØˆK˜¨µSÐ9IÑ5JÔ5JÈDÐR\Ð^hÐjuÐwð  Añ  A€CÝÔ˜s­:¬?Å:Ä?Ð\aÐbÑbÔb€GØ˜?Ô+¨hÐ7GÔ.HÑHÈ1ÑLÐU_ÐPfÐPQÐPQÐefÑg€KØ *Ð8•"”*�*µ´€KØcmð  @Ð$ a¨Ð2BÔ)CÀXÈoÔE^Ð_Ð_ð  uEð  GOð  P`ô  Gað  ckð  l{ô  c|ð  ~ð  t@€LÝŒX�l¨+Ð6Ñ6Ô6€FØ€KØ€MØ€Mð#ØŒ>Ð%Ý%Ô,µMÈÌÐYfÐHgÐptÐuÑuÔuˆMØ×ÒÑ!Ô!Ð!ØÐ,Ò,Ð,Ý# G¤N°KÑ@Ô@ˆIØÐ ¥C¨	¡N¤N°[Ò$@Ð$@ØØð QÝ&(¤m°IÅRÄZÐ&PÑ&PÔ&P×&XÒ&XÐYZÐ\dÐeuÔ\vð  yAð  BQô  yRñ  'Sô  'S��{Ñ#Ð#å&(¤m°IÅRÄXÐ&NÑ&NÔ&N×&VÒ&VÐW_Ð`pÔWqÐs{ð  }Lô  tMð  OPñ  'Qô  'Q��{Ñ#Ø˜1ÑˆKð Ð,Ò,Ð,ð —l’l‘n”nˆØÐ$Ø×ÒÑ Ô Ð Ø—’˜-Ñ(Ô(×/Ò/°ÀÐ/ÑIÔI×OÒOÑQÔQˆàŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"ØŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"øøð Œ>Ð%ØŒN× Ò Ñ"Ô"Ð"ØŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"Ð"ð &øøøà�aÒÐ˜K¨1Ò,Ð,ÝÐM°zÐMÐMÀVÐMÐMÑNÔNÐNØ�L�[�LÔ!€FØð J ¨a¢ Ý7¸Ñ?Ô?ˆÝ §¢¨\Ñ :Ô :Ð A¸cÑBÔBÀlÐU^ÑF^Ñ_ˆØ2@Ð2HÐ.Ð.ÍcÐRSÕUXÕY^Ð`oð  sAñ  aAð  ENñ  `Nñ  ZOô  ZOñ  VPô  VPñ  OQô  OQÐØÐ)Ð*;¸jÑ*HÐHÔIˆØð RÝÔ% f¨Q¨Q¨Q°	°	°	¨\Ô&:×&DÒ&DÀQÈÈ1ÈaÑ&PÔ&PÑQÔQˆØ'-°Ò'8Ð'8�5Ô˜FÑ#Ô#Ð#¸fÐDs   Ï	E+U5 Õ5AV8c           
      ó"  ‡!‡"— t          j        |¦  «        r8|                     ¦   «                              ¦   «                              ¦   «         }d„ |D ¦   «         }t          | ¦  «        }|€t          d| › �¦  «        ‚t          |¦  «        dk    r\|rt          j	        nt          j
        }t          j        d|d         |d         df|¬¦  «        }|dk    rt          j        |¦  «        n|S t          |¦  «        Š"t          | ¦  «        x}�Xt          | ||‰"t!          |¦  «        ‰"z
  d	z   d d¦  «        }|ˆ"fd
„|D ¦   «                  }	|dk    r|	n|	                     ¦   «         S t%          t'          |¦  «        ¦  «        }
t!          |
¦  «        ‰"z
  d	z   }|t          |
¦  «        dz  k    rEt)          | ‰"|d d|¬¦  «        }|ˆ"fd„|D ¦   «                  }	|dk    r|	n|	                     ¦   «         S t+          d¦  «        }|€t          d¦  «        ‚t-          j        |                     d¦  «        pt3          | ¦  «        ¦  «        }t5          |                     d¦  «        p|                     d¦  «        pd¦  «        }‰"t7          |                     d¦  «        pd¦  «        z   }ˆ"fd„|
D ¦   «         }d                     d„ |D ¦   «         ¦  «        }d|› d�}t;          ||¬¦  «        }t          |¦  «        dk    r|d|z   z  }|dddddg}|dk    r7|dk    r1|d t5          |                     d!¦  «        pd¦  «        ||z  z   d"›gz  }|d#|d$d%d&|gz  }|rd'nd(}|d)d*d+t=          t          |
¦  «        ¦  «        d,d-d.|d/g	z  }t?          j         |t>          j!        t>          j!        d0¬1¦  «        }|d         |d         z  dz  |rd2nd	z  }|rt          j	        nt          j
        }|rt          |
¦  «        d|d         |d         fnt          |
¦  «        |d         |d         df}t          j        ||¬¦  «        }d}g }d }	 |j"        �7tG          j$        tJ          |j"        |fd3¬4¦  «        }| &                    ¦   «          |t          |
¦  «        k     rÎtO          |j(        |¦  «        }|�t          |¦  «        |k     rn£|rEt          j)        |t          j	        ¬¦  «         *                    d|d         |d         ¦  «        ||<   nDt          j)        |t          j
        ¬¦  «         *                    |d         |d         d¦  «        ||<   |d	z  }|t          |
¦  «        k     °Î| +                    ¦   «         }|�|                     ¦   «          d5                     |¦  «         ,                    d6d7¬8¦  «         -                    ¦   «         } |j(        �|j(         .                    ¦   «          |j"        �|j"         .                    ¦   «          nF# |j(        �|j(         .                    ¦   «          |j"        �|j"         .                    ¦   «          w w xY w|dk    s|t          |
¦  «        k    rt          d9| › d:| › �¦  «        ‚|r6t          j/        |d d …g d;¢f          0                    dd<dd	¦  «        ¦  «        }t          j        |¦  «        }	d=„ tc          |
¦  «        D ¦   «         Š!|	ˆ!fd>„|D ¦   «                  }	|dk    r|	n|	                     ¦   «         S )?Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r¶   )r&   ©r·   Úframe_indexs     r2   r¹   z5decode_video_frame_indices_ffmpeg.<locals>.<listcomp>þ  s    € ÐGÐGÐG¨+•S˜Ñ%Ô%ÐGÐGÐGrN   rA  r   rŽ   r�   r‰   rð   rô   r   c                 ó   •— g | ]}|‰z
  ‘ŒS r¶   r¶   ©r·   rŽ  r{   s     €r2   r¹   z5decode_video_frame_indices_ffmpeg.<locals>.<listcomp>	  ó   ø€ ÐUÐUÐU¸˜+¨Ñ3ÐUÐUÐUrN   )rC   r  r&  c                 ó   •— g | ]}|‰z
  ‘ŒS r¶   r¶   r�  s     €r2   r¹   z5decode_video_frame_indices_ffmpeg.<locals>.<listcomp>  r‘  rN   rT   rB  ro   rr   rs   r4   rp   c                 ó   •— g | ]}|‰z
  ‘ŒS r¶   r¶   r�  s     €r2   r¹   z5decode_video_frame_indices_ffmpeg.<locals>.<listcomp>  s   ø€ ÐOÐOÐO°�; Ñ,ÐOÐOÐOrN   ú+c              3   ó"   K  — | ]
}d |› d�V — ŒdS )zeq(n\,ú)Nr¶   r�  s     r2   r»   z4decode_video_frame_indices_ffmpeg.<locals>.<genexpr>  s.   è è € ÐSÐS¸Ð3 [Ð3Ð3Ð3ÐSÐSÐSÐSÐSÐSrN   zselect=z,setpts=N/FRAME_RATE/TB©r&  r%  r¨   r©   rE  rF  rG  rH  r�   r$  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rˆ   TrZ  rN   r®   r¯   r^  z!ffmpeg indexed decode failed for r_  r`  rŠ   c                 ó   — i | ]\  }}||“Œ	S r¶   r¶   )r·   ÚposrŽ  s      r2   ú
<dictcomp>z5decode_video_frame_indices_ffmpeg.<locals>.<dictcomp>F  s   € ÐTÐTÐTÑ&6 c¨;�˜cÐTÐTÐTrN   c                 ó    •— g | ]
}‰|         ‘ŒS r¶   r¶   )r·   rŽ  Ú	positionss     €r2   r¹   z5decode_video_frame_indices_ffmpeg.<locals>.<listcomp>G  s   ø€ ÐMÐMÐM°�Y˜{Ô+ÐMÐMÐMrN   )2rô   Ú	is_tensorÚdetachÚcpuÚtolistrî   ra  r=   r÷   rý   rö   rõ   rú   rÃ   r   r	  rv   r  ÚsortedÚsetÚdecode_video_frames_ffmpegri   rY   rã   r[   r   r'   r&   ra   r)  r(   r½   rd  re  rX  rf  rg  r6  rh  r3  rÁ   ri  rj  rk  rl  r)   rm  rn  ro  Ú	enumerate)#rw   Úframe_indicesr  r&  rx   rt  rõ   rž   Údecodedr¼   Úunique_indicesÚspanrr  rq  rr   ru  Úrel_indicesÚselect_exprr|  Úcorrected_filterr}  r~  r  r€  r�  r‚  Ú	frames_nprn   rƒ  r„  r…  r†  rX  rœ  r{   s#                                    @@r2   Ú!decode_video_frame_indices_ffmpegr­  û  s  øø€ Ý„�}Ñ%Ô%ð >Ø%×,Ò,Ñ.Ô.×2Ò2Ñ4Ô4×;Ò;Ñ=Ô=ˆØGÐG¸ÐGÑGÔG€MÝ*¨:Ñ6Ô6€HØÐÝÐMÀÐMÐMÑNÔNÐNÝ
ˆ=ÑÔ˜QÒÐØ$.Ð<•b”j�jµB´HˆÝ”˜!˜XÐ&6Ô7¸À/Ô9RÐTUÐVÐ^iÐjÑjÔjˆØ*0°GÒ*;Ð*;�uÔ Ñ&Ô&Ð&ÀÐFÝ�mÑ$Ô$€KÝ(¨Ñ4Ô4Ð4ˆÐAÝ.¨z¸8ÀUÈKÕY\Ð]jÑYkÔYkÐnyÑYyÐ|}ÑY}ð  @Dð  FMñ  Nô  NˆØÐUÐUÐUÐUÀ}ÐUÑUÔUÔVˆØ 7Ò*Ð*ˆvˆv°·²±´Ð>Ý�C Ñ.Ô.Ñ/Ô/€NÝˆ~ÑÔ Ñ,¨qÑ0€DØ�s�>Ñ"Ô" QÑ&Ò&Ð&Ý,¨Z¸ÀdÐW[Ðdkð  yCð  Dñ  Dô  DˆØÐUÐUÐUÐUÀ}ÐUÑUÔUÔVˆØ 7Ò*Ð*ˆvˆv°·²±´Ð>Ý'¨Ñ1Ô1€KØÐÝÐ4Ñ5Ô5Ð5Ý”)˜HŸLšL¨Ñ7Ô7ÐaÕ;UÐV`Ñ;aÔ;aÑbÔb€KÝ�h—l’l ;Ñ/Ô/ÐM°8·<²<ÀÑ3FÔ3FÐMÈ#ÑNÔN€IØ¥ X§\¢\Ð2GÑ%HÔ%HÐ%MÈAÑ!NÔ!NÑN€LØOÐOÐOÐOÀÐOÑOÔO€KØ—(’(ÐSÐSÀ{ÐSÑSÔSÑSÔS€KØA˜[ÐAÐAÐA€LÝ4°XÈ*ÐUÑUÔUÐÝ
ÐÑÔ˜qÒ Ð Ø˜Ð.Ñ.Ñ.ˆØ˜˜g z°:¸sÐ
C€CØ�1‚}€}˜¨Ò)Ð)Ø��% §¢¨\Ñ :Ô :Ð A¸cÑBÔBÀlÐU^ÑF^Ñ_ÐfÐfÐgÑgˆØˆD�+˜u e¨U°LÐAÑA€CØ!+Ð8�+�+°€KØˆK˜¨µS½¸^Ñ9LÔ9LÑ5MÔ5MÈtÐU_ÐakÐmxð  {Cð  Dñ  D€CÝÔ˜s­:¬?Å:Ä?Ð\aÐbÑbÔb€GØ˜?Ô+¨hÐ7GÔ.HÑHÈ1ÑLÐU_ÐPfÐPQÐPQÐefÑg€KØ *Ð8•"”*�*µ´€KØfpð  F•C˜Ñ'Ô'¨¨HÐ5EÔ,FÈÐQ`ÔHaÐbÐbÕwzð  |Jñ  xKô  xKð  MUð  Vfô  Mgð  iqð  rAô  iBð  DEð  wF€LÝ”˜¨[Ð9Ñ9Ô9€IØ€KØ€MØ€Mð#ØŒ>Ð%Ý%Ô,µMÈÌÐYfÐHgÐptÐuÑuÔuˆMØ×ÒÑ!Ô!Ð!Ø�C Ñ/Ô/Ò/Ð/Ý# G¤N°KÑ@Ô@ˆIØÐ ¥C¨	¡N¤N°[Ò$@Ð$@ØØð TÝ)+¬°yÍÌ
Ð)SÑ)SÔ)S×)[Ò)[Ð\]Ð_gÐhxÔ_yð  |Dð  ETô  |Uñ  *Vô  *V�	˜+Ñ&Ð&å)+¬°yÍÌÐ)QÑ)QÔ)Q×)YÒ)YÐZbÐcsÔZtÐv~ð  @Oô  wPð  RSñ  *Tô  *T�	˜+Ñ&Ø˜1ÑˆKð �C Ñ/Ô/Ò/Ð/ð —l’l‘n”nˆØÐ$Ø×ÒÑ Ô Ð Ø—’˜-Ñ(Ô(×/Ò/°ÀÐ/ÑIÔI×OÒOÑQÔQˆàŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"ØŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"øøð Œ>Ð%ØŒN× Ò Ñ"Ô"Ð"ØŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"Ð"ð &øøøà�aÒÐ˜;­#¨nÑ*=Ô*=Ò=Ð=ÝÐU¸zÐUÐUÈVÐUÐUÑVÔVÐVØð XÝÔ(¨°1°1°1°i°i°i°<Ô)@×)JÒ)JÈ1ÈaÐQRÐTUÑ)VÔ)VÑWÔWˆ	ÝÔ˜iÑ(Ô(€FØTÐT½)ÀNÑ:SÔ:SÐTÑTÔT€IØÐMÐMÐMÐM¸}ÐMÑMÔMÔN€FØ˜wÒ&Ð&ˆ6ˆ6¨F¯LªL©N¬NÐ:s   ÑFX ØAYc           	      ó   ‡‡— t          | ¦  «        }|€t          d| › �¦  «        ‚t          | ¦  «        x}�t          | ||||||¦  «        S t	          |¦  «        }|                     d¦  «        �u|t	          |d         ¦  «        k    r\|rt          j        nt          j        }t          j	        d|d         |d         df|¬¦  «        }	|d	k    rt          j        |	¦  «        n|	S |�t          |¦  «        dk    rt          | ||||¬
¦  «        S |d         dk    r|d         n1t          dt	          t          |d         pd¦  «        ¦  «        ¦  «        }
t!          |
|d         t	          |¦  «        t          |¦  «        t	          |¦  «        ¦  «        }t#          |¦  «        dk    r\|rt          j        nt          j        }t          j	        d|d         |d         df|¬¦  «        }	|d	k    rt          j        |	¦  «        n|	S |d         Št          | ‰|d         ‰z
  dz   ||¬
¦  «        Šˆˆfd„|D ¦   «         }|d	k    r‰|         S ‰|         S )NrA  rq   rn   r   rŽ   r�   r‰   rð   rô   r—  rs   r   rr   éÿÿÿÿc                 óB   •— g | ]}|‰z
  ‰j         d          k     ¯|‰z
  ‘ŒS )r   )rœ   )r·   rH   Údecode_startr¦  s     €€r2   r¹   z.decode_video_frames_ffmpeg.<locals>.<listcomp>`  s8   ø€ ÐrÐrÐr¨hÀxÐR^ÑG^ÐahÔanÐopÔaqÒGqÐGq�(˜\Ñ)ÐGqÐGqÐGqrN   )rî   ra  r   r	  r&   r[   r÷   rý   rö   rõ   rô   rú   r'   rŠ  rv   r>   rM   r=   )rw   r{   r  rC   r  r&  rx   rž   rt  rõ   r  r  Ú
index_listr±  r¦  s                @@r2   r£  r£  K  s˜  øø€ Ý*¨:Ñ6Ô6€HØÐÝÐMÀÐMÐMÑNÔNÐNÝ(¨Ñ4Ô4Ð4ˆÐAÝ+¨J¸À%ÈÐV`ÐblÐntÑuÔuÐuÝ�kÑ"Ô"€KØ‡|‚|Ð'Ñ(Ô(Ð4¸ÍÈHÐUbÔLcÑHdÔHdÒ9dÐ9dØ$.Ð<•b”j�jµB´HˆÝ”˜!˜XÐ&6Ô7¸À/Ô9RÐTUÐVÐ^iÐjÑjÔjˆØ*0°GÒ*;Ð*;�uÔ Ñ&Ô&Ð&ÀÐFØÐ�U :Ñ.Ô.°!Ò3Ð3Ý5°jÀ+ÈzÐ[aÐnxÐyÑyÔyÐyØ$,¨U¤O°aÒ$7Ð$7�˜%”�½SÀÅCÍÈhÐWbÔNcÐNhÐghÑHiÔHiÑDjÔDjÑ=kÔ=k€JÝ'¨
°H¸]Ô4KÍSÐQ[É_Ì_Õ^cÐdnÑ^oÔ^oÕqtð  vAñ  rBô  rBñ  Cô  C€IÝ
ˆ9�~„~˜ÒÐØ$.Ð<•b”j�jµB´HˆÝ”˜!˜XÐ&6Ô7¸À/Ô9RÐTUÐVÐ^iÐjÑjÔjˆØ*0°GÒ*;Ð*;�uÔ Ñ&Ô&Ð&ÀÐFØ˜Q”<€LÝ4°ZÀÈyÐY[Ì}Ð_kÑOkÐnoÑOoÐqwð  EOð  Pñ  Pô  P€GØrÐrÐrÐrÐr¸)ÐrÑrÔr€JØ�ÒÐØ�zÔ"Ð"Ø�:ÔÐrN   c                 óN  — t          | ¦  «        }|€g g fS g g }}|d         re||d         › d|d         › �|d         gz  }|ddgz  }t          |d         ¦  «        d	k    r'||d         › d
|d         › d|d         › d�gz  }|dgz  }|d         �rg }|d         dk    r|dgz  }nJ|d         dk    r|dgz  }n7t          |d         ¦  «        d	k    r||d                              ¦   «         gz  }t          |d         ¦  «        d	k    r||d                              ¦   «         gz  }t          |d         ¦  «        d	k    r0|d         |d         k    r||d                              ¦   «         gz  }|t          |¦  «        d	k    rd                     |¦  «        ndgz  }|dgz  }||fS )Nr—   r‹   ÚxrŒ   r�   zStored RasterzPixel Aspect Ratior’   r   z (square-pixel r�   rŽ   r–  zDisplay Aspect Ratior™   r“   r	   zHDR PQr
   zHDR HLGr”   r•   z / z
HDR sourceÚColor)rî   r=   Úupperra   )rw   rx   ÚvaluesÚlabelsÚ	hdr_partss        r2   Úget_video_summary_extrasrº  f  sC  € Ý*¨:Ñ6Ô6€HØÐØ�2ˆvˆØ˜ˆF€FØ�Ô ð /Ø�h˜wÔ'Ð>Ð>¨(°8Ô*<Ð>Ð>ÀÐI^Ô@_Ð`Ñ`ˆØ�?Ð$8Ð9Ñ9ˆÝˆxÐ.Ô/Ñ0Ô0°1Ò4Ð4Ø˜(Ð#9Ô:ð  Eð  EÈ8ÐTcÔKdð  Eð  EÐgoð  qAô  hBð  Eð  Eð  Eð  Fñ  FˆFØÐ-Ð.Ñ.ˆFØ�Ô ñ Øˆ	ØÐ$Ô%¨Ò4Ð4Ø˜(˜Ñ#ˆIˆIØÐ&Ô'¨>Ò9Ð9Ø˜)˜Ñ$ˆIˆIÝ�Ð*Ô+Ñ,Ô,¨qÒ0Ð0Ø˜(Ð#3Ô4×:Ò:Ñ<Ô<Ð=Ñ=ˆIÝˆxÐ)Ô*Ñ+Ô+¨aÒ/Ð/Ø˜(Ð#4Ô5×;Ò;Ñ=Ô=Ð>Ñ>ˆIÝˆx˜Ô&Ñ'Ô'¨!Ò+Ð+°¸Ô0GÈ8ÐTeÔKfÒ0fÐ0fØ˜( =Ô1×7Ò7Ñ9Ô9Ð:Ñ:ˆIØ­C°	©N¬N¸QÒ,>Ð,>�5—:’:˜iÑ(Ô(Ð(ÀLÐQÑQˆØ�7�)ÑˆØ�6ˆ>ÐrN   rk   )r4   )Nr   NF)rô   F)Nrô   F)-r­   rY   rc   r½   rf  Ú	functoolsr   r  r÷   rô   Úvirtual_mediar   r   r   r   r  r  r  r  r  rb  rc  r3   r8   rM   r(   ri   rl   r€   rŸ   r¦   rÊ   rî   r	  r  r   r"  r)  r3  r6  r?  rŠ  r­  r£  rº  r¶   rN   r2   ú<module>r½     sí  ðà €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€ð Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dà%0À.Ð[bÐqzð  JSð  Tð  TÐ Ø#)°EÈÐ[bÐcÐcÐ Ø",¸ÈUÐagÐt{Ð|Ð|Ð Ø$°À&ÐRXÐYÐYÐ ØÐ Ø "Ð Ø%&Ð "ð.ð .ð .ð .ð.ð ð ð ð(/ð /ð /ð.	h sð 	hð 	hð 	hð 	hð. cð .ð .ð .ð .ðð ð ð,(ð (ð (ðVð ð ðNð Nð Nð* €�3ÐÑÔØ<@ð _ð _ð _ð _ñ Ôð_ðD;ð ;ð ;ð6]ð ]ð ]ð

Dð 
Dð 
Dð
Dð 
Dð 
Dðð ð ð ð(
ð 
ð 
ðð ð ðð ð ð\Eð \Eð \Eð \Eð~M;ð M;ð M;ð M;ð`ð ð ð ð6ð ð ð ð rN   