§
    ÜóÉ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 d dlmZmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZmZ d dlmZm Z  d dl!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' ej(        ej)         ej*        d¬¦  «        dej+        ej,                 dej-        fd„¦   «         ¦   «         ¦   «         Z.ej/        ej0         G d„ d¦  «        ¦   «         ¦   «         Z1ej(        de2de2dej+        e         fd„¦   «         Z3ej(        ej)         ej*        d¬¦  «        dej4        dej+        e&         dej-        fd„¦   «         ¦   «         ¦   «         Z5ej(        ej)         ej*        d¬¦  «        dej4        dej+        e&         dej-        fd„¦   «         ¦   «         ¦   «         Z6 ej7        e2 e2¦   «         ¦  «        Z8h d£Z9 ej7        e:e;e<ej=        e;f         f         i dd“dd“d d!“d"d!“d#d!“d$d!“d%d&“d'd&“d(d&“d)d&“d*d&“d+d&“d,d&“d-d&“d.d/“d0d1“d2d1“i d3d!“d4d“d5d6“d7d6“d8d!“d9d&“d:d&“d;d&“d<d&“d=d&“d>d&“d?d&“d@d&“dAdB“dCdB“dDd!“dEd&“¥i dFd&“dGd&“dHd&“dId&“dJd&“dKd&“dLd&“dMd&“dNd&“dOdB“dPdB“dQd!“dRd&“dSd&“dTd&“dUd&“dVd&“¥i dWd&“dXd&“dYd&“dZd!“d[d&“d\d&“d]dB“d^dB“d_d/“d`d1“dad1“dbd!“dcd“ddd6“ded6“dfdg“dhdg“¥dididjdjd!d&d&d&d&d!dkdlœ¥¦  «        Z>ej(        de?fdm„¦   «         Z@ G dn„ doe¦  «        ZA ej7        ejB        e jC        dpk    ¦  «        ZDej(        ejE        dqejB        fdr„¦   «         ¦   «         ZFej(        dsedtej=        duejB        dvejB        fdw„¦   «         ZGej(        dsedtej=        fdx„¦   «         ZHej(        ejE        	 d!dsedtej=        d{e;fd|„¦   «         ¦   «         ZIej(        d}e2d~ejB        fd„¦   «         ZJej/        ej0         G d€„ d�eK¦  «        ¦   «         ¦   «         Z?dS )‚é    N)ÚIntEnum)Ú
Dictionary)Ú	err_check©Úget_display_rotation)Úcheck_ndarray)Úget_pix_fmtÚget_video_format)ÚDLManagedTensorÚ
VideoPlaneÚkCPUÚkCuda)ÚPyErr_Clear)ÚPyCapsule_GetPointerÚPyCapsule_IsValidÚPyCapsule_SetName)Ú	Py_DECREFÚ	Py_INCREF)ÚAVCUDADeviceContextÚCUstream)Úint64_tÚuint8_tÚ	uintptr_tF)ÚcheckÚ
device_ctxÚreturnc                 óÜ   — t          j        t           j        t          j                 | j        ¦  «        }t          j        t          j        |¦  «        ¦  «         t           j        | _        d S ©N)	ÚcythonÚcastÚpointerÚlibÚAVBufferRefÚuser_opaqueÚav_buffer_unrefÚaddressÚNULL)r   Ú	owner_refs     ús/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/av/video/frame.pyÚ_cuda_device_ctx_freer*      sS   € õ 28´ÝŒ•s”Ô'¨Ô)?ñ2ô 2€Iõ Ô�œ yÑ1Ô1Ñ2Ô2Ð2Ý#œ[€JÔÐÐó    c            
       ó  — e Zd ZdZ	 	 	 	 ddej        dej        dej        d	efd
„Zd„ Z	ej
        dej        ej                 fd„¦   «         Zej
        dej        dej        dej        dej        ej                 fd„¦   «         ZdS )ÚCudaContexta  A reusable FFmpeg CUDA context for frames imported with DLPack.

    :param int device_id: CUDA device ordinal.
    :param bool primary_ctx: Retain the device's primary CUDA context.
    :param bool current_ctx: Wrap the CUDA context current on the calling thread
        when this object is first used. This is mutually exclusive with
        ``primary_ctx``.
    :param int cuda_stream: Optional raw ``CUstream`` pointer for FFmpeg CUDA
        operations, including NVENC input and output. The caller owns the
        stream and must keep it alive as long as this context can be used.
        Nonzero stream pointers are currently supported only for logical CUDA
        device 0. To use another physical GPU, expose it as logical device 0
        via ``CUDA_VISIBLE_DEVICES``.
    r   TFNÚ	device_idÚprimary_ctxÚcurrent_ctxÚcuda_streamc                 óŽ  — || _         || _        || _        d| _        t          j        | _        i | _        |r|rt          d¦  «        ‚|�Xt          |t          ¦  «        st          d¦  «        ‚|dk     rt          d¦  «        ‚t	          j        t          |¦  «        | _        | j        r| j         dk    rt          d¦  «        ‚d S d S )Nr   z2primary_ctx and current_ctx are mutually exclusivez&cuda_stream must be an integer or Nonez cuda_stream must be non-negativezxcuda_stream currently requires device_id 0; expose the desired physical GPU as logical device 0 via CUDA_VISIBLE_DEVICES)r.   r/   r0   r1   r   r'   Ú_device_refÚ_frames_cacheÚ
ValueErrorÚ
isinstanceÚintÚ	TypeErrorr    r   )Úselfr.   r/   r0   r1   s        r)   Ú	__cinit__zCudaContext.__cinit__6   sè   € ð #ˆŒØ&ˆÔØ&ˆÔØˆÔÝ!œ;ˆÔØˆÔØð 	S˜;ð 	SÝÐQÑRÔRÐRØÐ"Ý˜k­3Ñ/Ô/ð JÝÐ HÑIÔIÐIØ˜QŠˆÝ Ð!CÑDÔDÐDÝ%œ{­9°kÑBÔBˆDÔØÔð 	 ¤°!Ò 3Ð 3ÝðLñô ð ð	ð 	Ð 3Ð 3r+   c                 óô  — | j                              ¦   «         D ]t}t          j        t          j        t
          j                 t          j        t          j        |¦  «        ¦  «        }t          j        t          j	        |¦  «        ¦  «         Œu| j          
                    ¦   «          | j        }|t          j        k    r9t          j        t          j	        |¦  «        ¦  «         t          j        | _        d S d S r   )r4   Úvaluesr   r    r!   r"   r#   Úsize_tr%   r&   Úclearr3   r'   )r9   ÚvÚrefs      r)   Ú__dealloc__zCudaContext.__dealloc__Q   sÍ   € ð Ô#×*Ò*Ñ,Ô,ð 	5ð 	5ˆAÝ”+Ý”�sœÔ/Ý”�FœM¨1Ñ-Ô-ñô ˆCõ Ô¥¤¨sÑ 3Ô 3Ñ4Ô4Ð4Ð4ØÔ× Ò Ñ"Ô"Ð"àÔˆØ•&”+ÒÐÝÔ¥¤¨sÑ 3Ô 3Ñ4Ô4Ð4Ý%œ{ˆDÔÐÐð Ðr+   r   c           	      ó¸  — | j         }|t          j        k    r|S t          j        }| j        ›                      ¦   «         }|}d| j        rdndi}| j        rd|d<   t          |¦  «        }t          t          j
        t          j        |¦  «        t          j        ||j        d¦  «        ¦  «         | j        s	|| _         |S t          j        t          j        ¦  «        }|t          j        k    r5t          j        t          j        |¦  «        ¦  «         t#          d¦  «        ‚	 t          j        t          j        t          j                 |j        ¦  «        }t          j        t          j        t,                   |j        ¦  «        }t          j        t          j        t          j                 |j        ¦  «        }	t          j        t          j        t,                   |	j        ¦  «        }
|j        |
_        t          j        t2          | j        ¦  «        |
_        t6          |	_        t          j        t          j        |¦  «        |	_        t          j        }t          t          j        |¦  «        ¦  «         n[# t@          $ rN t          j        t          j        |¦  «        ¦  «         t          j        t          j        |¦  «        ¦  «         ‚ w xY w|| _         |S )Nr/   Ú1Ú0r0   r   zav_hwdevice_ctx_alloc() failed)!r3   r   r'   r.   Úencoder/   r0   r   r   r"   Úav_hwdevice_ctx_creater&   ÚAV_HWDEVICE_TYPE_CUDAÚptrr1   Úav_hwdevice_ctx_allocr%   ÚMemoryErrorr    r!   ÚAVHWDeviceContextÚdatar   ÚhwctxÚcuda_ctxr   Ústreamr*   ÚfreeÚp_voidr$   Úav_hwdevice_ctx_initÚ	Exception)r9   Ú
device_refr(   Údevice_bytesÚc_deviceÚoptions_dictÚoptionsÚowner_device_ctxÚowner_cuda_ctxr   rN   s              r)   Ú_get_device_refzCudaContext._get_device_refa   s�  € à6:Ô6Fˆ
à�œÒ$Ð$ØÐå”Kˆ	Øœ.Ð*×1Ò1Ñ3Ô3ˆØ".ˆØ%¨dÔ.>Ð'G s sÀCÐHˆØÔð 	.Ø*-ˆL˜Ñ'Ý(¨Ñ6Ô6ˆÝÝÔ&Ý”˜yÑ)Ô)ÝÔ)ØØ”Øñô ñ	
ô 	
ð 	
ð Ôð 	Ø(ˆDÔØÐåÔ.­sÔ/HÑIÔIˆ
Ø�œÒ$Ð$ÝÔ¥¤¨yÑ 9Ô 9Ñ:Ô:Ð:ÝÐ>Ñ?Ô?Ð?ð	ÝFLÄkÝ”�sÔ4Ô5°y´~ñGô GÐõ CIÄ+Ý”Õ2Ô3Ð5EÔ5KñCô CˆNõ AGÄÝ”�sÔ4Ô5°z´ñAô AˆJõ =C¼KÝ”Õ2Ô3°ZÔ5Eñ=ô =ˆHð !/Ô 7ˆHÔÝ$œk­(°DÔ4DÑEÔEˆHŒOÝ3ˆJŒOÝ%+¤[µ´À	Ñ%JÔ%JˆJÔ"ÝœˆIÝ•cÔ.¨zÑ:Ô:Ñ;Ô;Ð;Ð;øÝð 	ð 	ð 	ÝÔ¥¤¨zÑ :Ô :Ñ;Ô;Ð;ÝÔ¥¤¨yÑ 9Ô 9Ñ:Ô:Ð:Øð	øøøð
 &ˆÔØÐs   Ä$EI8 É8AKÚsw_fmtÚwidthÚheightc                 óÄ  — t          |¦  «        t          |¦  «        t          |¦  «        f}| j                             |¦  «        }|��t          j        t          j        t          j                 t          j        t          j        |¦  «        ¦  «        }t          j	        |¦  «        }|t          j
        k    rt          d¦  «        ‚|S |                      ¦   «         }t          j        |¦  «        }	|	t          j
        k    rt          d¦  «        ‚	 t          j        t          j        t          j                 |	j        ¦  «        }
t!          d¦  «        |
_        ||
_        t          |¦  «        |
_        t          |¦  «        |
_        t+          t          j        |	¦  «        ¦  «         n5# t.          $ r( t          j        t          j        |	¦  «        ¦  «         ‚ w xY wt          j	        |	¦  «        }|t          j
        k    r5t          j        t          j        |	¦  «        ¦  «         t          d¦  «        ‚t          j        t          j        |	¦  «        | j        |<   |S )Nzav_buffer_ref() failedzav_hwframe_ctx_alloc() failedó   cuda)r7   r4   Úgetr   r    r!   r"   r#   r=   Úav_buffer_refr'   rJ   r[   Úav_hwframe_ctx_allocÚAVHWFramesContextrL   r	   ÚformatÚ	sw_formatr]   r^   r   Úav_hwframe_ctx_initrS   r%   r&   )r9   r\   r]   r^   ÚkeyÚcachedÚ
cached_refÚout_refrT   Ú
frames_refÚ
frames_ctxs              r)   Úget_frames_ctxzCudaContext.get_frames_ctxœ   s  € õ �6‰{Œ{�C ™JœJ­¨F©¬Ð4ˆØÔ#×'Ò'¨Ñ,Ô,ˆð ÐÝœÝ”�sœÔ/Ý”�FœM¨6Ñ2Ô2ñô ˆJõ Ô'¨
Ñ3Ô3ˆGØ�&œ+Ò%Ð%Ý!Ð":Ñ;Ô;Ð;ØˆNà×)Ò)Ñ+Ô+ˆ
å69Ô6NØñ7
ô 7
ˆ
ð �œÒ$Ð$ÝÐ=Ñ>Ô>Ð>ð	Ý@FÄÝ”�sÔ4Ô5°z´ñAô AˆJõ !,¨GÑ 4Ô 4ˆJÔØ#)ˆJÔ Ý" 5™zœzˆJÔÝ # F¡¤ˆJÔÝ•cÔ-¨jÑ9Ô9Ñ:Ô:Ð:Ð:øÝð 	ð 	ð 	ÝÔ¥¤¨zÑ :Ô :Ñ;Ô;Ð;Øð	øøøõ Ô# JÑ/Ô/ˆØ•f”kÒ!Ð!ÝÔ¥¤¨zÑ :Ô :Ñ;Ô;Ð;ÝÐ6Ñ7Ô7Ð7å"(¤+­f¬m¸ZÑ"HÔ"HˆÔ˜3ÑØˆs   ÄBF+ Æ+2G)r   TFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r7   ÚbintÚobjectr:   rA   Úcfuncr!   r"   r#   r[   ÚAVPixelFormatrn   © r+   r)   r-   r-   $   s  € € € € € ðð ð" !"Ø#'Ø#(Ø"ðð à”:ðð ”[ðð ”[ð	ð
 ðð ð ð ð6+ð +ð +ð  „\ð8 ¤°´Ô!@ð 8ð 8ð 8ñ „\ð8ðt „\ð0àÔ!ð0ð Œzð0ð ”
ð	0ð
 
Œ˜œÔ	(ð0ð 0ð 0ñ „\ð0ð 0ð 0r+   r-   ÚobjrO   c                 óÒ  — t          | d¦  «        r-|€|                      ¦   «         n|                      |¬¦  «        }n| }t          |d¦  «        st          ¦   «          t	          d¦  «        ‚t          j        t
          j        t                   t          |d¦  «        ¦  «        }|t
          j
        k    rt          d¦  «        ‚t          |d¦  «        dk    rt          d¦  «        ‚|S )	NÚ
__dlpack__)rO   s   dltensorz>expected a DLPack capsule or an object implementing __dlpack__z"PyCapsule_GetPointer returned NULLs   used_dltensorr   zPyCapsule_SetName failed)Úhasattrrz   r   r   r8   r   r    r!   r   r   r'   r5   r   ÚRuntimeError)rx   rO   ÚcapsuleÚmanageds       r)   Ú_consume_dlpackr   Ð   sæ   € õ
 ˆs�LÑ!Ô!ð Ø&, n�#—.’.Ñ"Ô"Ð"¸#¿.º.ÐPV¸.Ñ:WÔ:Wˆˆàˆå˜W kÑ2Ô2ð 
Ý‰ŒˆÝØLñ
ô 
ð 	
õ ŒkÝŒ•Ô'Ý˜W kÑ2Ô2ñô €Gð •&”+ÒÐÝÐ=Ñ>Ô>Ð>å˜Ð"2Ñ3Ô3°qÒ8Ð8ÝÐ5Ñ6Ô6Ð6à€Nr+   ÚopaquerL   c                 ó¨   — t          j        t           j        t                   | ¦  «        }|t           j        k    r|                     |¦  «         d S d S r   )r   r    r!   r   r'   Údeleter)r€   rL   r~   s      r)   Ú_dlpack_avbuffer_freerƒ   í   sP   € õ 06¬{ÝŒ•Ô'¨ñ0ô 0€Gð •&”+ÒÐØ�Š˜Ñ Ô Ð Ð Ð ð Ðr+   c                 óÂ   — | t           j        k    rNt           j        5  t          t          j        t
          | ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S r   )r   r'   Úgilr   r    rt   )r€   rL   s     r)   Ú_numpy_avbuffer_freer†   û   sŸ   € ð •”ÒÐÝŒZð 	3ð 	3Ý•f”k¥&¨&Ñ1Ô1Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð Ðs   �(AÁAÁA>U   ÚabgrÚargbÚbgr8ÚbgraÚgbrpÚgrayÚnv12Úpal8Úrgb8ÚrgbaÚbgr24ÚgbrapÚgray8Úrgb24Úbgr48beÚbgr48leÚgbrp9beÚgbrp9leÚgray9beÚgray9leÚrgb48beÚrgb48leÚyuv420pÚyuv444pÚyuyv422Úbgra64beÚbgra64leÚgbrp10beÚgbrp10leÚgbrp12beÚgbrp12leÚgbrp14beÚgbrp14leÚgbrp16beÚgbrp16leÚgray10beÚgray10leÚgray12beÚgray12leÚgray14beÚgray14leÚgray16beÚgray16leÚrgba64beÚrgba64leÚrgbf32beÚrgbf32leÚyuvj420pÚyuvj444pÚ	gbrap10beÚ	gbrap10leÚ	gbrap12beÚ	gbrap12leÚ	gbrap14beÚ	gbrap14leÚ	gbrap16beÚ	gbrap16leÚ	gbrpf32beÚ	gbrpf32leÚ	grayf32beÚ	grayf32leÚ	rgbaf16beÚ	rgbaf16leÚ	rgbaf32beÚ	rgbaf32leÚ
gbrapf32beÚ
gbrapf32leÚbayer_bggr8Úbayer_gbrg8Úbayer_grbg8Úbayer_rggb8Úyuv420p10leÚyuv422p10leÚyuv444p16beÚyuv444p16leÚyuva444p16beÚyuva444p16leÚbayer_bggr16beÚbayer_bggr16leÚbayer_gbrg16beÚbayer_gbrg16leÚbayer_grbg16beÚbayer_grbg16leÚbayer_rggb16beÚbayer_rggb16ler‡   )é   Úuint8rˆ   rÊ   )é   rÝ   rË   rÌ   rÍ   rÕ   )é   Úuint16rÔ   r×   rÖ   rÙ   rØ   rÛ   rÚ   r‘   )é   rÝ   r•   )é   rà   r–   r‰   rŠ   r    )é   rà   r¡   r’   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÈ   )rÜ   Úfloat32rÉ   r‹   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   r—   r˜   rÀ   rÁ   rŒ   rª   r«   r¬   r­   r®   r¯   r°   r±   r“   r™   rš   rÂ   rÃ   r”   r›   rœ   r�   r�   r²   r³   rÄ   )rã   Úfloat16rÅ   )é   rä   )é   rä   )rß   rÝ   )rÆ   rÇ   r´   rµ   rž   rÐ   rÑ   rÒ   rÓ   r·   rŸ   c                  ó*   — t          t          ¦  «        S )zœGet a mostly uninitialized VideoFrame.

    You MUST call VideoFrame._init(...) or VideoFrame._init_user_attributes()
    before exposing to the user.

    )Ú
VideoFrameÚ_cinit_bypass_sentinelrw   r+   r)   Úalloc_video_framerë   º  s   € õ Õ,Ñ-Ô-Ð-r+   c                   ó~   — 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dS )ÚPictureTypeN)ro   rp   rq   r"   ÚAV_PICTURE_TYPE_NONEÚNONEÚAV_PICTURE_TYPE_IÚIÚAV_PICTURE_TYPE_PÚPÚAV_PICTURE_TYPE_BÚBÚAV_PICTURE_TYPE_SÚSÚAV_PICTURE_TYPE_SIÚSIÚAV_PICTURE_TYPE_SPÚSPÚAV_PICTURE_TYPE_BIÚBIrw   r+   r)   rí   rí   Å  sN   € € € € € ØÔ#€DØÔ€AØÔ€AØÔ€AØÔ€AØ	Ô	€BØ	Ô	€BØ	Ô	€B€B€Br+   rí   ÚbigÚ
big_endianc                 óD   — t           |k    r|                      ¦   «         S | S r   )Ú_is_big_endianÚbyteswap)Úarrayrÿ   s     r)   Úbyteswap_arrayr  Ó  s$   € õ ˜Ò#Ð#Ø�~Š~ÑÔÐØ€Lr+   ÚplaneÚbytes_per_pixelÚflip_horizontalÚflip_verticalc                 óÀ  — | }d}|j         |z  }|}d}	t          |j        ¦  «        }
t          j        t          j        ¦  «        \  }}}|r|j        dz
  }d}d}nd}|j        }d}t          |||¦  «        D ]g}||z  }|rDt          d||¦  «        D ]1}t          |¦  «        D ]}|||z   |z
  |z
  |z            ||	|z   |z   <   Œ Œ2n||||z   …         ||	|	|z   …<   |	|
z  }	Œhd S )Nr   rÞ   éÿÿÿÿ)r]   ÚabsÚ	line_sizer   Údeclarer7   r^   Úrange)Ú	img_bytesr  r  r  r  Úi_bufÚi_posÚi_strideÚo_bufÚo_posÚo_strideÚ	start_rowÚend_rowÚstepÚrowÚiÚjs                    r)   Úcopy_bytes_to_planer  Û  sQ  € ð '0€EØ€EØ#œk¨OÑ;€Hà€EØ€EÝ! %¤/Ñ2Ô2€Hå%œ~­f¬jÑ9Ô9Ñ€Iˆw˜Øð Ø”L 1Ñ$ˆ	ØˆØˆˆàˆ	Ø”,ˆØˆå�Y ¨Ñ.Ô.ð ð ˆØ�h‘ˆØð 		Nå˜1˜h¨Ñ8Ô8ð ð �å˜Ñ/Ô/ð ð �AØ+0Ø Ñ(¨1Ñ,¨Ñ>ÀÑBô,�E˜% !™) a™-Ñ(Ð(ððð /4°E¸EÀHÑ<LÐ4LÔ.MˆE�%˜% (Ñ*Ð*Ñ+Ø�Ñˆˆðð r+   c                 óT   — |                       ¦   «         }t          |||dd¦  «         d S )NF)Útobytesr  )r  r  r  Úimgbytess       r)   Úcopy_array_to_planer     s+   € à—m’m‘o”o€HÝ˜ %¨¸%ÀÑGÔGÐGÐGÐGr+   rÞ   rÝ   Údtypec                 ó¦  — ddl }|                     |¦  «        }| j        j        j        | j                 }t          |¦  «        }|j        }||z  }|dk    r| j        | j	        f}	||f}
n| j        | j	        |f}	|||f}
|dk     r6| j        dz
  |z  }| g|
dd…         ¢R }
| 
                    |	|| ||
¬¦  «        S | 
                    |	|| |
¬¦  «        S )z¦
    Return the useful part of the VideoPlane as a strided array.

    We are simply creating a view that discards any padding which was added for
    alignment.
    r   NrÞ   )r!  ÚbufferÚoffsetÚstrides)r!  r#  r%  )Únumpyr!  ÚframerH   ÚlinesizeÚindexr  Úitemsizer^   r]   Úndarray)r  r  r!  ÚnpÚ	dtype_objr  Útotal_line_sizer*  ÚchannelsÚshaper%  r$  s               r)   Úuseful_arrayr1  
  s  € ð ÐÐÐà—’˜‘”€IØ””Ô(¨¬Ô5€IÝ˜)‘n”n€OØÔ!€HØ (Ñ*€Hà�1‚}€}Ø”˜uœ{Ð+ˆØ" HÐ-ˆˆà”˜uœ{¨HÐ5ˆØ" O°XÐ>ˆà�1‚}€}Ø”, Ñ" oÑ5ˆØ#Ð#Ð2 g¨a¨b¨b¤kÐ2Ð2ˆØ�zŠzØ˜¨5¸Èð ñ 
ô 
ð 	
ð �:Š:�e 9°UÀGˆ:ÑLÔLÐLr+   r  Úokc                 ó:   — |st          d| j        › d�¦  «        ‚d S )NzUnexpected numpy array shape `ú`)r5   r0  )r  r2  s     r)   Úcheck_ndarray_shaper5  .  s3   € àð JÝÐH¸%¼+ÐHÐHÐHÑIÔIÐIðJð Jr+   c                   ó†  — e Zd Zd3d„Zej        dej        dej        dej        fd„¦   «         Z	ej        d„ ¦   «         Z
d	„ Zed
„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zd„ Zd„ Zdefd„Zd„ Z ej        d ¦  «        d4d"„¦   «         Z d#„ Z!e"d$„ ¦   «         Z#e"d5d&„¦   «         Z$d'„ Z%e" ej        d ¦  «        d6d(„¦   «         ¦   «         Z&e"	 	 	 d7d*e'de(de(fd+„¦   «         Z)e"	 	 	 	 	 	 	 	 d8de*de(de(d.e(d-z  d/e+d-z  d0e+d-z  fd1„¦   «         Z,e"d2„ ¦   «         Z-d-S )9ré   r   r�   c                 óh   — |t           u rd S t          |¦  «        }|                      |||¦  «         d S r   )rê   r	   Ú_init)r9   r]   r^   re   Úc_formats        r)   r:   zVideoFrame.__cinit__7  s<   € ØÕ*Ð*Ð*ØˆFå&1°&Ñ&9Ô&9ˆØ�
Š
�8˜U FÑ+Ô+Ð+Ð+Ð+r+   re   r]   r^   c                 ó   — d}t           j        5  || j        _        || j        _        || j        _        |r|rt          j        | j        d¦  «        }d d d ¦  «         n# 1 swxY w Y   |rt          |¦  «         |  	                    ¦   «          d S )Nr   ræ   )
r   ÚnogilrH   r]   r^   re   r"   Úav_frame_get_bufferr   Ú_init_user_attributes)r9   re   r]   r^   Úress        r)   r8  zVideoFrame._init>  sÑ   € àˆåŒ\ð 	<ð 	<Ø"ˆDŒHŒNØ$ˆDŒHŒOØ$ˆDŒHŒOð ð <˜ð <ÝÔ-¨d¬h¸Ñ;Ô;�ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð ð 	Ý�c‰NŒNˆNà×"Ò"Ñ$Ô$Ð$Ð$Ð$s   �AAÁA"Á%A"c                 ó¨   — t          t          j        t          j        | j        j        ¦  «        | j        j        | j        j        ¦  «        | _        d S r   )	r
   r   r    r"   rv   rH   re   r]   r^   ©r9   s    r)   r=  z VideoFrame._init_user_attributesQ  s;   € å&ÝŒK�Ô)¨4¬8¬?Ñ;Ô;ØŒHŒNØŒHŒOñ
ô 
ˆŒˆˆr+   c                 ó8   — t          j        | j        ¦  «         d S r   )r"   Úav_frame_unrefrH   r@  s    r)   rA   zVideoFrame.__dealloc__Y  s   € ÝÔ˜4œ8Ñ$Ô$Ð$Ð$Ð$r+   c                 óî   — | j         j        sdS t          j        t          j        t
          j                 | j         j        j        ¦  «        }t          |j	        | j         j
        | j         j        ¦  «        S )zñ
        For a hardware frame (e.g. ``format.name == "cuda"``), the underlying
        software pixel format (``nv12``, ``yuv444p``, ``p010le``, ...). ``None``
        for a regular software frame.

        :type: VideoFormat | None
        N)rH   Úhw_frames_ctxr   r    r!   r"   rd   rL   r
   rf   r]   r^   )r9   rm   s     r)   rf   zVideoFrame.sw_format\  s]   € ð ŒxÔ%ð 	Ø�4Ý<B¼KÝŒN�3Ô0Ô1°4´8Ô3IÔ3Nñ=
ô =
ˆ
õ   
Ô 4°d´h´nÀdÄhÄoÑVÔVÐVr+   c                 óŽ   — d| j         j        › d| j        › d| j        j        › d| j        › d| j        › dt          | ¦  «        d›d�S )Nz<av.z, pts=ú Úxz at 0xú>)Ú	__class__ro   Úptsre   Únamer]   r^   Úidr@  s    r)   Ú__repr__zVideoFrame.__repr__l  su   € ð=�4”>Ô*ð =ð =°$´(ð =ð =¸T¼[Ô=Mð =ð =ØŒzð=ð =Ø œKð=ð =Ý/1°$©x¬xÐ<ð=ð =ð =ð	
r+   c                 ó€  ‡ — ‰ j         }‰ j        j        rht          j        t          j        t          j                 ‰ j        j        j        ¦  «        }t          |j
        ‰ j        j        ‰ j        j        ¦  «        }d}t          |j        j        ¦  «        D ]$}|j        j        |         j        dz   }||k     r|}Œ%|j        dk    rd}d}||k     r/‰ j        j        |         r|dz  }||k     r‰ j        j        |         °|dk    rt'          ‰ d¦  «        fS t)          ˆ fd„t          |¦  «        D ¦   «         ¦  «        S )z:
        A tuple of :class:`.VideoPlane` objects.
        r   rÞ   rŽ   rß   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rw   )r   )Ú.0r  r9   s     €r)   ú
<listcomp>z%VideoFrame.planes.<locals>.<listcomp>�  s#   ø€ ÐFÐFÐF¨a•j  qÑ)Ô)ÐFÐFÐFr+   )re   rH   rD  r   r    r!   r"   rd   rL   r
   rf   r]   r^   r  Únb_componentsÚcompr  rK  Úextended_datar   Útuple)r9   Úfmtrm   Úmax_plane_countr  ÚcountÚplane_counts   `      r)   ÚplaneszVideoFrame.planesr  sO  ø€ ð ŒkˆØŒ8Ô!ð 	Ý@FÄÝ”�sÔ4Ô5°t´xÔ7MÔ7RñAô AˆJõ #ØÔ$ d¤h¤n°d´h´oñô ˆCð '(ˆÝ�s”wÔ,Ñ-Ô-ð 	(ð 	(ˆAØ”G”L ”OÔ)¨AÑ-ˆEØ Ò&Ð&Ø"'�øØŒ8�vÒÐØˆOà"#ˆØ˜OÒ+Ð+°´Ô0FÀ{Ô0SÐ+Ø˜1ÑˆKð ˜OÒ+Ð+°´Ô0FÀ{Ô0SÐ+à˜!ÒÐÝ˜t QÑ'Ô'Ð)Ð)ÝÐFÐFÐFÐFµ5¸Ñ3EÔ3EÐFÑFÔFÑGÔGÐGr+   c                 ó   — | j         j        S )zWidth of the image, in pixels.)rH   r]   r@  s    r)   r]   zVideoFrame.width’  s   € ð ŒxŒ~Ðr+   c                 ó   — | j         j        S )zHeight of the image, in pixels.)rH   r^   r@  s    r)   r^   zVideoFrame.height—  s   € ð ŒxŒÐr+   c                 ó    — t          | ¦  «        S )zÿThe rotation component of the `DISPLAYMATRIX` transformation matrix.

        Returns:
            int: The angle (in degrees) by which the transformation rotates the frame
                counterclockwise. The angle will be in range [-180, 180].
        r   r@  s    r)   ÚrotationzVideoFrame.rotationœ  s   € õ $ DÑ)Ô)Ð)r+   c                 óN   — t          | j        j        t          j        z  ¦  «        S )z+Is this frame an interlaced or progressive?)ÚboolrH   Úflagsr"   ÚAV_FRAME_FLAG_INTERLACEDr@  s    r)   Úinterlaced_framezVideoFrame.interlaced_frame¦  s   € õ �D”H”N¥SÔ%AÑAÑBÔBÐBr+   c                 ó   — | j         j        S )z„Returns an integer that corresponds to the PictureType enum.

        Wraps :ffmpeg:`AVFrame.pict_type`

        :type: int
        ©rH   Ú	pict_typer@  s    r)   rf  zVideoFrame.pict_type¬  s   € ð ŒxÔ!Ð!r+   c                 ó   — || j         _        d S r   re  ©r9   Úvalues     r)   rf  zVideoFrame.pict_type¶  ó   € à"ˆŒÔÐÐr+   c                 ó   — | j         j        S )zKColorspace of frame.

        Wraps :ffmpeg:`AVFrame.colorspace`.

        ©rH   Ú
