+
    œ°³j})  ã                   ó�  € ^ RI t ^ RIt^RIHt ^RIHtHt ^RIHtH	t	H
t
HtHtHtHt ^RIHt ^RIHt ]! 4       '       d   ^RIHt ]
! 4       '       d   ^ RIt]! 4       '       d   ^ RIHt M]! 4       '       d   ^ RIHt ]P2                  ! ]4      t ! R	 R
]RR7      tRtR R ltR R ltR R lt ]	 ! R R]4      4       t!R.t"R# )é    N)ÚBatchFeature)ÚUnpackÚVideosKwargs)Ú
TensorTypeÚauto_docstringÚis_torch_availableÚis_torchvision_availableÚis_torchvision_v2_availableÚis_vision_availableÚlogging)ÚBaseVideoProcessor)Ú
VideoInput)ÚPILImageResampling)Ú
functionalc                   ó0   a € ] tR t^0t o RtV 3R ltRtV tR# )ÚGemma4VideoProcessorKwargsa?  
patch_size (`int`, *optional*):
    Size of each image patch in pixels.
max_soft_tokens (`int`, *optional*):
    Maximum number of soft (vision) tokens per video frame.
    Must be one of {70, 140, 280, 560, 1120}.
pooling_kernel_size (`int`, *optional*):
    Spatial pooling kernel size applied after patchification.
c                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )é   Ú
patch_sizeÚmax_soft_tokensÚpooling_kernel_size©Úint)ÚformatÚ__classdict__s   "€Ús/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/gemma4/video_processing_gemma4.pyÚ__annotate__Ú'Gemma4VideoProcessorKwargs.__annotate__0   s+   ø‡ ‚ ñ �Oñ ñ Ññ ñ Ñò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   0   s   ø‡ € ñ÷ ƒ r   r   F)Útotalc                ó‚   € V ^8„  d   QhR\         R\         R\         R\         R\         R\        \         \         3,          /# )r   ÚheightÚwidthr   Úmax_patchesr   Úreturn©r   Útuple)r   s   "r   r   r   D   sL   € ÷ 3'ñ 3'Üð3'äð3'ô ð3'ô ð	3'ô
 ð3'ô Œ3”ˆ8…_ñ3'r   c                ó  € W,          pW2^,          ,          p\         P                  ! We,          4      pWp,          pWq,          p	WB,          p
\        \         P                  ! WŠ,          4      4      V
,          p\        \         P                  ! Wš,          4      4      V
,          pV^ 8X  d   V^ 8X  d   \	        RWB,           R24      hW4^,          ,          V
,          pV^ 8X  d:   T
p\        \        \         P                  ! W,          4      4      V
,          V4      pM?V^ 8X  d9   T
p\        \        \         P                  ! W,          4      4      V
,          V4      pW¼,          V8”  d   \	        RV  RV RV RV RV RV 24      hW¼3# )a  
Image is resized to preserve aspect ratio so it fits within the patch budget.
Target dimensions are the largest that:
1) Produce at most `max_patches` patches when patchified with `patch_size`
2) Have height and width divisible by `pooling_kernel_size * patch_size`
zpAttempting to resize to a 0 x 0 image. Resized height should be divisible by `pooling_kernel_size * patch_size`=Ú.z
Resizing [Úxz] to [z] but this exceeds z patches with patch_size )ÚmathÚsqrtr   ÚfloorÚ
ValueErrorÚmin)r+   r,   r   r-   r   Útotal_pxÚ	target_pxÚfactorÚideal_heightÚideal_widthÚ	side_multÚtarget_heightÚtarget_widthÚmax_side_lengths   &&&&&         r   Ú get_aspect_ratio_preserving_sizerB   D   s{  € ð �~€HØ¨1�}Õ-€IÜ�YŠY�yÕ+Ó,€FØ•?€LØ•.€KØ#Õ0€Iô œŸ
š
 <Õ#;Ó<Ó=À	ÕI€MÜ”t—z’z +Õ"9Ó:Ó;¸iÕG€Lð ˜Ô˜l¨aÔ/Üð2Ø2EÕ2RÐ1SÐSTðVó
