
    3j)                        S SK r S SKJs  Jr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJrJr  S SKJr  S SKJrJrJr  S SKJrJr  \ R2                  \ R4                   " S	 S
\5      5       5       r\ R:                  \ R<                  \ R>                  " SS9S\ R@                  \!   S\ RD                  4S j5       5       5       r#\ R:                  \ R>                  " SS9S\$S\ RD                  4S j5       5       r%g)    N)	err_check)VideoFormatComponentget_pix_fmtget_video_format)
VideoFrame)PyBUF_WRITABLEPyBuffer_FillInfo)	Py_buffer)PyCapsule_GetPointerPyCapsule_IsValidPyCapsule_New)freemallocc                   ,   \ rS rSrS\S\R                  4S jr\R                  S\R                  4S j5       r
\S 5       r\R                  S\R                  4S j5       rS	\R                  \   S
\R                  4S jrS rSS.S\S-  4S jjrSrg)
VideoPlane   frameindexc                 |   UR                   nUR                  R                  (       a  [        R                  " [        R
                  [        R                     UR                  R                  R                  5      n[        UR                  UR                  R                  UR                  R                  5      nUS:X  a&  UR                  S:X  a  SU l        SU l        SU l        g [        UR                  R                   5       HY  nUR                  R"                  U   R$                  U:X  d  M,  ['        X55      nUR                  U l        UR                  U l          O   [)        SU SU< 35      e[+        U R,                  R                  R.                  U R0                     5      U R                  -  U l        g )N   pal8   i   zcould not find plane z of )formatptrhw_frames_ctxcythoncastpointerlibAVHWFramesContextdatar   	sw_formatwidthheightnamebuffer_sizerangenb_componentscompplaner   RuntimeErrorabsr   linesizer   )selfr   r   fmt
frames_ctxi	components          H/home/wildlama/miniconda3/lib/python3.13/site-packages/av/video/plane.py	__cinit__VideoPlane.__cinit__   sE   ll99""@Fs445uyy7N7N7S7SAJ #$$eiioouyy7G7GC A:#((f,DJDK&Dsww,,-Aww||A$$-08	&__
'.. . !6ugT#IJJ
 tzz~~66tzzBCdkkQ    returnc                     U R                   $ )N)r&   r.   s    r3   _buffer_sizeVideoPlane._buffer_size6   s    r6   c                 \    U R                   R                  R                  U R                     $ )z6
Bytes per horizontal line in this plane.

:type: int
)r   r   r-   r   r9   s    r3   	line_sizeVideoPlane.line_size:   s!     zz~~&&tzz22r6   c                 P    U R                   R                  R                  (       a  gg)NFT)r   r   r   r9   s    r3   _buffer_writableVideoPlane._buffer_writableC   s    ::>>''r6   viewflagsc                    U R                   R                  R                  (       a  [        S5      eU[        -  (       a   U R                  5       (       d  [        S5      eU R                  5       nU R                   R                  R                  U R                     nUS:  a:  U R                  n[        R                  " [        R                  U5      US-
  U-  -   n[        XX0R                  5       SU5        g )NzyHardware frame planes do not support the Python buffer protocol. Use DLPack (__dlpack__) or download to a software frame.zbuffer is not writabler   r   )r   r   r   	TypeErrorr   r@   
ValueError_buffer_ptrr-   r   r$   r   r   p_charr	   r:   )r.   rB   rC   r   r=   r$   s         r3   __getbuffer__VideoPlane.__getbuffer__I   s    ::>>''K  >!$*?*?*A*A566!--/ $

 7 7

 C	q=!%F++fmmS1VaZ94LLC$c+<+<+>5Ir6   c                 J   U R                   R                  R                  (       aw  [        R                  " [
        R                  U R                   R                  R                  5      [        S5      :w  a  [        S5      e[        U R                   R                  4$ [        S4$ )N   cuda4DLPack export is only implemented for CUDA hw framesr   )r   r   r   r   r   r   AVPixelFormatr   r   NotImplementedErrorkCuda
_device_idkCPUr9   s    r3   __dlpack_device__VideoPlane.__dlpack_device__Z   sx    ::>>''{{3,,djjnn.C.CDI  *J  4::0011ayr6   N)streamrU   c          	      B   U R                   R                  R                  S   [        R                  :X  a  [        S5      eU R                   R                  R                  (       a  [        R                  " [        R                  U R                   R                  R                  5      [        S5      :w  a  [        S5      eUb  [        S5      e[        R                  " [        R                  [        R                     U R                   R                  R                  R                  5      nUR                   n["        nU R                   R$                  nOK[        R                  " [        R                  U R                   R                  R                  5      n[&        nSnU R(                  nUS:  a  [        S5      e[        S5      n[        S5      n[        S	5      n	[        R*                  " [        R,                  5      u  pn[        R*                  " [.        5      u  pn[        R*                  " [.        5      u  nnnX7:X  a  S
nSnU R0                  S:X  aH  Sn
U R                   R                  R2                  nU R                   R                  R4                  nUnS
nGO`U R0                  S
:X  aQ  Sn
U R                   R                  R2                  S-  nU R                   R                  R4                  S-  nSnUnSnS
nO[7        S5      eX8:X  d  X9:X  a  SnSnXl-  (       a  [7        S5      eU R0                  S:X  aI  Sn
U R                   R                  R2                  nU R                   R                  R4                  nXl-  nS
nOyU R0                  S
:X  aS  Sn
U R                   R                  R2                  S-  nU R                   R                  R4                  S-  nSnXl-  nSnS
nO[7        S5      e[        S5      e[        R8                  " 5       nU[        R                  :X  a  [;        S5      e[=        [        R>                  " UU R                   R                  5      5        [        R                  " [        R                  [.           [A        U
[        RB                  " [.        5      -  5      5      n[        R                  " [        R                  [.           [A        U
[        RB                  " [.        5      -  5      5      nU[        R                  :X  d  U[        R                  :X  as  U[        R                  :w  a  [E        U5        U[        R                  :w  a  [E        U5        [        RF                  " [        RH                  " U5      5        [;        S5      eU
S:X  a  UUS'   UUS
'   UUS'   UUS
'   OUUS'   UUS
'   UUS'   UUS'   UUS
'   UUS'   [        R                  " [        R                  [        RJ                     [A        S[        RB                  " [        RJ                  5      -  5      5      nU[        R                  :X  aK  [E        U5        [E        U5        [        RF                  " [        RH                  " U5      5        [;        S5      e[        R                  " [        RJ                  U5      US'   [        R                  " [        RJ                  U5      US
'   [        R                  " [        RJ                  U5      US'   [        R                  " [        R                  [L           [A        [        RB                  " [L        5      5      5      nU[        R                  :X  aV  [E        U5        [E        U5        [E        U5        [        RF                  " [        RH                  " U5      5        [;        S5      e[        R                  " [        RJ                  UR                  U R0                     5      URN                  l        UURN                  l(        UURN                  l)        U
URN                  l*        [W        S
US
S9URN                  l,        UURN                  l-        UURN                  l.        SURN                  l/        [        R                  " [        RJ                  U5      Ul0        [b        Ul2         [g        [        R                  " [        RJ                  U5      S[h        5      nU$ ! [j         a    [c        U5        e f = f)Nr   zBDLPack export requires a refcounted AVFrame (frame.buf[0] is NULL)rL   rM   ziCUDA stream synchronization is not supported. Pass stream=None and synchronize before calling __dlpack__.z4negative linesize is not supported for DLPack exports   nv12s   p010les   p016ler            zinvalid plane index for NV12   z linesize is not aligned to dtypez!invalid plane index for P010/P016z'unsupported sw_format for DLPack exportzav_frame_alloc() failedzmalloc() failed)codebitslanes   dltensor)6r   r   bufr   NULLrE   r   r   r   rN   r   r   rO   r   r    r!   r"   rP   rQ   rR   r=   declareintint64_tr   r$   r#   rF   av_frame_allocMemoryErrorr   av_frame_refr   sizeofr   av_frame_freeaddressp_voidDLManagedTensor	dl_tensordevice_type	device_idndim
DLDataTypedtypeshapestridesbyte_offsetmanager_ctx_dlpack_managed_tensor_deleterdeleterr   _dlpack_capsule_destructor	Exception)r.   rU   r0   sw_fmtrm   rn   r=   nv12p010lep016lero   r\   itemsizes0s1s2st0st1st2	frame_refrr   rs   ctxmanagedcapsules                            r3   
__dlpack__VideoPlane.__dlpack__e   s   ::>>a FKK/T  ::>>''{{3,,djjnn.C.CDI  *J  !)R 
 AGs445tzz~~7S7S7X7XAJ  ))FK

--I[[!2!2DJJNN4I4IJFKINN	q=%F  7#Y'Y'%~~fjj9H^^G,
w/S#>HDzzQZZ^^**ZZ^^))qZZ^^**a/ZZ^^))Q. !?@@!1HD# !CDDzzQZZ^^**ZZ^^))+qZZ^^**a/ZZ^^))Q.+ !DEE%&OPP141C1C1E	#788#""9djjnn=>NN7#VD6==3I,I%J
 ++NN7#VD6==3I,I%J
 FKK7fkk#9#U&++%WfnnY78/0019E!HE!HGAJGAJE!HE!HE!HGAJGAJGAJkkNN6==)6!fmmFMM6R2R+S
 &++KMfnnY78/00V]]I6AV]]E2AV]]G4A++NN?+VFMM/4R-S
 fkk!IKMfnnY78/00!'V]]INN4::<V!W(3%&/#!%",!$a"H"'$+!()%$kk&--=8	#FMM73*G 	  	*73	s   4d d)r&   r$   r#   )__name__
__module____qualname____firstlineno__r   r   rb   r4   cfuncsize_tr:   propertyr=   bintr@   r   r
   rI   rS   r   __static_attributes__ r6   r3   r   r      s    Rz R&** R> \\ fmm     3 3 \\&++  
J&.."; JFJJ J"	 26 gC$J g gr6   r   F)checkr   r7   c                 *   U [         R                  :X  a  g [         R                  " [         R                  [         R                     U R
                  5      nU[         R                  :w  Ga  [         R                  " [         R                  [        R                     US   5      n[         R                  " [         R                  [           US   5      n[         R                  " [         R                  [           US   5      nU[         R                  :w  a*  [        R                  " [         R                  " U5      5        U[         R                  :w  a  [        U5        U[         R                  :w  a  [        U5        [        U5        [        U 5        g )Nr   r   rX   )r   r`   r   r   rj   ru   r   AVFramerc   rh   ri   r   )r   r   r   rr   rs   s        r3   rv   rv     s     &++
++fnnV]]3W5H5H
IC
fkkKKs{{ ;SVD	FNN73SV<++fnnW5s1v>#fnnY78FKKKfkk!MS	Mr6   r   c                     [        U S5      (       a]  [        R                  " [        R                  [           [        U S5      5      nU[        R                  :w  a  UR                  U5        g g g )Nr^   )r   r   r   r   rk   r   r`   rw   )r   r   s     r3   rx   rx   (  sY     +..++NN?+ +6
 fkk!OOG$ " /r6   )&r   cython.cimports.libavcimportslibavr   cython.cimports.av.errorr   cython.cimports.av.video.formatr   r   r   cython.cimports.av.video.framer   cython.cimports.cpythonr   r	   cython.cimports.cpython.bufferr
   !cython.cimports.cpython.pycapsuler   r   r   cython.cimports.libc.stdlibr   r   finalcclassPlaner   r   nogil	exceptvalr   rk   voidrv   objectrx   r   r6   r3   <module>r      s     # # . 
 6 E 4 
 5 v v  vr ^^O,[[   , % %6;; %  %r6   