
    +j                         d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
  G d de
j                  ZddZ G d de
j                  Z G d	 d
e
j                  Z G d de	          ZdefdZdS )    )overrideN)ComfyExtensionioc                   \    e Zd Zedej        fd            Zeddej        fd            ZdS )EmptyCosmosLatentVideoreturnc                    t          j        ddt           j                            dddt          j        d          t           j                            dddt          j        d          t           j                            d	d
dt          j        d          t           j                            dddd          gt           j                                        g          S )Nr   zmodel/latent/videowidth      defaultminmaxstepheight  lengthy         
batch_size   r   r   r   node_idcategoryinputsoutputs)r   SchemaIntInputnodesMAX_RESOLUTIONLatentOutputclss    9/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_cosmos.pydefine_schemaz$EmptyCosmosLatentVideo.define_schema   s    y,)Wd@T[]^^Xs@T[]^^Xsu?SZ[\\\1!FF	 Y%%''(

 

 

 
	
    r   c                     t          j        |d|dz
  dz  dz   |dz  |dz  gt          j                                                  }t          j        d|i          S )Nr   r   r   devicesamples)torchzeroscomfymodel_managementintermediate_devicer   
NodeOutput)r(   r
   r   r   r   latents         r)   executezEmptyCosmosLatentVideo.execute   sy    j"
q/@A.EvQR{TY]^T^_hmh~  iS  iS  iU  iU  V  V  V}i0111r+   Nr   	__name__
__module____qualname__classmethodr   r    r*   r5   r7    r+   r)   r   r      si        
bi 
 
 
 [
 2 2R] 2 2 2 [2 2 2r+   r   c                    t           j                            |dd df                             dd          ||dd                              dd          }t	          |j        d         |          }t	          ||dz
  dz  dz   |z   dz  d	z
            }t          j        |||df          d
z  }	|d |         |	d |<   |dz
  dz  dz   }
|                     |	          }|d d d d d |
f         S )N.   r   bilinearcenterr   r      g      ?)	r2   utilscommon_upscalemovedimr   shaper0   onesencode)vaeimager
   r   r   paddingpixels	pixel_lenpadded_lengthpadded_pixels
latent_lenlatent_temps               r)   vae_encode_with_paddingrT       s   [''c2A2g(>(>r1(E(EufV`bjkksstuwyzzFFLOV,,I9q=Q"6!!;g!E JQ NOOMJvua@AACGM &z	z 2M*9*q=Q&!+J**]++Kqqq!!![j[())r+   c                   \    e Zd Zedej        fd            Zeddej        fd            ZdS )CosmosImageToVideoLatentr   c                 z   t          j        ddt           j                            d          t           j                            dddt
          j        d          t           j                            dd	dt
          j        d          t           j                            d
ddt
          j        d          t           j                            dddd          t           j                            dd          t           j                            dd          gt           j        	                                g          S )NrV   model/conditioning/inpaintrK   r
   r   r   r   r   r   r   r   r   r   r   r   r   start_imageToptional	end_imager   
r   r    Vaer"   r!   r#   r$   Imager%   r&   r'   s    r)   r*   z&CosmosImageToVideoLatent.define_schema,   s    y.1U##Wd@T[]^^Xs@T[]^^Xsu?SZ[\\\1!FF}t<<{T:: Y%%''(
 
 
 	
r+   Nc                    t          j        dd|dz
  dz  dz   |dz  |dz  gt          j                                                  }||i }	||	d<   t          j        |	          S t          j        |j        d         d|dz
  dz  dz   |j        d         |j        d         gt          j                                                  }
|Rt          |||||d	          }||d d d d d |j        d
         f<   |
d d d d d |j        d
         fxx         dz  cc<   |Tt          |||||d	          }||d d d d |j        d
          d f<   |
d d d d |j        d
          d fxx         dz  cc<   i }	|
                    |fd|j        dz
  z  z             |	d<   |

                    |fd|
j        dz
  z  z             |	d<   t          j        |	          S )Nr   r   r   r-   r/   r   rA   rM           r8   
noise_mask)r0   r1   r2   r3   r4   r   r5   rI   rH   rT   repeatndim)r(   rK   r
   r   r   r   rY   r\   r6   
out_latentmaskrS   s               r)   r7   z CosmosImageToVideoLatent.execute=   sn   avza&71%<fk5TU:V_d_u  `J  `J  `L  `L  M  M  M9#4J$*Jy!=,,,z6<?A!0AQ/FUWHXZ`ZfgiZjkty  uK  u_  u_  ua  ua  b  b  b"1#{E6SYcdeeeK3>F111aaa/++B///0AAA-)"---...#5... 1#y%QWabcccK4?F111aaa++B//0001AAA)"--...///36///
 &zntv{UV?W.W X X
9#';;
~	TU@V/V#W#W
< }Z(((r+   NNr9   r>   r+   r)   rV   rV   +   sk        
bi 
 
 
 [
  ) )bdbo ) ) ) [) ) )r+   rV   c                   \    e Zd Zedej        fd            Zeddej        fd            ZdS ) CosmosPredict2ImageToVideoLatentr   c                 z   t          j        ddt           j                            d          t           j                            dddt
          j        d          t           j                            dd	dt
          j        d          t           j                            d