ð 	
ð
 #¸1Õ&<Õ<À	ÕI€OØ˜ÔØ!ˆÜÜ”—
’
˜5�>Ó*Ó+¨iÕ7Øó
‰ð 
˜Ô	Ø ˆÜÜ”—
’
˜6�>Ó*Ó+¨iÕ7Øó
ˆð
 Õ# iÔ/ÜØ˜˜  % ¨¨}¨o¸Q¸|¸nð M Ø +˜}Ð,EÀjÀ\ðSó
ð 	
ð
 Ð&Ð&r   c                ó,   € V ^8„  d   QhRRR\         RR/# )r   Úvideoútorch.Tensorr   r.   r   )r   s   "r   r   r   z   s!   € ÷ ñ  Nð Äð Èñ r   c                óÈ   € V P                   w  r#rEWA,          pWQ,          pV P                  W#WaWq4      pVP                  ^ ^^^^^4      pVP                  W&V,          R4      pV# )zÍ
Convert 4D tensor video of shape (num_frames, num_channels, height, width) into 3D tensor of patches of shape
(num_frames, num_patches_height * num_patches_width, patch_size * patch_size * num_channels).
éÿÿÿÿ)ÚshapeÚreshapeÚpermute)	rD   r   Ú
num_framesÚnum_channelsr+   r,   Únum_patches_heightÚnum_patches_widthÚpatched_videos	   &&       r   Úconvert_video_to_patchesrP   z   sv   € ð
 /4¯k©kÑ+€J˜fØÕ-ÐØÕ+ÐØ—M‘MØÐ"4ÐBSó€Mð "×)Ñ)¨!¨Q°°1°a¸Ó;€MØ!×)Ñ)¨*ÐK\Õ6\Ð^`Óa€MØÐr   c          	      óF   € V ^8„  d   QhRRRRR\         R\        R,          /# )r   rD   rE   Ú	positionsÚtarget_lengthr.   )rE   rE   r/   )r   s   "r   r   r   Š   s2   € ÷ ñ ØðØ&4ðÜEHðä
Ð)Õ*ñr   c                ó  € V P                   ^,          pW#,
          pV^ 8”  di   ^ ^ ^ V^ ^ .p^ ^ ^ V^ ^ 3p\        P                  P                  P	                  WR^ R7      p \        P                  P                  P	                  WRRR7      pW3# )z.
Pad the video along to max number of patches
Úconstant)ÚmodeÚvaluerG   )rH   ÚtorchÚnnr   Úpad)rD   rR   rS   Úcurrent_lengthÚpadding_lengthÚpaddingÚpos_paddings   &&&    r   Úpad_to_max_patchesr_   Š   s‘   € ð —[‘[ •^€NØ"Õ3€NØ˜ÔØ�a˜˜N¨A¨qÐ1ˆØ˜!˜Q °°1Ð5ˆÜ—‘×#Ñ#×'Ñ'¨¸ZÈqÐ'ÓQˆÜ—H‘H×'Ñ'×+Ñ+¨IÈÐ[]Ð+Ó^ˆ	ØÐÐr   c                   óê   a a€ ] tR t^št o]P
                  t. ROt. ROtRt	Rt
RtRtRtRt^ tRt^t^Ft^t]tRR.tV3R lV 3R lltV 3R ltV3R lR	 ltV3R
 lV 3R lltRV3R lR lltRtVtV ;t# )ÚGemma4VideoProcessorNTÚpixel_values_videosÚvideo_position_idsc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r   Ú!Gemma4VideoProcessor.__annotate__­   s   ø€ ÷ xñ x¡Ñ(BÕ!Cñ xr   c                ó’   <€ \         SV `  ! R/ VB  V P                  \        9  d!   \	        R \         RV P                   R24      hR# )ú!`max_soft_tokens` must be one of ú, got r2   Nr    )ÚsuperÚ__init__r   Ú_SUPPORTED_SOFT_TOKENSr7   ©Úselfre   Ú	__class__s   &,€r   rk   ÚGemma4VideoProcessor.__init__­   sN   ø€ Ü‰ÒÑ"˜6Ò"à×ÑÔ'=Ô=ÜÐ@ÔAWÐ@XÐX^Ð_c×_sÑ_sÐ^tÐtuÐvÓwÐwñ >r   c                ó2   <€ R VR&   \         SV `  ! R/ VB  R# )FÚ	do_resizeNr    )rj   Ú_validate_preprocess_kwargsrm   s   &,€r   rs   Ú0Gemma4VideoProcessor._validate_preprocess_kwargs³   s   ø€ ð
 $ˆˆ{ÑÜ‰Ò+Ñ5¨fÔ5r   c                óz   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[RS[P                  RS[ P                  /# )r   rD   r   r-   r   Úresampler.   )rX   ÚTensorr   ÚtvFÚInterpolationMode)r   r   s   "€r   r   rf   »   sU   ø€ ÷ 
ñ 
á�|‰|ð
ñ ð
ñ ð	
ñ
 !ð
ñ ×'Ñ'ð
ñ 
�‰ñ
r   c                óÂ   € VP                   R,          VP                   R,          rv\        VVVVVR7      w  r‰W†8X  d	   W—8X  d   V# \        P                  ! VW‰.VRR7      # )r   )r+   r,   r   r-   r   T)ÚsizeÚinterpolationÚ	antialiaséþÿÿÿrG   )rH   rB   rx   Úresize)
rn   rD   r   r-   r   rv   r+   r,   r?   r@   s
   &&&&&&    r   Úaspect_ratio_preserving_resizeÚ3Gemma4VideoProcessor.aspect_ratio_preserving_resize»   si   € ð Ÿ™ B�¨¯©°R­�Ü&FØØØ!Ø#Ø 3ô'
Ñ#ˆð Ô" |Ô'<ØˆLä�zŠzØØÐ.Ø"Øô	
ð 	
r   c                ó<   <€ V ^8„  d   QhRS[ RS[S[,          RS[/# )r   Úvideosre   r.   )r   r   r   r   )r   r   s   "€r   r   rf   Ö   s/   ø€ ÷ 4ñ 4áð4ñ Ñ3Õ4ð4ñ 
ñ	4r   c                ó&   <€ \         SV `  ! V3/ VB # )N)rj   Ú
preprocess)rn   rƒ   re   ro   s   &&,€r   r…   ÚGemma4VideoProcessor.preprocessÖ   s   ø€ ô
 ‰wÒ! &Ñ3¨FÑ3Ð3r   c                ó  <€ V ^8„  d   QhRS[ R,          RS[RS[RRRS[RS[R	S[R
S[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[S[,          R,          RS[R,          RS[R,          RS[R,          RS[/# )r   rƒ   rE   Údo_convert_rgbrr   rv   z"tvF.InterpolationMode | int | NoneÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdÚreturn_tensorsr   r   r   r.   )ÚlistÚboolÚfloatÚstrr   r   r   )r   r   s   "€r   r   rf   Ý   sî   ø€ ÷ FCñ FCá�^Õ$ðFCñ ðFCñ ð	FCð
 7ðFCñ ðFCñ ðFCñ ðFCñ ™D¡�KÕ'¨$Õ.ðFCñ ™4¡�;Õ&¨Õ-ðFCñ ™jÕ(¨4Õ/ðFCñ ˜$•JðFCñ ˜t�ðFCñ ! 4�ZðFCñ  
ñ!FCr   c           	     ó^  € V\         9  d   \        R \          RV R24      hWÍ^,          ,          p. p. p. p^pV EFª  pV'       d   V P                  V4      pV'       d   V P                  VVVVVR7      pV P	                  VWVWxV	4      pVP
                  ^ ,          pVP
                  R,          V,          pVP
                  R,          V,          p\        VV4      pVP                  VP
                  ^,          V^,          ,          4       VP                  p\        P                  ! \        P                  ! VVR7      \        P                  ! VVR7      RR7      p\        P                  ! VRR7      pVP                  VP
                  ^,          ^4      pVR,          P                  V^^4      p\        VVV4      w  ppVP                  V4       VP                  V4       EK­  	  \        P                  ! V^ R7      p\        P                  ! V^ R7      pRVR	VR
V/p\!        VV
R7      # )rh   ri   r2   )rD   r   r-   r   rv   )ÚdeviceÚxy)Úindexing)Údimrb   rc   Únum_soft_tokens_per_video)ÚdataÚtensor_typer~   rG   )N.)rl   r7   Úconvert_to_rgbr€   Úrescale_and_normalizerH   rP   Úappendr”   rX   ÚmeshgridÚarangeÚstackrI   Úrepeatr_   r   )rn   rƒ   rˆ   rr   rv   r‰   rŠ   r‹   rŒ   r�   rŽ   r   r   r   re   r-   Úpixel_valuesÚposition_idsr˜   rK   rD   Úpatch_heightÚpatch_widthÚpatchesr”   Ú
patch_gridÚstacked_gridÚreal_positionsrR   r™   s   &&&&&&&&&&&&&&,               r   Ú_preprocessÚ Gemma4VideoProcessor._preprocessÝ   s  € ð" Ô"8Ô8ÜÐ@ÔAWÐ@XÐX^Ð_nÐ^oÐopÐqÓrÐrà%¸QÕ(>Õ>ˆàˆØˆØ$&Ð!Øˆ
äˆEßØ×+Ñ+¨EÓ2�ßØ×;Ñ;ØØ)Ø +Ø(;Ø%ð <ó �ð ×.Ñ.¨u°jÐR^ÐluÓvˆEàŸ™ Q�ˆJØ Ÿ;™; r�?¨jÕ8ˆLØŸ+™+ b�/¨ZÕ7ˆKÜ.¨u°jÓAˆGØ%×,Ñ,¨W¯]©]¸1Õ-=ÐATÐVWÕAWÕ-WÔXà—\‘\ˆFÜŸšÜ—’˜[°Ô8Ü—’˜\°&Ô9ØôˆJô
 !Ÿ;š; z°rÔ:ˆLØ)×1Ñ1°'·-±-ÀÕ2BÀAÓFˆNØ+¨IÕ6×=Ñ=¸jÈ!ÈQÓOˆNä!3°G¸^È[Ó!YÑˆG�YØ×Ñ Ô(Ø×Ñ 	×*ñA ôF —{’{ <°QÔ7ˆÜ—{’{ <°QÔ7ˆð " <Ø  ,Ø'Ð)Bð
ˆô
  °>ÔBÐBr   r    )ç        r¬   r¬   )ç      ð?r­   r­   )NNN)r!   r"   r#   r$   r   ÚBICUBICrv   rŒ   r�   r{   Údefault_to_squarerˆ   rr   r‰   r‹   rK   Údo_sample_framesr   r   r   r   Úvalid_kwargsÚmodel_input_namesrk   rs   r€   r…   rª   r'   r(   Ú__classcell__)ro   r   s   @@r   ra   ra   š   sŸ   ù‡ € à!×)Ñ)€HÚ €JÚ€IØ€DØÐØ€NØ€IØ€JØ€LØ€JØÐØ€JØ€OØÐØ-€LØ.Ð0DÐEÐ÷xó xõ6÷
ð 
÷64ó 4÷FC÷ FCò FCr   ra   )éF   éŒ   i  i0  i`  )#r4   rX   Úimage_processing_utilsr   Úprocessing_utilsr   r   Úutilsr   r   r   r	   r
   r   r   Úvideo_processing_utilsr   Úvideo_utilsr   Úimage_utilsr   Útorchvision.transforms.v2r   rx   Útorchvision.transformsÚ
get_loggerr!   Úloggerr   rl   rB   rP   r_   ra   Ú__all__r    r   r   Ú<module>rÁ      sÁ   ðó ã å 2ß 4÷÷ ñ õ 9Ý %ñ ×ÒÝ1á×ÒÛá× Ò Þ;Ù×ÒÝ8ð 
×	Ò	˜HÓ	%€ô °Uõ ð  3Ð õ3'õlõ ð  ôHCÐ-ó HCó ðHCðV "Ð
"‚r   