colorspacer@  s    r)   rm  zVideoFrame.colorspaceº  s   € ð ŒxÔ"Ð"r+   c                 ó   — || j         _        d S r   rl  rh  s     r)   rm  zVideoFrame.colorspaceÃ  s   € à#ˆŒÔÐÐr+   c                 ó   — | j         j        S )zMColor range of frame.

        Wraps :ffmpeg:`AVFrame.color_range`.

        ©rH   Úcolor_ranger@  s    r)   rq  zVideoFrame.color_rangeÇ  s   € ð ŒxÔ#Ð#r+   c                 ó   — || j         _        d S r   rp  rh  s     r)   rq  zVideoFrame.color_rangeÐ  s   € à$ˆŒÔÐÐr+   c                 ó   — | j         j        S )zWTransfer characteristic of frame.

        Wraps :ffmpeg:`AVFrame.color_trc`.

        ©rH   Ú	color_trcr@  s    r)   ru  zVideoFrame.color_trcÔ  s   € ð ŒxÔ!Ð!r+   c                 ó   — || j         _        d S r   rt  rh  s     r)   ru  zVideoFrame.color_trcÝ  rj  r+   c                 ó   — | j         j        S )zUColor primaries of frame.

        Wraps :ffmpeg:`AVFrame.color_primaries`.

        ©rH   Úcolor_primariesr@  s    r)   ry  zVideoFrame.color_primariesá  s   € ð ŒxÔ'Ð'r+   c                 ó   — || j         _        d S r   rx  rh  s     r)   ry  zVideoFrame.color_primariesê  s   € à#(ˆŒÔ Ð Ð r+   c                 ób   — | j         st          ¦   «         | _          | j         j        | g|¢R i |¤ŽS )a%  reformat(width=None, height=None, format=None, src_colorspace=None, dst_colorspace=None, interpolation=None, threads=None)

        Create a new :class:`VideoFrame` with the given width/height/format/colorspace.

        .. seealso:: :meth:`.VideoReformatter.reformat` for arguments.

        )ÚreformatterÚVideoReformatterÚreformat)r9   ÚargsÚkwargss      r)   r~  zVideoFrame.reformatî  sC   € ð Ôð 	2Ý/Ñ1Ô1ˆDÔØ(ˆtÔÔ(¨Ð?°Ð?Ð?Ð?¸Ð?Ð?Ð?r+   c                 ó    —  | j         dddi|¤ŽS )a
  Get an RGB version of this frame.

        Any ``**kwargs`` are passed to :meth:`.VideoReformatter.reformat`.

        >>> frame = VideoFrame(1920, 1080)
        >>> frame.format.name
        'yuv420p'
        >>> frame.to_rgb().format.name
        'rgb24'

        re   r”   rw   )r~  )r9   r€  s     r)   Úto_rgbzVideoFrame.to_rgbú  s!   € ð ˆtŒ}Ð6Ð6 GÐ6¨vÐ6Ð6Ð6r+   Úfilepathc                 ó¢  — t          |¦  «        }|                     d¦  «        rd}n<|                     d¦  «        s|                     d¦  «        rd}nt          d¦  «        ‚|rdnd}|rd	nd
}ddlm}  ||dddi¬¦  «        5 }|                     ||d„ |                     ¦   «         D ¦   «         ¬¦  «        }	| j        |	_        | j        |	_        | 	                    |	 
                    |                      |¬¦  «        ¦  «        ¦  «         | 	                    |	 
                    d¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )ao  Save a VideoFrame as a JPG or PNG.

        :param filepath: str | Path
        :param \**options: Encoder options, e.g. ``pred="none"`` or
            ``compression_level=1`` for PNG, ``qscale=2`` for JPG. Values are
            coerced to ``str``. The PNG defaults favor file size over speed;
            ``pred="none"`` is roughly 3x faster and 2x larger.
        z.pngFz.jpgz.jpegTz"filepath must end with png or jpg.ÚmjpegÚpngr¶   r”   r   )ÚopenÚwÚupdaterC   )rX   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS rw   )Ústr)rP  Úkr?   s      r)   ú
