
    djm.                     
   U d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZ	 d dl
mZ d dlmZmZ d dlmZmZ g dZ ej        e e                      Zej        dej        d	efd
            Zej        ded	ej        fd            Z G d de          Z ej        ej         ed                    Z ej        ed          Z G d dee           Z  G d de          Z! G d de          Z"de	j#         de fde	j$         de%fde	j&         de'fde	j(         de fde	j)         de fde	j*         de fde	j+         de,fd e	j-         ddfd!e	j.         ddfd"e	j/         de fd#e	j0         d$e'fd%e	j1         de fd&e	j2         de fd'e	j3         d(dfd)e	j4         de fd*e	j5         ddfd+e	j6         ddfd,e	j7         ddfd-e	j8         ddfd.e	j9         d/e"fd0e	j:         d1e"fd2e	j;         d3e"fd4e	j<         d5e"fd6e	j=         d7e"fd8e	j>         d9e!fd:ed;e%ffZ? G d< d=e@          ZAejB         G d> d?                      ZC eAd@eCfdAeDidB e?D                       ZEeED ]BZFeF eG            eFjH        <   eFjI        ek    reeF_J        ' e	jK        eFjI                   eF_J        Ci ZLeMeNdC<   dD ZO eOdEe jP        e jQ        f            eOdFe jR        e jS        e jT        e jU        f            eOdGe jV        f            eOdHe jW        f            eOdIe jX        f            eOdJe jY        f            eOdKe jZ        f            eOdLe j[        f            eOdMe j\        f            eOdNe j]        f            eOdOe j^        f            eOdPe j_        e j`        f            eOdQe ja        f            eOdRe jb        f            eOdSe jc        f            eOdTe jd        f            eOdUe je        f            eOdVdW e jf        D                         G dX dYee'          Zg G dZ d[e          ZhegeLe ji        <   eg eG            dY<   ej                    dY           e?D ]\  ZkZlZHZmeHp*ekn                                o                    d\d]          d^z   ZHemefZpn eqeme          remfZpneemfZp e@eHepdAeDi          ZrereLel<   er eG            eH<   ej                    eH           [? ej        e e                      Zs ej        ej        d           at ej        ej        d           auejv        ded	ej        fd_            Zwej         ejx        d`dab          dedcej        d	ej        fdd                        ZydS )f    N)local)libav)get_last_error)fprintfstderr)freemalloc)	ErrorTypeFFmpegErrorLookupError	HTTPErrorHTTPClientErrorUndefinedErrorcodereturnc                 R    t          | dz  | dz	  dz  | dz	  dz  | dz	  dz  f          S )zaConvert an integer error code into 4-byte tag.

    >>> code_to_tag(1953719668)
    b'test'

                )bytes)r   s    C/home/agentuser/manim-venv/lib/python3.11/site-packages/av/error.pycode_to_tagr      sF     4KQY$RZ4RZ4		
      tagc                     t          |           dk    rt          d          | d         | d         dz  z   | d         dz  z   | d         d	z  z   S )
zcConvert a 4-byte error tag into an integer code.

    >>> tag_to_code(b'test')
    1953719668

       zError tags are 4 bytes.r      r      r      r   )len
ValueError)r   s    r   tag_to_coder#   +   sS     3xx1}}2333Fs1v{#s1v|4A"EEr   c                   V     e Zd ZdZd fd	Zed             Zed             Zd Z xZ	S )r   an  Exception class for errors from within FFmpeg.

    .. attribute:: errno

        FFmpeg's integer error code.

    .. attribute:: strerror

        FFmpeg's error message.

    .. attribute:: filename

        The filename that was being operated on (if available).

    .. attribute:: log

        The tuple from :func:`av.logging.get_last_log`, or ``None``.

    Nc                     || _         || _        ||g}|s|r,|                    |           |r|                    |            t                      j        |  t          |          | _        d S N)errnostrerrorappendsuper__init__tupleargs)selfr   messagefilenamelogr-   	__class__s         r   r+   zFFmpegError.__init__M   sz    
