
    djI                        d dl Z d dlmZ d dlZd dlmc mZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ  G d de          Z G d	 d
e          Z ej        e e                      Z ej        e e j                              Zej        dej        ej        ej                          defd            Zej         G d d                      Zej        d             Zej         G d d                      Z dS )    N)IntEnum)Codec)
Dictionary)	err_check)get_video_formatc                       e Zd Zej        Zej        Zej        Z	ej
        Zej        Zej        Zej        Zej        Zej        Zej        Zej        Zej        Zej        ZdZdZdS )HWDeviceType      N) __name__
__module____qualname__libAV_HWDEVICE_TYPE_NONEnoneAV_HWDEVICE_TYPE_VDPAUvdpauAV_HWDEVICE_TYPE_CUDAcudaAV_HWDEVICE_TYPE_VAAPIvaapiAV_HWDEVICE_TYPE_DXVA2dxva2AV_HWDEVICE_TYPE_QSVqsvAV_HWDEVICE_TYPE_VIDEOTOOLBOXvideotoolboxAV_HWDEVICE_TYPE_D3D11VAd3d11vaAV_HWDEVICE_TYPE_DRMdrmAV_HWDEVICE_TYPE_OPENCLopenclAV_HWDEVICE_TYPE_MEDIACODEC
mediacodecAV_HWDEVICE_TYPE_VULKANvulkanAV_HWDEVICE_TYPE_D3D12VAd3d12vaamfohcodec     K/home/agentuser/manim-venv/lib/python3.11/site-packages/av/codec/hwaccel.pyr	   r	      s        $D&E$D&E&E

"C4L*G

"C(F0J(F*G
CGGGr-   r	   c                   J    e Zd ZdZej        Zej        Zej	        Z
ej        ZdS )HWConfigMethodr   N)r   r   r   r   r   'AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTXhw_device_ctx'AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTXhw_frame_ctx"AV_CODEC_HW_CONFIG_METHOD_INTERNALinternal AV_CODEC_HW_CONFIG_METHOD_AD_HOCad_hocr,   r-   r.   r0   r0      s8        D3  >L5H1FFFr-   r0   ptrreturnc                    	 t           t          j        t          j        |                    S # t          $ r Y nw xY wt          t                    }|                    |            |t           t          j        t          j        |           <   |S N)_singletonscythoncast
Py_ssize_tKeyErrorHWConfig_cinit_sentinel_init)r9   configs     r.   wrap_hwconfigrF   -   s~    6;v'8#>>??   00F
LL7=KF-s334Ms   ), 
99c                       e Zd Zd Zej        dej        ej        ej	                          dej
        fd            Zd Zed             Zed             Zed             Zed	             Zd
S )rB   c                 6    |t           urt          d          d S )NzCannot instantiate CodecContext)rC   RuntimeError)selfsentinels     r.   __init__zHWConfig.__init__;   s$    ?**@AAA +*r-   r9   r:   c                     || _         d S r<   )r9   )rJ   r9   s     r.   rD   zHWConfig._init?   s     r-   c                     d| j         j         dt          j        | j                   d| j        r| j        j        nd  d| j         dt          j	        t          j
        | j                  ddS )Nz<av.z device_type=z format=z is_supported=z at 0xx>)	__class__r   r   av_hwdevice_get_type_namedevice_typeformatnameis_supportedr>   r?   r@   r9   rJ   s    r.   __repr__zHWConfig.__repr__E   s    c4>* c c89IJJc c*.+?dk&&4c c !-c c 6<[ARTXT\5]5]bc c c	
