Ë
    ÛÍ:j«)  ã                   óð  — d dl Z d dlmc mZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dl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 e j2                  e j4                   G d	„ d
e«      «       «       Ze j:                  e j<                   e j>                  d¬«      de j@                  e!   de jD                  fd„«       «       «       Z#e j:                   e j>                  d¬«      de$de jD                  fd„«       «       Z%y)é    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                   ó  — e Zd Zdedej
                  fd„Zej                  dej                  fd„«       Z	e
d„ «       Zej                  dej                  fd„«       Zdej                  e   d	ej
                  fd
„Zd„ Zddœdedz  fd„Zy)Ú
VideoPlaneÚframeÚindexc                 óf  — |j                   }|j                  j                  r’t        j                  t        j
                  t        j                     |j                  j                  j                  «      }t        |j                  |j                  j                  |j                  j                  «      }|dk(  r%|j                  dk(  rd| _        d| _        d| _        y t        |j                  j                   «      D ]X  }|j                  j"                  |   j$                  |k(  sŒ*t'        ||«      }|j                  | _        |j                  | _         n t)        d|› d|›�«      ‚t+        | j,                  j                  j.                  | j0                     «      | j                  z  | _        y )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          úc/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/video/plane.pyÚ	__cinit__zVideoPlane.__cinit__   sN  € à�l‰lˆØ�9‰9×"Ò"Ü@FÇÁÜ—‘œs×4Ñ4Ñ5°u·y±y×7NÑ7N×7SÑ7SóAˆJô #Ø×$Ñ$ e§i¡i§o¡o°u·y±y×7GÑ7GóˆCð �AŠ:˜#Ÿ(™( fÒ,ØˆDŒJØˆDŒKØ&ˆDÔØä�s—w‘w×,Ñ,Ó-ò 	KˆAØ�w‰w�|‰|˜A‰×$Ñ$¨Ó-Ü0°°aÓ8�	Ø&Ÿ_™_�”
Ø'×.Ñ.�”Ùð	Kô Ð!6°u°g¸TÀ#ÀÐIÓJÐJô
 ˜tŸz™zŸ~™~×6Ñ6°t·z±zÑBÓCÀdÇkÁkÑQˆÕó    Úreturnc                 ó   — | j                   S )N)r%   ©r-   s    r2   Ú_buffer_sizezVideoPlane._buffer_size6   s   € à×ÑÐr4   c                 ó\   — | j                   j                  j                  | j                     S )zN
        Bytes per horizontal line in this plane.

        :type: int
        )r   r   r,   r   r7   s    r2   Ú	line_sizezVideoPlane.line_size:   s!   € ð �z‰z�~‰~×&Ñ& t§z¡zÑ2Ð2r4   c                 óF   — | j                   j                  j                  ryy)NFT)r   r   r   r7   s    r2   Ú_buffer_writablezVideoPlane._buffer_writableC   s   € à�:‰:�>‰>×'Ò'ØØr4   ÚviewÚflagsc                 óÔ  — | j                   j                  j                  rt        d«      ‚|t        z  r| j                  «       st        d«      ‚| j                  «       }| j                   j                  j                  | j                     }|dk  r9| j                  }t        j                  t        j                  |«      |dz
  |z  z   }t        || || j                  «       d|«       y )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	   r8   )r-   r=   r>   r   r:   r#   s         r2   Ú__getbuffer__zVideoPlane.__getbuffer__I   s¾   € Ø�:‰:�>‰>×'Ò'ÜðKóð ð ”>Ò!¨$×*?Ñ*?Ô*AÜÐ5Ó6Ð6à!×-Ñ-Ó/ˆØ $§
¡
§¡× 7Ñ 7¸¿
¹
Ñ Cˆ	Ø�qŠ=Ø!%§¡ˆFÜ—+‘+œfŸm™m¨SÓ1°V¸a±ZÀ9Ñ4LÑLˆCä˜$  c¨4×+<Ñ+<Ó+>ÀÀ5ÕIr4   c                 ó<  — | j                   j                  j                  rut        j                  t
        j                  | j                   j                  j                  «      t        d«      k7  rt        d«      ‚t        | j                   j                  fS t        dfS )Nó   cudaú4DLPack export is only implemented for CUDA hw framesr   )r   r   r   r   r   r   ÚAVPixelFormatr   r   ÚNotImplementedErrorÚkCudaÚ
