§
    ù²ÅjàD  ã                   ó8  — d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZ d dlZd dlmZmZmZmZ ddlmZ  ed¦  «        Zej        fded	ed
ededef
d„Zddej        dedededej        f
d„Z G d„ d¦  «        Zdedefd„Z G d„ d¦  «        ZdS )é    N©ÚFraction)	ÚAnyÚCallableÚcastÚDictÚListÚOptionalÚTupleÚTypeVarÚUnion)Ú_probe_video_from_fileÚ_read_video_from_fileÚ
read_videoÚread_video_timestampsé   )ÚtqdmÚTÚptsÚtimebase_fromÚtimebase_toÚ
round_funcÚreturnc                 óD   — t          | d¦  «        |z  |z  } ||¦  «        S )zèconvert pts between different time bases
    Args:
        pts: presentation timestamp, float
        timebase_from: original timebase. Fraction
        timebase_to: new timebase. Fraction
        round_func: rounding function.
    r   r   )r   r   r   r   Únew_ptss        úQC:\Projects\Historical\venv\Lib\site-packages\torchvision/datasets/video_utils.pyÚpts_convertr      s-   € õ �s˜AÑÔ Ñ.°Ñ<€GØˆ:�gÑÔÐó    ÚtensorÚsizeÚstepÚdilationc                 óX  — |                       ¦   «         dk    r$t          d|                       ¦   «         › �¦  «        ‚|                      d¦  «        }|                      ¦   «         }||z  ||z  f}|||dz
  z  dz   z
  |z  dz   |f}|d         dk     rd|f}t	          j        | ||¦  «        S )a   
    similar to tensor.unfold, but with the dilation
    and specialized for 1d tensors

    Returns all consecutive windows of `size` elements, with
    `step` between windows. The distance between each element
    in a window is given by `dilation`.
    r   z*tensor should have 1 dimension instead of r   )ÚdimÚ
ValueErrorÚstrideÚnumelÚtorchÚ
as_strided)r   r    r!   r"   Úo_strider'   Ú
new_strideÚnew_sizes           r   Úunfoldr-      s¹   € ð ‡z‚z�|„|�qÒÐÝÐTÀfÇjÂjÁlÄlÐTÐTÑUÔUÐUØ�}Š}˜QÑÔ€HØ�LŠL‰NŒN€EØ˜‘/ 8¨hÑ#6Ð7€JØ˜( d¨Q¡hÑ/°!Ñ3Ñ4¸Ñ=ÀÑAÀ4ÐH€HØ�„{�Q‚€Ø�t�9ˆÝÔ˜F H¨jÑ9Ô9Ð9r   c                   ór   — e Zd ZdZdee         ddfd„Zdefd„Zdede	ee         e
e         f         fd„ZdS )	Ú_VideoTimestampsDatasetzÚ
    Dataset used to parallelize the reading of the timestamps
    of a list of videos, given their paths in the filesystem.

    Used in VideoClips and defined at top level, so it can be
    pickled when forking.
    Úvideo_pathsr   Nc                 ó   — || _         d S ©N©r0   )Úselfr0   s     r   Ú__init__z _VideoTimestampsDataset.__init__8   s   € Ø&ˆÔÐÐr   c                 ó*   — t          | j        ¦  «        S r2   ©Úlenr0   ©r4   s    r   Ú__len__z_VideoTimestampsDataset.__len__;   ó   € Ý�4Ô#Ñ$Ô$Ð$r   Úidxc                 ó6   — t          | j        |         ¦  «        S r2   )r   r0   )r4   r<   s     r   Ú__getitem__z#_VideoTimestampsDataset.__getitem__>   s   € Ý$ TÔ%5°cÔ%:Ñ;Ô;Ð;r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Ústrr5   Úintr:   r   r
   Úfloatr>   © r   r   r/   r/   /   s“   € € € € € ðð ð' D¨¤Ið '°$ð 'ð 'ð 'ð 'ð%˜ð %ð %ð %ð %ð<˜sð < u¨T°#¬Y¸À¼Ð-GÔ'Hð <ð <ð <ð <ð <ð <r   r/   Úxc                 ó   — | S )zH
    Dummy collate function to be used with _VideoTimestampsDataset
    rF   )rG   s    r   Ú_collate_fnrI   B   s	   € ð €Hr   c                   óÖ  — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 d.dee         ded	ed
