+
    œ°³j‘-  ã                   ó   € R t ^ RIt^ RIt^ RIt^RIHt ^RIHtH	t	H
t
Ht ^RIHtHt ^RIHtHtHt ^RIHt ^RIHtHtHt ]! 4       '       d   ^ RIHt RR	 R
 llt ! R R]RR7      t] ! R R]4      4       tR.tR# )z#video processor class for GLM-4.1V.N)ÚBatchFeature)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚPILImageResamplingÚSizeDict)ÚUnpackÚVideosKwargs)Ú
TensorTypeÚauto_docstringÚis_torchvision_available)ÚBaseVideoProcessor)ÚVideoMetadataÚgroup_videos_by_shapeÚreorder_videos)Ú
functionalc                ól   € V ^8„  d   QhR\         R\         R\         R\         R\         R\         R\         /# )é   Ú
num_framesÚheightÚwidthÚtemporal_factorÚfactorÚ
min_pixelsÚ
max_pixels)Úint)Úformats   "Úq/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/glm4v/video_processing_glm4v.pyÚ__annotate__r   '   sN   € ÷ !ñ !Üð!äð!ô ð!ô ð	!ô
 ð!ô ð!ô ñ!ó    c                 óV  € W8  d   \        R V  RV 24      hW8  g   W$8  d;   \        WA,          WB,          4      p\        W,          4      p\        W',          4      p\        W4      \        W4      ,          ^È8”  d(   \        R\        W4      \        W4      ,           24      h\	        W,          4      V,          p\	        W$,          4      V,          p	\	        W,          4      V,          p
W¨,          V	,          V8”  d–   \
        P                  ! W,          V,          V,          4      p\        V\
        P                  ! W,          V,          4      V,          4      p\        V\
        P                  ! W+,          V,          4      V,          4      p	W‰3# W¨,          V	,          V8  d   \
        P                  ! WPV,          V,          ,          4      p\
        P                  ! W,          V,          4      V,          p\
        P                  ! W+,          V,          4      V,          p	W‰3# )zt:z% must be larger than temporal_factor:z4absolute aspect ratio must be smaller than 200, got )	Ú
ValueErrorÚmaxr   ÚminÚroundÚmathÚsqrtÚfloorÚceil)r   r   r   r   r   r   r   ÚscaleÚh_barÚw_barÚt_barÚbetas   &&&&&&&     r   Úsmart_resizer-   '   s©  € ð Ô#Ü˜2˜j˜\Ð)NÈÐN_Ð`ÓaÐaØ„˜%œ.Ü�F•O V¥^Ó4ˆÜ�V•^Ó$ˆÜ�E•MÓ"ˆä
ˆ6ÓœC Ó.Õ.°Ô4ÜØBÄ3ÀvÓCUÔX[Ð\bÓXjÕCjÐBkÐló
ð 	
ô �&•/Ó" VÕ+€EÜ�%•.Ó! FÕ*€EÜ�*Õ.Ó/°/ÕA€Eà…}�uÕ˜zÔ)Ü�yŠy˜*Õ-°Õ5¸ÕCÓDˆÜ�FœDŸJšJ v¥}°vÕ'=Ó>ÀÕGÓHˆÜ�FœDŸJšJ u¥|°fÕ'<Ó=ÀÕFÓGˆð ˆ<Ðð 
�˜Õ	 Ô	+Ü�yŠy˜°FÕ':¸UÕ'BÕCÓDˆÜ—	’	˜&�-¨&Õ0Ó1°FÕ:ˆÜ—	’	˜%�,¨Õ/Ó0°6Õ9ˆàˆ<Ðr   c                   ó0   a € ] tR t^Kt o RtV 3R ltRtV tR# )ÚGlm4vVideoProcessorInitKwargsa  
patch_size (`int`, *optional*, defaults to 14):
    The spatial patch size of the vision encoder.
temporal_patch_size (`int`, *optional*, defaults to 2):
    The temporal patch size of the vision encoder.
merge_size (`int`, *optional*, defaults to 2):
    The merge size of the vision encoder to llm encoder.
max_duration (`int`, *optional*, defaults to 300):
    The maximum duration of a video that will be sampled.
max_image_size (`dict`, *optional*, defaults to `28 * 28 * 2 * 55790`):
    The maximum pixels a video can be resized to.