g 	!s 	!KK!!! !C   $$KK			r   c                 @    	 | j         d         S # t          $ r Y d S w xY wNr   r-   
IndexErrorr.   s    r   r0   zFFmpegError.filenameY   5    	9Q< 	 	 	DD	    
c                 @    	 | j         d         S # t          $ r Y d S w xY w)Nr    r5   r7   s    r   r1   zFFmpegError.log`   r8   r9   c                    d}| j         | d| j          d}| j        | | j         }| j        r| d| j        }| j        rD| d| j        d                                          d| j        d                                          }|S )N z[Errno ] : ; last error log: [r   r   )r'   r(   r0   r1   stripr.   msgs     r   __str__zFFmpegError.__str__g   s    :!/////C=$)$-))C= 	.--DM--C8 	WW48A;+<+<+>+>WW$(1+BSBSBUBUWW  
r   )NN)
__name__
__module____qualname____doc__r+   propertyr0   r1   rC   __classcell__r2   s   @r   r   r   8   s         (
  
  
  
  
  
    X   X      r   r   s   PyAVzError in PyAV callbackc                       e Zd ZdS )r   NrD   rE   rF    r   r   r   r   }           Dr   r   c                       e Zd ZdS )r   NrL   rM   r   r   r   r      rN   r   r   c                       e Zd ZdS )r   NrL   rM   r   r   r   r      rN   r   r   BSF_NOT_FOUNDBSFNotFoundErrorBUGBUFFER_TOO_SMALLDECODER_NOT_FOUNDDEMUXER_NOT_FOUNDENCODER_NOT_FOUNDEOFEOFErrorEXITEXTERNALFILTER_NOT_FOUNDINVALIDDATAInvalidDataErrorMUXER_NOT_FOUNDOPTION_NOT_FOUNDPATCHWELCOMEPatchWelcomeErrorPROTOCOL_NOT_FOUNDUNKNOWNEXPERIMENTALINPUT_CHANGEDOUTPUT_CHANGEDHTTP_BAD_REQUESTHTTPBadRequestErrorHTTP_UNAUTHORIZEDHTTPUnauthorizedErrorHTTP_FORBIDDENHTTPForbiddenErrorHTTP_NOT_FOUNDHTTPNotFoundErrorHTTP_OTHER_4XXHTTPOtherClientErrorHTTP_SERVER_ERRORHTTPServerErrorPYAV_CALLBACKPyAVCallbackErrorc                   8     e Zd Z fdZd ZddZd Zd Z xZS )	EnumTypec                 L    t                                          | |||          S r&   )r*   __new__)mclnamebasesattrsr-   r2   s        r   ry   zEnumType.__new__   s    wwsD%777r   c                 N    i | _         i | _        g | _        |D ]} | j        |  d S r&   )_by_name	_by_value_all_create)r.   r{   r|   r}   itemsspecs         r   r+   zEnumType.__init__   sB    	 	  	 DDL$	  	 r   NFc                 ~    	 | j         |         }n-# t          $ r   | t          |||          }|| j         |<   Y nw xY w|S r&   )r   KeyErrorsentinel)r.   r{   valuedocby_value_onlyitems         r   r   zEnumType._create   s^    	)>%(DD 	) 	) 	)4$s33D$(DN5!!!	) s    '::c                 *    t          | j                  S r&   )r!   r   r7   s    r   __len__zEnumType.__len__   s    49~~r   c                 *    t          | j                  S r&   )iterr   r7   s    r   __iter__zEnumType.__iter__   s    DIr   )NF)	rD   rE   rF   ry   r+   r   r   r   rI   rJ   s   @r   rw   rw      sy        8 8 8 8 8                r   rw   c                       e Zd ZdZ ej        ed          Z ej        ej        d          Z	ddedej        fdZ
d Zd	 Zd
 Zed             ZdS )EnumItemzAn enumeration of FFmpeg's error types.

    .. attribute:: tag

        The FFmpeg byte tag for the error.

    .. attribute:: strerror

        The error message that would be returned.
    readonly)