ee         dee	ee
f                  dededededededededdfd„Zd/d„Zde	ee
f         ddfd„Zede	ee
f         fd„¦   «         Zdee         dd fd„Ze	 d0dej        dededee         d
ee         deej        eee         ej        f         f         fd „¦   «         Zd0deded
ee         ddfd!„Zdefd"„Zdefd#„Zdefd$„Zd%edeeef         fd&„Zeded'ed(edeeej        f         fd)„¦   «         Zd%edeej        ej        e	ee
f         ef         fd*„Zde	ee
f         fd+„Zd,e	ee
f         ddfd-„Z dS )1Ú
VideoClipsaE  
    Given a list of video files, computes all consecutive subvideos of size
    `clip_length_in_frames`, where the distance between each subvideo in the
    same video is defined by `frames_between_clips`.
    If `frame_rate` is specified, it will also resample all the videos to have
    the same frame rate, and the clips will refer to this frame rate.

    Creating this instance the first time is time-consuming, as it needs to
    decode all the videos in `video_paths`. It is recommended that you
    cache the results after instantiation of the class.

    Recreating the clips for different clip lengths is fast, and can be done
    with the `compute_clips` method.

    Args:
        video_paths (List[str]): paths to the video files
        clip_length_in_frames (int): size of a clip in number of frames
        frames_between_clips (int): step (in frames) between each clip
        frame_rate (float, optional): if specified, it will resample the video
            so that it has `frame_rate`, and then the clips will be defined
            on the resampled video
        num_workers (int): how many subprocesses to use for data loading.
            0 means that the data will be loaded in the main process. (default: 0)
        output_format (str): The format of the output video tensors. Can be either "THWC" (default) or "TCHW".
    é   r   Nr   ÚTHWCr0   Úclip_length_in_framesÚframes_between_clipsÚ
