
    \j)                     4   U d dl Z 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(                  dej*                  d	efd
       Zej(                  ded	ej*                  fd       Z G d de      Z ej6                  ej*                   ed            Z ej6                  ed      Z G d dee      Z G d de      Z  G d de      Z!de
jD                   defde
jF                   de$fde
jJ                   de&fde
jN                   defde
jP                   defde
jR                   defde
jT                   de+fd e
jX                   ddfd!e
jZ                   ddfd"e
j\                   defd#e
j^                   d$e&fd%e
j`                   defd&e
jb                   defd'e
jd                   d(dfd)e
jf                   defd*e
jh                   ddfd+e
jj                   ddfd,e
jl                   ddfd-e
jn                   ddfd.e
jp                   d/e!fd0e
jr                   d1e!fd2e
jt                   d3e!fd4e
jv                   d5e!fd6e
jx                   d7e!fd8e
jz                   d9e!fd:e
j|                   d;e fd<ed=e$ffZ? e j                  d>e?D  cg c]	  ^} }}| |f c}}} eA?      ZBd@eB_C        d	efdAZDd	efdBZE eFeD      eB_G         eFeE      eB_H        i ZIeJeKdC<   dD ZL eLdEej                  ej                  f        eLdFej                  ej                  ej                  ej                  f        eLdGej                  f        eLdHej                  f        eLdIej                  f        eLdJej                  f        eLdKej                  f        eLdLej                  f        eLdMej                  f        eLdNej                  f        eLdOej                  f        eLdPej                  ej                  f        eLdQej                  f        eLdRej                  f        eLdSej                  f        eLdTej                  f        eLdUej                  f        eLdVej                  D cg c]	  }|eIvs| c}        G dW dXee&      Zd G dY dZe      ZeedeIej                  <   ed eg       dX<   ej                  dX       e?D ]q  \  ZiZjZkZlekxs# eij                         j                  d[d\      d]z   ZkelefZon epele      relfZoneelfZo eqekeod^eAi      ZrereIej<   er eg       ek<   ej                  ek       s [? ej6                  es e             Zt ej6                  ej*                  d       au ej6                  ej*                  d       avej                  ded	ej*                  fd_       Zxej(                   ej                  d`dab      dedcej*                  d	ej*                  fdd              Zzyc c}}} w c c}w )f    N)local)libav)get_last_error)fprintfstderr)freemalloc)	ErrorTypeFFmpegErrorLookupError	HTTPErrorHTTPClientErrorUndefinedErrorcodereturnc                 J    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    ;/root/.hermes/venv/lib/python3.12/site-packages/av/error.pycode_to_tagr      sA     4KQY$RZ4RZ4		
     tagc                 t    t        |       dk7  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#   +   sL     3x1}233Fs1v{#s1v|4A"EEr   c                   J     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``.

    c                     ||g}|s|r$|j                  |       |r|j                  |       t        |   |  || _        || _        t        |      | _        y N)appendsuper__init__errnostrerrortupleargs)selfr   messagefilenamelogr-   	__class__s         r   r)   zFFmpegError.__init__M   sR    gsKK!C $
$K	r   c                 @    	 | j                   d   S # t        $ r Y y w xY w)Nr   r-   
IndexErrorr.   s    r   r0   zFFmpegError.filenameY   '    	99Q< 		    	c                 @    	 | j                   d   S # t        $ r Y y w xY w)Nr    r4   r6   s    r   r1   zFFmpegError.log`   r7   r8   c                 P   d}| j                   | d| j                    d}| j                  | | j                   }| j                  r| d| j                  }| j                  r@| d| j                  d   j	                          d| j                  d   j	                          }|S )N z[Errno ] : ; last error log: [r   r   )r*   r+   r0   r1   stripr.   msgs     r   __str__zFFmpegError.__str__g   s    ::!EB/C==$E$--)C==EDMM,-C88%*488A;+<+<+>*?r$((1+BSBSBUAVW  
r   )NN)
__name__
__module____qualname____doc__r)   propertyr0   r1   rB   __classcell__)r2   s   @r   r   r   8   s:    (
     r   r   s   PyAVzError in PyAV callbackc                       e Zd Zy)r   NrC   rD   rE    r   r   r   r   }       r   r   c                       e Zd Zy)r   NrJ   rK   r   r   r   r      rL   r   r   c                       e Zd Zy)r   NrJ   rK   r   r   r   r      rL   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_TOO_MANY_REQUESTSHTTPTooManyRequestsErrorHTTP_OTHER_4XXHTTPOtherClientErrorHTTP_SERVER_ERRORHTTPServerErrorPYAV_CALLBACKPyAVCallbackErrorr
   )modulez'An enumeration of FFmpeg's error types.c                 ,    t        | j                        S )z"The FFmpeg byte tag for the error.)r   valuer6   s    r   _error_type_tagry      s    tzz""r   c                 t    | j                   t        k(  rt        S t        j                  | j                          S )z)The error message that would be returned.)rx   c_PYAV_STASHED_ERRORPYAV_STASHED_ERROR_messagelib
