
    \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                   ej"                   G d
 d                    Zy)    )	dataclassN)libav)PyBytes_FromStringAndSizec                   (    e Zd ZU eed<   eed<   d Zy)AudioChannelnamedescriptionc                 <    d| j                    d| j                   dS )Nz<av.AudioChannel 'z' (z)>)r   r	   selfs    B/root/.hermes/venv/lib/python3.12/site-packages/av/audio/layout.py__repr__zAudioChannel.__repr__   s"    #DII;c$2B2B1C2FF    N)__name__
__module____qualname__str__annotations__r    r   r   r   r      s    
IGr   r   c_layoutreturnc                 2    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                   Z    e Zd Zd Zd Zd Zd Zed        Zed        Z	ede
fd       Zy	)
r   c                 h    t        j                  t        j                  | j                               y N)libav_channel_layout_uninitcythonaddressr   r   s    r   __dealloc__zAudioLayout.__dealloc__   s    $$V^^DKK%@Ar   c                 d   |t         u ry t        |      t        u r<t        j                  t        j                        |      }|dk7  rat        d|       t        |t              r,t        j                  t        |      j                  }|| _        y t        dt        |             || _        y )Nr   zInvalid layout: z5layout must be of type: string | av.AudioLayout, got )r   typer   r    av_channel_layout_from_stringr"   r#   
ValueError
isinstancer   castr   	TypeError)r   r   r   rets       r   	__cinit__zAudioLayout.__cinit__"   s    ++<333FNN84LfUCax #3F8!<==,{{;7>>H 	 GV~V  r   c                 P    d| j                   j                   d| j                  dS )Nz<av. >)	__class__r   r   r   s    r   r   zAudioLayout.__repr__3   s&    dnn--.a		}A>>r   c                     t        |t              sy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__6   s]    %-'-{{;'F'M'M))t{{+V^^G-D 	
r   c                 .    | j                   j                  S r   )r   nb_channelsr   s    r   r8   zAudioLayout.nb_channelsA   s    {{&&&r   c                 z   g }t        | j                  j                        D ]  }t        j                  t        j                  |      t        j                  t        j                  | j                        |            }t        j                  t        j                  |      t        j                  t        j                  | j                        |            }|j                  t        t        ||dz
        j                  d      t        ||dz
        j                  d                    t        |      S )N   zutf-8)ranger   r8   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.channelsE   s    
 4;;223 	E&&c"88NN4;;/D ..d#88NN4;;/E NN-c4!8<CCGL-dEAI>EEg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   r=   RuntimeError)r   layout_namer,   s      r   r   zAudioLayout.namec   sS     88NN4;;'fmmK6P
 7!<SEBCCr   N)r   r   r   r$   r-   r   r6   propertyr8   rI   r   r   r   r   r   r   r      sZ    B"?	
 ' '  : 	c 	 	r   r   )dataclassesr   r"   cython.cimportsr   r    cython.cimports.cpython.bytesr   r   declareobjectr   cfuncAVChannelLayoutr   r   finalcclassr   r   r   <module>rX      s    !  ( C G G G (9  s22 {   O O  Or   