<dictcomp>z#VideoFrame.save.<locals>.<dictcomp>$  s$   € Ð?Ð?Ð?¡t q¨!˜�C ™FœFÐ?Ð?Ð?r+   )Úpix_fmtrX   )re   N)r‹  Úendswithr5   Úav.container.corer‡  Ú
add_streamÚitemsr]   r^   ÚmuxrE   r~  )
r9   rƒ  rX   rK  Úis_jpgÚencoderrŽ  r‡  ÚoutputÚoutput_streams
             r)   ÚsavezVideoFrame.save  s±  € õ ˜‘M”Mˆà�=Š=˜Ñ Ô ð 	CØˆFˆFØ�]Š]˜6Ñ"Ô"ð 	C d§m¢m°GÑ&<Ô&<ð 	CØˆFˆFåÐAÑBÔBÐBà"(Ð3�w�w¨eˆØ%+Ð8�z�z°ˆà*Ð*Ð*Ð*Ð*Ð*àˆT�(˜C¨(°C¨Ð9Ñ9Ô9ð 
	3¸VØ"×-Ò-ØØØ?Ð?¨w¯}ª}©¬Ð?Ñ?Ô?ð .ñ ô ˆMð
 #'¤*ˆMÔØ#'¤;ˆMÔ à�JŠJ�}×+Ò+¨D¯MªMÀ¨MÑ,IÔ,IÑJÔJÑKÔKÐKØ�JŠJ�}×+Ò+¨DÑ1Ô1Ñ2Ô2Ð2ð
	3ð 
	3ð 
	3ñ 
	3ô 
	3ð 
	3ð 
	3ð 
	3ð 
	3ð 
	3ð 
	3ð 
	3øøøð 
	3ð 
	3ð 
	3ð 
	3ð 
	3ð 
	3s   ÂB1EÅEÅEc           	      ó¼  — ddl m}  | j        d	ddi|¤Žj        d         }|}|j        }t          |¦  «        }d}|j        dz  }|j        |z  }	t          |	¦  «        }
|dk     r|j        dz
  |z  nd}||	k     r1||||z   …         |