visibilityNr{   r   c                 |    |t           urt          d| j        j         d          || _        || _        || _        d S )NzCannot instantiate .)r   RuntimeErrorr2   rD   r{   r   rG   )r.   	sentinel_r{   r   r   s        r   	__cinit__zEnumItem.__cinit__   sE    H$$OT^5LOOOPPP	
r   c           	      ^    d| j         j         d| j         j         d| j         d| j        dd	S )N<r   :z(0xxz)>)r2   rE   rD   r{   r   r7   s    r   __repr__zEnumItem.__repr__   s>    g4>,ggt~/FggggW[Wagggggr   c                     | j         S r&   )r{   r7   s    r   rC   zEnumItem.__str__   s
    yr   c                     | j         S r&   )r   r7   s    r   __int__zEnumItem.__int__   s
    zr   c                 *    t          | j                  S r&   )r   r   r7   s    r   r   zEnumItem.tag   s    4:&&&r   r&   )rD   rE   rF   rG   cythondeclarestrr{   intr   r   r   rC   r   rH   r   rM   r   r   r   r      s        	 	 6>#*555DFN6:*===E  VZ    h h h     ' ' X' ' 'r   r   r
   rE   c                 "    g | ]}|d d         S r4   rM   ).0r   s     r   
<listcomp>r      s     8V8V8V12A28V8V8Vr   classesc                     t          t          | t                    }t          | t          |fdt
          i          }|D ]}|t          |<   |t                      | <   t          	                    |            |S )NrE   )
getattr__builtins__OSErrortyper   rD   r   globals__all__r)   )r{   codesbaseclsr   s        r   _extend_builtinr      sp    <w//D
tk4(<*B
C
CC    GIIdONN4Jr   PermissionErrorBlockingIOErrorChildProcessErrorConnectionAbortedErrorConnectionRefusedErrorConnectionResetErrorFileExistsErrorInterruptedErrorIsADirectoryErrorFileNotFoundErrorNotADirectoryErrorBrokenPipeErrorProcessLookupErrorTimeoutErrorMemoryErrorNotImplementedErrorOverflowErrorr   c                 $    g | ]}|t           v|S rM   )r   )r   r   s     r   r   r   "  s"    TTTTG@S@SD@S@S@Sr   c                       e Zd Zd ZdS )ArgumentErrorc                    d}| j         | | j          }| j        r| d| j        }| j        | d| j         }| j        rD| d| j        d                                          d| j        d                                          }|S )Nr<   r>   z
 returned r?   r   r=   r   )r(   r0   r'   r1   r@   rA   s     r   rC   zArgumentError.__str__&  s    =$)$-))C= 	.--DM--C:!00DJ00C8 	WW48A;+<+<+>+>WW$(1+BSBSBUBUWW  
r   N)rD   rE   rF   rC   rM   r   r   r   r   %  s#            r   r   c                       e Zd ZdZdS )r   zLFallback exception type in case FFmpeg returns an error we don't know about.N)rD   rE   rF   rG   rM   r   r   r   r   6  s        VVDr   r   _r<   Errorc                     t          t          dd           }|-t          t          d           t	          j        |  t          dz  a| pt          j                    } | t          _        | r
t          dz  at           S )Nexc_infoz&PyAV library exception being dropped:
r   )
r   _localr   r   	tracebackprint_exception
_err_countsysr   c_PYAV_STASHED_ERROR)r   existings     r   stash_exceptionr   ^  st     vz400HABBB!8,,a
)3<>>HFO a
   r   F)checkresc           	         t           rOt          t          dd          }|7t           dz  a dt          _        |d                             |d                   | dk    r| S t                      \  }}|t          k    r|a|}nd}|  }t          j        t          j	        t          t          j        t          j        t                    z                      }|t          j        k    rt!                      	 |t"          k    rt$          }n6t          j        | |t          j                   |pt)          j        |          }t,                              |t0                    }	 |	||||          # t3          |           w xY w)z6Raise appropriate exceptions from library return code.r   Nr   r   r   )r   r   r   r   with_tracebackr   _last_log_countr   castp_charr	   libAV_ERROR_MAX_STRING_SIZEsizeofcharNULLr   r   PYAV_STASHED_ERROR_messageav_strerrorosr(   r   getr   r   )