c                ól   <€ V ^8„  d   Qh/ S[ S[S[3,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   # )r   Úmax_image_sizeÚ
patch_sizeÚtemporal_patch_sizeÚ
merge_sizeÚmax_duration)ÚdictÚstrr   )r   Ú__classdict__s   "€r   r   Ú*Glm4vVideoProcessorInitKwargs.__annotate__K   sL   ø‡ ‚ ñ ™™c˜•NÑ"ñ ñ �Oñ ñ  Ññ! ñ" �Oñ# ñ$ Ñò% r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r8   s   @r   r/   r/   K   s   ø‡ € ñ÷ ƒ r   r/   F)Útotalc                   ó.  a a€ ] tR t^`t o]P
                  tRRRR/tRR/t]	t
]tRtRtRtRtRt^t^tRt^t]t^t^tRR.tV3R lV 3R lltRV3R
 lR lltV3R lV 3R lltV3R lR ltRRR	]P
                  RRRR	R	R	R	R	R	3V3R lR lltRt Vt!V ;t"# )ÚGlm4vVideoProcessorÚshortest_edgeÚlongest_edgeTi,  Úpixel_values_videosÚvideo_grid_thwc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r/   )r   r8   s   "€r   r   Ú Glm4vVideoProcessor.__annotate__v   s   ø€ ÷ #ñ #¡Ñ(EÕ!Fñ #r   c                ó(   <€ \         SV `  ! R/ VB  R # )Nr:   )ÚsuperÚ__init__)ÚselfrK   Ú	__class__s   &,€r   rO   ÚGlm4vVideoProcessor.__init__v   s   ø€ Ü‰ÒÑ"˜6Ô"r   Nc                óD   <€ V ^8„  d   QhRS[ RS[S[,          R,          /# )r   ÚmetadataÚfpsN)r   r   Úfloat)r   r8   s   "€r   r   rL   y   s(   ø€ ÷ 0)ñ 0)áð0)ñ ‘5�[˜4Õñ0)r   c                ó‚  € Ve   \        VRR4      f   \        R4      hVP                  pVe   TMV P                  pV^,
          pVP                  ;'       g#    \        WaP                  ,          4      ^,           pWpP                  8:  d‰   \        \        \        P                  ! Wu,          4      4      ^4      p\        V4       U	u. uFC  p	\        V\        \        P                  ! W‘P                  ,          V,          4      4      4      NKE  	  p
p	M˜\        V P                  V,          4      pW´8¼  d   \        \        V4      4      p
Ma\        P                   ! ^ W{RR7      pV Uu. uF<  p\        V\        \        P                  ! WÑP                  ,          4      4      4      NK>  	  p
p\#        4       . rþV
 F.  pVV9  g   K  VP%                  V4       VP'                  V4       K0  	  \)        V4      ^,          '       d   VP'                  VR,          4       \        P*                  ! V\        R7      # u up	i u upi )a?  
Args:
    metadata (`VideoMetadata`):
        Metadata of the video containing information about total duration, fps and total number of frames.
    fps (`int` or `float`, *optional*):
        Target frames to sample per second. Defaults to `self.fps`.
Returns:
    np.ndarray:
        Indices to sample video frames.
NrU   z´Asked to sample frames per second but no video metadata was provided which is required when sampling in GLM4V. Please pass in `VideoMetadata` object or set `do_sample_frames=False`T)Úendpoint)Údtypeéÿÿÿÿ)Úgetattrr    Útotal_num_framesrU   Údurationr#   r5   r!   r   r$   r&   Úranger"   r'   ÚlistÚnpÚlinspaceÚsetÚaddÚappendÚlenÚarray)rP   rT   rU   rK   Útotal_framesÚrequested_fpsÚmax_frame_idxr]   ÚnÚiÚframe_indicesÚnum_samplesÚtarget_secondsÚtÚseenÚuniqÚidxs   &&&,             r   Úsample_framesÚ!Glm4vVideoProcessor.sample_framesy   s¼  € ð  Òœw x°¸Ó=ÒEÜðXóð ð
  ×0Ñ0ˆØ"š™°D·H±Hˆà$ qÕ(ˆØ×$Ñ$×OÐO¬¨m¿l¹lÕ.JÓ(KÈaÕ(Oˆà×(Ñ(Ô(Ü”CœŸ
