
    +j                        S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
rS SKrS SKrS SKr\R                  r\R"                  r/ SQrSS jr " S S	5      r " S
 S\5      r " S S\5      r " S S\5      rS rSS jrSS\4S jjrg)    N)Image)argsLatentPreviewMethod)TAESD)VAE)taehvlighttaew2_2lighttaew2_1lighttaehy1_5taeltx_2c                    U(       a(  U S-   S-  R                  SS5      R                  S5      nO!U R                  SS5      R                  S5      n[        R                  R                  (       a  UR                  [        R                  S9nUR                  S[        R                  [        R                  R                  U R                  5      S9n[        R                  " UR                  5       5      $ )	Ng      ?g       @r         )dtypecpu)devicer   non_blocking)clampmulcomfymodel_managementdirectml_enabledtotorchuint8device_supports_non_blockingr   r   	fromarraynumpy)latent_imagedo_scalelatents_ubytes      ./home/wildlama/comfy/ComfyUI/latent_preview.pypreview_to_imager#      s    +c1S8??1E!$T  *//15!$T  !!22 - 0 0u{{ 0 C%((U[[W\WmWm  XK  XK  LX  L_  L_  X`(  a}22455    c                        \ rS rSrS rS rSrg)LatentPreviewer   c                     g N )selfx0s     r"   decode_latent_to_preview(LatentPreviewer.decode_latent_to_preview    s    r$   c                 6    U R                  U5      nSU[        4$ )NJPEG)r-   MAX_PREVIEW_RESOLUTION)r+   preview_formatr,   preview_images       r"   decode_latent_to_preview_image.LatentPreviewer.decode_latent_to_preview_image#   s     55b9'=>>r$   r*   N)__name__
__module____qualname____firstlineno__r-   r4   __static_attributes__r*   r$   r"   r&   r&      s    ?r$   r&   c                        \ rS rSrS rS rSrg)TAESDPreviewerImpl'   c                     Xl         g r)   taesd)r+   r@   s     r"   __init__TAESDPreviewerImpl.__init__(   s    
r$   c                 z    U R                   R                  US S 5      S   R                  SS5      n[        U5      $ )Nr   r      )r@   decodemovedimr#   r+   r,   x_samples      r"   r-   +TAESDPreviewerImpl.decode_latent_to_preview+   s9    ::$$RV,Q/771=))r$   r?   Nr6   r7   r8   r9   rA   r-   r:   r*   r$   r"   r<   r<   '   s    *r$   r<   c                       \ rS rSrS rSrg)TAEHVPreviewerImpl/   c                 p    U R                   R                  US S2S S 2S S24   5      S   S   n[        USS9$ )Nr   r   F)r    )r@   rE   r#   rG   s      r"   r-   +TAEHVPreviewerImpl.decode_latent_to_preview0   s?    ::$$RArr	]3A6q9599r$   r*   N)r6   r7   r8   r9   r-   r:   r*   r$   r"   rL   rL   /   s    :r$   rL   c                   $    \ rS rSrSS jrS rSrg)Latent2RGBPreviewer4   Nc                     [         R                  " USS9R                  SS5      U l        S U l        Ub  [         R                  " USS9U l        X0l        g )Nr   )r   r   r   )r   tensor	transposelatent_rgb_factorslatent_rgb_factors_biaslatent_rgb_factors_reshape)r+   rV   rW   rX   s       r"   rA   Latent2RGBPreviewer.__init__5   sN    "',,/A%"P"Z"Z[\^_"`'+$".+0<<8OX]+^D(*D'r$   c                    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        UR                  S:X  a  USS S 2S4   nOUS   n[        R                  R                  R                  UR                  SS5      U R                  U R
                  S9n[        U5      $ )N)r   r      r   )bias)rX   rV   r   r   r   rW   ndimr   nn
functionallinearrF   r#   )r+   r,   r   s      r"   r-   ,Latent2RGBPreviewer.decode_latent_to_preview<   s    **6004B"&"9"9"<"<288TVT]T]"<"^''3+/+G+G+J+JQSQYQYbdbkbk+J+lD(77a<Aq!GBABxx**11"**Q2CTE\E\cgcc1  A  --r$   )rV   rW   rX   )NNrJ   r*   r$   r"   rQ   rQ   4   s    E.r$   rQ   c                 Z  ^ S n[         R                  nU[        R                  :w  Ga  S nTR                  bA  [        U4S j[        R                  " S5       5       S5      n[        R                  " SU5      nU[        R                  :X  a  [        R                  nU[        R                  :X  a  U(       a  TR                  [        ;   aE  [        [        R                  R!                  U5      5      nSUR"                  l        ['        U5      nO_[        S UTR(                  S9R+                  U 5      n[-        U5      nO/[.        R0                  " SR3                  TR                  5      5        Uc8  TR4                  b+  [7        TR4                  TR8                  TR:                  5      nU$ )Nc              3   l   >#    U  H)  nUR                  TR                  5      (       d  M%  Uv   M+     g 7fr)   )
startswithtaesd_decoder_name).0fnlatent_formats     r"   	<genexpr> get_previewer.<locals>.<genexpr>V   s-      HJ}}]%E%EF Js   $4	4
vae_approx F)latent_channelszHWarning: TAESD previews enabled, but could not find models/vae_approx/{})r   preview_methodr   
NoPreviewsrf   nextfolder_pathsget_filename_listget_full_pathAuto
Latent2RGBr   
VIDEO_TAESr   r   utilsload_torch_filefirst_stage_modelshow_progress_barrL   rn   r   r<   loggingwarningformatrV   rQ   rW   rX   )r   ri   	previewermethodtaesd_decoder_pathr@   s    `    r"   get_previewerr   N   s~   I  F$///!++7!%Hl<<\J H"
 ".!;!;LJ\!](---(33F(...! 33zA ; ;<N OPE@EE++= 25 9I!$(:MLiLijmmntuE 25 9I j q qr  sS  sS  !T  U//;/0P0PR_RwRw  zG  zb  zb  c	r$   c                    ^^^^ SmTS;  a  Sm[        U R                  U R                  R                  5      m[        R
                  R                  U5      mUUUU4S jnU$ )Nr0   )r0   PNGc                 v   > Tb  UTS'   S nT(       a  TR                  TU5      nTR                  U S-   X45        g )Nr,   r   )r4   update_absolute)	stepr,   xtotal_stepspreview_bytespbarr2   r   x0_output_dicts	        r"   callback"prepare_callback.<locals>.callbackx   sB    %#%N4 %DD^UWXMTAX{Br$   )r   load_devicemodelri   r   rx   ProgressBar)r   stepsr   r   r   r2   r   s     ` @@@r"   prepare_callbackr   p   sX    N_,e//1J1JKI;;""5)DC C Or$   overridec                     U (       a+  U S:w  a%  [         R                  " U 5      nUb  U[        l        g [        [        l        g )Ndefault)r   from_stringr   ro   default_preview_method)r   r   s     r"   set_preview_methodr      s5    H	)$00:"(D0Dr$   )Tr)   )r   PILr   comfy.cli_argsr   r   comfy.taesd.taesdr   comfy.sdr   comfy.model_managementr   rr   comfy.utilsr|   ro   r   preview_sizer1   rw   r#   r&   r<   rL   rQ   r   r   strr   r*   r$   r"   <module>r      s      4 #     ,, ** S
6? ?* *:+ :
./ .4 D$1 1r$   