
    dj                         d dl Z d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZ e j         G d d	e                      ZdS )
    N)libav)AudioFormatget_audio_format)
AudioFramealloc_audio_frame)AudioLayoutget_audio_layout)Frame)Packetc                      e Zd Zej        dedz  defd            Zej        defd            Zej        dede	fd            Z
ed	             Zed
             Zej        dej        fd            Zed             Zej        d             Zed             Zed             Zej        d             Zed             Zej        d             ZdS )AudioCodecContextinput_frameNreturnc                 *   |}| j         j        j        t          j        z  }| j        s:t          | j        | j        | j         j	        |rd n| j         j
                  | _        | j                            |          }||                    d            |S )N)formatlayoutrate
frame_size)ptrcodeccapabilitieslib AV_CODEC_CAP_VARIABLE_FRAME_SIZE	resamplerAudioResamplerr   r   sample_rater   resampleappend)selfr   frameallow_var_frame_sizeframess        P/home/agentuser/manim-venv/lib/python3.11/site-packages/av/audio/codeccontext.py_prepare_frames_for_encodez,AudioCodecContext._prepare_frames_for_encode   s    #.HN'#*NN 	 ~ 	+{{X)#7P44TX=P	  DN ((//MM$    c                     t                      S N)r   r   s    r#   _alloc_next_framez#AudioCodecContext._alloc_next_frame"   s     """r%   r    packetc                 j    t                               | ||           |}|                                 d S r'   )CodecContext_setup_decoded_frame_init_user_attributes)r   r    r*   aframes       r#   r-   z&AudioCodecContext._setup_decoded_frame&   s7    ))$v>>>"$$&&&&&r%   c                     | j         j        S )zV
        Number of samples per channel in an audio frame.

        :type: int
        )r   r   r(   s    r#   r   zAudioCodecContext.frame_size,   s     x""r%   c                     | j         j        S )z[
        Sample rate of the audio data, in samples per second.

        :type: int
        r   r   r(   s    r#   r   zAudioCodecContext.sample_rate5   s     x##r%   valuec                     || j         _        d S r'   r2   r   r3   s     r#   r   zAudioCodecContext.sample_rate>   s    $r%   c                     | j         S )z%Another name for :attr:`sample_rate`.r   r(   s    r#   r   zAudioCodecContext.rateB   s     r%   c                     || _         d S r'   r7   r5   s     r#   r   zAudioCodecContext.rateG   s     r%   c                     | j         j        S r'   )r   nb_channelsr(   s    r#   channelszAudioCodecContext.channelsK   s    {&&r%   c                 4    t          | j        j                  S )zG
        The audio channel layout.

        :type: AudioLayout
        )r	   r   	ch_layoutr(   s    r#   r   zAudioCodecContext.layoutO   s       2333r%   c                 F    t          |          }|j        | j        _        d S r'   )r   r   r   r=   )r   r3   r   s      r#   r   zAudioCodecContext.layoutX   s!    )%00#]r%   c                 4    t          | j        j                  S )zF
        The audio sample format.

        :type: AudioFormat
        )r   r   
sample_fmtr(   s    r#   r   zAudioCodecContext.format]   s       3444r%   c                 F    t          |          }|j        | j        _        d S r'   )r   r@   r   )r   r3   r   s      r#   r   zAudioCodecContext.formatf   s"    )%00$/r%   )__name__
__module____qualname__cythoncfuncr
   listr$   r)   r   r-   propertyr   r   setterintr   r;   r   r    r%   r#   r   r   
   s       \edl t    \* \#5 # # # \# \'% ' ' ' ' \'
 # # X# $ $ X$ % % % % %     X  
[! ! [! ' ' X' 4 4 X4 ]+ + ]+ 5 5 X5 ]0 0 ]0 0 0r%   r   )rE   cython.cimportsr   r   cython.cimports.av.audio.formatr   r   cython.cimports.av.audio.framer   r   cython.cimports.av.audio.layoutr   r	   cython.cimports.av.framer
   cython.cimports.av.packetr   cclassr,   r   rK   r%   r#   <module>rS      s     ( ( ( ( ( ( I I I I I I I I H H H H H H H H I I I I I I I I * * * * * * , , , , , , ^0 ^0 ^0 ^0 ^0 ^0 ^0 ^0 ^0 ^0r%   