
    
3j"                         S SK r S SKrS SKrS SKrS SKJrJrJr  S SK	J
r
  S SKJr  SSKJr   " S S\R                  5      r " S	 S
\5      r " S S\5      rS rg)    N)BasicTransformerBlock	LTXVModelapply_rotary_emb)latent_to_pixel_coords)nn   )get_feta_scoresc                   &    \ rS rSrSSS0 4S jrSrg)LTXModifiedCrossAttention   Nc           	      .   Uc  UOUnUc  UOUnUR                  SS5      nUR                  SS5      nUR                  SS 5      n	UR                  SS 5      n
U	b  U R                  U	S   ;   a  [        US   5      nUS	   nU
S
:X  a>  X-
  S-
  U	S   :  a0  U SX-
  S-
   3nUR                  5       U	S   U R                     U'   OU
S:X  a  XyS   :  a  U SU 3nU	R                  S0 5      n[        U5      S:  a?  U	S   U R                     U   R	                  UR
                  5      R                  USS5      nSU;   a  WnSU;   a  WnSU;   a  WnU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nUb  [        UU5      n[        UU5      nS nUR                  SS5      S:  a.  U R                  US   S   ;   a  [        UUU R                  U5      nUR                  S0 5      R                  S0 5      R                  SU R                  4S 5      nUb   U" UUUU R                  U R                  US9nOUcJ  [         R"                  R$                  R&                  R)                  UUUU R                  U R                  S9nOI[         R"                  R$                  R&                  R+                  UUUU R                  X0R                  S9nUb  UU-  nU R-                  U5      $ )Nsteptotal_stepsr   	attn_banksample_mode	block_mapcond_or_uncond
pred_orderforward   
save_steps_reverseinject_stepsinject_settingsqkvfeta_weightfeta_layerslayerspatches_replacelayer	self_attn)attn_precisiontransformer_options)r&   )getidxlencputodevicerepeatto_qto_kto_vq_normk_normr   r	   headsr&   comfyldmmodules	attentionoptimized_attentionoptimized_attention_maskedto_out)selfxcontextmaskper'   	context_vr   r   r   r   	len_condsr   step_idxr   injr   r   r   
feta_scorealt_attn_fnouts                         V/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-LTXVideo/tricks/modules/ltx_model.pyr   !LTXModifiedCrossAttention.forward   s1   !G Ag	"&&vr2)--mQ?'++K>	)--mTB TXX;1G%G/0@ABI,\:Jy(&*Y|-DD(\;+;A+=*>?=>UUW	+&txx0:	)d~5N.N(\4&1"+--0A2"F'!+!+.txx8BAHH	1a0 
 /)A/)!G/) #IIIaLIIgIIi KKNKKN> B'A B'A
##M159/>xHH(Atzz;NOJ  ##$5r:S"S+txx($/ 	
 "

