
    Qj                         d Z ddlZddlZddlZddlmZ ddlZddlZddl	Z	ddl
mZ ddlmZ dej        fdZd
dZed	k    r e             dS dS )zIRetime a numbered PNG sequence with RIFE while preserving both endpoints.    N)Path)
functional)tqdmreturnc                  N   t          j                    } |                     dt          d           |                     dt          d           |                     dt          d           |                     dt          d           |                     dt          d           |                     dt          d           |                     d	t          d           |                     d
t          d           |                     dd           |                                 S )Nz--repoT)typerequiredz--modelz--inputz--outputz--source-fpsz--target-fpsz--speedz--scale      ?)r   defaultz--fp16
store_true)action)argparseArgumentParseradd_argumentr   float
parse_args)parsers    g/home/vela/workspace/domain/tn-silver/web/tn-site/.runtime/video-continuity-20260827/retime_sequence.pyr   r      s   $&&F
td;;;
	t<<<
	t<<<

===
UTBBB
UTBBB
	===
	s;;;
666    c            
      b   t                      j        dk    sj        dk    sj        dk    rt	          d          j        dvrt	          d          t          j                                        st          d          j
                                        _
        j                                        _        j                                        _        j                                        _        t          j                            dt%          j
                             t          j        d           dt          j        j        _        dt          j        j        _        j        r#t          j        t          j        j                   ddlm}   |             }|                    t%          j                  d	           |                                 |                                 tA          j        !                    d
          d           tE                    dk     rt          d          j        #                    dd           tI          j%        t%          d                   tH          j&                  }|t          dd                    |j'        d d         \  tQ          dtS          dj        z                      }dz
  |z  dz   |z  }dz
  |z  dz   |z  }d|z
  d|z
  fdtR          dtT          j+        ffd}dtT          j+        dt          j,        ffd}dtR          dt          j,        dd ffd}tE                    dz
  }	|	j        z  }
tQ          dt[          |
j        z  j        z                      }tU          j.        dt_          |	          |dz             }d }d }d }t          j0                    5  tc          te          |d                    D ]V\  }}tg          tS          ti          j5        |                    |	          }tg          |dz   |	          }||z
  }|dk    s||k    r8tI          j6        t%          j        |ddz             ||                     d |z
  dk    r8tI          j6        t%          j        |ddz             ||                     ||f}||k    r2 ||          } ||          }|}||f} ||           ||          f}||J |7                    |d         |d         t_          |          j                  } |||           X	 d d d            n# 1 swxY w Y   tq          d!|dz    d"|j        z  d#d$|
|j        z  z  d#d%           d S )&Nr   z&frame rates and speed must be positive>          @      @      ?      ?r
   zunsupported --scalezCUDA GPU is requiredFT)Modelz*.pngc                 *    t          | j                  S )N)intstem)paths    r   <lambda>zmain.<locals>.<lambda>:   s    s49~~ r   )key   z-at least two numbered PNG frames are required)parentsexist_okfailed to read       indexr   c                     t          j        t          |                    t           j                  }|t	          d|                     |j        d d         fk    rt	          d|                     |S )Nr&   r#   zframe size changed at )cv2imreadstrIMREAD_COLORRuntimeErrorshape)r)   frameframesheightwidths     r   read_bgrzmain.<locals>.read_bgrH   s|    
3ve}--s/?@@=@@@AAA;rr?vuo--GuGGHHHr   	frame_bgrc                 x   | d d d d d d df                                          }t          j        t          j        |d                                        dd                              d          }j        r|                                n|	                                }t          j        |dz            S )Nr   )r#   r   r(   cudaT)non_blockingr        o@)copytorch
from_numpynp	transposeto	unsqueezefp16halfr   Fpad)r6   rgbtensorargspaddings      r   	to_tensorzmain.<locals>.to_tensorP   s    111ddd
#((**!",sI">">??BB C 
 

)A,, 	 #')?uVe^W---r   rG   c           	         |dd d d d f                              d                              dd                                                              t          j                                                                                                      ddd          }t          j
        t          j        | ddz            |d d d d d d df                    d S )	Nr   r:           r(   r#   07d.pngr   )mulclamproundr@   r<   uint8cpunumpyr?   r+   imwriter-   output)r)   rG   rF   rH   r3   r4   s      r   write_tensorzmain.<locals>.write_tensorX   s    1aaa&&5&()SZZU3UWWR__SUUUWWYq!Q 	 	C&8&8&8&88993qqq!!!TTrTz?KKKKKr   rL   zRIFE retime)descgHz>rM   rN   r
   zwrote z frames; motion duration z.6fzs; effective speed x)9r   
source_fps
target_fpsspeed
ValueErrorscaler<   r8   is_availabler/   reporesolvemodelinputrV   sysr    insertr-   set_grad_enabledbackendscudnnenabled	benchmarkrB   set_default_tensor_type
HalfTensortrain_log.RIFE_HDv3r   
load_modelevaldevicesortedgloblenmkdirr+   r,   r.   r0   maxr   r>   ndarrayTensorrQ   linspacer   inference_mode	enumerater   minmathfloorrU   	inferenceprint)r   rb   firstblockpadded_heightpadded_widthr5   rJ   rW   source_intervalssource_motion_durationtarget_intervals	positionscached_indices
cached_bgrcached_tensorsoutput_indexpositionlowerupperfractionpair	lower_bgr	upper_bgrmiddlerH   r2   r3   rI   r4   s                            @@@@@r   mainr      s   <<D!t!33tzQABBBz333.///:""$$ 31222	!!##DI##%%DJ##%%DJ+%%''DKHOOAs49~~&&&	5!!!#'EN %)EN"y =%ej&;<<<))))))EGGE	S__b)))	JJLLL	LLNNNDJOOG,,2M2MNNNF
6{{QJKKKKdT222Js6!9~~s'788E}8VAY88999KOMFEStz)**++EqjU*Q.%7MQY5(1,5L,&=6+ABG 
        .RZ .EL . . . . . . .LC L L$ L L L L L L L L 6{{Q-?	$tz1DOCDD  C'7!8!8:JQ:NOOI-1N7;J?CN				 !/ !/&/Y]0S0S0S&T&T  	/  	/"L(DJx00113CDDE	#344E%'H45E>>&?&?&?&??@@HUOO   X~%%&?&?&?&??@@HUOO   5>D%%$HUOO	$HUOO	!%'3
"+)I"6"6		)8L8L!M)n.H.HH__q!q!h
	 F Lv....A 	/!/ !/ !/ !/ !/ !/ !/ !/ !/ !/ !/ !/ !/ !/ !/F 
	`!A% 	` 	`+do=F	` 	`15E5WX_	` 	` 	`    s   /E7U33U7:U7__main__)r   N)__doc__r   r|   rd   pathlibr   r+   rT   r>   r<   torch.nnr   rD   r   	Namespacer   r   __name__ r   r   <module>r      s    O O   



       



      $ $ $ $ $ $      H&    z z z zz zDFFFFF r   