
    +j                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZ G d d          Z	 G d d          Z
 G d d          Z G d d	          Z G d
 dej        j                  Z G d d          Ze	e
eeeedZddddZdS )    Nc                   8    e Zd Zed             ZdZdZdZddZdS )	ImageOnlyCheckpointLoaderc                 4    ddt          j        d          fiiS )Nrequired	ckpt_namecheckpoints)folder_pathsget_filename_listss    >/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_video_model.pyINPUT_TYPESz%ImageOnlyCheckpointLoader.INPUT_TYPES   s&    kL,J=,Y,Y+\    	     )MODELCLIP_VISIONVAEload_checkpointzmodel/loadersTc           	          t          j        d|          }t          j                            |dddt          j        d                    }|d         |d         |d         fS )	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   z)ImageOnlyCheckpointLoader.load_checkpoint   sv     7yQQ	h33I$\auy  P\  Pm  nz  P{  P{3  |  |AAA''r   N)TT)	__name__
__module____qualname__classmethodr   RETURN_TYPESFUNCTIONCATEGORYr    r   r   r   r   
   sR            [  3L HH( ( ( ( ( (r   r   c                   :    e Zd Zed             ZdZdZdZdZd Z	dS )SVD_img2vid_Conditioningc                     dddddddt           j        dd	fdd
dt           j        dd	fdddddfddddddfdddddfdddddddfd	iS )Nr   r   )IMAGEr   INTi         defaultminmaxstepi@        i   )r6   r7   r8      i  T)r6   r7   r8   advanced   FLOAT              $@{Gz?)r6   r7   r8   r9   r=   )	clip_vision
init_imagevaewidthheightvideo_framesmotion_bucket_idfpsaugmentation_level)nodesMAX_RESOLUTIONr   s    r   r   z$SVD_img2vid_Conditioning.INPUT_TYPES   s    -=,6%-(-4SXSgqr/s/s't).CSXSgqr0s0s(t/4"QW[6\6\.]38cRS\`nr:s:s2t&+1T-R-R%S5<#VYbfpt  CG  ?H  ?H  5I	 	 	  		 r   )CONDITIONINGrN   LATENT)positivenegativelatentencodezmodel/conditioning/video_modelsc
                 B   |                     |          }
|
j                            d          }t          j                            |                    dd          ||dd                              dd          }|d d d d d d d df         }|	dk    r|t          j        |          |	z  z  }|	                    |          }||||	|dgg}t          j
        |          |||	t          j
        |          dgg}t          j        |d|d	z  |d	z  g          }||d
|ifS )Nr   r;   bilinearcenterr   )rI   rJ   rK   concat_latent_image   r4   samples)encode_imageimage_embeds	unsqueezer   utilscommon_upscalemovedimtorch
randn_likerS   
zeros_likezeros)r!   rC   rD   rE   rF   rG   rH   rI   rJ   rK   outputpooledpixelsencode_pixelstrP   rQ   rR   s                     r   rS   zSVD_img2vid_Conditioning.encode.   s{   ))*55$..q11++J,>,>r!,D,DeVU_aijjrrstuwxxqqq111RaRx(!!U-f558JJJMJJ}%%2B3fx  RS  T  T  U  V%f--DT]`  yK  di  dt  uv  dw  dw  0x  0x  y  zlAv{EQJGHH(Yv$677r   N)
r$   r%   r&   r'   r   r(   RETURN_NAMESr)   r*   rS   r+   r   r   r-   r-      sR        
  
  [
  >L5LH0H8 8 8 8 8r   r-   c                   6    e Zd Zed             ZdZdZdZd ZdS )VideoLinearCFGGuidancec           
      "    ddddddddd	d
fdiS Nr   r   r?         ?r@   g      Y@      ?rB   T)r6   r7   r8   r9   roundr=   )modelmin_cfgr+   r   s    r   r   z"VideoLinearCFGGuidance.INPUT_TYPES<   D    z*1s3W\ehsw  FJ  4K  4K  *L    ! 	!r   ro   patchmodel/sampling/guidersc                 f    fd}|                                 }|                    |           |fS )Nc                     | d         }| d         }| d         }t          j        ||j        d         |j                                      |j        d         dddf          }||||z
  z  z   S )Nconduncond
cond_scaler   devicer;   )ra   linspaceshaper~   reshape)argsrz   r{   r|   scalert   s        r   
linear_cfgz0VideoLinearCFGGuidance.patch.<locals>.linear_cfgG   sw    <D(^Fl+JN7J
1dkZZZbbdhdnopdqstvwyzc{||EETF]333r   cloneset_model_sampler_cfg_functionr!   rs   rt   r   ms     `  r   rv   zVideoLinearCFGGuidance.patchF   sF    	4 	4 	4 	4 	4 KKMM	((444ur   N	r$   r%   r&   r'   r   r(   r)   r*   rv   r+   r   r   rl   rl   ;   sM        ! ! [! LH'H    r   rl   c                   6    e Zd Zed             ZdZdZdZd ZdS )VideoTriangleCFGGuidancec           
      "    ddddddddd	d
fdiS rn   r+   r   s    r   r   z$VideoTriangleCFGGuidance.INPUT_TYPEST   ru   r   ro   rv   rw   c                 f    fd}|                                 }|                    |           |fS )Nc                 b   | d         }| d         }| d         }d}t          j        dd|j        d         |j                  }d||z  t          j        ||z  d	z             z
                                  z  }||z
  z  z                       |j        d         dddf          }||||z
  z  z   S )