|||z   …<   |dk     r||z  }n||z  }||z  }||	k     °1| 	                    d|j        |j        ft          |
¦  «        dddd¦  «        S )
z±Get an RGB ``PIL.Image`` of this frame.

        Any ``**kwargs`` are passed to :meth:`.VideoReformatter.reformat`.

        .. note:: PIL or Pillow must be installed.

        r   )ÚImagere   r”   rá   rÞ   ÚRGBÚrawrw   )ÚPILrš  r~  rZ  r  r  r]   r^   Ú	bytearrayÚ	frombytesÚbytes)r9   r€  rš  r  r  r  r  r  r  Úo_sizer  r  s               r)   Úto_imagezVideoFrame.to_image,  s3  € ð 	ÐÐÐÐÐà)˜DœMÐCÐC°ÐC¸FÐCÐCÔJÈ1ÔMˆà*/ˆØ %¤ˆ	Ý"% i¡.¤.ˆà ˆØ"'¤+°¡/ˆØ %¤¨xÑ 7ˆÝ$ VÑ,Ô,ˆð AJÈAÂÀ ¤¨qÑ 0°HÑ<Ð<ÐSTˆà�fŠnˆnØ.3°E¸EÀHÑ<LÐ4LÔ.MˆE�%˜% (Ñ*Ð*Ñ+Ø˜1Š}ˆ}Ø˜Ñ!��à˜Ñ!�Ø�XÑˆEð �fŠnˆnð �ŠØ�E”K ¤Ð.µ°e±´¸eÀUÈAÈqñ
ô 
ð 	
r+   TFc           	      ó  — | j         j        rƒd|vrt          j        t          j        t
          j                 | j         j        j        ¦  «        }t          |¦  «        }t          |j
        | j         j        | j         j        ¦  «        j        |d<   t          |¦  «        dk    r | j        di |¤Žn| }|j         j        rt!          d¦  «        ‚ddl}|j        j        }|j        }|t(          v �r^|dk    r:|j         j        dz  dk    s
J d¦   «         ‚|j         j        dz  dk    s
J d¦   «         ‚t(          |         \  }}	t          |¦  «        }
|
d	k    rt+          |d         ||	¦  «        }nŸ|                     |j         j        |j         j        |
f|	¬
¦  «        }|                     d¦  «        rddd	gt1          d|
¦  «        ¢R }nt1          |
¦  «        }t3          |¦  «        D ]&\  }}t+          ||         ||	¦  «        |dd…dd…|f<   Œ't5          ||                     d¦  «        ¦  «        }|s|dv r|                     |dd¦  «        }|S |dv �r=|j         j        dz  dk    s
J d¦   «         ‚|j         j        dz  dk    s
J d¦   «         ‚|dk    }|rdnd	}|rdnd}	|j         j        dk    s|j         j        dk    r#|                     d|j         j        f|	¬
¦  «        S |                     t+          |d         ||	¦  «                             d¦  «        t+          |d	         ||	¦  «                             d¦  «        t+          |d         ||	¦  «                             d¦  «        g¦  «                             d|j         j        ¦  «        S |dk    rå|j         j        dz  dk    s
J d¦   «         ‚|j         j        dz  dk    s
J d¦   «         ‚t+          |d         dd¦  «        }t+          |d	         dd¦  «        }t+          |d         dd¦  «        }|                     |dd	¬¦  «        }|                     |dd	¬¦  «        }|r|                      |||gd¬¦  «        S |                      |||gd¬¦  «        S |dk    rtt+          |d         ¦  «        }| !                    |d	         d¦  «         "                    d¦  «                             dd	¦  «         #                    |j$        ¦  «        }||fS |dk    r‚|                     t+          |d         ¦  «                             d¦  «        t+          |d	         d¦  «                             d¦  «        g¦  «                             d|j         j        ¦  «        S t!          d|› d�¦  «        ‚)aI  Get a numpy array of this frame.

        Any ``**kwargs`` are passed to :meth:`.VideoReformatter.reformat`.

        The array returned is generally of dimension (height, width, channels).

        :param bool channel_last: If True, the shape of array will be
            (height, width, channels) rather than (channels, height, width) for
            the "yuv444p" and "yuvj444p" formats.

        .. note:: Numpy must be installed.

        .. note:: For formats which return an array of ``uint16``, ``float16`` or ``float32``,
            the samples will be in the system's native byte order.

        .. note:: For ``pal8``, an ``(image, palette)`` tuple will be returned,
            with the palette being in ARGB (PyAV will swap bytes if needed).

        .. note:: For ``gbrp`` formats, channels are flipped to RGB order.

        re   r   z2Cannot convert a hardware frame to numpy directly.NrŸ   rß   z width has to be even for yuyv422z!height has to be even for yuyv422rÞ   )r!  Úgbrrá   Úbe¾   rž   r·   >   r�   Úyuv422pr¶   rÎ   z$width has to be even for this formatz%height has to be even for this formatrÎ   rà   rÝ   r
  rÏ   ©ÚaxisrŽ   Úi4ú>i4r�   z'Conversion to numpy array with format `ú` is not yet supportedrw   )%rH   rD  r   r    r!   r"   rd   rL   Údictr
   rf   r]   r^   rK  Úlenr~  r5   r&  re   rZ  Ú_np_pix_fmt_dtypesr1  ÚemptyÚ
startswithr  Ú	enumerater  r�  ÚmoveaxisÚhstackÚreshapeÚrepeatÚstackÚ
frombufferÚastypeÚviewrÝ   )r9   Úchannel_lastr€  rm   r'  r,  Úformat_namerZ  r*  r!  Ú
num_planesr  Úplane_indicesr  Úp_idxÚis_10bitÚyÚur?   Úu_fullÚv_fullÚimageÚpalettes                          r)   Ú
to_ndarrayzVideoFrame.to_ndarrayQ  sÏ  € ð. Œ8Ô!ð 	 h°fÐ&<Ð&<Ý@FÄÝ”�sÔ4Ô5°t´xÔ7MÔ7RñAô AˆJõ ˜&‘\”\ˆFÝ/ØÔ$ d¤h¤n°d´h´oñ ô  äð �8Ñõ 8;¸6±{´{ÀQ²°˜M˜DœMÐ3Ð3¨FÐ3Ð3Ð3ÈDˆØŒ9Ô"ð 	SÝÐQÑRÔRÐRàÐÐÐð ”lÔ'ˆØ).¬ˆàÕ,Ð,Ñ,Ø˜iÒ'Ð'Ø”y”¨Ñ*¨aÒ/Ð/Ð/Ð1SÑ/Ô/Ð/Ø”yÔ'¨!Ñ+¨qÒ0Ð0Ð0Ð2UÑ0Ô0Ð0å0°Ô=‰OˆH�eÝ(+¨F©¬ˆJØ˜QŠˆÝ$ V¨A¤Y°¸%Ñ@Ô@��àŸšØ”YÔ% u¤y¤¸
ÐCÈ5ð !ñ ô �ð ×)Ò)¨%Ñ0Ô0ð 6Ø%&¨¨1Ð$D­u°Q¸
Ñ/CÔ/CÐ$DÐ$D�M�Må$)¨*Ñ$5Ô$5�MÝ )¨-Ñ 8Ô 8ð Rð R‘H�A�uÝ%1°&¸´-ÀÈ5Ñ%QÔ%Q�E˜!˜!˜!˜Q˜Q˜Q ˜'‘N�NÝ" 5¨+×*>Ò*>¸tÑ*DÔ*DÑEÔEˆEØð 1 KÐ3JÐ$JÐ$JØŸš E¨1¨aÑ0Ô0�ØˆLð ÐKÐKÑKØ”9”? QÑ&¨!Ò+Ð+Ð+Ð-SÑ+Ô+Ð+Ø”9Ô# aÑ'¨1Ò,Ð,Ð,Ð.UÑ,Ô,Ð,Ø$/°=Ò$@ˆHØ$Ð+�q�q¨!ˆHØ (Ð5�H�H¨gˆEØŒyŒ !Ò#Ð# u¤yÔ'7¸1Ò'<Ð'<Ø—x’x  E¤I¤OÐ 4¸E�xÑBÔBÐBØ—9’9å  ¨¤¨H°eÑ<Ô<×DÒDÀRÑHÔHÝ  ¨¤¨H°eÑ<Ô<×DÒDÀRÑHÔHÝ  ¨¤¨H°eÑ<Ô<×DÒDÀRÑHÔHðñô ÷ Šg�b˜%œ)œ/Ñ*Ô*ð+ð ˜-Ò'Ð'Ø”9”? QÑ&¨!Ò+Ð+Ð+Ð-SÑ+Ô+Ð+Ø”9Ô# aÑ'¨1Ò,Ð,Ð,Ð.UÑ,Ô,Ð,å˜V AœY¨¨8Ñ4Ô4ˆAÝ˜V AœY¨¨8Ñ4Ô4ˆAÝ˜V AœY¨¨8Ñ4Ô4ˆAð —Y’Y˜q !¨!�YÑ,Ô,ˆFØ—Y’Y˜q !¨!�YÑ,Ô,ˆFØð =Ø—x’x  F¨FÐ 3¸!�xÑ<Ô<Ð<Ø—8’8˜Q ¨Ð/°a�8Ñ8Ô8Ð8Ø˜&Ò Ð Ý  ¨¤Ñ+Ô+ˆEà—’˜f Qœi¨Ñ.Ô.ß’˜‘”ß’˜˜Q‘”ß’�b”h‘”ð	 ð ˜'�>Ð!Ø˜&Ò Ð Ø—9’9å  ¨¤Ñ+Ô+×3Ò3°BÑ7Ô7Ý  ¨¤¨AÑ.Ô.×6Ò6°rÑ:Ô:ðñô ÷
 Šg�b˜%œ)œ/Ñ*Ô*ð+õ ØY°kÐYÐYÐYñ
ô 
ð 	
r+   c                 ó~   — |j         dk    r|                     d¦  «        }t          || j        d         d¦  «         dS )z6
        Update content from a ``PIL.Image``.
        r›  r   rá   N)ÚmodeÚconvertr   rZ  )r9   Úimgs     r)   Ú	set_imagezVideoFrame.set_imageÆ  s@   € ð Œ8�uÒÐØ—+’+˜eÑ$Ô$ˆCå˜C ¤¨Q¤°Ñ3Ô3Ð3Ð3Ð3r+   c                 ó~   — t          | j        d         | j        d         d¦  «        }|                     | ¦  «         |S )z9
        Construct a frame from a ``PIL.Image``.
        r   rÞ   r”   )ré   ÚsizerÌ  )rË  r'  s     r)   Ú
from_imagezVideoFrame.from_imageÏ  s8   € õ
 ' s¤x°¤{°C´H¸Q´KÀÑIÔIˆØ�Š˜ÑÔÐàˆr+   r”   c                 ód  — ddl }| j        d         }|s| j        d         }|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�ni|d
v rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�n|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�n�|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�n7|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�nÑ|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�nk|dv rbt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         f}�n|dv rAt          | dd¦  «         | j        d         dk    rt          d	¦  «        ‚| j        d         f}�nÀ|dv rAt          | dd¦  «         | j        d         dk    rt          d	¦  «        ‚| j        d         f}�n{|dv rAt          | dd¦  «         | j        d         dk    rt          d	¦  «        ‚| j        d         f}�n6|dv rƒt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  f}�n¯|dv rƒt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  f}�n(|dv rƒt          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  f}�n¡|dv r’t          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  | j        d         dz  f}�n|d v r’t          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  | j        d         dz  f}�nu|d!v r‘t          | dd¦  «         t          | | j        d         dk    ¦  «         | j        dd…         dk    rt          d	¦  «        ‚| j        d         dz  | j        d         dz  | j        d         dz  | j        d         dz  f}nà|d"v rÉt          | dd¦  «         t          | | j        d         dz  dk    ¦  «         t          | | j        d         dz  dk    ¦  «         |d#z  dz  }| j        d         dk    rt          d	¦  «        ‚|d$v r-| j        d         | j        d         dz  | j        d         dz  f}n.| j        d         | j        d         f}nt          d%|› d&�¦  «        ‚|                     d'¦  «        r5|                     |                     | d(g d)¢f         d*d¦  «        ¦  «        } nI|                     d+¦  «        r4|                     |                     | d(g d,¢f         d*d¦  «        ¦  «        } t          t          ¦  «        }|                     | ||||¦  «         |S )-aÇ  
        Construct a frame from a numpy buffer.

        :param int width: optional width of actual image, if different from the array width.

        .. note:: For formats which expect an array of ``uint16``, ``float16`` or ``float32``,
            the samples must be in the system's native byte order.

        .. note:: for ``gbrp`` formats, channels are assumed to be given in RGB order.

        .. note:: For formats where width of the array is not the same as the width of the image,
        for example with yuv420p images the UV rows at the bottom have padding bytes in the middle of the
        row as well as at the end. To cope with these, callers need to be able to pass the actual width.
        r   NrÞ   ¾   r‘   r”   rÝ   rá   rß   )rá   rÞ   z.provided array does not have C_CONTIGUOUS rows¾   r•   r–   r›   rœ   rà   )râ   rß   ¾   r´   rµ   rä   )rç   rÜ   ¾   r‡   rˆ   rŠ   r�   rÜ   )rÜ   rÞ   ¾   r    r¡   r²   r³   )rã   rß   ¾   rÄ   rÅ   rå   ¾   rÆ   rÇ   )ræ   rÜ   >   r‰   rŒ   r�   r“   rÊ   rË   rÌ   rÍ   >   r™   rš   rª   r«   r¬   r­   r®   r¯   r°   r±   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   >   rÂ   rÃ   >   r‹   >
   r—   r˜   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   >   rÀ   rÁ   >   r’   >   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   >   rÈ   rÉ   >   r�   r�   r¶   râ   ¾   r�   r¶   ú)Conversion from numpy array with format `r¬  r’   .)rÞ   rß   r   rá   r
  r‹   )rÞ   rß   r   )r&  r0  r   r5  r%  r5   r±  Úascontiguousarrayr³  ré   rê   Ú_image_fill_pointers_numpy)r  re   r]   r,  r^   Ú	linesizesr'  s          r)   Úfrom_numpy_bufferzVideoFrame.from_numpy_bufferÙ  sÁ	  € ð  	ÐÐÐà”˜Q”ˆØð 	#Ø”K ”NˆEàÐ'Ð'Ð'Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐCÐCÐCÝ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐ/Ð/Ð/Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  GÒ+Ð+Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐ7Ð7Ð7Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐGÐGÐGÝ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐ1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐ1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  GÒ+Ð+Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØð 	
ð 	
ð 	
õ ˜% ¨!Ñ,Ô,Ð,ØŒ}˜QÔ 1Ò$Ð$Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØð 
ð 
ð 
õ( ˜% ¨1Ñ-Ô-Ð-ØŒ}˜QÔ 1Ò$Ð$Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØÐ1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.ØŒ}˜QÔ 1Ò$Ð$Ý Ð!QÑRÔRÐRØœ qÔ)Ð+ˆI‰IØ�xÐÐÝ˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ðˆI‰Ið
 ð 
ð 
ð 
õ ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ðˆI‰Ið
 Ð1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  GÒ+Ð+Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ðˆI‰Ið
 �yÐ Ð Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ð	ˆI‰Ið ð 	
ð 	
ð 	
õ ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  FÒ*Ð*Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ð	ˆI‰Ið Ð3Ð3Ð3Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;ØŒ}˜Q˜R˜RÔ  GÒ+Ð+Ý Ð!QÑRÔRÐRà”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%Ø”˜aÔ  AÑ%ð	ˆIˆIð Ð6Ð6Ð6Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ø˜q‘[ 1‘_ˆFØŒ}˜QÔ 1Ò$Ð$Ý Ð!QÑRÔRÐRØÐ0Ð0Ð0ð ”M !Ô$Ø”M !Ô$¨Ñ)Ø”M !Ô$¨Ñ)ð�	�	ð #œ]¨1Ô-¨u¬}¸QÔ/?Ð@�	�	åØZ¸FÐZÐZÐZñô ð ð ×Ò˜WÑ%Ô%ð 	TØ×(Ò(¨¯ª°U¸3ÀÀÀÐ;LÔ5MÈrÐSTÑ)UÔ)UÑVÔVˆEˆEØ×Ò˜vÑ&Ô&ð 	TØ×(Ò(¨¯ª°U¸3À	À	À	¸>Ô5JÈBÐPQÑ)RÔ)RÑSÔSˆEåÕ1Ñ2Ô2ˆØ×(Ò(¨°°v¸yÈ&ÑQÔQÐQØˆr+   c           	      óª  — |j         j        }t          j        t          j        t
                   |¦  «        }t          |¦  «        }t          j        | j	        ¦  «         || j	        _
        || j	        _        || j	        _        t          |¦  «        D ]\  }	}
|
| j	        j        |	<   Œt          t          j        | j	        j        t          j        t          j        | j	        j
        ¦  «        | j	        j        || j	        j        ¦  «        ¦  «        }t          j        t$          |¦  «        }t'          |¦  «         t          j        ||t*          t          j        t          j        |¦  «        d¦  «        | j	        j        d<   | j	        j        d         t          j        k    rt3          |¦  «         t5          d¦  «        ‚|                      ¦   «          d S )Nr   zav_buffer_create failed)ÚctypesrL   r   r    r!   r   r	   r"   rB  rH   re   r]   r^   r²  r(  r   Úav_image_fill_pointersrv   rt   r   Úav_buffer_creater†   rQ   Úbufr'   r   rJ   r=  )r9   r#  r]   r^   rÜ  re   Úc_dataÚc_ptrr9  r  r(  ÚrequiredÚpy_bufs                r)   rÛ  z%VideoFrame._image_fill_pointers_numpy¶  s‚  € ð" %+¤MÔ$6ˆÝ)/¬µV´^ÅGÔ5LÈfÑ)UÔ)UˆÝ&1°&Ñ&9Ô&9ˆÝÔ˜4œ8Ñ$Ô$Ð$ð #ˆŒŒØˆŒŒØ ˆŒŒÝ$ YÑ/Ô/ð 	,ð 	,‰KˆAˆxØ#+ˆDŒHÔ˜aÑ Ð åÝÔ&Ø””Ý”�CÔ-¨t¬x¬Ñ?Ô?Ø””ØØ”Ô!ñô ñ
ô 
ˆõ ”�V VÑ,Ô,ˆÝ�&ÑÔÐåÔ.ØØÝ ÝŒK�œ vÑ.Ô.Øñ
ô 
ˆŒŒ�Q‰ð Œ8Œ<˜Œ?�fœkÒ)Ð)Ý�fÑÔÐÝÐ7Ñ8Ô8Ð8à×"Ò"Ñ$Ô$Ð$Ð$Ð$r+   c           	      óÌ  — ddl }i dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“i dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d#“d%d#“d&d#“d'd#“d(d#“d)d#“d*d#“d+d#“¥i d,d#“d-d.“d/d.“d0d“d1d“d2d“d3d“d4d“d5d“d6d“d7d“d8d“d9d“d:d“d;d“d<d=“d>d=“¥dd!d#d#ddd!d?œ¥                     |d@¦  «        \  }}}|��T| j        dAk    r| dd…dd…df         } t          | |dB¦  «         |s|dCv r|                     | ddA¦  «        } t          | | j        dA         |k    ¦  «         t          | |                     dD¦  «        ¦  «        } t          | j        dE         | j        d         |¦  «        }|j
        j                             dF¦  «        rG|                     | dd…dd…dEdB…f         | dd…dd…ddE…f         | dd…dd…dBd…f         gdA¬G¦  «        } t          |¦  «        D ]+}t          | dd…dd…|f         |j        |         |¦  «         Œ,|S |dHk    rÝ| \  } }	t          | dIdA¦  «         t          |	dIdA¦  «         t          |	|	j        dJk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          | |j        d         dE¦  «         |j        dE                              |	                     dK¦  «                             dL¦  «                             ¦   «         ¦  «         |S |dMv �r4t          | dIdA¦  «         t          | | j        d         dBz  dk    ¦  «         t          | | j        dE         dAz  dk    ¦  «         t          | j        dE         | j        d         dAz  dBz  |¦  «        }|j        dk    s|j        dk    r|S |j        |j        z  }
dN|
z  dOz  }|                      dP¦  «        }t          |d|
…         |j        d         dE¦  «         t          ||
|…         |j        dE         dE¦  «         t          ||d…         |j        dA         dE¦  «         |S |dQk    �r4t          | dRdA¦  «         t          | | j        d         dBz  dk    ¦  «         t          | | j        dE         dAz  dk    ¦  «         t          | j        dE         | j        d         dAz  dBz  |¦  «        }|j        dk    s|j        dk    r|S |j        |j        z  }
dN|
z  dOz  }|                      dP¦  «        }t          |d|
…         |j        d         dA¦  «         t          ||
|…         |j        dE         dA¦  «         t          ||d…         |j        dA         dA¦  «         |S |dSk    �r1t          | dIdA¦  «         t          | | j        d         dOz  dk    ¦  «         t          | | j        dE         dAz  dk    ¦  «         t          | j        dE         | j        d         dAz  |¦  «        }|j        dk    s|j        dk    r|S |j        |j        z  }
|
|
dAz  z   }|                      dP¦  «        }t          |d|
…         |j        d         dE¦  «         t          ||
|…         |j        dE         dE¦  «         t          ||d…         |j        dA         dE¦  «         |S |dTk    �rct1          | |j        ¦  «        r| j        |j        k    rt9          dU¦  «        ‚|r)| j        dA         dBk    r|                     | dAd¦  «        } n | j        d         dBk    st9          dV¦  «        ‚| j        dEd…         \  }}|dAz  dk    s	|dAz  dk    rt9          dW¦  «        ‚t          |||¦  «        }t          | d         |j        d         dA¦  «         | dEdd…dddA…f                              ¦   «         }| dAdd…dddA…f                              ¦   «         }t          ||j        dE         dA¦  «         t          ||j        dA         dA¦  «         |S |dXk    rvt          | dIdB¦  «         t          | | j        d         dAz  dk    ¦  «         t          | | j        dE         dAz  dk    ¦  «         t          | | j        dA         dAk    ¦  «         �nw|dYv r2t          | dIdB¦  «         t          | | j        dA         dBk    ¦  «         �nA|dZv r2t          | dIdB¦  «         t          | | j        dA         dOk    ¦  «         �n|d[v r–t          | dRdB¦  «         t          | | j        dA         dBk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          t          | |                     dD¦  «        ¦  «        |j        d         d\¦  «         |S |d]v r–t          | d^dB¦  «         t          | | j        dA         dBk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          t          | |                     dD¦  «        ¦  «        |j        d         d_¦  «         |S |d`v r–t          | dRdB¦  «         t          | | j        dA         dOk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          t          | |                     dD¦  «        ¦  «        |j        d         da¦  «         |S |dbv r–t          | dcdB¦  «         t          | | j        dA         dOk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          t          | |                     dD¦  «        ¦  «        |j        d         da¦  «         |S |ddv r–t          | d^dB¦  «         t          | | j        dA         dOk    ¦  «         t          | j        dE         | j        d         |¦  «        }t          t          | |                     dD¦  «        ¦  «        |j        d         de¦  «         |S |dfk    rðt          | dIdA¦  «         t          | | j        d         dBz  dk    ¦  «         t          | | j        dE         dAz  dk    ¦  «         t          | j        dE         | j        d         dAz  dBz  |¦  «        }|j        |j        z  }|                      dP¦  «        }t          |d|…         |j        d         dE¦  «         t          ||d…         |j        dE         dA¦  «         |S t9          dg|› dh�¦  «        ‚t          | j        dE         | j        d         |¦  «        }t          | |j        d         | j        dAk    rdEn| j        dA         ¦  «         |S )ia¥  
        Construct a frame from a numpy array.

        :param bool channel_last: If False (default), the shape for the yuv444p and yuvj444p
            is given by (channels, height, width) rather than (height, width, channels).

        .. note:: For formats which expect an array of ``uint16``, ``float16`` or ``float32``,
            the samples must be in the system's native byte order.

        .. note:: for ``pal8``, an ``(image, palette)`` pair must be passed. `palette` must
            have shape (256, 4) and is given in ARGB format (PyAV will swap bytes if needed).

        .. note:: for ``gbrp`` formats, channels are assumed to be given in RGB order.

        r   NrÔ   )rÞ   rß   rà   rÕ   rÊ   )rÞ   rÞ   rÝ   rÖ   r×   rË   rØ   rÙ   rÌ   rÚ   rÛ   rÍ   r‰   r’   )rÜ   rÞ   rÝ   r¸   )rÜ   rß   rà   r¹   rº   r»   r¼   r½   r¾   r¿   rÈ   )rÜ   rÜ   rä   rÉ   r‹   )rá   rÞ   rÝ   r¢   )rá   rß   rà   r£   r¤   r¥   r¦   r§   r¨   r©   r—   r˜   rÀ   )rá   rÜ   rä   rÁ   rŒ   rª   r«   r¬   r­   r®   r¯   r°   r±   r“   r™   rš   rÂ   )rÞ   rÜ   rä   rÃ   )r�   rž   rÐ   rÑ   rÒ   rÓ   r·   )NNNrß   rá   r¦  r¥  rÞ   r¤  r¨  rŽ   rÝ   )é   rÜ   r«  rª  rØ  é   rÜ   r
  rÎ   rà   r§  rÏ   zArray must be uint16 typez>Array must have shape (3, height, width) or (height, width, 3)zWidth and height must be evenrŸ   rÑ  rÔ  rÒ  râ   rÓ  rä   rç   rÕ  rã   rÖ  rå   r×  ræ   r�   rÙ  r¬  )r&  ra   Úndimr   r³  r5  r0  r  r�  ré   re   rK  r±  Úconcatenater  r   rZ  r‰  rº  r¹  r  r]   r^   rµ  r6   r+  r!  rà   r5   Úcopy)r  re   r»  r,  r/  r*  r!  r'  r  rÆ  Úu_startÚv_startÚflatr^   r]   rÂ  r?   Úuv_starts                     r)   Úfrom_ndarrayzVideoFrame.from_ndarrayí  sÂ  € ð$ 	ÐÐÐð;%
ØÐ.ð;%
àÐ.ð;%
ð ˜?ð;%
ð Ð.ð	;%
ð
 Ð.ð;%
