
    3jp                         S SK r S SKrS SKrS SKrS SKrS SKrS SKr " S S5      r	 " S S5      r
 " S S5      r " S S	5      r " S
 S\R                  R                  5      r " S S5      r\	\
\\\\S.rSSSSS.rg)    Nc                   :    \ rS rSr\S 5       rSrSrSrS	S jr	Sr
g)
ImageOnlyCheckpointLoader
   c                 8    SS[         R                  " S5      400$ )Nrequired	ckpt_namecheckpoints)folder_pathsget_filename_listss    >/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_video_model.pyINPUT_TYPES%ImageOnlyCheckpointLoader.INPUT_TYPES   s&    kL,J,J=,Y+\    	     )MODELCLIP_VISIONVAEload_checkpointzmodel/loadersc           	          [         R                  " SU5      n[        R                  R	                  USSS[         R
                  " S5      S9nUS   US   US   4$ )	Nr	   TF
embeddings)
output_vaeoutput_clipoutput_clipvisionembedding_directoryr         )r
   get_full_path_or_raisecomfysdload_checkpoint_guess_configget_folder_paths)selfr   r   r   	ckpt_pathouts         r   r   )ImageOnlyCheckpointLoader.load_checkpoint   sr     77yQ	hh33I$\auy  P\  Pm  Pm  nz  P{3  |AAA''r    N)TT)__name__
__module____qualname____firstlineno__classmethodr   RETURN_TYPESFUNCTIONCATEGORYr   __static_attributes__r'   r   r   r   r   
   s*        3L HH(r   r   c                   :    \ rS rSr\S 5       rSrSrSrSr	S r
Srg	)
SVD_img2vid_Conditioning   c                     SSSSSSS[         R                  SS	.4SS
S[         R                  SS	.4SSSSS.4SSSSSS.4SSSSS.4SSSSSSS.4S.	0$ )Nr   r   )IMAGEr   INTi         defaultminmaxstepi@        i   )r<   r=   r>      i  T)r<   r=   r>   advanced   FLOAT              $@{Gz?)r<   r=   r>   r?   rC   )	clip_vision
init_imagevaewidthheightvideo_framesmotion_bucket_idfpsaugmentation_level)nodesMAX_RESOLUTIONr   s    r   r   $SVD_img2vid_Conditioning.INPUT_TYPES   s    -=,6%-(-4SXSgSgqr/s't).CSXSgSgqr0s(t/4"QW[6\.]38cRS\`nr:s2t&+1T-R%S5<#VYbfpt  CG  ?H  5I	 	  		 r   )CONDITIONINGrU   LATENT)positivenegativelatentencodezmodel/conditioning/stable videoc
                 &   UR                  U5      n
U
R                  R                  S5      n[        R                  R                  UR                  SS5      XESS5      R                  SS5      nUS S 2S S 2S S 2S S24   nU	S:  a  U[        R                  " U5      U	-  -  nUR                  U5      nXXUS.//n[        R                  " U5      XxU	[        R                  " U5      S.//n[        R                  " USUS	-  US	-  /5      nUUS
U04$ )Nr   rA   bilinearcenterr   )rO   rP   rQ   concat_latent_image   r:   samples)encode_imageimage_embeds	unsqueezer   utilscommon_upscalemovedimtorch
randn_likerZ   
zeros_likezeros)r#   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   outputpooledpixelsencode_pixelstrW   rX   rY   s                     r   rZ   SVD_img2vid_Conditioning.encode.   sG   ))*5$$..q1++J,>,>r!,DeU_aijrrstuwxq1RaRx(!U--f58JJJMJJ}%3  RS  T  U  V%%f-DT  yK  di  dt  dt  uv  dw  0x  y  zlAv{EQJGH(Yv$677r   r'   N)r(   r)   r*   r+   r,   r   r-   RETURN_NAMESr.   r/   rZ   r0   r'   r   r   r2   r2      s/    
  
  >L5LH0H8r   r2   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	VideoLinearCFGGuidance;   c           
      "    SSSSSSSSS	S
.4S.0$ Nr   r   rE         ?rF   g      Y@      ?rH   T)r<   r=   r>   r?   roundrC   )modelmin_cfgr'   r   s    r   r   "VideoLinearCFGGuidance.INPUT_TYPES<   9    z*1s3W\ehsw  FJ  4K  *L  ! 	!r   rx   patchmodel/sampling/guidersc                 X   ^ U4S jnUR                  5       nUR                  U5        U4$ )Nc                    > U S   nU S   nU S   n[         R                  " TX1R                  S   UR                  S9R	                  UR                  S   SSS45      nX$X-
  -  -   $ )Nconduncond