_device_idÚkCPUr7   s    r2   Ú__dlpack_device__zVideoPlane.__dlpack_device__Z   sx   € Ø�:‰:�>‰>×'Ò'Ü�{‰{œ3×,Ñ,¨d¯j©j¯n©n×.CÑ.CÓDÌØóIò ô *ØJóð ô ˜4Ÿ:™:×0Ñ0Ð1Ð1Ü�aˆyÐr4   N)ÚstreamrN   c          	      óä  — | j                   j                  j                  d   t        j                  k(  rt        d«      ‚| j                   j                  j                  rìt        j                  t        j                  | j                   j                  j                  «      t        d«      k7  rt        d«      ‚|�t        d«      ‚t        j                  t        j                  t        j                     | j                   j                  j                  j                  «      }|j                   }t"        }| j                   j$                  }nJt        j                  t        j                  | j                   j                  j                  «      }t&        }d}| j(                  }|dk  rt        d«      ‚t        d«      }t        d«      }t        d	«      }	t        j*                  t        j,                  «      \  }
}}t        j*                  t.        «      \  }}}t        j*                  t.        «      \  }}}||k(  rÆd
}d}| j0                  dk(  rHd}
| j                   j                  j2                  }| j                   j                  j4                  }|}d
}�n[| j0                  d
k(  rQd}
| j                   j                  j2                  dz  }| j                   j                  j4                  dz  }d}|}d}d
}nût7        d«      ‚||k(  s||	k(  rÛd}d}||z  rt7        d«      ‚| j0                  dk(  rJd}
| j                   j                  j2                  }| j                   j                  j4                  }||z  }d
}ny| j0                  d
k(  rTd}
| j                   j                  j2                  dz  }| j                   j                  j4                  dz  }d}||z  }d}d
}nt7        d«      ‚t        d«      ‚t        j8                  «       }|t        j                  k(  rt;        d«      ‚t=        t        j>                  || j                   j                  «      «       t        j                  t        j                  t.           tA        |
t        jB                  t.        «      z  «      «      }t        j                  t        j                  t.           tA        |
t        jB                  t.        «      z  «      «      }|t        j                  k(  s|t        j                  k(  ro|t        j                  k7  rtE        |«       |t        j                  k7  rtE        |«       t        jF                  t        jH                  |«      «       t;        d«      ‚|
dk(  r||d<   ||d
<   ||d<   ||d
<   n||d<   ||d
<   ||d<   ||d<   ||d
<   ||d<   t        j                  t        j                  t        jJ                     tA        dt        jB                  t        jJ                  «      z  «      «      }|t        j                  k(  rItE        |«       tE        |«       t        jF                  t        jH                  |«      «       t;        d«      ‚t        j                  t        jJ                  |«      |d<   t        j                  t        jJ                  |«      |d
<   t        j                  t        jJ                  |«      |d<   t        j                  t        j                  tL           tA        t        jB                  tL        «      «      «      }|t        j                  k(  rTtE        |«       tE        |«       tE        |«       t        jF                  t        jH                  |«      «       t;        d«      ‚t        j                  t        jJ                  |j                  | j0                     «      |jN                  _        ||jN                  _(        ||jN                  _)        |
|jN                  _*        tW        d
|d
¬«      |jN                  _,        ||jN                  _-        ||jN                  _.        d|jN                  _/        t        j                  t        jJ                  |«      |_0        tb        |_2        	 tg        t        j                  t        jJ                  |«      dth        «      }|S # tj        $ r tc        |«       ‚ w xY w)Nr   zBDLPack export requires a refcounted AVFrame (frame.buf[0] is NULL)rF   rG   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   ÚNULLr@   r   r   r   rH   r   r   rI   r   r   r    r!   rJ   rK   rL   r:   ÚdeclareÚintÚint64_tr   r#   r"   rA   Ú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-   rN   r/   Úsw_fmtrf   rg   r:   Únv12Úp010leÚp016lerh   rU   ÚitemsizeÚs0Ús1Ús2Úst0Úst1Úst2Ú	frame_refrk   rl   ÚctxÚmanagedÚcapsules                            r2   Ú
__dlpack__zVideoPlane.__dlpack__e   sÓ  € Ø�:‰:�>‰>×Ñ˜aÑ ¤F§K¡KÒ/ÜØTóð ð �:‰:�>‰>×'Ò'Ü�{‰{œ3×,Ñ,¨d¯j©j¯n©n×.CÑ.CÓDÌØóIò ô *ØJóð ð Ð!Ü)ðRóð ô
 AGÇÁÜ—‘œs×4Ñ4Ñ5°t·z±z·~±~×7SÑ7S×7XÑ7XóAˆJð  ×)Ñ)ˆFÜˆKØŸ
™
×-Ñ-‰Iä—[‘[¤×!2Ñ!2°D·J±J·N±N×4IÑ4IÓJˆFÜˆKØˆIà—N‘Nˆ	Ø�qŠ=Ü%ØFóð ô ˜7Ó#ˆÜ˜YÓ'ˆÜ˜YÓ'ˆä%Ÿ~™~¬f¯j©jÓ9Ñˆˆd�HÜ—^‘^¤GÓ,‰
ˆˆB�ÜŸ™¤wÓ/‰ˆˆS�#à�TŠ>ØˆHØˆDØ�z‰z˜QŠØ�Ø—Z‘Z—^‘^×*Ñ*�Ø—Z‘Z—^‘^×)Ñ)�Ø�Ø’Ø—‘˜q’Ø�Ø—Z‘Z—^‘^×*Ñ*¨aÑ/�Ø—Z‘Z—^‘^×)Ñ)¨QÑ.�Ø�Ø�Ø�Ø‘ä Ð!?Ó@Ð@Ø�vÒ ¨6Ò!1ØˆHØˆDØ˜8Ò#Ü Ð!CÓDÐDØ�z‰z˜QŠØ�Ø—Z‘Z—^‘^×*Ñ*�Ø—Z‘Z—^‘^×)Ñ)�Ø 8Ñ+�Ø‘Ø—‘˜q’Ø�Ø—Z‘Z—^‘^×*Ñ*¨aÑ/�Ø—Z‘Z—^‘^×)Ñ)¨QÑ.�Ø�Ø 8Ñ+�Ø�Ø‘ä Ð!DÓEÐEä%Ð&OÓPÐPä14×1CÑ1CÓ1Eˆ	ØœŸ™Ò#ÜÐ7Ó8Ð8Ü”#×"Ñ" 9¨d¯j©j¯n©nÓ=Ô>ä—‘Ü�N‰Nœ7Ñ#¤V¨D´6·=±=ÄÓ3IÑ,IÓ%Jó
ˆô —+‘+Ü�N‰Nœ7Ñ#¤V¨D´6·=±=ÄÓ3IÑ,IÓ%Jó
ˆð ”F—K‘KÒ 7¬f¯k©kÒ#9ØœŸ™Ò#Ü�U”Øœ&Ÿ+™+Ò%Ü�W”Ü×ÑœfŸn™n¨YÓ7Ô8ÜÐ/Ó0Ð0à�1Š9ØˆE�!‰HØˆE�!‰HØˆG�A‰JØˆG�AŠJàˆE�!‰HØˆE�!‰HØˆE�!‰HØˆG�A‰JØˆG�A‰JØˆG�A‰Jä�k‰kÜ�N‰Nœ6Ÿ=™=Ñ)¬6°!´f·m±mÄFÇMÁMÓ6RÑ2RÓ+Só
ˆð ”&—+‘+ÒÜ�ŒKÜ�ŒMÜ×ÑœfŸn™n¨YÓ7Ô8ÜÐ/Ó0Ð0ä—‘œVŸ]™]¨IÓ6ˆˆA‰Ü—‘œVŸ]™]¨EÓ2ˆˆA‰Ü—‘œVŸ]™]¨GÓ4ˆˆA‰ä—+‘+Ü�N‰Nœ?Ñ+¬V´F·M±MÄ/Ó4RÓ-Só
ˆð ”f—k‘kÒ!Ü�ŒIÜ�ŒKÜ�ŒMÜ×ÑœfŸn™n¨YÓ7Ô8ÜÐ/Ó0Ð0ä!'§¡¬V¯]©]¸I¿N¹NÈ4Ï:É:Ñ<VÓ!Wˆ×ÑÔØ(3ˆ×ÑÔ%Ø&/ˆ×ÑÔ#Ø!%ˆ×ÑÔÜ",°!¸$ÀaÔ"Hˆ×ÑÔØ"'ˆ×ÑÔØ$+ˆ×ÑÔ!Ø()ˆ×ÑÔ%Ü$Ÿk™k¬&¯-©-¸Ó=ˆÔÜ8ˆŒð	Ü#Ü—‘œFŸM™M¨7Ó3ØÜ*óˆGð ˆøô	 ò 	Ü*¨7Ô3Øð	ús   â$3c ãc/)Ú__name__Ú
__module__Ú__qualname__r   r   r[   r3   ÚcfuncÚsize_tr8   Úpropertyr:   Úbintr<   r   r
   rD   rM   r‚   © r4   r2   r   r      sµ   „ ðR˜zð R°&·*±*ó Rð> ‡\�\ð ˜fŸm™mò  ó ð ð ñ3ó ð3ð ‡\�\ð &§+¡+ò ó ðð
J &§.¡.°Ñ";ð JÀFÇJÁJó Jò"	ð 26ò g C¨$¡Jô gr4   r   F)Úcheckr€   r5   c                 ó  — | t         j                  k(  ry t        j                  t         j                  t         j                     | j
                  «      }|t         j                  k7  �rt        j                  t         j                  t        j                     |d   «      }t        j                  t         j                  t           |d   «      }t        j                  t         j                  t           |d   «      }|t         j                  k7  r(t        j                  t        j                  |«      «       |t         j                  k7  rt        |«       |t         j                  k7  rt        |«       t        |«       t        | «       y )Nr   r   rQ   )r   rY   r   r   rc   rn   r   ÚAVFramer\   ra   rb   r   )r€   r   r~   rk   rl   s        r2   ro   ro     sô   € ð ”&—+‘+ÒØÜ