av_err2strr6   s    r   _error_type_strerrorr      s*    zz))))>>4::+&&r   classesc                     t        t        | t              }t        | t        |fdt
        i      }|D ]  }|t        |<    |t               | <   t        j                  |        |S )NrD   )
getattr__builtins__OSErrortyper   rC   r   globals__all__r'   )namecodesbaseclsr   s        r   _extend_builtinr      s`    <w/D
tk4(<*B
CC   GIdONN4Jr   PermissionErrorBlockingIOErrorChildProcessErrorConnectionAbortedErrorConnectionRefusedErrorConnectionResetErrorFileExistsErrorInterruptedErrorIsADirectoryErrorFileNotFoundErrorNotADirectoryErrorBrokenPipeErrorProcessLookupErrorTimeoutErrorMemoryErrorNotImplementedErrorOverflowErrorr   c                       e Zd Zd Zy)ArgumentErrorc                 N   d}| j                   | | j                    }| j                  r| d| j                  }| j                  | d| j                   }| j                  r@| d| j                  d   j	                          d| j                  d   j	                          }|S )Nr;   r=   z
 returned r>   r   r<   r   )r+   r0   r*   r1   r?   r@   s     r   rB   zArgumentError.__str__   s    ==$E$--)C==EDMM,-C::!EDJJ<0C88%*488A;+<+<+>*?r$((1+BSBSBUAVW  
r   N)rC   rD   rE   rB   rK   r   r   r   r      s    r   r   c                       e Zd ZdZy)r   zLFallback exception type in case FFmpeg returns an error we don't know about.N)rC   rD   rE   rF   rK   r   r   r   r      s    Vr   r   _r;   ErrorrD   c                     t        t        dd       }|+t        t        d       t	        j
                  |  t        dz  a| xs 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   r{   )r   existings     r   stash_exceptionr   %  sf     vz40HAB!!8,a
)3<<>HFOa
   r   F)checkresc           	         t         r>t        t        dd      }|+t         dz  a dt        _        |d   j	                  |d         | dk\  r| S t               \  }}|t        kD  r|a|}nd}|  }t        j                  t        j                  t        t        j                  t        j                  t              z              }|t        j                  k(  r
t!               	 |t"        k(  rt$        }n>t        j&                  | |t        j                         |xs t)        j*                  |      }t,        j/                  |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_countcythoncastp_charr	   r}   AV_ERROR_MAX_STRING_SIZEsizeofcharNULLr   r{   r|   av_strerrorosr+   r   getr   r   )
r   r0   r   	log_countlast_logr1   r   error_bufferr/   r   s
             r   	err_checkr   7  s*    6:t4!OJ"FO1+,,Xa[99
ax
 )*Ix?"#tD"(++vc::V]]4=PPQ#L v{{"m''0GOOCs/K/KL"7bkk$&7Gkk$/$3//\s   A3E Er&   ){enumr*   r   r   r   	threadingr   r   cython.cimportsr   r}   cython.cimports.av.loggingr   cython.cimports.libc.stdior   r   cython.cimports.libc.stdlibr   r	   r   ccallintr   r   r#   	Exceptionr   declarer{   strr|   r   r   r   AVERROR_BSF_NOT_FOUNDAVERROR_BUGRuntimeErrorAVERROR_BUFFER_TOO_SMALLr"   AVERROR_DECODER_NOT_FOUNDAVERROR_DEMUXER_NOT_FOUNDAVERROR_ENCODER_NOT_FOUNDAVERROR_EOFrW   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_TOO_MANY_REQUESTSAVERROR_HTTP_OTHER_4XXAVERROR_HTTP_SERVER_ERROR_ffmpeg_specsIntEnumrC   r
   rF   ry   r   rG   r   r+   r   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   r'   	enum_namer   r   r   titlereplacebases
issubclassr   r   objectr   r   r   cfuncr   	exceptvalr   )r   rx   r   r   s   0000r   <module>r     s     	 
    ( 5 6 4 fjj U  " 	FU 	Fvzz 	F 	F<) <@ &v~~fjj+g2FG +V^^C1IJ 	+{ 		 		k 	 s0002DkR
S__dL1#666jI3888$L3888$L3888$L
S__j(3cd+#&&&d3#666kJS,,,.@*M444dKH#666kJc...0CTJC:::D+N$$$dD1c...d;s000$=222D$?#6668M_3888:QSbc2224H/Z2224GY B BBD^`op2224JO\3888:KYW*,?N7@ DLL*788tUQdE]8	
 >	 #U #
'# ' )	23	   !ELL%++#> ? 
\\5>>5#4#4e6G6GH #ell_ 5 (5+=+=*? @ (5+=+=*? @ &)9)9(; < !ELL? 3 "U[[N 3 #ell_ 5 #ell_ 5 $u}}&6 7 !EKK#A B $u{{n 5  2 3  / % 7 %,, 1 	U__TTG@SDT UK "	[ 	 & *	/    $1 ItT4?9??$,,S"5?D|	D+	&d#
tU\84
5C GDM GIdONN4#&  
	(V^^FJJ*
 &..Q/ !fjj ! !" "E"+6:: + + # +W 9v Us   X	X
X