r-   c                 4    t          | j        j                  S r<   )r	   r9   rS   rW   s    r.   rS   zHWConfig.device_typeM   s    DH0111r-   c                 8    t          | j        j        dd          S )Nr   )r   r9   pix_fmtrW   s    r.   rT   zHWConfig.formatQ   s     0!Q777r-   c                 4    t          | j        j                  S r<   )r0   r9   methodsrW   s    r.   r]   zHWConfig.methodsU   s    dh.///r-   c                 N    t          | j        j        t          j        z            S r<   )boolr9   r]   r   r1   rW   s    r.   rV   zHWConfig.is_supportedY   s    DH$s'RRSSSr-   N)r   r   r   rL   r>   cfuncpointerconstr   AVCodecHWConfigvoidrD   rX   propertyrS   rT   r]   rV   r,   r-   r.   rB   rB   9   s        B B B \>&,s/B"CD	   \

 
 
 2 2 X2 8 8 X8 0 0 X0 T T XT T Tr-   rB   c                      g } t           j        }	 t          j        |          }|t           j        k    rn5|                     t          j        t          |                               Z| S r<   )r   r   av_hwdevice_iterate_typesappendrR   r	   )resultrO   s     r.   hwdevices_availablerj   ^   sf    F5AF)!,,)))c3LOODDEEE	F
 Mr-   c                   B    e Zd Z	 	 	 	 	 d
dZdefdZdedefdZd	 ZdS )HWAccelNTFc                    t          |t                    r|| _        nht          |t                    r't	          t          j        |                    | _        n,t          |t                    r|| _        nt          d          || _        d| _	        | j        t          j
        k    r|rt	          |          | _	        |d n| | _        || _        |si nt          |          | _        | j        t          j
        k    r"| j        r| j                            dd           |sdn|| _        t"          j        | _        d | _        d S )NzUnknown type for device_typer   primary_ctx1)
isinstancer	   _device_typestrintr   av_hwdevice_find_type_by_name
ValueErroris_hw_owned	device_idr   _deviceallow_software_fallbackdictoptions
setdefaultflagsr>   NULLr9   rE   )rJ   rS   devicery   r{   r}   rv   s          r.   rL   zHWAccel.__init__l   s3    k<00 	= +DS)) 	= #C$Ek$R$R S SDS)) 	= +D;<<<& 111f1 [[DN%~ttf;'>$!(;rrd7mm 111d6F1L##M3777#.QQ
;r-   codecc           	         |j         D ]5}|j        j        t          j        z  s| j        r|j        | j        k    r4 nt          d|           || _        t          j
        }| j        r| j                                        }|}t          | j                  }t          t          j        t          j        | j                  |j        j        ||j        | j                             d S )Nz!No supported hardware config for )hardware_configsr9   r]   r   r1   rq   rS   NotImplementedErrorrE   r>   r~   rx   encoder   r{   r   av_hwdevice_ctx_createaddressr}   )rJ   r   rE   c_devicedevice_bytes	c_optionss         r.   _initialize_hw_contextzHWAccel._initialize_hw_context   s    , 	S 	SFJ&)TT   V%74;L%L%LE%&Q%&Q&QRRR"(+< 	$<..00L#H *4< 8 8	&tx((
&
 	
 	
 	
 	
 	
r-   r:   c                     | j         rt          d          t          | j        | j        | j        | j        | j                  }|                    |           |S )z>Create a new hardware accelerator context with the given codecz$Hardware context already initialized)rS   r   ry   r{   rv   )	r9   rI   rl   rq   rx   ry   r{   rv   r   )rJ   r   rets      r.   createzHWAccel.create   sg    8 	GEFFF)<$($@L(
 
 
 	""5)))
r-   c                 n    | j         r-t          j        t          j        | j                              d S d S r<   )r9   r   av_buffer_unrefr>   r   rW   s    r.   __dealloc__zHWAccel.__dealloc__   s9    8 	:tx 8 899999	: 	:r-   )NTNNF)	r   r   r   rL   r   r   rl   r   r   r,   r-   r.   rl   rl   j   s        
  $   B
E 
 
 
 
8E g    : : : : :r-   rl   )!weakrefenumr   r>   cython.cimports.libavcimportslibavr   cython.cimports.av.codec.codecr   cython.cimports.av.dictionaryr   cython.cimports.av.errorr   cython.cimports.av.video.formatr   r	   r0   declareobjectrC   WeakValueDictionaryr=   r`   ra   rb   rc   rB   rF   cclassccallrj   rl   r,   r-   r.   <module>r      s           # # # # # # # # # 0 0 0 0 0 0 4 4 4 4 4 4 . . . . . . < < < < < <    7   &2 2 2 2 2W 2 2 2 !&.22fnV%@W%@%B%BCC v~fl33F&GH X     !T !T !T !T !T !T !T !TH    O: O: O: O: O: O: O: O: O: O:r-   