o
    )iM                     @   s`   d dl Z d dlZd dlZd dlZe ddd ZdddZeddd	 Zed
dd Z	dS )    Nc                   C   s   t jdddS )NtorchvisionZIMPLZMeta)torchlibraryLibrary r   r   n/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchvision/_meta_registrations.pyget_meta_lib
   s   r   defaultc                    s    fdd}|S )Nc                    s,   t j rt tttjj  |  | S )N)r   	extensionZ_has_opsr   implgetattrr   ops)fnop_nameoverload_namer   r   wrapper   s   
zregister_meta.<locals>.wrapperr   )r   r   r   r   r   r   register_meta   s   r   Z	roi_alignc                    sd   t ddkdd  t  jjk fdd d}  \}}	}
} ||	||fS )N      c                   S   s   dS )Nz$rois must have shape as Tensor[K, 5]r   r   r   r   r   <lambda>   s    z meta_roi_align.<locals>.<lambda>c                         d j  dj  S )NzMExpected tensor for input to have the same type as tensor for rois; but type  does not equal dtyper   inputroisr   r   r      
   r   )r   _checksizer   	new_empty)r   r   spatial_scalepooled_heightpooled_widthsampling_ratioalignedZnum_rois_channelsheightwidthr   r   r   meta_roi_align   s   

r+   Z_roi_align_backwardc                    s0   t  jjk fdd  ||||fS )Nc                      r   )NzLExpected tensor for grad to have the same type as tensor for rois; but type r   r   r   gradr   r   r   r   -   r   z)meta_roi_align_backward.<locals>.<lambda>)r   r   r   r!   )r-   r   r"   r#   r$   Z
batch_sizer(   r)   r*   r%   r&   r   r,   r   meta_roi_align_backward'   s
   
r.   )r	   )
	functoolsr   Ztorch.libraryZtorchvision.extensionr   	lru_cacher   r   r+   r.   r   r   r   r   <module>   s    

	