Nrz   r{   r|   rp   r   r;   r}   r   rq   )ra   r   r   r~   floorabsr   )r   rz   r{   r|   periodvaluesr   rt   s          r   r   z2VideoTriangleCFGGuidance.patch.<locals>.linear_cfg_   s    <D(^Fl+JF^Aq$*Q-LLLF&6/EK#8M,N,NNSSUUUFzG34w>GGTUXY[\^_H`aaEETF]333r   r   r   s     `  r   rv   zVideoTriangleCFGGuidance.patch^   sF    		4 		4 		4 		4 		4 KKMM	((444ur   Nr   r+   r   r   r   r   S   sM        ! ! [! LH'H    r   r   c                   0    e Zd ZdZed             ZddZdS )ImageOnlyCheckpointSavezadvanced/model_mergingc                 $    ddddddifddd	d
dS )Nro   r/   r1   STRINGr6   zcheckpoints/ComfyUI)rs   rC   rE   filename_prefixPROMPTEXTRA_PNGINFO)promptextra_pnginfo)r   hiddenr+   r   s    r   r   z#ImageOnlyCheckpointSave.INPUT_TYPESq   sD    '1-=%-2:YH]<^1_b b &.PP	S S 	Sr   Nc           	      \    t           j                            ||||| j        ||           i S )N)rC   rE   r   
output_dirr   r   )comfy_extrasnodes_model_mergingsave_checkpointr   )r!   rs   rC   rE   r   r   r   s          r   savezImageOnlyCheckpointSave.savey   sR    (88K]`  sB  OS  O^  gm  }J8  	K  	K  	K	r   )NN)r$   r%   r&   r*   r'   r   r   r+   r   r   r   r   n   sI        'HS S [S     r   r   c                   6    e Zd Zed             ZdZdZdZd ZdS )"ConditioningSetAreaPercentageVideoc                 ~    ddddddddfddddddfddddddfddddddfddddddfddddddfdddd	ddfd
iS )Nr   rN   r?   rp   r   rB   r5   r@   rA   )conditioningrF   rG   temporalxyzstrengthr+   r   s    r   r   z.ConditioningSetAreaPercentageVideo.INPUT_TYPES   s    -?'.CRU_c0d0d&e(/SSV`d1e1e'f*1s1UXbf3g3g)h#*!CY],^,^"_#*!CY],^,^"_#*!CY],^,^"_*1s3W[ei3j3j)k    	 r   r   appendzmodel/conditioningc	           
      H    t          j        |d||||||f|dd          }	|	fS )N
percentageF)arear   set_area_to_bounds)node_helpersconditioning_set_values)
r!   r   rF   rG   r   r   r   r   r   cs
             r   r   z)ConditioningSetAreaPercentageVideo.append   sL    0W_aginpqstvwHxLTV[@] @] ^ ^ ur   N)	r$   r%   r&   r'   r   r(   r)   r*   r   r+   r   r   r   r   ~   sM        	  	  [	  %LH#H    r   r   )r   r-   rl   r   r   r   z*Load Checkpoint Image Only (img2vid model)zVideo Linear CFG GuidancezVideo Triangle CFG Guidance)r   rl   r   )rL   ra   comfy.utilsr   comfy.sdr	    comfy_extras.nodes_model_mergingr   r   r   r-   rl   r   r   CheckpointSaver   r   NODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSr+   r   r   <module>r      s              ' ' ' '    ( ( ( ( ( ( ( ( 8 8 8 8 8 8 8 8B       0       6    l>M           2 "; 84 86*L   "N9 =    r   