
    \j              	          d dl Z d dlmc mZ d dl mZmZ d dlmZm	Z	 d dl
mZ  e j                  e j                  e         Ze j                   e j                   d      e j"                  de j$                  ded	e j&                  fd
                     Ze j*                  e j,                   G d d                    Z e       Zy)    N)NULLsizeof)uint8_t	uintptr_t)memcpyF)checkopaquedatareturnc                     t        j                  t         j                  |      }t         j                  5  t        j                  |       d d d        t        j                  |       y # 1 sw Y   xY wN)cythoncastp_chargilopaque_containerpoplibav_free)r	   r
   names      </root/.hermes/venv/lib/python3.12/site-packages/av/opaque.pykey_freer      sN     !++fmmT:D	 #T"#KK# #s   A))A2c                       e Zd Zd Zej
                  dedej                  ej                     fd       Z
defdZdefdZy)OpaqueContainerc                     i | _         y r   )_objects)selfs    r   	__cinit__zOpaqueContainer.__cinit__   s	        vr   c                    t        j                  t        t        |            }|| j                  |<   t        j                  t
        t        j                  t        t                          }|t        k(  rt        d      t        |t        j                  |      t        t                     t        j                  |t        t              t        t        d      }|t        k(  rt        d      |S )Nz!Failed to allocate memory for keyr   zFailed to create AVBufferRef)r   r   r   idr   u8ptrr   	av_mallocr   r   MemoryErrorr   addressav_buffer_creater   )r   r    keyr
   
buffer_refs        r   addzOpaqueContainer.add   s      Y16ckk%vi7H)IJ4<ABBtV^^C(&*;< 7:6J6J&#XtQ7

 <==r   c                     t        j                  t         j                  t           |      d   }| j                  j                  |      S Nr   )r   r   pointerr   r   getr   r   r(   s      r   r.   zOpaqueContainer.get1   s5    V^^I%>EaH}}  %%r   c                     t        j                  t         j                  t           |      d   }| j                  j                  |d       S r,   )r   r   r-   r   r   r   r/   s      r   r   zOpaqueContainer.pop5   s7    V^^I%>EaH}}  d++r   N)__name__
__module____qualname__r   r   cfuncobjectr-   r   AVBufferRefr*   r.   r    r   r   r   r      sR     \\V s ?  *&6 &,6 ,r   r   )r   cython.cimports.libavcimportslibavr   r   r   cython.cimports.libc.stdintr   r   cython.cimports.libc.stringr   typedefr-   r#   r4   	exceptvalnogilp_voidvoidr   finalcclassr   r   r7   r   r   <module>rD      s     # #  : .v~~g./ V]] % FKK      ,  ,   ,F #$ r   