
    3je                     >   S SK r S SKJr  S SKrS SKJs  Jr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr   " S S\5      r " S	 S
\5      r\R$                  " \\" 5       5      r\R$                  " \\ R*                  " 5       5      r\R.                  S\R0                  \R2                  \R4                        S\4S j5       r\R:                  \R<                   " S S5      5       5       r\R>                  S 5       r \R:                  \R<                   " S S5      5       5       r!g)    N)IntEnum)Codec)
Dictionary)	err_check)get_video_formatc                   T   \ rS rSr\R
                  r\R                  r\R                  r
\R                  r\R                  r\R                  r\R"                  r\R&                  r\R*                  r\R.                  r\R2                  r\R6                  r\R:                  rSrSr Sr!g)HWDeviceType          N)"__name__
__module____qualname____firstlineno__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__static_attributes__r       J/home/wildlama/miniconda3/lib/python3.13/site-packages/av/codec/hwaccel.pyr	   r	      s    $$D&&E$$D&&E&&E

"
"C44L**G

"
"C((F00J((F**G
CGr0   r	   c                   x    \ rS rSrSr\R                  r\R                  r	\R                  r\R                  rSrg)HWConfigMethod   r   r   N)r   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   r0   r1   r3   r3      s8    D33  >>L55H11Fr0   r3   ptrreturnc                     [         [        R                  " [        R                  U 5         $ ! [         a     Of = f[        [        5      nUR                  U 5        U[         [        R                  " [        R                  U 5      '   U$ N)_singletonscythoncast
Py_ssize_tKeyErrorHWConfig_cinit_sentinel_init)r=   configs     r1   wrap_hwconfigrJ   -   sk    6;;v'8'8#>?? 0F
LL7=KF--s34Ms   +. 
;;c                       \ rS rSrS r\R                  S\R                  \R                  \	R                        S\R                  4S j5       rS r\S 5       r\S 5       r\S	 5       r\S
 5       rSrg)rF   9   c                 ,    U[         La  [        S5      eg )NzCannot instantiate CodecContext)rG   RuntimeError)selfsentinels     r1   __init__HWConfig.__init__<   s    ?*@AA +r0   r=   r>   c                     Xl         g r@   r=   )rO   r=   s     r1   rH   HWConfig._init@   s	     r0   c                 H   SU R                   R                   S[        R                  " U R                  5       SU R
                  (       a  U R
                  R                  OS  SU R                   S[        R                  " [        R                  U R                  5      S S3$ )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_supportedrB   rC   rD   r=   rO   s    r1   __repr__HWConfig.__repr__F   s    4>>**+ ,889I9IJK L*.++dkk&&4@ A --.fV[[ARARTXT\T\5]^_4``ac	
r0   c                 @    [        U R                  R                  5      $ r@   )r	   r=   r[   r_   s    r1   r[   HWConfig.device_typeN   s    DHH0011r0   c                 D    [        U R                  R                  SS5      $ )Nr   )r   r=   pix_fmtr_   s    r1   r\   HWConfig.formatR   s     0 0!Q77r0   c                 @    [        U R                  R                  5      $ r@   )r3   r=   methodsr_   s    r1   rh   HWConfig.methodsV   s    dhh..//r0   c                 b    [        U R                  R                  [        R                  -  5      $ r@   )boolr=   rh   r   r5   r_   s    r1   r^   HWConfig.is_supportedZ   s"    DHH$$s'R'RRSSr0   rT   N)r   r   r   r   rQ   rB   cfuncpointerconstr   AVCodecHWConfigvoidrH   r`   propertyr[   r\   rh   r^   r/   r   r0   r1   rF   rF   9   s    B \\>>&,,s/B/B"CD	 

 2 2 8 8 0 0 T Tr0   rF   c                      / n [         R                  n [         R                  " U5      nU[         R                  :X  a   U $ U R                  [         R                  " [        U5      5      5        M]  r@   )r   r   av_hwdevice_iterate_typesappendrZ   r	   )resultrW   s     r1   hwdevices_availablerw   _   s]    F55A
))!,)))M 	c33LODE	 r0   c                   N    \ rS rSr     S
S jrS\4S jrS\S\4S jrS r	S	r
g)HWAccelk   Nc                    [        U[        5      (       a  Xl        Oa[        U[        5      (       a%  [	        [
        R                  " U5      5      U l        O'[        U[        5      (       a  Xl        O[        S5      eX`l        SU l	        U R                  [        R                  :X  a  U(       a  [	        U5      U l	        Uc  S OU U l        X0l        U(       d  0 O
[        U5      U l        U R                  [        R                  :X  a-  U R                  (       a  U R                  R                  SS5        U(       d  SOUU l        ["        R$                  U l        S U l        g )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flagsrB   NULLr=   rI   )rO   r[   devicer   r   r   r   s          r1   rQ   HWAccel.__init__n   s     k<00 +S)) #C$E$Ek$R SDS)) +;<<& 1 11f [DN%~tfX'>$!(rd7m 1 11d6F6FLL##M37#Q
;;r0   codecc           	      ~   UR                    H^  nUR                  R                  [        R                  -  (       d  M1  U R
                  (       a  UR                  U R
                  :w  a  M^    O   [        SU 35      eX l        [        R                  nU R                  (       a  U R                  R                  5       nUn[        U R                  5      n[        [        R                   " [        R"                  " U R                  5      UR                  R                  UUR                  U R$                  5      5        g )Nz!No supported hardware config for )hardware_configsr=   rh   r   r5   r   r[   NotImplementedErrorrI   rB   r   r   encoder   r   r   av_hwdevice_ctx_createaddressr   )rO   r   rI   c_devicedevice_bytes	c_optionss         r1   _initialize_hw_contextHWAccel._initialize_hw_context   s    ,,FJJ&&)T)TT  V%7%74;L;L%L - &(I%&QRR"(++<<<<..0L#H *4<< 8	&&txx(

&&

	
r0   r>   c                     U R                   (       a  [        S5      e[        U R                  U R                  U R
                  U R                  U R                  S9nUR                  U5        U$ )z>Create a new hardware accelerator context with the given codecz$Hardware context already initialized)r[   r   r   r   r   )	r=   rN   ry   r   r   r   r   r   r   )rO   r   rets      r1   createHWAccel.create   s]    88EFF))<<$($@$@LL((
 	""5)
r0   c                     U R                   (       a5  [        R                  " [        R                  " U R                   5      5        g g r@   )r=   r   av_buffer_unrefrB   r   r_   s    r1   __dealloc__HWAccel.__dealloc__   s)    88txx 89 r0   )	r   r   r   rI   r   r   r   r   r=   )NTNNF)r   r   r   r   rQ   r   r   ry   r   r   r/   r   r0   r1   ry   ry   k   s=      $B
E 
8E g :r0   ry   )"weakrefenumr   rB   cython.cimports.libavcimportslibavr   cython.cimports.av.codec.codecr   cython.cimports.av.dictionaryr   cython.cimports.av.errorr   cython.cimports.av.video.formatr   r	   r3   declareobjectrG   WeakValueDictionaryrA   rm   rn   ro   rp   rF   rJ   finalcclassccallrw   ry   r   r0   r1   <module>r      s      # # 0 4 . <7 &2W 2 ..2nnVW%@%@%BC v~~fll33F3F&GH X   !T !T  !TH   O: O:  O:r0   