
    ^j              	       n   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dS )    N)NULLsizeof)uint8_t	uintptr_t)memcpyF)checkopaquedatareturnc                     t          j        t           j        |          }t           j        5  t                              |           d d d            n# 1 swxY w Y   t          j        |           d S N)cythoncastp_chargilopaque_containerpoplibav_free)r	   r
   names      /data/video-pipeline/HaTramAudio/project/018-Hon-Uoc-Khong-Duoc-Phep-Yeu/work/asr-venv/lib/python3.11/site-packages/av/opaque.pykey_freer      s     !+fmT::D	 # #T"""# # # # # # # # # # # # # # #Ks   AAAc                   v    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dS )OpaqueContainerc                     i | _         d S 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6ck%vi7H7H)I)IJJ4<<ABBBtV^C((&*;*;<<< 7:6J&##XtQ7
 7

 <===r   c                     t          j        t           j        t                   |          d         }| j                            |          S Nr   )r   r   pointerr   r   getr   r   r(   s      r   r.   zOpaqueContainer.get1   s5    V^I%>EEaH}  %%%r   c                     t          j        t           j        t                   |          d         }| j                            |d           S r,   )r   r   r-   r   r   r   r/   s      r   r   zOpaqueContainer.pop5   s7    V^I%>EEaH}  d+++r   N)__name__
__module____qualname__r   r   cfuncobjectr-   r   AVBufferRefr*   r.   r    r   r   r   r      s           \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] % FK        ,  ,  ,  ,  ,  ,  ,   ,F #?$$   r   