š
 8Õ#;Ó<Ó=¸qÓAˆAÜkpÐqrÔksÓtÑksÐfgœS ´´D·I²I¸aÇ,Á,Õ>NÐQ^Õ>^Ó4_Ó0`ÖaÑksˆMÐtˆMä˜d×/Ñ/°-Õ?Ó@ˆKØÔ*Ü $¤U¨<Ó%8Ó 9‘ä!#§¢¨Q°ÐPTÔ!U�Ù_mÓ nÑ_mÐZ[¤ ]´C¼¿	º	À!ÇlÁlÕBRÓ8SÓ4TÖ!UÑ_m�Ð nä“U˜BˆdÛ ˆCØ˜$ŽØ—‘˜”Ø—‘˜CÖ ñ !ô
 ˆt‹9�q�=Œ=Ø�K‰K˜˜R�Ô!ä�xŠx˜¤CÔ(Ð(ùò% uùò !os   ÃA	H7Å(AH<c                ó8   <€ V ^8„  d   QhRRRS[ RRRS[RS[RR/# )	r   Úvideosútorch.TensorÚsizeÚresampleú7PILImageResampling | tvF.InterpolationMode | int | Noner   r   Úreturn)r   r   )r   r8   s   "€r   r   rL   «   sH   ø€ ÷ 
ñ 
àð
ñ ð
ð Lð	
ñ
 ð
ñ ð
ð 
ñ
r   c           
     ó6  <€ VP                   '       d   VP                  '       g   \        RV R24      hVP                  RR w  rx\	        VVVP                  ^,          VVVP                   VP                  R7      w  rš\
        SV `  V\        WšR7      VR7      # )z5Resize dynamically based on input video aspect ratio.zI`size` dict must contain 'shortest_edge' and 'longest_edge' keys but got Ú.N)r   r   r   r   r   r   r   )r   r   )Úimagerx   ry   éþÿÿÿ)rF   rG   r    Úshaper-   rN   Úresizer   )rP   rv   rx   ry   r   r   rK   r   r   Úresized_heightÚresized_widthrQ   s   &&&&&&,    €r   r�   ÚGlm4vVideoProcessor.resize«   s¢   ø€ ð ×!×!Ð!¨×):×):Ð):ÜÐhÐimÐhnÐnoÐpÓqÐqàŸ™ R SÐ)‰ˆÜ(4ØØØ—|‘| A•ØØ+Ø×)Ñ)Ø×(Ñ(ô)
Ñ%ˆô ‰w‰~ØÜ ÔEØð ó 
ð 	
r   c                óN   <€ V ^8„  d   QhRRRS[ RS[ RS[ RS[RS[ S[ 3,          /# )r   rv   rw   r2   r4   r3   r{   )r   Útuple)r   r8   s   "€r   r   rL   È   sI   ø€ ÷ &7ñ &7àð&7ñ ð&7ñ ð	&7ñ
 !ð&7ñ 
ˆ~™s¡CÐ'Õ	(ñ&7r   c                óè  € VP                   w  rVrxp	V) V,          ;p
'       dB   VRRR13,          P                  RV
RRR4      p\        P                  ! W3^R7      pWj,          pWd,          pW‚,          W’,          ríVP	                  VVVVWÓ,          VVWã,          VV4
      pVP                  ^ ^^^^^^^^^	4
      pVP                  VWÍ,          V,          Wt,          V,          V,          4      pVWÍV3# )ztPatchifies each video into flat layout of shape (`seq_len`, `patch_dim`) so we can concat dynamically shaped pixels.:NNNN©ÚdimrZ   )r€   ÚexpandÚtorchÚcatÚviewÚpermuteÚreshape)rP   rv   r2   r4   r3   Ú
batch_sizer   Úchannelr‚   rƒ   ÚpadÚrepeatsÚgrid_tÚgrid_hÚgrid_wÚpatchesÚflatten_patchess   &&&&&            r   ÚpatchifyÚGlm4vVideoProcessor.patchifyÈ   s  € ð JPÏÉÑFˆ
 ¸ð �+Ð 3Õ3Ð3ˆ3Ö3Ø˜Q ¡˜V•n×+Ñ+¨B°°R¸¸RÓ@ˆGÜ—Y’Y Ð0°aÔ8ˆFØÕˆJàÕ2ˆØ'Õ5°}Õ7R�à—+‘+ØØØØØÕ ØØØÕ ØØó
ˆð —/‘/ ! Q¨¨1¨a°°A°q¸!¸QÓ?ˆØ!Ÿ/™/ØØ�O˜fÕ$ØÕ)¨JÕ6¸ÕCó
ˆð  °Ð6Ð6r   c                óB  <€ V ^8„  d   QhRS[ S[P                  ,          RS[RS[RS[R,          RRRS[R	S[R
S[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          RS[R,          RS[R,          RS[S[,          R,          /# )r   rv   Údo_convert_rgbÚ	do_resizerx   Nry   rz   Ú
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanÚ	image_stdr2   r3   r4   Úreturn_tensors)	r_   r‹   ÚTensorÚboolr   rV   r   r7   r	   )r   r8   s   "€r   r   rL   ð   s÷   ø€ ÷ @Cñ @Cá‘U—\‘\Õ"ð@Cñ ð@Cñ ð	@Cñ
 ˜�oð@Cð Lð@Cñ ð@Cñ ð@Cñ ð@Cñ ™D¡�KÕ'¨$Õ.ð@Cñ ™4¡�;Õ&¨Õ-ð@Cñ ˜$•Jð@Cñ ! 4�Zð@Cñ ˜$•Jð@Cñ ™jÕ(¨4Õ/ñ@Cr   c           	     ó”  € \        V4      w  pp/ pVP                  4        FH  w  ppV'       d   V P                  V4      pV'       d   V P                  VVVW½,          VR 7      pVVV&   KJ  	  \	        VV4      p\        V4      w  pp/ p/ pVP                  4        FR  w  ppV P                  VWgW‰V
4      pV P                  VVVVR7      w  ppppVVV&   VVV..\        V4      ,          VV&   KT  	  \	        VV4      p\	        VV4      p\        P                  ! V^ R7      p\        P                  ! V4      pRVRV/p\        VVR7      # ))rv   rx   ry   r   r   )r2   r4   r3   rˆ   rH   rI   )ÚdataÚtensor_type)r   ÚitemsÚconvert_to_rgbr�   r   Úrescale_and_normalizer™   re   r‹   rŒ   Útensorr   ) rP   rv   rœ   r�   rx   ry   rž   rŸ   r    r¡   r¢   r2   r3   r4   r£   rK   Úgrouped_videosÚgrouped_videos_indexÚresized_videos_groupedr€   Ústacked_videosÚresized_videosÚprocessed_videos_groupedÚprocessed_gridsr—   r”   r•   r–   Úprocessed_videosrH   rI   r§   s    &&&&&&&&&&&&&&&,                r   Ú_preprocessÚGlm4vVideoProcessor._preprocessð   s�  € ô$ 0EÀVÓ/LÑ,ˆÐ,Ø!#Ðà%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%×!4Ñ!4°^Ó!D�ßØ!%§¡Ø)ØØ%Ø%Õ2Ø$7ð "-ó "�ð -;Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆô 0EÀ^Ó/TÑ,ˆÐ,Ø#%Ð ØˆØ%3×%9Ñ%9Ö%;Ñ!ˆE�>à!×7Ñ7Ø 
¸LÐV_óˆNð /3¯m©mØØ%Ø%Ø$7ð	 /<ó /Ñ+ˆG�V˜V Vð /6Ð$ UÑ+Ø'-¨v°vÐ&>Ð%?Ä#ÀnÓBUÕ%UˆO˜EÓ"ñ &<ô *Ð*BÐDXÓYÐÜ(¨Ð:NÓOˆÜ#ŸišiÐ(8¸aÔ@ÐÜŸš oÓ6ˆà!Ð#6Ø˜nð
ˆô
  °>ÔBÐBr   r:   é 1  i ÆÍ)Ngp?)#r;   r<   r=   r>   r   ÚBICUBICry   rx   r1   r   r¡   r   r¢   r�   rž   r    rœ   Údo_sample_framesr2   r3   r5   r4   r/   Úvalid_kwargsr   rU   Úmodel_input_namesrO   rs   r�   r™   rµ   rA   rB   Ú__classcell__)rQ   r8   s   @@r   rE   rE   `   sì   ù‡ € à!×)Ñ)€HØ˜Y¨Ð8KÐL€DØ$Ð&9Ð:€NØ!€JØ€IØ€IØ€JØ€LØ€NØÐØ€JØÐØ€LØ€JØ0€LØ€JØ
€Cà.Ð0@ÐAÐ÷#ó #÷0)ò 0)÷d
ó 
÷:&7ð &7ðV  $ØØ $ØN`×NhÑNhØØ )Ø!Ø15Ø04Ø!%Ø*.Ø!%Ø26÷@C÷ @Cò @Cr   rE   )r   é   r·   i  “ ) r?   r$   Únumpyr`   r‹   Úimage_processing_utilsr   Úimage_utilsr   r   r   r   Úprocessing_utilsr   r   Úutilsr	   r
   r   Úvideo_processing_utilsr   Úvideo_utilsr   r   r   Útorchvision.transforms.v2r   ÚtvFr-   r/   rE   Ú__all__r:   r   r   Ú<module>rÈ      sƒ   ðñ *ã ã Û å 2÷ó ÷ 5ß IÑ IÝ 8ß OÑ Oñ ×ÒÝ;÷!ôH L¸õ ð* ôOCÐ,ó OCó ðOCðd !Ð
!‚r   