�+‰+”f—n‘n¤V§]¡]Ñ3°W×5HÑ5HÓ
I€CØ
Œf�k‰kÓÜ—K‘K¤§¡¬s¯{©{Ñ ;¸SÀ¹VÓDˆ	Ü—‘œFŸN™N¬7Ñ3°S¸±VÓ<ˆÜ—+‘+œfŸn™n¬WÑ5°s¸1±vÓ>ˆàœŸ™Ò#Ü×ÑœfŸn™n¨YÓ7Ô8Ø”F—K‘KÒÜ�ŒKØ”f—k‘kÒ!Ü�ŒMÜˆSŒ	äˆ…Mr4   r�   c                 óÒ   — t        | d«      r[t        j                  t        j                  t           t        | d«      «      }|t        j                  k7  r|j                  |«       y y y )NrW   )r   r   r   r   rd   r   rY   rp   )r�   r€   s     r2   rq   rq   (  sV   € ô ˜ +Ô.Ü—+‘+Ü�N‰Nœ?Ñ+Ü  ¨+Ó6ó
ˆð ”f—k‘kÒ!Ø�O‰O˜GÕ$ð "ð /r4   )&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   rd   Úvoidro   Úobjectrq   rŠ   r4   r2   ú<module>r       sù   ðÛ ß #Ð #Ý .÷ñ õ
 6ß EÝ 4÷ñ ÷
 5ð ‡�Ø‡�ôv�ó vó ó ðvðr ‡�Ø‡�Ø€×Ñ˜ÔðØ�^‰^˜OÑ,ðà‡[�[òó ó ó ðð, ‡�Ø€×Ñ˜Ôð%¨ð %°6·;±;ò %ó ó ñ%r4   