r   r0   r   	log_countlast_logr1   r   error_bufferr/   r   s
             r   	err_checkr   p  s^     :6:t44!OJ"FO1+,,Xa[999
axx
 )**Ix?""#tD"(+vc:V]4=P=PPQQ# #L v{""mm'''0GGOCs/KLLL"7bk$&7&7Gkk$//c$3///\s   4A7E+ +E<r&   )zr'   r   r   r   	threadingr   r   cython.cimportsr   r   cython.cimports.av.loggingr   cython.cimports.libc.stdior   r   cython.cimports.libc.stdlibr   r	   r   r   objectr   ccallr   r   r   r#   	Exceptionr   r   r   r   r   r   r   AVERROR_BSF_NOT_FOUNDAVERROR_BUGr   AVERROR_BUFFER_TOO_SMALLr"   AVERROR_DECODER_NOT_FOUNDAVERROR_DEMUXER_NOT_FOUNDAVERROR_ENCODER_NOT_FOUNDAVERROR_EOFrY   AVERROR_EXITAVERROR_EXTERNALAVERROR_FILTER_NOT_FOUNDAVERROR_INVALIDDATAAVERROR_MUXER_NOT_FOUNDAVERROR_OPTION_NOT_FOUNDAVERROR_PATCHWELCOMEAVERROR_PROTOCOL_NOT_FOUNDAVERROR_UNKNOWNAVERROR_EXPERIMENTALAVERROR_INPUT_CHANGEDAVERROR_OUTPUT_CHANGEDAVERROR_HTTP_BAD_REQUESTAVERROR_HTTP_UNAUTHORIZEDAVERROR_HTTP_FORBIDDENAVERROR_HTTP_NOT_FOUNDAVERROR_HTTP_OTHER_4XXAVERROR_HTTP_SERVER_ERROR_ffmpeg_specsr   rw   cclassr   rD   r
   enumr   r{   r   r(   
av_err2strr   dict__annotations__r   EACCESEPERMEAGAINEALREADYEINPROGRESSEWOULDBLOCKECHILDECONNABORTEDECONNREFUSED
ECONNRESETEEXISTEINTREISDIRENOENTENOTDIREPIPE	ESHUTDOWNESRCH	ETIMEDOUTENOMEMENOSYSERANGE	errorcoder   r   EINVALr)   	enum_namer   r   titlereplacer|   
issubclassr   r   r   r   cfuncr   	exceptvalr   rM   r   r   <module>r2     s    				 



            ( ( ( ( ( ( 5 5 5 5 5 5 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4   6>&&&((++ fj U    " 	FU 	Fvz 	F 	F 	F 	F< < < < <) < < <@ &v~fj++g2F2FGG +V^C1IJJ 	 	 	 	 	+{ 	 	 		 	 	 	 	 	 	 		 	 	 	 	k 	 	 	 s002DkR
S_dL1#66jI388$L388$L388$L
S_j(3cd+#&&d3#66kJS,,.@*M44dKH#66kJc..0CTJC::D+N$$dD1c..d;s00$=22D$?#668M_388:QSbc224H/Z224GY224JO\388:KYW*,?N5>    t   < "' "' "' "' "' "' "' "'J H(|X68V8V8V8V8V 	
  4 4DGGIIdiz)))2&
{33      !EL%+#> ? ? ? 
\5>5#4e6GH   #el_ 5 5 5 (5+=*? @ @ @ (5+=*? @ @ @ &)9(; < < < !EL? 3 3 3 "U[N 3 3 3 #el_ 5 5 5 #el_ 5 5 5 $u}&6 7 7 7 !EK#A B B B $u{n 5 5 5  2 3 3 3  / / / % 7 7 7 %, 1 1 1 	TTU_TTT U U U    K   "	 	 	 	 	[ 	 	 	 & *		/      $1  ItT4?9??$$,,S"55?D|	D+	&	& $d#
$tU\84
5
5C GDM GGIIdONN4 
	(	(V^FJ**
 &.Q// ! !fj ! ! ! !" "E"""+ +6: + + + + #" + + +r   