§
    ÜóÉj‚  ã                   ó&  — 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        ej         G d„ d¦  «        ¦   «         ¦   «         Zej        d„ ¦   «         Z ej        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© ó    úu/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/av/codec/hwaccel.pyr	   r	      s€   € € € € € ØÔ$€DØÔ&€EØÔ$€DØÔ&€EØÔ&€EØ
Ô
"€CØÔ4€LØÔ*€GØ
Ô
"€CØÔ(€FØÔ0€JØÔ(€FØÔ*€GØ
€CØ€G€G€Gr-   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ØÔ5€HØÔ1€F€F€Fr-   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Ô0€FØ
‡L‚L�ÑÔÐØ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__F   sž   € ðc�4”>Ô*ð cð cÝÔ8¸Ô9IÑJÔJðcð cà*.¬+Ð?�d”kÔ&Ð&¸4ðcð cð !Ô-ðcð cõ 6<´[ÅÔARÐTXÔT\Ñ5]Ô5]Ðbðcð cð cð	
r-   c                 ó4   — t          | j        j        ¦  «        S r<   )r	   r9   rS   rW   s    r.   rS   zHWConfig.device_typeN   s   € å˜DœHÔ0Ñ1Ô1Ð1r-   c                 ó8   — t          | j        j        dd¦  «        S )Nr   )r   r9   Úpix_fmtrW   s    r.   rT   zHWConfig.formatR   s   € å ¤Ô 0°!°QÑ7Ô7Ð7r-   c                 ó4   — t          | j        j        ¦  «        S r<   )r0   r9   ÚmethodsrW   s    r.   r]   zHWConfig.methodsV   s   € å˜dœhÔ.Ñ/Ô/Ð/r-   c                 óN   — t          | j        j        t          j        z  ¦  «        S r<   )Úboolr9   r]   r   r1   rW   s    r.   rV   zHWConfig.is_supportedZ   s   € å�D”HÔ$¥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 )zkReturn the names of the hardware device types FFmpeg was built with,
    e.g. ``["cuda", "videotoolbox"]``.)r   r   Úav_hwdevice_iterate_typesÚappendrR   r	   )ÚresultrO   s     r.   Úhwdevices_availablerj   _   sh   € ð €FÝÔ5€AðFÝÔ)¨!Ñ,Ô,ˆØ•Ô)Ò)Ð)ØØ�Š•cÔ3µLÀ±O´OÑDÔDÑEÔEÐEð	Fð
 €Mr-   c                   óR   — e Zd ZdZ	 	 	 	 	 dd„Zddedefd„Zddeded	efd
„Z	d„ Z
dS )ÚHWAccelaç  HWAccel(device_type, device=None, allow_software_fallback=True, options=None, flags=None, is_hw_owned=False)

    Settings for hardware-accelerated decoding and encoding. Pass an instance to
    :func:`av.open` to decode on the device, or to
    :meth:`OutputContainer.add_stream <av.container.OutputContainer.add_stream>`
    to encode on it.

    :param device_type: The kind of device, e.g. ``"cuda"``, ``"vaapi"``,
        ``"videotoolbox"``. See :func:`hwdevices_available` for the types
        supported by the loaded FFmpeg.
    :type device_type: str or HWDeviceType
    :param str device: An optional device identifier, e.g. a DRI render node path
        (``"/dev/dri/renderD128"``) for VAAPI or a device index (``"1"``) for CUDA.
        Uses the default device if ``None``.
    :param bool allow_software_fallback: Whether decoding falls back to a software
        decoder when the hardware decoder cannot handle the stream.
    :param dict options: Options passed to ``av_hwdevice_ctx_create``.
    :param int flags: Flags passed to ``av_hwdevice_ctx_create``.
    :param bool is_hw_owned: If True, decoded frames stay on the device (for
        consumption via DLPack, for example) instead of being downloaded to
        system memory.
    NTFc                 óŒ  — 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__‡   s3  € õ �k¥<Ñ0Ô0ð 	=Ø +ˆDÔÐÝ˜¥SÑ)Ô)ð 	=Ý #¥CÔ$EÀkÑ$RÔ$RÑ SÔ SˆDÔÐÝ˜¥SÑ)Ô)ð 	=Ø +ˆDÔÐåÐ;Ñ<Ô<Ð<à&ˆÔØˆŒØÔ¥Ô 1Ò1Ð1°fÐ1Ý  ™[œ[ˆDŒNà%˜~�t�t°f°;ˆŒØ'>ˆÔ$à!(Ð;�r�r­d°7©m¬mˆŒØÔ¥Ô 1Ò1Ð1°dÔ6FÐ1ØŒL×#Ò# M°3Ñ7Ô7Ð7Ø#Ð.�Q�Q¨ˆŒ