cond_scaler   devicerA   )rh   linspaceshaper   reshape)argsr   r   r   scaler}   s        r   
linear_cfg0VideoLinearCFGGuidance.patch.<locals>.linear_cfgG   sq    <D(^Fl+JNN7J

1dkkZbbdhdndnopdqstvwyzc{|ET]333r   cloneset_model_sampler_cfg_functionr#   r|   r}   r   ms     `  r   r   VideoLinearCFGGuidance.patchF   s*    	4 KKM	((4ur   r'   Nr(   r)   r*   r+   r,   r   r-   r.   r/   r   r0   r'   r   r   rt   rt   ;   s*    ! ! LH'Hr   rt   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	VideoTriangleCFGGuidanceS   c           
      "    SSSSSSSSS	S
.4S.0$ rw   r'   r   s    r   r   $VideoTriangleCFGGuidance.INPUT_TYPEST   r   r   rx   r   r   c                 X   ^ U4S jnUR                  5       nUR                  U5        U4$ )Nc                 J  > U S   nU S   nU S   nSn[         R                  " SSUR                  S   UR                  S9nSXT-  [         R                  " XT-  S	-   5      -
  R                  5       -  nXST-
  -  T-   R                  UR                  S   SSS45      nX&X-
  -  -   $ )
Nr   r   r   ry   r   rA   r   r   rz   )rh   r   r   r   floorabsr   )r   r   r   r   periodvaluesr   r}   s          r   r   2VideoTriangleCFGGuidance.patch.<locals>.linear_cfg_   s    <D(^Fl+JF^^Aq$**Q-LF&/EKK#8M,NNSSUUFG34w>GGTUXY[\^_H`aET]333r   r   r   s     `  r   r   VideoTriangleCFGGuidance.patch^   s*    		4 KKM	((4ur   r'   Nr   r'   r   r   r   r   S   s*    ! ! LH'Hr   r   c                   2    \ rS rSrSr\S 5       rSS jrSrg)ImageOnlyCheckpointSaven   zmodel/mergingc                 $    SSSSSS04S.SS	S
.S.$ )Nrx   r5   r7   STRINGr<   zcheckpoints/ComfyUI)r|   rI   rK   filename_prefixPROMPTEXTRA_PNGINFO)promptextra_pnginfo)r   hiddenr'   r   s    r   r   #ImageOnlyCheckpointSave.INPUT_TYPESq   s5    '1-=%-2:YH]<^1_b &.P	S 	Sr   Nc           
      Z    [         R                  R                  XX4U R                  XVS9  0 $ )N)rI   rK   r   
output_dirr   r   )comfy_extrasnodes_model_mergingsave_checkpointr   )r#   r|   rI   rK   r   r   r   s          r   saveImageOnlyCheckpointSave.savey   s@    ((88]`  OS  O^  O^  gm8  	K	r   r'   )NN)	r(   r)   r*   r+   r/   r,   r   r   r0   r'   r   r   r   r   n   s     HS Sr   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	"ConditioningSetAreaPercentageVideo~   c                 ~    SSSSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSS	SS.4S
.0$ )Nr   rU   rE   ry   r   rH   r;   rF   rG   )conditioningrL   rM   temporalxyzstrengthr'   r   s    r   r   .ConditioningSetAreaPercentageVideo.INPUT_TYPES   s    -?'.CRU_c0d&e(/SSV`d1e'f*1s1UXbf3g)h#*!CY],^"_#*!CY],^"_#*!CY],^"_*1s3W[ei3j)k   	 r   r   appendzmodel/conditioning/transformc	           
      F    [         R                  " USXCX'Xe4USS.5      n	U	4$ )N
percentageF)arear   set_area_to_bounds)node_helpersconditioning_set_values)
r#   r   rL   rM   r   r   r   r   r   cs
             r   r   )ConditioningSetAreaPercentageVideo.append   s9    00W_instHxLTV[@] ^ ur   r'   N)r(   r)   r*   r+   r,   r   r-   r.   r/   r   r0   r'   r   r   r   r   ~   s*    	  	  %LH-Hr   r   )r   r2   rt   r   r   r   z*Load Checkpoint Image Only (img2vid model)zVideo Linear CFG GuidancezVideo Triangle CFG Guidancez1Conditioning (Set Area with Percentage for Video))r   rt   r   r   )rR   rh   comfy.utilsr   comfy.sdr
    comfy_extras.nodes_model_mergingr   r   r   r2   rt   r   r   CheckpointSaver   r   NODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSr'   r   r   <module>r      s         ' ( ( 8 8B 0 6l>>MM   2 "; 84 86*L  "N9 =*]	 r   