ð ˜?ð;%
ð Ð.ð;%
ð Ð.ð;%
ð ˜?ð;%
ð Ð.ð;%
ð Ð.ð;%
ð ˜?ð;%
ð �Oð;%
ð �_ð;%
ð Ð)ð;%
ð  Ð)ð!;%
ð" Ð)ð#;%
ð ;%
ð$ Ð)ð%;%
ð& Ð)ð';%
ð( Ð)ð);%
ð* Ð)ð+;%
ð, Ð)ð-;%
ð. Ð+ð/;%
ð0 Ð+ð1;%
ð2 �Oð3;%
ð4 Ð(ð5;%
ð6 Ð(ð7;%
ð8 Ð(ð9;%
ð: Ð(ð;;%
ð< Ð(ð=;%
ð> Ð(ð?;%
ð@ Ð(ðA;%
ðB Ð(ðC;%
ðD Ð'ðE;%
ð ;%
ð ;%
ðF Ð'ðG;%
ðH Ð*ðI;%
ðJ Ð*ðK;%
ðL �OðM;%
ðN Ð(ðO;%
ðP Ð(ðQ;%
ðR Ð(ðS;%
ðT Ð(ðU;%
ðV Ð(ðW;%
ðX Ð(ðY;%
ðZ Ð(ð[;%
ð\ Ð(ð];%
ð^ �_ð_;%
ð` Ð'ða;%
ðb Ð'ðc;%
ðd Ð*ðe;%
ðf Ð*ðg;%
ð ;%
ðh $Ø&Ø+Ø+Ø,Ø,Ø'ðu;%
ð ;%
ð ;%
÷v Š#ˆfÐ(Ñ
)Ô
)ñw 	"ˆ�(˜Eðx ÑØŒz˜QŠˆØ˜a˜a˜a    D˜jÔ)�Ý˜% ¨Ñ*Ô*Ð*Øð 1 FÐ.EÐ$EÐ$EØŸš E¨1¨aÑ0Ô0�Ý  u¤{°1¤~¸Ò'AÑBÔBÐBÝ" 5¨&¯/ª/¸$Ñ*?Ô*?Ñ@Ô@ˆEÝ˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEØŒ|Ô ×+Ò+¨EÑ2Ô2ð ØŸšà˜a˜a˜a    A a C˜iÔ(Ø˜a˜a˜a    A a C˜iÔ(Ø˜a˜a˜a    A B B˜hœðð
 ð 'ñ ô �õ ˜8‘_”_ð Oð O�Ý# E¨!¨!¨!¨Q¨Q¨Q°¨'¤N°E´LÀ´OÀXÑNÔNÐNÐNØˆLð �VÒÐØ"‰NˆE�7Ý˜% ¨!Ñ,Ô,Ð,Ý˜' 7¨AÑ.Ô.Ð.Ý ¨¬¸(Ò)BÑCÔCÐCå˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝ  u¤|°A¤¸Ñ:Ô:Ð:ØŒL˜ŒO×"Ò" 7§<¢<°Ñ#6Ô#6×#=Ò#=¸dÑ#CÔ#C×#KÒ#KÑ#MÔ#MÑNÔNÐNØˆLØÐ.Ð.Ñ.Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?å˜uœ{¨1œ~°´¸A´ÀÑ0BÀqÑ/HÈ&ÑQÔQˆEØŒ{˜aÒÐ 5¤<°1Ò#4Ð#4Ø�Ø”k E¤LÑ0ˆGØ˜'‘k QÑ&ˆGØ—=’= Ñ$Ô$ˆDÝ  Q w Y¤°´¸a´À!ÑDÔDÐDÝ  W¨W _Ô 5°u´|ÀA´ÈÑJÔJÐJÝ  W X X¤°´¸Q´ÀÑCÔCÐCØˆLØ�}Ò$Ñ$Ý˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?å˜uœ{¨1œ~°´¸A´ÀÑ0BÀqÑ/HÈ&ÑQÔQˆEØŒ{˜aÒÐ 5¤<°1Ò#4Ð#4Ø�Ø”k E¤LÑ0ˆGØ˜'‘k QÑ&ˆGØ—=’= Ñ$Ô$ˆDÝ  Q w Y¤°´¸a´À!ÑDÔDÐDÝ  W¨W _Ô 5°u´|ÀA´ÈÑJÔJÐJÝ  W X X¤°´¸Q´ÀÑCÔCÐCØˆLØ�yÒ Ñ Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?å˜uœ{¨1œ~¨u¬{¸1¬~ÀÑ/BÀFÑKÔKˆEØŒ{˜aÒÐ 5¤<°1Ò#4Ð#4Ø�Ø”k E¤LÑ0ˆGØ ¨1¡Ñ,ˆGØ—=’= Ñ$Ô$ˆDÝ  Q w Y¤°´¸a´À!ÑDÔDÐDÝ  W¨W _Ô 5°u´|ÀA´ÈÑJÔJÐJÝ  W X X¤°´¸Q´ÀÑCÔCÐCØˆLØ�}Ò$Ñ$Ý˜e R¤ZÑ0Ô0ð >°E´KÀ2Ä9Ò4LÐ4LÝ Ð!<Ñ=Ô=Ð=ð ð  ¤¨A¤°!Ò 3Ð 3ØŸš E¨1¨aÑ0Ô0��Ø”k !”n¨Ò)Ð)Ý ØTñô ð ð "œK¨¨¨œO‰MˆF�EØ�q‰y˜AŠ~ˆ~ ¨!¡¨q¢ Ý Ð!@ÑAÔAÐAå˜u f¨fÑ5Ô5ˆEÝ  a¤¨%¬,°q¬/¸1Ñ=Ô=Ð=à�a˜˜˜˜C˜C˜a˜C�iÔ ×%Ò%Ñ'Ô'ˆAØ�a˜˜˜˜C˜C˜a˜C�iÔ ×%Ò%Ñ'Ô'ˆAÝ  5¤<°¤?°AÑ6Ô6Ð6Ý  5¤<°¤?°AÑ6Ô6Ð6ØˆLØ�yÒ Ð Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ñ;ØÐ)Ð)Ð)Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ñ;ØÐ7Ð7Ð7Ý˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ñ;ØÐCÐCÐCÝ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ý˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝÝ˜u f§o¢o°dÑ&;Ô&;Ñ<Ô<¸e¼lÈ1¼oÈqñô ð ð ˆLØÐ/Ð/Ð/Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ý˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝÝ˜u f§o¢o°dÑ&;Ô&;Ñ<Ô<¸e¼lÈ1¼oÈrñô ð ð ˆLØÐGÐGÐGÝ˜% ¨1Ñ-Ô-Ð-Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ý˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝÝ˜u f§o¢o°dÑ&;Ô&;Ñ<Ô<¸e¼lÈ1¼oÈqñô ð ð ˆLØÐ1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ý˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝÝ˜u f§o¢o°dÑ&;Ô&;Ñ<Ô<¸e¼lÈ1¼oÈqñô ð ð ˆLØÐ1Ð1Ð1Ý˜% ¨AÑ.Ô.Ð.Ý  u¤{°1¤~¸Ò':Ñ;Ô;Ð;Ý˜uœ{¨1œ~¨u¬{¸1¬~¸vÑFÔFˆEÝÝ˜u f§o¢o°dÑ&;Ô&;Ñ<Ô<¸e¼lÈ1¼oÈrñô ð ð ˆLØ�vÒÐÝ˜% ¨!Ñ,Ô,Ð,Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?Ý  u¤{°1¤~¸Ñ'9¸QÒ'>Ñ?Ô?Ð?å˜uœ{¨1œ~°´¸A´ÀÑ0BÀqÑ/HÈ&ÑQÔQˆEØ”{ U¤\Ñ1ˆHØ—=’= Ñ$Ô$ˆDÝ  Y h Y¤°´¸a´À!ÑDÔDÐDÝ  X Y Y¤°´¸a´À!ÑDÔDÐDØˆLåØZ¸FÐZÐZÐZñô ð õ ˜5œ; qœ>¨5¬;°q¬>¸6ÑBÔBˆÝØ�5”< ”?¨¬°qª¨ A A¸e¼kÈ!¼nñ	
ô 	
ð 	
ð ˆr+   r�   r  c                 ó  — t          |||¦  «        }|dk    rt          | |j        d         d||¦  «         nM|dv r6t          | |j        d         |                     d¦  «        rdnd||¦  «         nt	          d|› d	�¦  «        ‚|S )
Nr�   r   rÜ   >   rÊ   rË   rÌ   rÍ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   Ú8rÞ   rß   zFormat 'z' is not supported.)ré   r  rZ  r�  ÚNotImplementedError)r  r]   r^   re   r  r  r'  s          r)   Ú
from_byteszVideoFrame.from_bytesî  sÀ   € õ ˜5 &¨&Ñ1Ô1ˆØ�VÒÐÝØ˜5œ<¨œ?¨A¨Àñô ð ð ð ð 
ð 
ð 
õ  ØØ”˜Q”Ø—_’_ SÑ)Ô)Ð0��¨qØØñô ð ð õ &Ð&L°Ð&LÐ&LÐ&LÑMÔMÐMØˆr+   r�   Nr.   r/   r0   c	           	      óÐ  — t          | t          t          f¦  «        s| f} t          |¦  «        }	t          d¦  «        }
t          d¦  «        }t          d¦  «        }|	|
||fvr t                               | |	|||||¦  «        S t          | ¦  «        dk    rt          d¦  «        ‚|	|
k    rdnd}|dk    rdnd}t          j	        }t          j	        }d }	 t          | d	         |¦  «        }t          | d         |¦  «        }|j        j        }|j        j        }||k    rt          d
¦  «        ‚|t          t          fvrt          d¦  «        ‚|j        j        }|j        j        }||k    rt          d¦  «        ‚|t          k    r|€|}n+||k    rt          d¦  «        ‚n|dvrt          d¦  «        ‚d	}|t          k    r|d	k    s|d	k    rt          d¦  «        ‚|j        j        j        dk    s*|j        j        j        |k    s|j        j        j        dk    rt+          d¦  «        ‚|j        j        j        dk    s*|j        j        j        |k    s|j        j        j        dk    rt+          d¦  «        ‚|j        j        dk    rt          d¦  «        ‚t          j        t0          |j        j        d	         ¦  «        }t          j        t0          |j        j        d         ¦  «        }|d	k    r;|d	k    r5t          j        t4          |¦  «        }t          j        t4          |¦  «        }n6|d	k    s|d	k    rt          d¦  «        ‚||k    s||k    rt          d¦  «        ‚|dz  s|dz  rt          d¦  «        ‚|j        j        t          j	        k    rP|j        j        d         dk    rt          d¦  «        ‚t          j        t0          |j        j        d	         ¦  «        }nt          j        t0          |¦  «        }t          j        t4          ||z  ¦  «        }t          j        t4          ||z  ¦  «        }|j        j        }|dz  }|dk    röt          j        t4          |j        j        d	         ¦  «        }t          j        t4          |j        j        d         ¦  «        }||k    s||k    rt          d¦  «        ‚|j        j        t          j	        k    rQ|j        j        d         dk    rt          d¦  «        ‚t          j        t0          |j        j        d	         ¦  «        }�not          j        t0          |¦  «        }�nS|dk    �r=t          j        t4          |j        j        d	         ¦  «        }t          j        t4          |j        j        d         ¦  «        } t          j        t4          |j        j        d         ¦  «        }!||k    s| |dz  k    s|!dk    rt          d¦  «        ‚|j        j        t          j	        k    rf|j        j        d         dk    s|j        j        d         dk    rt          d¦  «        ‚t          j        t0          |j        j        d	         ¦  «        }n*t          j        t0          |¦  «        }nt          d¦  «        ‚t          j        t4          ||z  ¦  «        }"t          j        t4          |"|dz  z  ¦  «        }#t9          ¦   «         }||j        _        ||j        _        |t          k    �rP|€%tA          ||€| n|tC          |¦  «        ¬¦  «        }$nÞt          |t@          ¦  «        st+          d¦  «        ‚t5          |j        ¦  «        t5          |¦  «        k    rt          d ¦  «        ‚|�4tC          |j"        ¦  «        tC          |¦  «        k    rt          d!¦  «        ‚|�4tC          |j#        ¦  «        tC          |¦  «        k    rt          d"¦  «        ‚t          j        t@          |¦  «        }$|$ $                    |	||¦  «        }%t          d#¦  «        |j        _%        |%|j        _&        ||_'        |$|_(        n|	|j        _%        t          j        t          j)        tT                   |j        j+        ¦  «        t          j        t          j,        |j        j-        ¦  «        z   }&t          j        t          j)        tT                   |j        j+        ¦  «        t          j        t          j,        |j        j-        ¦  «        z   }'t]          j/        |&|t`          t          j        t          j1        |¦  «        d	¦  «        |j        j2        d	<   |j        j2        d	         t          j	        k    rtg          d$¦  «        ‚|&|j        j+        d	<   ||j        j4        d	<   t          j	        }t]          j/        |'|#t`          t          j        t          j1        |¦  «        d	¦  «        |j        j2        d<   |j        j2        d         t          j	        k    rtg          d%¦  «        ‚|'|j        j+        d<   |"|j        j4        d<   t          j	        }| 5                    ¦   «          |S # tl          $ rg |�t]          j7        |j        ¦  «         |t          j	        k    r| 8                    |¦  «         |t          j	        k    r| 8                    |¦  «         ‚ w xY w)&Ns   nv12s   p010les   p016lerß   zHfrom_dlpack currently supports 2-plane formats only (nv12/p010le/p016le)rã   ræ   rÞ   r   z,plane tensors must have the same device_typez.only CPU and CUDA DLPack tensors are supportedz-plane tensors must be on the same CUDA devicez4device_id does not match the DLPack tensor device_id©Nr   ú#device_id must be 0 for CPU tensorsú+CPU DLPack tensors must have device_id == 0zunexpected dtype for plane 0zunexpected dtype for plane 1zplane 0 must be 2D (H, W)ú+either specify both width/height or neitherú)plane 0 shape does not match width/heightz0width/height must be even for nv12/p010le/p016lez0plane 0 must be contiguous in the last dimensionz*plane 1 must have shape (H/2, W) for 2D UVz0plane 1 must be contiguous in the last dimensionrá   z/plane 1 must have shape (H/2, W/2, 2) for 3D UVz-unexpected UV plane strides for (H/2, W/2, 2)zplane 1 must be 2D or 3D)r.   r/   r0   z"cuda_context must be a CudaContextzAcuda_context.device_id does not match the DLPack tensor device_idz3cuda_context.primary_ctx does not match primary_ctxz3cuda_context.current_ctx does not match current_ctxr`   z#av_buffer_create failed for plane 0z#av_buffer_create failed for plane 1)9r6   rU  Úlistr	   ré   Ú_from_dlpack_planarr®  r5   r   r'   r   Ú	dl_tensorÚdevice_typer   r   rô  r.   r!  ÚcodeÚbitsÚlanesr8   rê  r    r   r0  r7   r%  rë   rH   r]   r^   r-   r`  r/   r0   rn   re   rD  Ú
_device_idÚ	_cuda_ctxr!   r   rL   r=   Úbyte_offsetr"   rá  rƒ   rQ   râ  rJ   r(  r=  rS   rB  r‚   )(rZ  re   r]   r^   rO   r.   r/   Úcuda_contextr0   r\   r�   Úp010leÚp016leÚexpected_bitsr*  Úm0Úm1r'  Ú	dev_type0Ú	dev_type1Údev0Údev1Úy_hÚy_wÚy_pitch_elemsÚ
y_linesizeÚy_sizeÚuv_ndimÚuv_h_expectedÚuv_hÚuv_wÚuv_pitch_elemsÚuv_w2Úuv_cÚuv_linesizeÚuv_sizeÚctxrl   Úy_ptrÚuv_ptrs(                                           r)   Úfrom_dlpackzVideoFrame.from_dlpack  s
  € õ ˜&¥5­$ -Ñ0Ô0ð 	Ø�YˆFå$/°Ñ$7Ô$7ˆÝ˜7Ñ#Ô#ˆÝ˜YÑ'Ô'ˆÝ˜YÑ'Ô'ˆà˜$ ¨Ð/Ð/Ð/Ý×1Ò1Ø˜ ¨¨v°v¸yñô ð õ ˆv‰;Œ;˜!ÒÐÝØZñô ð ð $ tš^˜^˜˜°ˆØ%¨Ò*Ð*�1�1°ˆå.4¬kˆÝ.4¬kˆØ ˆð~	Ý  ¨¤¨FÑ3Ô3ˆBÝ  ¨¤¨FÑ3Ô3ˆBàœÔ0ˆIØœÔ0ˆIØ˜IÒ%Ð%Ý Ð!OÑPÔPÐPØ¥­ Ð-Ð-Ý)ØDñô ð ð ”<Ô)ˆDØ”<Ô)ˆDØ�tŠ|ˆ|Ý Ð!PÑQÔQÐQØ�EÒ!Ð!ØÐ$Ø $�I�IØ $Ò&Ð&Ý$ØNñô ð ð 'ð
  IÐ-Ð-Ý$Ð%JÑKÔKÐKØ�	Ø�DÒ Ð  d¨a¢i i°4¸1²9°9Ý Ð!NÑOÔOÐOð ”Ô"Ô'¨1Ò,Ð,Ø”<Ô%Ô*¨mÒ;Ð;Ø”<Ô%Ô+¨qÒ0Ð0åÐ >Ñ?Ô?Ð?à”Ô"Ô'¨1Ò,Ð,Ø”<Ô%Ô*¨mÒ;Ð;Ø”<Ô%Ô+¨qÒ0Ð0åÐ >Ñ?Ô?Ð?àŒ|Ô  AÒ%Ð%Ý Ð!<Ñ=Ô=Ð=å”+�g r¤|Ô'9¸!Ô'<Ñ=Ô=ˆCÝ”+�g r¤|Ô'9¸!Ô'<Ñ=Ô=ˆCà˜Šzˆz˜f¨šk˜kÝœ¥C¨Ñ-Ô-�Ýœ¥S¨#Ñ.Ô.��Ø˜!’�˜v¨š{˜{Ý Ð!NÑOÔOÐOà˜%’<�< 3¨&¢= =Ý$Ð%PÑQÔQÐQà�q‰yð U˜F Q™Jð UÝ Ð!SÑTÔTÐTàŒ|Ô#¥v¤{Ò2Ð2Ø”<Ô'¨Ô*¨aÒ/Ð/Ý$Ð%WÑXÔXÐXÝ &¤­G°R´\Ô5IÈ!Ô5LÑ MÔ M��å &¤­G°UÑ ;Ô ;�åœ¥S¨-¸(Ñ*BÑCÔCˆJÝ”[¥ j°6Ñ&9Ñ:Ô:ˆFà”lÔ'ˆGØ" a™KˆMà˜!Š|ˆ|Ý”{¥3¨¬Ô(:¸1Ô(=Ñ>Ô>�Ý”{¥3¨¬Ô(:¸1Ô(=Ñ>Ô>�Ø˜=Ò(Ð(¨D°EªM¨MÝ$Ð%QÑRÔRÐRØ”<Ô'­6¬;Ò6Ð6Ø”|Ô+¨AÔ.°!Ò3Ð3Ý(ØNñô ð õ &,¤[µ¸"¼,Ô:NÈqÔ:QÑ%RÔ%R�N‘Nå%+¤[µ¸$Ñ%?Ô%?�N‘NØ˜A’‘Ý”{¥3¨¬Ô(:¸1Ô(=Ñ>Ô>�Ýœ¥C¨¬Ô);¸AÔ)>Ñ?Ô?�Ý”{¥3¨¬Ô(:¸1Ô(=Ñ>Ô>�Ø˜=Ò(Ð(¨E°e¸q±jÒ,AÐ,AÀTÈQÂYÀYÝ$Ð%VÑWÔWÐWØ”<Ô'­6¬;Ò6Ð6Ø”|Ô+¨AÔ.°!Ò3Ð3°r´|Ô7KÈAÔ7NÐRSÒ7SÐ7SÝ(ØKñô ð õ &,¤[µ¸"¼,Ô:NÈqÔ:QÑ%RÔ%R�N�Nå%+¤[µ¸%Ñ%@Ô%@�N�Nå Ð!;Ñ<Ô<Ð<å œ+¥c¨>¸HÑ+DÑEÔEˆKÝ”k¥# {°fÀ±kÑ'BÑCÔCˆGå%Ñ'Ô'ˆEØ#ˆEŒIŒOØ%ˆEŒIÔØ�EÒ!Ñ!ð  Ð'Ý%Ø"+à/:Ð/B ˜O˜OÈå$(¨Ñ$5Ô$5ðñ ô �C�Cõ & lµKÑ@Ô@ð NÝ'Ð(LÑMÔMÐMÝ˜<Ô1Ñ2Ô2µc¸)±n´nÒDÐDÝ(Ø_ñô ð ð #Ð.µ4Ø$Ô0ñ4ô 4å˜kÑ*Ô*ò4+ð 4+õ )ØQñô ð ð #Ð.µ4Ø$Ô0ñ4ô 4å˜kÑ*Ô*ò4+ð 4+õ )ØQñô ð õ !œ+¥k°<Ñ@Ô@�Cà ×/Ò/°¸¸vÑFÔF�
Ý#.¨wÑ#7Ô#7�”	Ô Ø*4�”	Ô'Ø#,�Ô Ø"%�”�à#)�”	Ô å”KÝ”�wÔ'¨¬Ô):ñô å”�FœM¨2¬<Ô+CÑDÔDñEˆEõ ”[Ý”�wÔ'¨¬Ô):ñô å”�FœM¨2¬<Ô+CÑDÔDñEˆFõ  #Ô3Ø�vÕ4µf´kÅ&Ä-ÐQSÑ6TÔ6TÐVWñ ô  ˆEŒIŒM˜!Ñð ŒyŒ}˜QÔ¥6¤;Ò.Ð.Ý!Ð"GÑHÔHÐHØ %ˆEŒIŒN˜1ÑØ$.ˆEŒIÔ˜qÑ!Ý”ˆBå"Ô3ØØÝ%Ý”�FœM¨2Ñ.Ô.Øñ ô  ˆEŒIŒM˜!Ñð ŒyŒ}˜QÔ¥6¤;Ò.Ð.Ý!Ð"GÑHÔHÐHØ &ˆEŒIŒN˜1ÑØ$/ˆEŒIÔ˜qÑ!Ý”ˆBà×'Ò'Ñ)Ô)Ð)ØˆLøåð 	ð 	ð 	ØÐ ÝÔ" 5¤9Ñ-Ô-Ð-Ø•V”[Ò Ð Ø—
’
˜2‘”�Ø•V”[Ò Ð Ø—
’
˜2‘”�Øð	øøøs   Ãfi4 é4A1k%c           
      óH  — t          j        |¦  «        }|t          j        k    rt	          d|›�¦  «        ‚|j        t           j        t           j        z  t           j        z  z  rt	          d|›d�¦  «        ‚d}t          |j
        ¦  «        D ]M}	t          j        t          j        |j        |	         j        ¦  «        dz   |k    r|j        |	         j        dz   }ŒNdg|z  }
t          |¦  «        D ]q}d}t          |j
        ¦  «        D ]?}	t          j        t          j        |j        |	         j        ¦  «        |k    r
|	|
|<   |dz  }Œ@|dk    rt	          d|›d�¦  «        ‚Œrt          | ¦  «        |k    r$t!          |›d|› d	t          | ¦  «        › �¦  «        ‚|j        d         j        }|dk    r|d
k    rt	          d¦  «        ‚|d
k    r#|j        t           j        z  rt	          d¦  «        ‚|dz  }|dvrt!          d¦  «        ‚|j        }|j        }d }t          j        }	 t+          ¦   «         }||j        _        t          |¦  «        D �]ï}t1          | |         |¦  «        }|j        j        t6          k    rt	          d¦  «        ‚|j        j        dk    rt!          d¦  «        ‚|j        j        j        dk    s*|j        j        j        |k    s|j        j        j         dk    rtC          d|› �¦  «        ‚|j        j"        d
k    rt!          d|› d�¦  «        ‚t          j        tF          |j        j$        d         ¦  «        }t          j        tF          |j        j$        d         ¦  «        }|dk    r¯|dk    r;|dk    r5t          j        t          |¦  «        }t          j        t          |¦  «        }n6|dk    s|dk    rt!          d¦  «        ‚||k    s||k    rt!          d¦  «        ‚|r|d
z  s|r|d
z  rt!          d|›�¦  «        ‚||j        _%        ||j        _&        |
|         }|dk    s|d
k    o|p|}|r| |z	   n|}|r| |z	   n|}||k    s||k    rt!          d|› d|› d|› d�¦  «        ‚|j        j'        t          j        k    rT|j        j'        d         dk    rt!          d|› d�¦  «        ‚t          j        tF          |j        j'        d         ¦  «        }nt          j        tF          |¦  «        }t          j        t          ||z  ¦  «        }t          j        t          ||z  ¦  «        }t          j        t          j(        tR                   |j        j*        ¦  «        t          j        t          j+        |j        j,        ¦  «        z   }t          j-        ||t\          t          j        t          j/        |¦  «        d¦  «        |j        j0        |<   |j        j0        |         t          j        k    rtc          d|› �¦  «        ‚||j        j*        |<   ||j        j2        |<   t          j        }�Œñ| 3                    ¦   «          |S # th          $ rB |�t          j5        |j        ¦  «         |t          j        k    r| 6                    |¦  «         ‚ w xY w)Nzunknown pixel format zCfrom_dlpack does not support bitstream, palette, or Bayer formats (ú)r   rÞ   zMfrom_dlpack supports nv12/p010le/p016le and planar single-component formats; z is not supportedz
 requires z plane(s), got rß   z=only 8- and 16-bit components are supported for DLPack importz6big-endian formats are not supported for DLPack importrã   r÷  rø  z5only CPU DLPack tensors are supported for this formatrù  zunexpected dtype for plane zplane z must be 2D (H, W)rú  rû  zwidth/height must be even for z must have shape (z, z) must be contiguous in the last dimensionz"av_buffer_create failed for plane )7r"   Úav_pix_fmt_desc_getr   r'   rô  ra  ÚAV_PIX_FMT_FLAG_BITSTREAMÚAV_PIX_FMT_FLAG_PALÚAV_PIX_FMT_FLAG_BAYERr  rR  r    r7   rS  r  r®  r5   r  ÚAV_PIX_FMT_FLAG_BEÚlog2_chroma_wÚlog2_chroma_hrë   rH   re   r   rþ  rÿ  r   r.   r!  r   r  r  r8   rê  r   r0  r]   r^   r%  r!   r   rL   r=   r  rá  rƒ   rQ   râ  rJ   r(  r=  rS   rB  r‚   )rZ  r\   re   r]   r^   rO   r.   ÚdescÚ	nb_planesr  Úcomp_of_planeÚprX  r*  r	  Úlog2_wÚlog2_hr'  ÚmÚphÚpwÚcomp_idxÚ	is_chromaÚexp_wÚexp_hÚpitch_elemsr(  rÎ  rH   s                                r)   rý  zVideoFrame._from_dlpack_planarú  s  € õ Ô# FÑ+Ô+ð 	ð •6”;ÒÐÝ%Ð&H¸fÐ&HÐ&HÑIÔIÐIØŒ:ÝÔ)ÝÔ%ñ&åÔ'ñ(ñ