Ý”;ˆŒØˆŒˆˆr-   ÚcodecÚfor_encodingc           	      óü  — t           j        }|r|t           j        z  }|j        D ]+}|j        j        |z  sŒ| j        r|j        | j        k    rŒ* 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 )r   r1   r3   Úhardware_configsr9   r]   rq   rS   ÚNotImplementedErrorrE   r>   r~   rx   Úencoder   r{   r   Úav_hwdevice_ctx_createÚaddressr}   )rJ   r€   r�   Úsupported_methodsrE   Úc_deviceÚdevice_bytesÚ	c_optionss           r.   Ú_initialize_hw_contextzHWAccel._initialize_hw_context¨   s  € õ ),Ô(SÐØð 	MØ¥Ô!LÑLÐð Ô,ð 	Sð 	SˆFØ”JÔ&Ð):Ñ:ð ØØÔ ð  VÔ%7¸4Ô;LÒ%LÐ%LØØˆEå%Ð&QÈ%Ð&QÐ&QÑRÔRÐRàˆŒÝ"(¤+ˆØŒ<ð 	$Øœ<×.Ò.Ñ0Ô0ˆLØ#ˆHÝ *¨4¬<Ñ 8Ô 8ˆ	åÝÔ&Ý”˜tœxÑ(Ô(Ø”
Ô&ØØ”Ø”
ñô ñ	
ô 	
ð 	
ð 	
ð 	
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   )r�   )	r9   rI   rl   rq   rx   ry   r{   rv   rŒ   )rJ   r€   r�   Úrets       r.   ÚcreatezHWAccel.createË   sl   € àŒ8ð 	GÝÐEÑFÔFÐFåØÔ)Ø”<Ø$(Ô$@Ø”LØÔ(ð
ñ 
ô 
ˆð 	×"Ò" 5°|Ð"ÑDÔDÐDØˆ
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ð 	:ÝÔ¥¤¨t¬xÑ 8Ô 8Ñ9Ô9Ð9Ð9Ð9ð	:ð 	:r-   )NTNNF)F)r   r   r   Ú__doc__rL   r   r_   rŒ   rl   r�   r’   r,   r-   r.   rl   rl   m   s©   € € € € € ðð ð4 Ø $ØØØðð ð ð ðB!
ð !
¨Eð !
Àð !
ð !
ð !
ð !
ðFð ˜Eð °ð À'ð ð ð ð ð:ð :ð :ð :ð :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Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø .Ð .Ð .Ð .Ð .Ð .Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð �7ñ ô ð ð&2ð 2ð 2ð 2ð 2�Wñ 2ô 2ð 2ð !�&”. ¨¨©¬Ñ2Ô2€ØˆfŒn˜VÐ%@ WÔ%@Ñ%BÔ%BÑCÔC€ð „ð�v”~ f¤l°3Ô3FÔ&GÔHð ÈXð ð ð ñ „ðð „Ø„ð!Tð !Tð !Tð !Tð !Tñ !Tô !Tñ „ñ „ð!TðH „ð
ð 
ñ „ð
ð „Ø„ðm:ð m:ð m:ð m:ð m:ñ m:ô m:ñ „ñ „ðm:ð m:ð m:r-   