
    
3j|                         S SK Jr  S SKrS SKrS SKrS SKJr  S SKJs  J	r
  S SKrS SKrS SKr\R                  R                  rSSKJr  SSSSSSS	.r " S
 S\R(                  5      r\" \S5      S 5       rg)    )ImageN)Thread   )hook         )MochiLTXVHunyuanVideoCosmos1CV8x8x8Wan21Wan22c                   0    \ rS rSrSS jrS rS rS rSrg)	WrappedPreviewer   c                     SU l         SU l        SU l        X l        [	        US5      (       a  UR
                  U l        g [	        US5      (       a5  UR                  U l        UR                  U l        [        USS 5      U l	        g [        S5      e)NTr   taesdlatent_rgb_factorslatent_rgb_factors_reshapez2Unsupported preview type for VHS animated previews)first_preview	last_timec_indexratehasattrr   r   latent_rgb_factors_biasgetattrr   	Exception)self	previewerr   s      e/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/videohelpersuite/latent_preview.py__init__WrappedPreviewer.__init__   s~    !	9g&&"DJY 455&/&B&BD#+4+L+LD(.5iA]_c.dD+PQQ    c                 d   UR                   S:X  a3  UR                  SS5      nUR                  SUR                  SS  -   5      nUR	                  S5      n[
        R
                  " 5       n[        X@R                  -
  U R                  -  5      nU R                  XPR                  -  -   U l        XS:  a  UnOUS::  a  g U R                  (       aO  SU l	        [        R                  SX0R                  [        R                  S	.5        USU R                  -  -   U l        U R                  U-   U:  a!  UR                  U R                  * S5      S U nOX R                  U R                  U-    n[        U R                   X R                  U4S
9R#                  5         U R                  U-   U-  U l        g )N      r   )r   FVHS_latentpreview)lengthr   id)targetargs)ndimmovedimreshapeshapesizetimeintr   r   r   serv	send_synclast_node_idr   rollr   process_previewsrun)r   preview_formatx0
num_imagesnew_timenum_previewss         r!   decode_latent_to_preview_image/WrappedPreviewer.decode_latent_to_preview_image!   s_   77a<AaBE"((23-/0BWWQZ
99;H~~5BC,yy*@@$%LQ!&DNN.*ii_c_p_p0qr%$))3DN<<,&3$,,*=L9BLL!<=Bd++2||3=3? 	@@C|3zAr$   c           	         U R                  U5      nUR                  S5      S:  d  UR                  S5      S:  a  UR                  SS5      nUR                  S5      UR                  S5      :  a>  SUR                  S5      -  UR                  S5      -  n[        R                  " XS4SS9nO>SUR                  S5      -  UR                  S5      -  n[        R                  " USU4SS9nUR                  SS5      nUS	-   S
-  R                  SS5      R                  S5      R                  S[        R                  S9nU GH&  n[        R                  " UR                  5       5      n[        R                  " 5       n	U	R                  SR!                  SSS9S-  5        U	R                  UR!                  SSS95        U	R                  ["        R$                  " S[&        R(                  R+                  S5      5      5        UR-                  U	SSSS9  [&        R/                  [0        R2                  R4                  U	R7                  5       [&        R8                  5        US-   U-  nGM)     g )Nr   i   r'   r(   r   r   bilinear)modeg      ?g       @   cpu)devicedtyper   big)r+   	byteorder16pasciiJPEG_   )formatqualitycompress_level)decode_latent_to_previewr3   r0   Finterpolateclampmultotorchuint8r   	fromarraynumpyioBytesIOwriteto_bytesstructpackr6   r8   encodesaver7   serverBinaryEventTypesPREVIEW_IMAGEgetvalue	client_id)
r   image_tensorindlengheightwidthpreviews_ubytepreviewimessages
             r!   r:   !WrappedPreviewer.process_previews:   s   44\BQ#%):):1)=)C'//15L  #l&7&7&:: 1 1! 449J9J19MM }}\3<jY|00338I8I!8LL }}\C<jY'//"5L(3.#5<<QB#d)2U%++2> 	 &G0AjjlGMM1,,a5,A!CDMM#,,a5,ABMM&++eT->->-E-Eg-NOPFF762aFHNN622@@"++-t~~?7d"C &r$   c                    [        U S5      (       a-  U R                  R                  U5      R                  SS5      nU$ U R                  b  U R	                  U5      nU R
                  R                  UR                  UR                  S9U l        U R                  b3  U R                  R                  UR                  UR                  S9U l	        [        R                  " UR                  SS5      U R
                  U R                  S9nU$ )Nr   r   r   )rI   rH   r(   )bias)r   r   decoder0   r   r   rX   rI   rH   r   rT   linear)r   r=   x_samplelatent_images       r!   rS   )WrappedPreviewer.decode_latent_to_previewS   s    4!!zz((,44Q:HO..:44R8&*&=&=&@&@rxxXZXaXa&@&bD#++7/3/K/K/N/NUWU]U]fhfofo/N/p,88BJJq"$5t7N7N)-)E)EGLr$   )r   r   r   r   r   r   r   r   N)   )	__name__
__module____qualname____firstlineno__r"   rA   r:   rS   __static_attributes__ r$   r!   r   r      s    R2#2 r$   r   get_previewerc                    [         R                  n[        R                  " X/UQ70 UD6n [	        [         R
                  R                  R                  5       R                  5       5      S   S   S   S   nUR                  SS5      nUR                  SS5      S:w  a  US   nO+[        R                  UR                  R                  S	5      n U(       a  [        US
5      (       d  U$ [        UW5      $ !   Sn N,= f)Nr   extra_pnginfoworkflowextrar*   FVHS_latentpreviewrater   r{   rS   )r6   r8   get_latent_video_previewer__wrapped__nextprompt_queuecurrently_runningvalues__iter__getrates_table	__class__r|   r   r   )	rH   latent_formatr.   kwargsnode_idr    
extra_infoprev_settingrate_settings	            r!   r   r   a   s    G*66v^t^W]^I
$++==DDFOOQR#%%/118:
!~~&95A>>115:%&=>L&??=+B+B+K+KQOL wy2LMMI|44s   A8C6 %*C6 6C<)PILr   r4   r]   ra   	threadingr   torch.nn.functionalnn
functionalrT   rY   latent_previewre   PromptServerinstancer6   utilsr   r   LatentPreviewerr   r   r   r$   r!   <module>r      s}      	       ## ue!&HM ~55 M ^ no&5 '5r$   