frame_rateÚ_precomputed_metadataÚnum_workersÚ_video_widthÚ_video_heightÚ_video_min_dimensionÚ_video_max_dimensionÚ_audio_samplesÚ_audio_channelsÚoutput_formatr   c                 óf  — || _         || _        || _        || _        |	| _        |
| _        || _        || _        |                     ¦   «         | _	        | j	        dvrt          d|› d�¦  «        ‚|€|                      ¦   «          n|                      |¦  «         |                      |||¦  «         d S )N)rM   ÚTCHWz5output_format should be either 'THWC' or 'TCHW', got ú.)r0   rR   rS   rT   rU   rV   rW   rX   ÚupperrY   r%   Ú_compute_frame_ptsÚ_init_from_metadataÚcompute_clips)r4   r0   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   s                 r   r5   zVideoClips.__init__d   sÔ   € ð" 'ˆÔØ&ˆÔð )ˆÔØ*ˆÔØ$8ˆÔ!Ø$8ˆÔ!Ø,ˆÔØ.ˆÔØ*×0Ò0Ñ2Ô2ˆÔØÔÐ%5Ð5Ð5ÝÐeÐUbÐeÐeÐeÑfÔfÐfà Ð(Ø×#Ò#Ñ%Ô%Ð%Ð%à×$Ò$Ð%:Ñ;Ô;Ð;Ø×ÒÐ0Ð2FÈ
ÑSÔSÐSÐSÐSr   c                 ó  ‡— g | _         g | _        dd lŠ‰j        j                             t          | j        ¦  «        d| j        t          ¬¦  «        }t          t          |¦  «        ¬¦  «        5 }|D ]r}|                     d¦  «         t          t          |Ž ¦  «        \  }}ˆfd„|D ¦   «         }| j                              |¦  «         | j                             |¦  «         Œs	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rL   )Ú
batch_sizerR   Ú
collate_fn)Útotalr   c                 ó>   •— g | ]} ‰j         |‰j        ¬ ¦  «        ‘ŒS )©Údtype)Ú	as_tensorÚlong)Ú.0r   r(   s     €r   ú
<listcomp>z1VideoClips._compute_frame_pts.<locals>.<listcomp>Ÿ   s,   ø€ ÐYÐYÐYÈ˜_˜Uœ_¨S¸¼
ÐCÑCÔCÐYÐYÐYr   )Ú	video_ptsÚ	video_fpsÚtorch.utils.dataÚutilsÚdataÚ
DataLoaderr/   r0   rR   rI   r   r8   ÚupdateÚlistÚzipÚextend)r4   ÚdlÚpbarÚbatchÚ	batch_ptsÚ	batch_fpsr(   s         @r   r^   zVideoClips._compute_frame_pts‰   sW  ø€ ØˆŒØ&(ˆŒð 	 ÐÐÐà*/¬+Ô*:×*EÒ*EÝ# DÔ$4Ñ5Ô5ØØÔ(Ý"ð	 +Fñ +
ô +
ˆõ �˜B™œÐ Ñ Ô ð 		1 DØð 1ð 1�Ø—’˜A‘”�Ý'+­C°¨KÑ'8Ô'8Ñ$�	˜9ð ZÐYÐYÐYÈyÐYÑYÔY�	Ø”×%Ò% iÑ0Ô0Ð0Ø”×%Ò% iÑ0Ô0Ð0Ð0ð1ð		1ð 		1ð 		1ñ 		1ô 		1ð 		1ð 		1ð 		1ð 		1ð 		1ð 		1ð 		1øøøð 		1ð 		1ð 		1ð 		1ð 		1ð 		1s   Á0A6C4Ã4C8Ã;C8Úmetadatac                 ó  — |d         | _         t          | j         ¦  «        t          |d         ¦  «        k    sJ ‚|d         | _        t          | j         ¦  «        t          |d         ¦  «        k    sJ ‚|d         | _        d S )Nr0   rl   rm   )r0   r8   rl   rm   )r4   r{   s     r   r_   zVideoClips._init_from_metadata£   s}   € Ø# MÔ2ˆÔÝ�4Ô#Ñ$Ô$­¨H°[Ô,AÑ(BÔ(BÒBÐBÐBÐBØ! +Ô.ˆŒÝ�4Ô#Ñ$Ô$­¨H°[Ô,AÑ(BÔ(BÒBÐBÐBÐBØ! +Ô.ˆŒˆˆr   c                 ó0   — | j         | j        | j        dœ}|S )N©r0   rl   rm   r~   )r4   Ú	_metadatas     r   r{   zVideoClips.metadataª   s(   € ð  Ô+ØœØœð
ð 
ˆ	ð
 Ðr   Úindicesc                 ó  ‡ — ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }|||dœ} t          ‰ ¦  «        |‰ j        ‰ j        ‰ j        |‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j	        ‰ j
        ‰ j        ¬¦  «        S )Nc                 ó*   •— g | ]}‰j         |         ‘ŒS rF   r3   ©rj   Úir4   s     €r   rk   z%VideoClips.subset.<locals>.<listcomp>´   s!   ø€ Ð<Ð<Ð<¨q�tÔ'¨Ô*Ð<Ð<Ð<r   c                 ó*   •— g | ]}‰j         |         ‘ŒS rF   )rl   rƒ   s     €r   rk   z%VideoClips.subset.<locals>.<listcomp>µ   ó    ø€ Ð8Ð8Ð8¨1�T”^ AÔ&Ð8Ð8Ð8r   c                 ó*   •— g | ]}‰j         |         ‘ŒS rF   )rm   rƒ   s     €r   rk   z%VideoClips.subset.<locals>.<listcomp>¶   r†   r   r~   )rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   )ÚtypeÚ
