
    Ej.                        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	jF                   de fde	jH                   de%fde	jL                   de'fde	jP                   de fde	jR                   de fde	jT                   de fde	jV                   de,fd e	jZ                   ddfd!e	j\                   ddfd"e	j^                   de fd#e	j`                   d$e'fd%e	jb                   de fd&e	jd                   de fd'e	jf                   d(dfd)e	jh                   de fd*e	jj                   ddfd+e	jl                   ddfd,e	jn                   ddfd-e	jp                   ddfd.e	jr                   d/e"fd0e	jt                   d1e"fd2e	jv                   d3e"fd4e	jx                   d5e"fd6e	jz                   d7e"fd8e	j|                   d9e"fd:e	j~                   d;e!fd<ed=e%ffZ@ G d> d?eA      ZBej                   G d@ dA             ZD eBdBeDfdCeEie@D  cg c]  } | ddD 	 c}       ZFeFD ]O  ZGeG eH       eGj                  <   eGj                  ek(  reeG_K        . e	j                  eGj                         eG_K        Q i ZMeNeOdE<   dF ZP ePdGe j                  e j                  f        ePdHe j                  e j                  e j                  e j                  f        ePdIe j                  f        ePdJe j                  f        ePdKe j                  f        ePdLe j                  f        ePdMe j                  f        ePdNe j                  f        ePdOe j                  f        ePdPe j                  f        ePdQe j                  f        ePdRe j                  e j                  f        ePdSe j                  f        ePdTe j                  f        ePdUe j                  f        ePdVe j                  f        ePdWe j                  f        ePdXe j                  D cg c]	  }|eMvs| c}        G dY dZee'      Zh G d[ d\e      ZieheMe j                  <   eh eH       dZ<   ej                  dZ       e@D ]q  \  ZlZmZIZneIxs# elj                         j                  d]d^      d_z   ZIenefZqn erene      renfZqneenfZq eAeIeqdCeEi      ZseseMem<   es eH       eI<   ej                  eI       s [@ ej&                  e e             Zt ej&                  ej.                  d       au ej&                  ej.                  d       avej                  dfd	ej.                  fd`       Zxej,                   ej                  dadbc      dfddej.                  d	ej.                  fde              Zzyc c} w c c}w )g    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    >/var/www/html/qr/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   NrK   rL   r   r   r   r      rM   r   r   c                       e Zd Zy)r   NrK   rL   r   r   r   r      rM   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PyAVCallbackErrorc                   8     e Zd Z fdZd ZddZd Zd Z xZS )EnumTypec                 (    t         |   | |||      S r&   )r(   __new__)mclnamebasesattrsr-   r2   s        r   rz   zEnumType.__new__   s    wsD%77r   c                 Z    i | _         i | _        g | _        |D ]  } | j                  |   y r&   )_by_name	_by_value_all_create)r.   r|   r}   r~   itemsspecs         r   r)   zEnumType.__init__   s4    	 	 DDLL$	 r   c                     	 | j                   |   }|S # t        $ r"  | t        |||      }|| j                   |<   Y |S w xY wr&   )r   KeyErrorsentinel)r.   r|   valuedocby_value_onlyitems         r   r   zEnumType._create   sP    	)>>%(D
 	  	)$s3D$(DNN5!		)s    '>>c                 ,    t        | j                        S r&   )r!   r   r6   s    r   __len__zEnumType.__len__   s    499~r   c                 ,    t        | j                        S r&   )iterr   r6   s    r   __iter__zEnumType.__iter__   s    DIIr   )NF)	rC   rD   rE   rz   r)   r   r   r   rH   rI   s   @r   rx   rx      s    8 r   rx   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y)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      || _        || _        || _        y )NzCannot instantiate .)r   RuntimeErrorr2   rC   r|   r   rF   )r.   	sentinel_r|   r   r   s        r   	__cinit__zEnumItem.__cinit__   s?    H$!4T^^5L5L4MQOPP	
r   c           	          d| j                   j                   d| j                   j                   d| j                   d| j                  dd	S )N<r   :z(0xxz)>)r2   rD   rC   r|   r   r6   s    r   __repr__zEnumItem.__repr__   sJ    4>>,,-Qt~~/F/F.GqSVW[WaWabcVddfggr   c                     | j                   S r&   )r|   r6   s    r   rB   zEnumItem.__str__   s    yyr   c                     | j                   S r&   )r   r6   s    r   __int__zEnumItem.__int__   s    zzr   c                 ,    t        | j                        S r&   )r   r   r6   s    r   r   zEnumItem.tag   s    4::&&r   r&   )rC   rD   rE   rF   cythondeclarestrr|   intr   r   r   rB   r   rG   r   rL   r   r   r   r      sl    	 6>>#*5DFNN6::*=E VZZ h ' 'r   r   r
   rD   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'   )r|   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   rL   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   rL   r   r   r   r   7  s    Vr   r   _r;   Errorc                     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   c_PYAV_STASHED_ERROR)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_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   q  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&   ){r*   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_EOFrX   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_specsr   rx   cclassr   rC   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   )r   r   s   00r   <module>r0     s    	 
    ( 5 6 4 6>>&&(+ 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@t < "' "' "'J (|X68V12A8V	
  4DGIdiizz))2&

{34   !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:: + + # +E 9Wd Us   Y 	Y%
'Y%