#22$7C \))##--AA1aD4G4G B C ))##--HH1aT:M:M I C !:C{{3     __name__
__module____qualname____firstlineno__r   __static_attributes__rK   rJ   rH   r   r      s    !%DTr M rJ   r   c                   (    \ rS rSrSSSS0 4S jrSrg) LTXModifiedBasicTransformerBlockb   Nc                 X   U R                   S   R                  UR                  UR                  S9UR	                  UR
                  S   UR
                  S   U R                   R
                  S   S5      -   R                  SS9u  pxppUU R                  [        R                  R                  R                  U5      SU-   -  U-   UUS9U	-  -  nXR                  XUS	9-  n[        R                  R                  R                  U5      SU-   -  U
-   nXR                  U5      U-  -  nU$ )
NNNr-   dtyper   r   r   r   )dim)r@   r'   )r>   r?   )scale_shift_tabler,   r-   rX   reshapeshapeunbindattn1r5   r6   
common_ditrms_normattn2ff)r<   r=   r>   attention_masktimestepr@   r'   	shift_msa	scale_msagate_msa	shift_mlp	scale_mlpgate_mlpys                 rH   r   (LTXModifiedBasicTransformerBlock.forwardc   s.    "":.111Q
HNN1-t/E/E/K/KA/NPR &Q&- 	G	h9 	
JJ		$$--a0A	MBYN$7  
 	
 	
ZZZ@@II  ))!,I>J	WWQZ(""rJ   rK   rL   rK   rJ   rH   rS   rS   b   s     rJ   rS   c                   $    \ rS rSrS0 S4S jrSrg)LTXVModelModified      Nc           
      $  ^ UR                  S0 5      n	[        UR                  5      n
U R                  R	                  U5      u  p[        UU R                  U R                  S9nUb  X|S S 2S S 2UR                  S   * S 24'   UR                  [        R                  5      nUS S 2S4   SU-  -  US S 2S4'   U R                  U5      nUS-  nUb  [        R                  " U5      (       dv  US-
  R                  UR                  5      R                  UR                  S   SSUR                  S   45      [        R                  " UR                  5      R                   -  nU R#                  XR$                  UR                  S	9nUR                  S   nU R'                  UR)                  5       S S S
.UUR                  S9u  nnUR+                  USUR                  S   5      nUR+                  USUR                  S   5      nU R,                  b@  UR                  S   nU R-                  U5      nUR+                  USUR                  S   5      nU	R                  S0 5      n[/        U R0                  5       H<  u  nmSU4U;   a#  U4S jnUSU4   " UUUUUS.SU05      nUS   nM1  T" UUUUUUS9nM>     U R2                  S   R                  UR4                  UR                  S9US S 2S S 2S 4   -   nUS S 2S S 2S4   US S 2S S 2S4   nnU R7                  U5      nUSU-   -  U-   nU R9                  U5      nU R                  R;                  UU
S   U
S   U
S   U
S   [<        R>                  " U R                  R@                  5      -  S9nU$ )Nr#   )latent_coordsscale_factors
causal_fixr   r   g      ?g     @@r   r   )rY   	out_dtype)
resolutionaspect_ratio)
batch_sizehidden_dtypeditdouble_blockc                 D   > 0 nT" U S   U S   U S   U S   U S   S9US'   U$ )Nimgtxtrc   vecr@   )r>   rc   rd   r@   rK   )argsrG   blocks     rH   
block_wrap-LTXVModelModified.forward.<locals>.block_wrap   sB    C!&U $U'+,<'=!%e:"CJ JrJ   )r}   r~   rc   r   r@   original_blockr}   )r>   rc   rd   r@   r'   rV   rW         )latentsoutput_heightoutput_widthoutput_num_framesout_channels)!r(   listr\   
patchifierpatchifyr   vae_scale_factorscausal_temporal_positioningr,   torchfloat32patchify_projis_floating_pointrX   r[   finfomax_precompute_freqs_cis	inner_dimadaln_singleflattenviewcaption_projection	enumeratetransformer_blocksrZ   r-   norm_outproj_out
unpatchifymathprod
patch_size)r<   r=   rd   r>   rc   
frame_rater'   keyframe_idxskwargsr#   
orig_shaperr   pixel_coordsfractional_coordsr@   rx   embedded_timestepblocks_replaceir   rG   scale_shift_valuesshiftscaler   s                           @rH   r   LTXVModelModified.forward   s    .112CRH!'']
??33A6-'0077
 $<IA 3 3A 66889(OOEMM:"3AqD"9S:=M"N!Q$q!f$%e.E.En.U.U,q044QWW=EE%%a(!R1E1Eb1IJAGG$(()N ''>>QWW ( 
 WWQZ
&*&7&76!	 '8 '
## ==R1CD-22-33B7

 "".J--g6Gll:r1772;?G(,,UB7!$"9"9:HAu"n4	 %na%89 &*8'  &z2	 J##1%(;5 ;J "":.111Q1d
+, 	 *!Q'24Fq!Qw4OuMM!UOe#MM!OO&&$Q-#A(m#A$))DOO4N4N*OO ' 
 rJ   rK   rL   rK   rJ   rH   rn   rn      s     rrJ   rn   c                     [         U l        [        U R                  5       H;  u  p[        Ul        Xl        [        UR                  l        XR                  l        M=     U $ )N)rn   	__class__r   r   rS   r)   r   r^   )diffusion_modelr)   transformer_blocks      rH   inject_modelr      sU     1O"+O,N,N"O&F# #,E)&)#	 #P
 rJ   )r   comfy.ldm.common_ditr5   comfy.ldm.modules.attentionr   comfy.ldm.lightricks.modelr   r   r   )comfy.ldm.lightricks.symmetric_patchifierr   r   utils.feta_enhance_utilsr	   Moduler   rS   rn   r   rK   rJ   rH   <module>r      s\      "  
 M  6N 		 N b'< Bt	 tnrJ   