ð 	õ
 &ð(Ø"ð(ð (ð (ñô ð ð !"ˆ	Ý�tÔ)Ñ*Ô*ð 	3ð 	3ˆAÝŒ{�6œ: t¤y°¤|Ô'9Ñ:Ô:¸QÑ>ÀÒJÐJØ œI aœLÔ.°Ñ2�	øð ˜˜i™ˆÝ�yÑ!Ô!ð 
	ð 
	ˆAØˆEÝ˜4Ô-Ñ.Ô.ð ð �Ý”;�vœz¨4¬9°Q¬<Ô+=Ñ>Ô>À!ÒCÐCØ'(�M !Ñ$Ø˜Q‘J�EøØ˜ŠzˆzÝ)ðMØ17ðMð Mð Mñô ð ð õ ˆv‰;Œ;˜)Ò#Ð#ÝØÐNÐN yÐNÐNÅÀVÁÄÐNÐNñô ð ð  $œy¨œ|Ô0ˆØ�qŠ=ˆ=˜X¨š]˜]Ý%ØOñô ð ð �qŠ=ˆ=˜TœZ­#Ô*@Ñ@ˆ=Ý%ØHñô ð ð %-¨q¡Lˆà˜IÐ%Ð%ÝÐBÑCÔCÐCà!Ô/ˆØ!Ô/ˆà ˆÝ-3¬[ˆðQ	Ý%Ñ'Ô'ˆEØ%ˆEŒIÔå˜9Ñ%Ô%ð C ñ C �Ý# F¨1¤I¨vÑ6Ô6�à”;Ô*­dÒ2Ð2Ý-ØOñô ð ð ”;Ô(¨AÒ-Ð-Ý$Ð%RÑSÔSÐSð ”KÔ%Ô*¨aÒ/Ð/Ø”{Ô(Ô-°Ò>Ð>Ø”{Ô(Ô.°!Ò3Ð3å#Ð$EÀ!Ð$EÐ$EÑFÔFÐFà”;Ô# qÒ(Ð(Ý$Ð%C¨aÐ%CÐ%CÐ%CÑDÔDÐDå”[¥¨!¬+Ô*;¸AÔ*>Ñ?Ô?�Ý”[¥¨!¬+Ô*;¸AÔ*>Ñ?Ô?�à˜’6�6Ø ’z�z f°¢k kÝ &¤­C°Ñ 4Ô 4˜Ý!'¤­S°"Ñ!5Ô!5˜˜Ø !š˜ v°¢{ {Ý(Ð)VÑWÔWÐWØ˜uš˜¨¨fª¨Ý(Ð)TÑUÔUÐUØð V 5¨1¡9ð V°&ð V¸VÀa¹Zð VÝ(Ð)TÈ&Ð)TÐ)TÑUÔUÐUØ&+�E”I”OØ'-�E”IÔ$à(¨Ô+�Ø%¨š]Ð;¨h¸!ªmÐSÀ&ÐBRÈF�	Ø3<ÐG˜U˜F vÑ-Ð.Ð.À%�Ø4=ÐI˜V˜G¨Ñ.Ð/Ð/À6�à˜’;�; "¨¢+ +Ý$Ð%T¨aÐ%TÐ%TÀ5Ð%TÐ%TÈEÐ%TÐ%TÐ%TÑUÔUÐUà”;Ô&­&¬+Ò5Ð5Ø”{Ô*¨1Ô-°Ò2Ð2Ý(ØQ QÐQÐQÐQñô ð õ #)¤+­g°q´{Ô7JÈ1Ô7MÑ"NÔ"N�K�Kå"(¤+­g°uÑ"=Ô"=�Kå!œ;¥s¨K¸(Ñ,BÑCÔC�Ý”{¥3¨°5Ñ(8Ñ9Ô9�å”kÝ”N¥7Ô+¨Q¬[Ô-=ñô å”K¥¤¨q¬{Ô/FÑGÔGñH�õ $'Ô#7Ø˜Õ4µf´kÅ&Ä-ÐQRÑ6SÔ6SÐUVñ$ô $�”	”˜aÑ ð ”9”= Ô#¥v¤{Ò2Ð2Ý%Ð&NÈ1Ð&NÐ&NÑOÔOÐOØ$'�”	”˜qÑ!Ø(0�”	Ô" 1Ñ%Ý”K�‘à×'Ò'Ñ)Ô)Ð)ØˆLøåð 	ð 	ð 	ØÐ ÝÔ" 5¤9Ñ-Ô-Ð-Ø•F”KÒÐØ—	’	˜!‘”�Øð	øøøs   È%P/Y ÙAZ!)r   r   r�   )F)r”   r   )r”   F)r�   FF)r�   r   r   NNNNN).ro   rp   rq   r:   r   ru   r"   rv   Úuintr8  r=  rA   Úpropertyrf   rM  rZ  r]   r^   r^  rc  rf  Úsetterrm  rq  ru  ry  r~  r‚  rt   r˜  r¢  Ú	cdivisionrÇ  rÌ  ÚstaticmethodrÏ  rÝ  rÛ  rñ  r   r7   rõ  r‹  r`  r!  rý  rw   r+   r)   ré   ré   4  s†  € € € € € ð,ð ,ð ,ð ,ð „\ð%˜CÔ-ð %°f´kð %È6Ì;ð %ð %ð %ñ „\ð%ð$ „\ð
ð 
ñ „\ð
ð%ð %ð %ð ðWð Wñ „XðWð
ð 
ð 
ð ðHð Hñ „XðHð> ðð ñ „Xðð ðð ñ „Xðð ð*ð *ñ „Xð*ð ðCð Cñ „XðCð
 ð"ð "ñ „Xð"ð Ôð#ð #ñ Ôð#ð ð#ð #ñ „Xð#ð Ôð$ð $ñ Ôð$ð ð$ð $ñ „Xð$ð Ôð%ð %ñ Ôð%ð ð"ð "ñ „Xð"ð Ôð#ð #ñ Ôð#ð ð(ð (ñ „Xð(ð Ôð)ð )ñ Ôð)ð
@ð 
@ð 
@ð7ð 7ð 7ð"3˜Vð "3ð "3ð "3ð "3ðH#
ð #
ð #
ðJ €VÔ�dÑÔðr
ð r
ð r
ñ Ôðr
ðh4ð 4ð 4ð ðð ñ „\ðð ðZð Zð Zñ „\ðZðx5%ð 5%ð 5%ðn Ø€VÔ�dÑÔð}ð }ð }ñ Ôñ „\ð}ð~ ð
 ØØð$ð $Øð$àð$ð ð$ð $ð $ñ „\ð$ðL ð ØØØØ $Ø#'ØØ#'ðbð bàðbð ðbð ð	bð ˜‘:ðbð ˜D‘[ðbð ˜D‘[ðbð bð bñ „\ðbðH ðRð Rñ „\ðRð Rð Rr+   ré   )LÚsysÚenumr   r   Úcython.cimports.libavÚcimportsÚlibavr"   Úcython.cimports.av.dictionaryr   Úcython.cimports.av.errorr   Ú$cython.cimports.av.sidedata.sidedatar   Úcython.cimports.av.utilsr   Úcython.cimports.av.video.formatr	   r
   Úcython.cimports.av.video.planer   r   r   r   Úcython.cimports.cpython.excr   Ú!cython.cimports.cpython.pycapsuler   r   r   Úcython.cimports.cpython.refr   r   Úcython.cimports.hwcontext_cudar   r   Úcython.cimports.libc.stdintr   r   r   ru   r;  Ú	exceptvalr!   rK   Úvoidr*   ÚfinalÚcclassr-   rt   r   rQ   rƒ   r†   r  rê   Úsupported_np_pix_fmtsr­  r‹  rU  r9  r¯  ré   rë   rí   rs   Ú	byteorderr  Úinliner  r  r   r1  r5  ÚFramerw   r+   r)   ú<module>rV     s½	  ðØ 
