
    dj/                         d dl mZ d dlZd dlmZ d dlmZ e G d d                      Z ej	        e
 e
                      Zej        dej        defd	            Zej         G d
 d                      ZdS )    )	dataclassN)libav)PyBytes_FromStringAndSizec                   *    e Zd ZU eed<   eed<   d ZdS )AudioChannelnamedescriptionc                 (    d| j          d| j         dS )Nz<av.AudioChannel 'z' (z)>)r   r	   selfs    J/home/agentuser/manim-venv/lib/python3.11/site-packages/av/audio/layout.py__repr__zAudioChannel.__repr__   s     FDIFF$2BFFFF    N)__name__
__module____qualname__str__annotations__r    r   r   r   r      s?         
IIIG G G G Gr   r   c_layoutreturnc                 <    t          t                    }| |_        |S )z$Get an AudioLayout from Cython land.)AudioLayout_cinit_bypass_sentinellayout)r   r   s     r   get_audio_layoutr      s     &&<==FFMMr   c                   h    e Zd Zd Zd Zd Zed             Zed             Zede	fd            Z
dS )	r   c                 ~   |t           u rd S t          |          t          u r@t          j        t          j        |          |          }|dk    rt          d|           nTt          |t                    r t          j
        t          |          j        }nt          dt          |                     || _        d S )Nr   zInvalid layout: z5layout must be of type: string | av.AudioLayout, got )r   typer   libav_channel_layout_from_stringcythonaddress
ValueError
isinstancer   castr   	TypeError)r   r   r   rets       r   	__cinit__zAudioLayout.__cinit__   s    +++F<<33FN84L4LfUUCaxx !<F!<!<=== ,, 	{;77>HHVVVV   r   c                 2    d| j         j         d| j        dS )Nz<av. >)	__class__r   r   r   s    r   r   zAudioLayout.__repr__/   s"    >dn->>	>>>>r   c                     t          |t                    sdS t          j        t          |          j        }t          j        t          j        | j                  t          j        |                    dk    S )NFr   )r%   r   r"   r&   r   r    av_channel_layout_comparer#   )r   otherc_others      r   __eq__zAudioLayout.__eq__2   sg    %-- 	5'-{;'F'F'M)t{++V^G-D-D  	
r   c                     | j         j        S )N)r   nb_channelsr   s    r   r4   zAudioLayout.nb_channels=   s    {&&r   c                 ~   g }t          | j        j                  D ]}t          j        |t          j        |          t          j        t          j        | j                  |                    }t          j	        |t          j        |          t          j        t          j        | j                  |                    }|
                    t          t          ||dz
                                d          t          ||dz
                                d                               t          |          S )N   zutf-8)ranger   r4   r    av_channel_namer"   sizeof$av_channel_layout_channel_from_indexr#   av_channel_descriptionappendr   r   decodetuple)r   resultsindexbufsizebuf2size2s          r   channelszAudioLayout.channelsA   s#   
 4;233 	 	E&c""8N4;//  D .d##8N4;//  E NN-c4!8<<CCGLL-dEAI>>EEgNN     W~~r   r   c                     t          j        t          j        | j                  |t          j        |                    }|dk     rt          d|           |S )z'The canonical name of the audio layout.r   zFailed to get layout name: )r    av_channel_layout_describer"   r#   r   r9   RuntimeError)r   layout_namer(   s      r   r   zAudioLayout.name_   s[     8N4;''fmK6P6P
 
 77BSBBCCCr   N)r   r   r   r)   r   r2   propertyr4   rE   r   r   r   r   r   r   r      s          "? ? ?	
 	
 	
 ' ' X'   X: 	c 	 	 	 X	 	 	r   r   )dataclassesr   r"   cython.cimportsr   r    cython.cimports.cpython.bytesr   r   declareobjectr   cfuncAVChannelLayoutr   r   cclassr   r   r   <module>rS      s   ! ! ! ! ! !  ( ( ( ( ( ( C C C C C C G G G G G G G G (99  s2 {     L L L L L L L L L Lr   