
    Eje                     <   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j0                  ej2                  ej4                        defd       Zej:                  ej<                   G d d                    Zej>                  d        Z ej:                  ej<                   G d d                    Z!y)    N)IntEnum)Codec)
Dictionary)	err_check)get_video_formatc                   L   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j0                  Zej4                  Zej8                  ZdZdZy)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     F/var/www/html/qr/venv/lib/python3.12/site-packages/av/codec/hwaccel.pyr	   r	      s    $$D&&E$$D&&E&&E

"
"C44L**G

"
"C((F00J((F**G
CGr-   r	   c                   p    e Zd ZdZej
                  Zej                  Zej                  Z
ej                  Zy)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3  >>L55H11Fr-   r0   ptrreturnc                    	 t         t        j                  t        j                  |          S # t        $ r Y nw xY wt        t              }|j                  |        |t         t        j                  t        j                  |       <   |S N)_singletonscythoncast
Py_ssize_tKeyErrorHWConfig_cinit_sentinel_init)r9   configs     r.   wrap_hwconfigrF   -   sk    6;;v'8'8#>?? 0F
LL7=KF--s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y
)rB   c                 *    |t         urt        d      y )NzCannot instantiate CodecContext)rC   RuntimeError)selfsentinels     r.   __init__zHWConfig.__init__<   s    ?*@AA +r-   r9   r:   c                     || _         y 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__F   s    4>>**+ ,889I9IJK L*.++dkk&&4@ A --.fV[[ARARTXT\T\5]^_4``ac	
r-   c                 @    t        | j                  j                        S r<   )r	   r9   rS   rW   s    r.   rS   zHWConfig.device_typeN   s    DHH0011r-   c                 D    t        | j                  j                  dd      S )Nr   )r   r9   pix_fmtrW   s    r.   rT   zHWConfig.formatR   s     0 0!Q77r-   c                 @    t        | j                  j                        S r<   )r0   r9   methodsrW   s    r.   r]   zHWConfig.methodsV   s    dhh..//r-   c                 b    t        | j                  j                  t        j                  z        S r<   )boolr9   r]   r   r1   rW   s    r.   rV   zHWConfig.is_supportedZ   s"    DHH$$s'R'RR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 \\>>&,,s/B/B"CD	 

 2 2 8 8 0 0 T Tr-   rB   c                      g } t         j                  }	 t        j                  |      }|t         j                  k(  r	 | S | j                  t        j                  t        |                   Yr<   )r   r   av_hwdevice_iterate_typesappendrR   r	   )resultrO   s     r.   hwdevices_availablerj   _   s]    F55A
))!,)))M 	c33LODE	 r-   c                   @    e Zd Z	 	 	 	 	 ddZdefdZdedefdZd Zy)	HWAccelNc                    t        |t              r|| _        nWt        |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                  j                  dd       |sdn|| _        t"        j$                  | _        d | _        y )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__n   s     k<0 +DS) #C$E$Ek$R SDS) +D;<<& 1 11f [DN%~tfX'>$!(rd7m 1 11d6F6FLL##M37#Q
;;r-   codecc           	      V   |j                   D ]Q  }|j                  j                  t        j                  z  s+| j
                  r|j                  | j
                  k7  rQ n t        d|       || _        t        j                  }| j                  r| j                  j                         }|}t        | j                        }t        t        j                   t        j"                  | j                        |j                  j                  ||j                  | j$                               y )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FJJ&&)T)TT  V%7%74;L;L%L	S &(I%&QRR"(++<<<<..0L#H *4<< 8	&&txx(

&&

	
r-   r:   c                     | j                   rt        d      t        | j                  | 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   s]    88EFF))<<$($@$@LL((
 	""5)
r-   c                     | j                   r3t        j                  t        j                  | j                                y y r<   )r9   r   av_buffer_unrefr>   r   rW   s    r.   __dealloc__zHWAccel.__dealloc__   s)    88txx 89 r-   )NTNNF)	r   r   r   rL   r   r   rl   r   r   r,   r-   r.   rl   rl   k   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   finalcclassccallrj   rl   r,   r-   r.   <module>r      s      # # 0 4 . <7 &2W 2 !&..2fnnV%@W%@%@%BC v~~fll33F3F&GH X   !T !T  !TH   O: O:  O:r-   