num_framesr!   rP   rR   rS   rT   rU   rV   rW   rX   rY   )r4   r€   r0   rl   rm   r{   s   `     r   ÚsubsetzVideoClips.subset³   sÉ   ø€ Ø<Ð<Ð<Ð<°GÐ<Ñ<Ô<ˆØ8Ð8Ð8Ð8°Ð8Ñ8Ô8ˆ	Ø8Ð8Ð8Ð8°Ð8Ñ8Ô8ˆ	à&Ø"Ø"ð
ð 
ˆð
 �t�D‰zŒzØØ"&¤/Ø!%¤Ø”Ø"*ØÔ(ØÔ*ØÔ,Ø!%Ô!:Ø!%Ô!:ØÔ.Ø Ô0ØÔ,ð
ñ 
ô 
ð 	
r   rl   r‰   r!   Úfpsc                 ó°  — |€d}|€|}t          | ¦  «        |z  |z  }t                               t          t	          j        |¦  «        ¦  «        ||¦  «        }| |         } t          | ||¦  «        }|                     ¦   «         st          j	        d¦  «         t          |t          ¦  «        r|gt          |¦  «        z  }nt          |||¦  «        }||fS )Nr   z¥There aren't enough frames in the current video to get a clip for the given clip length and frames between clips. The video (and potentially others) will be skipped.)r8   rK   Ú_resample_video_idxrD   ÚmathÚfloorr-   r'   ÚwarningsÚwarnÚ
isinstanceÚslice)	rl   r‰   r!   r‹   rP   Útotal_framesÚ_idxsÚclipsÚidxss	            r   Úcompute_clips_for_videoz"VideoClips.compute_clips_for_videoÌ   sâ   € ð ˆ;ð ˆCØÐØˆJÝ˜9‘~”~¨
Ñ2°SÑ8ˆÝ×.Ò.­sµ4´:¸lÑ3KÔ3KÑ/LÔ/LÈcÐS]Ñ^Ô^ˆØ˜eÔ$ˆ	Ý�y *¨dÑ3Ô3ˆØ�{Š{‰}Œ}ð 	ÝŒMð\ñô ð õ
 �e�UÑ#Ô#ð 	3Ø�7�S ™ZœZÑ'ˆDˆDå˜% ¨TÑ2Ô2ˆDØ�dˆ{Ðr   c                 óÊ  — || _         || _        || _        g | _        g | _        t          | j        | j        ¦  «        D ]U\  }}|                      |||||¦  «        \  }}| j         	                    |¦  «         | j         	                    |¦  «         ŒVt          j        d„ | j        D ¦   «         ¦  «        }|                     d¦  «                             ¦   «         | _        dS )a„  
        Compute all consecutive sequences of clips from video_pts.
        Always returns clips of size `num_frames`, meaning that the
        last few frames in a video can potentially be dropped.

        Args:
            num_frames (int): number of frames for the clip
            step (int): distance between two clips
            frame_rate (int, optional): The frame rate
        c                 ó,   — g | ]}t          |¦  «        ‘ŒS rF   ©r8   ©rj   Úvs     r   rk   z,VideoClips.compute_clips.<locals>.<listcomp>ú   s   € Ð'CÐ'CÐ'C°1­¨A©¬Ð'CÐ'CÐ'Cr   r   N)r‰   r!   rP   r–   Úresampling_idxsrt   rl   rm   r˜   Úappendr(   rh   ÚcumsumÚtolistÚcumulative_sizes)	r4   r‰   r!   rP   rl   r‹   r–   r—   Úclip_lengthss	            r   r`   zVideoClips.compute_clipsæ   sâ   € ð %ˆŒØˆŒ	Ø$ˆŒØˆŒ
Ø!ˆÔÝ! $¤.°$´.ÑAÔAð 	.ð 	.‰NˆI�sØ×6Ò6°yÀ*ÈdÐTWÐYcÑdÔd‰KˆE�4ØŒJ×Ò˜eÑ$Ô$Ð$ØÔ ×'Ò'¨Ñ-Ô-Ð-Ð-Ý”Ð'CÐ'C¸¼
Ð'CÑ'CÔ'CÑDÔDˆØ ,× 3Ò 3°AÑ 6Ô 6× =Ò =Ñ ?Ô ?ˆÔÐÐr   c                 ó*   — |                       ¦   «         S r2   )Ú	num_clipsr9   s    r   r:   zVideoClips.__len__ý   s   € Ø�~Š~ÑÔÐr   c                 ó*   — t          | j        ¦  «        S r2   r7   r9   s    r   Ú
num_videoszVideoClips.num_videos   r;   r   c                 ó   — | j         d         S )zJ
        Number of subclips that are available in the video list.
        éÿÿÿÿ)r¢   r9   s    r   r¥   zVideoClips.num_clips  s   € ð Ô$ RÔ(Ð(r   r<   c                 óv   — t          j        | j        |¦  «        }|dk    r|}n|| j        |dz
           z
  }||fS )zw
        Converts a flattened representation of the indices into a video_idx, clip_idx
        representation.
        r   r   )ÚbisectÚbisect_rightr¢   )r4   r<   Ú	video_idxÚclip_idxs       r   Úget_clip_locationzVideoClips.get_clip_location	  sJ   € õ
 Ô'¨Ô(=¸sÑCÔCˆ	Ø˜Š>ˆ>ØˆHˆHà˜TÔ2°9¸q±=ÔAÑAˆHØ˜(Ð"Ð"r   Úoriginal_fpsÚnew_fpsc                 ó   — ||z  }|                      ¦   «         r t          |¦  «        }t          d d |¦  «        S t          j        | t          j        ¬¦  «        |z  }|                     ¦   «                              t          j        ¦  «        }|S )Nrf   )	Ú
