o
    ̳iC                     @   sX   d dl mZ d dl mZ ddlmZ ddlmZ G dd dejZG dd	 d	ejZ	dS )
    N)
functional   )LowPassFilter1d)kaiser_sinc_filter1dc                       &   e Zd Zd fdd	Zdd Z  ZS )
UpSample1d   Nc                    s   t    || _|d u rtd| d d n|| _|| _| j| d | _| j| j | j| j d  | _| j| j | j| j d d  | _t	d| d| | jd}| 
d| d S )N   r   r         ?333333?)cutoff
half_widthkernel_sizefilter)super__init__ratiointr   stridepadpad_left	pad_rightr   register_buffer)selfr   r   r   	__class__ X/home/ubuntu/.local/lib/python3.10/site-packages/xcodec2/vq/alias_free_torch/resample.pyr      s   
""zUpSample1d.__init__c                 C   sd   |j \}}}tj|| j| jfdd}| jtj|| j|dd| j|d }|d| j| j	 f }|S )N	replicate)mode)r   groups.)
shapeFr   r   conv_transpose1dr   expandr   r   r   )r   x_Cr   r   r   forward   s   zUpSample1d.forwardr   N__name__
__module____qualname__r   r)   __classcell__r   r   r   r   r   
   s    r   c                       r   )DownSample1dr   Nc                    sR   t    || _|d u rtd| d d n|| _td| d| || jd| _d S )Nr	   r   r
   r   )r   r   r   r   )r   r   r   r   r   r   lowpass)r   r   r   r   r   r   r   %   s   
"zDownSample1d.__init__c                 C   s   |  |}|S )N)r1   )r   r&   xxr   r   r   r)   .   s   
zDownSample1d.forwardr*   r+   r   r   r   r   r0   $   s    	r0   )
torch.nnnnr   r#   r   r   r   Moduler   r0   r   r   r   r   <module>   s   