ddt
          j        d          t           j                            dddd          t           j                            dd          t           j                            dd          gt           j        	                                g          S )Nrl   rX   rK   r
   iP  r   r   r   i  r   ]   r      r   r   r   rY   TrZ   r\   r   r]   r'   s    r)   r*   z.CosmosPredict2ImageToVideoLatent.define_schemaW   s    y61U##Wcru?SZ\]]Xs@T[]^^Xrqe>RYZ[[\1!FF}t<<{T:: Y%%''(
 
 
 	
r+   Nc                 (   t          j        dd|dz
  dz  dz   |dz  |dz  gt          j                                                  }||i }	||	d<   t          j        |	          S t          j        |j        d         d|dz
  dz  dz   |j        d         |j        d	         gt          j                                                  }
|Rt          |||||d
          }||d d d d d |j        d         f<   |
d d d d d |j        d         fxx         dz  cc<   |Tt          |||||d
          }||d d d d |j        d          d f<   |
d d d d |j        d          d fxx         dz  cc<   i }	t          j
                                        }|                    |          |
z  |d|
z
  z  z   }|                    |fd|j        dz
  z  z             |	d<   |
                    |fd|
j        dz
  z  z             |	d<   t          j        |	          S )Nr   r   ro   r   r-   r/   r   ra   rA   rb   rc   rd   g      ?r8   re   )r0   r1   r2   r3   r4   r   r5   rI   rH   rT   latent_formatsWan21process_outrf   rg   )r(   rK   r
   r   r   r   rY   r\   r6   rh   ri   rS   latent_formats                r)   r7   z(CosmosPredict2ImageToVideoLatent.executeh   s   avza&71%<fk5TU:V_d_u  `J  `J  `L  `L  M  M  M9#4J$*Jy!=,,,z6<?A!0AQ/FUWHXZ`ZfgiZjkty  uK  u_  u_  ua  ua  b  b  b"1#{E6SYcdeeeK3>F111aaa/++B///0AAA-)"---...#5... 1#y%QWabcccK4?F111aaa++B//0001AAA)"--...///36///
,2244**622T9FcDj<QQ &zntv{UV?W.W X X
9#';;
~	TU@V/V#W#W
< }Z(((r+   rj   r9   r>   r+   r)   rl   rl   V   sk        
bi 
 
 
 [
  ) )bdbo ) ) ) [) ) )r+   rl   c                   L    e Zd Zedeeej                          fd            ZdS )CosmosExtensionr   c                 .   K   t           t          t          gS N)r   rV   rl   )selfs    r)   get_node_listzCosmosExtension.get_node_list   s       #$,
 	
r+   N)	r:   r;   r<   r   listtyper   	ComfyNoderz   r>   r+   r)   rv   rv      sE        
T$r|*<%= 
 
 
 X
 
 
r+   rv   r   c                  "   K   t                      S rx   )rv   r>   r+   r)   comfy_entrypointr      s      r+   )r   )typing_extensionsr   r#   r0   comfy.model_managementr2   comfy.utilscomfy.latent_formatscomfy_api.latestr   r   r}   r   rT   rV   rl   rv   r   r>   r+   r)   <module>r      sN   & & & & & &               / / / / / / / /2 2 2 2 2R\ 2 2 2** * * *)) )) )) )) ))r| )) )) ))V+) +) +) +) +)r| +) +) +)\
 
 
 
 
n 
 
 
      r+   