is_integerrD   r“   r(   ÚarangeÚfloat32r�   ÚtoÚint64)r‰   r°   r±   r!   r—   s        r   r�   zVideoClips._resample_video_idx  sx   € à˜gÑ%ˆØ�?Š?ÑÔð 	+õ �t‘9”9ˆDÝ˜˜t TÑ*Ô*Ð*ÝŒ|˜J­e¬mÐ<Ñ<Ô<¸tÑCˆØ�zŠz‰|Œ|�Š�uœ{Ñ+Ô+ˆØˆr   c                 óÚ  — ||                       ¦   «         k    r(t          d|› d|                       ¦   «         › d�¦  «        ‚|                      |¦  «        \  }}| j        |         }| j        |         |         }ddlm}  |¦   «         }|dk    r‚| j        dk    rt          d¦  «        ‚| j	        dk    rt          d¦  «        ‚| j
        dk    rt          d	¦  «        ‚| j        dk    rt          d
¦  «        ‚| j        dk    rt          d¦  «        ‚|dk    rK|d                              ¦   «         }|d                              ¦   «         }	t          |||	¦  «        \  }
}}�n`t          |¦  «        }|j        }d}t#          t$          |d                              ¦   «         ¦  «        }t#          t$          |d                              ¦   «         ¦  «        }d\  }}t'          dd¦  «        }t'          |j        j        |j        j        ¦  «        }|j        rct'          |j        j        |j        j        ¦  «        }t3          |||t4          j        ¦  «        }t3          |||t4          j        ¦  «        }|j        }t=          || j        | j	        | j
        | j        ||f|| j        | j        ||f|¬¦  «        \  }
}}d|i}|�||d<   | j         �J| j!        |         |         }tE          |tF          j$        ¦  «        r||d         z
  }|
|         }
| j         |d<   tK          |
¦  «        | j&        k    sJ |
j'        › d| j&        › �¦   «         ‚| j(        dk    r|
 )                    dddd¦  «        }
|
|||fS )a7  
        Gets a subclip from a list of videos.

        Args:
            idx (int): index of the subclip. Must be between 0 and num_clips().

        Returns:
            video (Tensor)
            audio (Tensor)
            info (Dict)
            video_idx (int): index of the video in `video_paths`
        zIndex z out of range (z number of clips)r   )Úget_video_backendÚpyavz.pyav backend doesn't support _video_width != 0z/pyav backend doesn't support _video_height != 0z6pyav backend doesn't support _video_min_dimension != 0z6pyav backend doesn't support _video_max_dimension != 0z0pyav backend doesn't support _audio_samples != 0r©   N)r   r©   r   )
Úvideo_widthÚvideo_heightÚvideo_min_dimensionÚvideo_max_dimensionÚvideo_pts_rangeÚvideo_timebaseÚaudio_samplesÚaudio_channelsÚaudio_pts_rangeÚaudio_timebaserm   Ú	audio_fpsz x r[   é   é   )*r¥   Ú
IndexErrorr¯   r0   r–   Útorchvisionr¹   rS   r%   rT   rU   rV   rW   Úitemr   r   rm   r   rD   r   rÀ   Ú	numeratorÚdenominatorÚ	has_audiorÄ   r   rŽ   r�   ÚceilÚaudio_sample_rater   rX   rP   rž   r’   r(   ÚTensorr8   r‰   ÚshaperY   Úpermute)r4   r<   r­   r®   Ú
video_pathÚclip_ptsr¹   ÚbackendÚ	start_ptsÚend_ptsÚvideoÚaudioÚinfoÚ_inform   rÅ   Úvideo_start_ptsÚvideo_end_ptsÚaudio_start_ptsÚaudio_end_ptsrÄ   rÀ   Ú_Úresampling_idxs                           r   Úget_clipzVideoClips.get_clip!  s˜  € ð �$—.’.Ñ"Ô"Ò"Ð"ÝÐ] cÐ]Ð]¸$¿.º.Ñ:JÔ:JÐ]Ð]Ð]Ñ^Ô^Ð^Ø"×4Ò4°SÑ9Ô9Ñˆ	�8ØÔ% iÔ0ˆ
Ø”:˜iÔ(¨Ô2ˆà1Ð1Ð1Ð1Ð1Ð1à#Ð#Ñ%Ô%ˆà�fÒÐàÔ  AÒ%Ð%Ý Ð!QÑRÔRÐRØÔ! QÒ&Ð&Ý Ð!RÑSÔSÐSØÔ(¨AÒ-Ð-Ý Ð!YÑZÔZÐZØÔ(¨AÒ-Ð-Ý Ð!YÑZÔZÐZØÔ" aÒ'Ð'Ý Ð!SÑTÔTÐTà�fÒÐØ  œ×(Ò(Ñ*Ô*ˆIØ˜r”l×'Ò'Ñ)Ô)ˆGÝ!+¨J¸	À7Ñ!KÔ!KÑˆE�5˜$™$å*¨:Ñ6Ô6ˆEØœˆIØˆIå"¥3¨°¬×(8Ò(8Ñ(:Ô(:Ñ;Ô;ˆOÝ ¥ h¨r¤l×&7Ò&7Ñ&9Ô&9Ñ:Ô:ˆMà-2Ñ*ˆO˜]Ý% a¨™^œ^ˆNÝ% eÔ&:Ô&DÀeÔFZÔFfÑgÔgˆNØŒð 4Ý!)¨%Ô*>Ô*HÈ%ÔJ^ÔJjÑ!kÔ!k�Ý"-¨o¸~È~Õ_cÔ_iÑ"jÔ"j�Ý +¨M¸>È>Õ[_Ô[dÑ eÔ e�Ø!Ô3�	Ý3ØØ Ô-Ø!Ô/Ø$(Ô$=Ø$(Ô$=Ø!0°-Ð @Ø-Ø"Ô1Ø#Ô3Ø!0°-Ð @Ø-ðñ ô ‰OˆE�5˜!ð   Ð+ˆDØÐ$Ø$-��[Ñ!àŒ?Ð&Ø!Ô1°)Ô<¸XÔFˆNÝ˜.­%¬,Ñ7Ô7ð DØ!/°.ÀÔ2CÑ!C�Ø˜.Ô)ˆEØ $¤ˆD�ÑÝ�5‰zŒz˜Tœ_Ò,Ð,Ð,°´Ð.RÐ.RÀÄÐ.RÐ.RÑ,Ô,Ð,àÔ Ò'Ð'à—M’M ! Q¨¨1Ñ-Ô-ˆEà�e˜T 9Ð,Ð,r   c                 ó   — d„ | j         D ¦   «         }d„ | j         D ¦   «         }|r(t          j        |¦  «        }|                     ¦   «         }| j                             ¦   «         }||d<   ||d<   |d= |d= |d= d|d	<   |S )
Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rF   r›   rœ   s     r   rk   z+VideoClips.__getstate__.<locals>.<listcomp>z  s   € Ð:Ð:Ð: a�3˜q™6œ6Ð:Ð:Ð:r   c                 óL   — g | ]!}|                      t          j        ¦  «        ‘Œ"S rF   )r¶   r(   r·   )rj   rG   s     r   rk   z+VideoClips.__getstate__.<locals>.<listcomp>  s&   € Ð?Ð?Ð?¨1�Q—T’T�%œ+Ñ&Ô&Ð?Ð?Ð?r   Úvideo_pts_sizesrl   r–   rž   r¢   rÇ   Ú_version)rl   r(   ÚcatÚnumpyÚ__dict__Úcopy)r4   ræ   rl   Úds       r   Ú__getstate__zVideoClips.__getstate__y  s«   € Ø:Ð:¨4¬>Ð:Ñ:Ô:ˆð
 @Ð?°´Ð?Ñ?Ô?ˆ	àð 	*Ýœ	 )Ñ,Ô,ˆIð "ŸšÑ)Ô)ˆIð ŒM×ÒÑ Ô ˆØ.ˆÐ
ÑØ"ˆˆ+‰ð ˆgˆJØÐÐ ØÐ Ð!ð ˆˆ*‰Øˆr   rì   c                 ó  — d|vr	|| _         d S t          j        |d         t          j        ¬¦  «        }t          j        ||d         d¬¦  «        }|d= ||d<   || _         |                      | j        | j        | j        ¦  «         d S )Nrç   rl   rf   ræ   r   )r$   )	rê   r(   rh   r·   Úsplitr`   r‰   r!   rP   )r4   rì   rl   s      r   Ú__setstate__zVideoClips.__setstate__•  sŒ   € à˜QÐÐØˆDŒMØˆFå”O A k¤N½%¼+ÐFÑFÔFˆ	Ý”K 	¨1Ð->Ô+?ÀQÐGÑGÔGˆ	àÐÐ à"ˆˆ+‰ØˆŒà×Ò˜4œ?¨D¬I°t´ÑGÔGÐGÐGÐGr   )rL   r   NNr   r   r   r   r   r   r   rM   )r   Nr2   )!r?   r@   rA   rB   r	   rC   rD   r
   rE   r   r   r5   r^   r_   Úpropertyr{   rŠ   Ústaticmethodr(   rÐ   r   r   r“   r˜   r`   r:   r§   r¥   r¯   r�   râ   rí   rð   rF   r   r   rK   rK   I   sÇ  € € € € € ðð ð: &(Ø$%Ø&*Ø:>ØØØØ$%Ø$%ØØ Ø#ð#Tð #Tà˜#”Yð#Tð  #ð#Tð "ð	#Tð
 ˜U”Oð#Tð  (¨¨S°#¨X¬Ô7ð#Tð ð#Tð ð#Tð ð#Tð "ð#Tð "ð#Tð ð#Tð ð#Tð ð#Tð 
ð#Tð #Tð #Tð #TðJ1ð 1ð 1ð 1ð4/¨D°°c°¬Nð /¸tð /ð /ð /ð /ð ð˜$˜s C˜xœ.ð ð ð ñ „Xðð
˜d 3œið 
¨Lð 
ð 
ð 
ð 
ð2 àquðð Ø”<ðØ-0ðØ8;ðØBJÈ5Ä/ðØ_gÐhmÔ_nðà	ˆuŒ|˜U 4¨¤;°´Ð#<Ô=Ð=Ô	>ðð ð ñ „\ðð2@ð @¨ð @°3ð @ÀHÈUÄOð @Ð_cð @ð @ð @ð @ð. ˜ð  ð  ð  ð  ð%˜Cð %ð %ð %ð %ð)˜3ð )ð )ð )ð )ð
# Sð 
#¨U°3¸°8¬_ð 
#ð 
#ð 
#ð 
#ð ð	¨ð 	¸5ð 	È5ð 	ÐUZÐ[`ÐbgÔbnÐ[nÔUoð 	ð 	ð 	ñ „\ð	ðV-˜Cð V- E¨%¬,¸¼ÀdÈ3ÐPSÈ8ÄnÐVYÐ*YÔ$Zð V-ð V-ð V-ð V-ðp˜d 3¨ 8œnð ð ð ð ð8H˜d 3¨ 8œnð H°ð Hð Hð Hð Hð Hð Hr   rK   )r   ) r«   rŽ   r�   Ú	fractionsr   Útypingr   r   r   r   r	   r
   r   r   r   r(   Útorchvision.ior   r   r   r   ro   r   r   r�   rD   r   rÐ   r-   r/   rI   rK   rF   r   r   ú<module>rö      sØ  ðØ €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sà €€€Ø kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kÐ kà Ð Ð Ð Ð Ð à€GˆC�L„L€ð bfÔakð 	ð 	�Sð 	¨ð 	Àð 	ÐV^ð 	Ðpsð 	ð 	ð 	ð 	ð:ð :�5”<ð : sð :°#ð :Àð :ÈUÌ\ð :ð :ð :ð :ð(<ð <ð <ð <ð <ñ <ô <ð <ð&�1ð ˜ð ð ð ð ðZHð ZHð ZHð ZHð ZHñ ZHô ZHð ZHð ZHð ZHr   