
    \j                        d dl Z d dl mZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ  e j                  e j                  e	         Z e j                  e j                  e j                  e	            Z e j                  d      Ze j$                  e j&                   G d d	                    Ze j*                  e j,                   e j.                  d
      de j0                  dede j2                  de j2                  fd                     Ze j*                   e j.                  d
      de j0                  dede j2                  de j2                  fd              Ze j*                  e j,                   e j.                  d
      de j0                  dede j2                  de j2                  fd                     Ze j*                   e j.                  d
      de j0                  dede j2                  de j2                  fd              Ze j*                  e j,                   e j.                  d
      de j0                  dede j2                  defd                     Ze j*                  de j0                  dede j2                  defd       Ze j*                  de j                  ej@                     de j2                  fd       Z!e j*                  de j                  ej@                     de j2                  fd       Z"y)    N)NULL)libav)stash_exception)int64_tuint8_t)memcpyzOint64_t (*seek_func_t)(void *opaque, int64_t offset, int whence) noexcept nogilc                       e Zd ZddZd Zy)PyIOFileNc           	      R   || _         t        }t        | j                   dd       }t        | j                   dd       }t        | j                   dd       }t        | j                   dd       | _        t        | j                   dd       | _        t        | j                   dd       | _        t        | j                   dd       | _        t        | j                   dd       | _        | j
                  | j                  | |       rt        }|| j                  d u}|r | j                  	|2 |       s+t        d	      | j                  	| |       st        d
      d| _
        d| _        t        j                  t        j                  t        j                   |            | _        t        j$                  | j"                  ||t        j                  t        j&                  |       t(        t*        |      | _        |rt        j.                  | j,                  _        || j,                  _        y )Nreadablewritableseekablereadwriteseektellclosez@File object has no write() method, or writable() returned False.z?File object has no read() method, or readable() returned False.r   T)filer   getattrfreadfwritefseekftellfclose	pyio_seek
ValueErrorpospos_is_validcythoncastp_ucharlib	av_mallocbufferavio_alloc_contextp_void	pyio_read
pyio_write	iocontextAVIO_SEEKABLE_NORMALr   max_packet_size)selfr   buffer_size	writeable	seek_funcr   r   r   s           D/root/.hermes/venv/lib/python3.12/site-packages/av/container/pyio.py	__cinit__zPyIOFile.__cinit__   s   	!%	499j$7499j$7499j$7TYY5
dii$7TYY5
TYY5
dii$7
 JJ"

&!XZ!I4/I{{"x';HJ V  zz!h&:8: U    kk&..#--2LM//KKKKt,
 &)&>&>DNN#)4&    c                    t         j                  5  | j                  rot        j                  t        j
                  | j                  j                               t        j                  t        j
                  | j                               n2t        j                  t        j
                  | j                               d d d        y # 1 sw Y   y xY wN)r   nogilr)   r"   av_freepaddressr$   )r,   s    r0   __dealloc__zPyIOFile.__dealloc__M   sz    \\ 		: ~~V^^DNN,A,ABCV^^DNN;< V^^DKK89		: 		: 		:s   B.CCr4   )__name__
__module____qualname__r1   r8    r2   r0   r
   r
      s    75r
:r2   r
   F)checkopaquebufbuf_sizereturnc                 h    t         j                  5  t        | ||      cd d d        S # 1 sw Y   y xY wr4   )r   gilpyio_read_gilr>   r?   r@   s      r0   r'   r'   Z   s,     
 4VS(34 4 4   (1c           
         	 t        j                  t        |       }|j                  |      }t	        |t        j                  t         j
                  t        j                  t         j                  |            t        |             |xj                  t        |      z  c_        |st        j                  S t        j                  t         j                  t        |            S # t        $ r t               cY S w xY wr4   )r   r    r
   r   r   r&   p_charlenr   r"   AVERROR_EOFint	Exceptionr   )r>   r?   r@   r,   ress        r0   rD   rD   b   s    
!{{8V,jj"V]]FKKs,KLcRUh	
 	CH??"{{6::s3x00 !  !s   B4C$ 7,C$ $C:9C:c                 h    t         j                  5  t        | ||      cd d d        S # 1 sw Y   y xY wr4   )r   rC   pyio_write_gilrE   s      r0   r(   r(   u   s,     
 5fc845 5 5rF   c                     	 t        j                  t        |       }|d | }|j                  |      }t	        |t
              r|n|}|xj                  |z  c_        |S # t        $ r t               cY S w xY wr4   )	r   r    r
   r   
isinstancerK   r   rL   r   )r>   r?   r@   r,   bytes_to_write	ret_valuebytes_writtens          r0   rO   rO   }   sl    !{{8V,YhKK/	%/	3%?	XM! !  !s   AA A32A3offsetwhencec                     |t         j                  k(  ryt        j                  5  t	        | ||      cd d d        S # 1 sw Y   y xY w)N)r"   AVSEEK_SIZEr   rC   pyio_seek_gil)r>   rU   rV   s      r0   r   r      s;      	 5VVV45 5 5s	   <Ac                 H   	 t        j                  t        |       }|j                  ||      }|dk(  r||_        n"|dk(  r|xj                  |z  c_        nd|_        |*|j
                  r|j                  }|S |j                         }|S # t        $ r t               cY S w xY w)Nr      F)	r   r    r
   r   r   r   r   rL   r   )r>   rU   rV   r,   rM   s        r0   rZ   rZ      s    
!{{8V,jj( Q;DHq[HHH %D;  hh 
 jjl
 !  !s   A6B 9B B! B!pbc                 `    	 t        j                  |       S # t        $ r t               cY S w xY wr4   )r"   
avio_closerL   r   )r]   s    r0   pyio_close_gilr`      s.    !~~b!! !  !s    --c                     	 t        j                  t        | j                        }t	        j
                  |        |j                  |j                          y# t        $ r t                Y y w xY w)Nr   )	r   r    r
   r>   r"   
avio_flushr   rL   r   )r]   r,   s     r0   pyio_close_custom_gilrc      sT    {{8RYY/ 	r;;"KKM s   AA A.-A.)#r   r   cython.cimportsr   r"   cython.cimports.av.errorr   cython.cimports.libc.stdintr   r   cython.cimports.libc.stringr   typedefpointerBufconstBufCseek_func_tfinalcclassr
   cfuncr5   	exceptvalr&   rK   r'   rD   r(   rO   r   rZ   AVIOContextr`   rc   r<   r2   r0   <module>rs      s     ( 4 8 .fnnV^^G,-v~~fnnV\\'%:;<fnnU
 D: D:  D:N 4fmm 4# 4 4

 4   4
 !&-- !c !VZZ !FJJ !  !" 5v}} 54 56:: 5&** 5   5
 !MM! $!06

!ZZ!  !" 5fmm 5W 5fjj 5W 5   5 !MM!#*!4:JJ!! !2 !v~~coo6 !6:: ! ! fnnS__= &**  r2   