€
€
€
Ø Ð Ð Ð Ð Ð à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø .Ð .Ð .Ð .Ð .Ð .Ø EÐ EÐ EÐ EÐ EÐ EØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð
 =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð „Ø„Ø€Ô˜ÐÑÔð)Ø”˜sÔ4Ô5ð)à„[ð)ð )ð )ñ Ôñ „ñ „ð)ð „Ø„ðgð gð gð gð gñ gô gñ „ñ „ðgðT „ð˜ð ¨ð °F´NÀ?Ô4Sð ð ð ñ „ðð8 „Ø„Ø€Ô˜ÐÑÔð!ØŒMð!à
Œ.˜Ô
!ð!ð „[ð!ð !ð !ñ Ôñ „ñ „ð!ð „Ø„Ø€Ô˜ÐÑÔð3ØŒMð3à
Œ.˜Ô
!ð3ð „[ð3ð 3ð 3ñ Ôñ „ñ „ð3ð (˜œ¨°°±´Ñ9Ô9Ð ðVð Vð VÐ ðt $�V”^Øˆˆe�F”K Ð$Ô%Ð	%Ô&ðPØ�ðPà�ðPð 	�|ðPð 	�|ð	Pð
 	�|ðPð 	�|ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	˜-ðPð 	�ðPð  	�=ð!Pð" 	�=ð#Pð Pð$ 	�ð%Pð& 	�ð'Pð( 	�Mð)Pð* 	�Mð+Pð, 	�ð-Pð. 	�]ð/Pð0 	�]ð1Pð2 	�]ð3Pð4 	�]ð5Pð6 	�]ð7Pð8 	�]ð9Pð: 	�]ð;Pð< 	�]ð=Pð> 	�nð?Pð@ 	�nðAPðB 	�ðCPðD 	�MðEPð Pð PðF 	�MðGPðH 	�MðIPðJ 	�MðKPðL 	�MðMPðN 	�MðOPðP 	�MðQPðR 	�MðSPðT 	�=ðUPðV 	�=ðWPðX 	�^ðYPðZ 	�^ð[Pð\ 	�ð]Pð^ 	�Mð_Pð` 	�MðaPðb 	�MðcPðd 	�MðePðf 	�MðgPð Pð Pðh 	�MðiPðj 	�MðkPðl 	�MðmPðn 	�ðoPðp 	�=ðqPðr 	�=ðsPðt 	�^ðuPðv 	�^ðwPðx 	�ðyPðz 	�=ð{Pð| 	�=ð}Pð~ 	�ðPð@ 	�ðAPðB 	�MðCPðD 	�MðEPðF 	�^ðGPðH 	�^ðIPð PðJ %Ø$Ø#Ø#ØØ$Ø$Ø%Ø%Ø Øð_Pð Pð PñSô SÐ ðl „ð.˜:ð .ð .ð .ñ „ð.ð ð  ð  ð  ð  �'ñ  ô  ð  ð  �” ¤¨S¬]¸eÒ-CÑDÔD€ð „Ø„ð f¤kð ð ð ñ „ñ „ðð „ð%àð%ð ”[ð%ð ”[ð	%ð
 ”;ð%ð %ð %ñ „ð%ðP „ðH jð HÀ6Ä;ð Hð Hð Hñ „ðHð
 „Ø„àFMðMð MØðMØ(.¬ðMØ@CðMð Mð Mñ „ñ „ðMðD „ðJ˜vð J¨6¬;ð Jð Jð Jñ „ðJð
 „Ø„ðWð Wð Wð Wð W�ñ Wô Wñ „ñ „ðWð Wð Wr+   