
    m i/2                     t   d dl mZmZmZ d dl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 ed	         Zd
ej        defdZd
edej        fdZej         G d d                      Zej        dej        ej                 d
ej        defd            Zej         G d de                      ZdS )    )IteratorLiteralget_argsN)libav)
bytesource)	err_check)opaque_container)avrational_to_fractionto_avrational)memcpy)(palettenew_extradataparam_changeh263_mb_inforeplay_gaindisplay_matrix	stereo_3daudio_service_typequality_statsfallback_trackcpb_propertiesskip_samplesjp_dual_monostrings_metadatasubtitle_positionmatroska_block_additionalwebvtt_identifierwebvtt_settingsmetadata_updatempegts_stream_idmastering_display_metadata	sphericalcontent_light_levela53_ccencryption_init_infoencryption_infoafdprfticc_profile	dovi_confs12m_timecodedynamic_hdr10_plusiamf_mix_gain_paramiamf_info_paramiamf_recon_gain_info_paramambient_viewing_environmentframe_croppinglcevc3d_reference_displaysrtcp_srdtypereturnc                 f    t          t                    t          j        t          |                    S N)r   PktSideDataTcythoncastintr5   s    I/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/av/packet.pypacket_sidedata_type_to_literalr?   :   s!    L!!&+c5"9"9::    c                 P    t          t                                        |           S r8   )r   r9   indexr=   s    r>   !packet_sidedata_type_from_literalrC   >   s    L!!''...r@   c                       e Zd Zedededefd            Zdej	        de
j        fdZd Zdded
e
j        fdZedefd            Zedefd            Zedefd            ZdefdZdS )PacketSideDatapacket	data_typer6   c                 J    t          |          }t          | j        |          S )a  create new PacketSideData by copying an existing packet's side data

        :param packet: Source packet
        :type packet: :class:`~av.packet.Packet`
        :param data_type: side data type
        :return: newly created copy of the side data if the side data of the
                 requested type is found in the packet, else an empty object
        :rtype: :class:`~av.packet.PacketSideData`
        )rC   _packet_sidedata_from_packetptr)rF   rG   r5   s      r>   from_packetzPacketSideData.from_packetD   s#     2)<<+FJ>>>r@   r5   sizec                 F   || _         t          j        5  |r[t          j        t          j        t          j        |                    | _        | j        t          j        k    rt          d          nt          j        | _        d d d            n# 1 swxY w Y   || _
        d S )NFailed to allocate memory)r5   r:   nogilr;   p_ucharlib	av_mallocdataNULLMemoryErrorrL   )selfr5   rL   s      r>   	__cinit__zPacketSideData.__cinit__S   s    
\ 	( 	( ("Kd8K8KLL	9++%&ABBB , #K		( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 			s   A/BBBc                     t           j        5  t          j        t          j        | j                             d d d            d S # 1 swxY w Y   d S r8   )r:   rO   rQ   av_freepaddressrS   rV   s    r>   __dealloc__zPacketSideData.__dealloc__^   s    \ 	4 	4L	22333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4   ,AA
A
Fmovec                    | j         dk    rdS | j        }t          j        5  |spt          j        t          j        t          j        | j                             }|t          j        k    rt          d          t          || j        | j                    t          j        |j        | j        || j                   }ddd           n# 1 swxY w Y   t          |           |rt          j        | _        d| _         dS dS )a  copy or move side data to the specified packet

        :param packet: Target packet
        :type packet: :class:`~av.packet.Packet`
        :param move: True to move the data from this object to the packet,
                     defaults to False.
        :type move: bool
        r   NrN   )rL   rS   r:   rO   r;   rP   rQ   rR   rT   rU   r   av_packet_add_side_datarJ   r5   r   )rV   rF   r^   rS   ress        r>   	to_packetzPacketSideData.to_packetb   s1    9>>Fy\ 	W 	W 3{6>3=3K3KLL6;&&%&ABBBtTY	222-fj$*dDIVVC	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	# 	DIDIII	 	s   BCC
C
c                 *    t          | j                  S )zH
        The type of this packet side data.

        :type: str
        )r?   r5   r[   s    r>   rG   zPacketSideData.data_type   s     /tz:::r@   c                 4    t          j        | j                  S )zT
        The description of this packet side data type.

        :type: str
        )rQ   av_packet_side_data_namer5   r[   s    r>   	data_desczPacketSideData.data_desc   s     +DJ777r@   c                     | j         S )zQ
        The size in bytes of this packet side data.

        :type: int
        )rL   r[   s    r>   	data_sizezPacketSideData.data_size   s     yr@   c                 ,    | j         t          j        k    S )zK
        True if this object holds side data.

        :type: bool
        )rS   r:   rT   r[   s    r>   __bool__zPacketSideData.__bool__   s     yFK''r@   NF)__name__
__module____qualname__staticmethodPacketr9   rE   rK   rQ   AVPacketSideDataTyper:   size_trW   r\   bintrb   propertystrrG   rf   r<   rh   boolrj    r@   r>   rE   rE   B   s6       ?F ?| ? ? ? ? \?	s7 	v} 	 	 	 	4 4 4  fk    : ;3 ; ; ; X; 83 8 8 8 X8 3    X($ ( ( ( ( ( (r@   rE   rF   c                 l   t           j        5  t          j        | j        | j        |          }|t           j        k    }d d d            n# 1 swxY w Y   t          ||r|j        nd          }t           j        5  |r t          |j
        |j
        |j                   d d d            n# 1 swxY w Y   |S Nr   )r:   rO   rQ   av_packet_side_data_get	side_dataside_data_elemsrT   rE   rL   r   rS   )rF   r5   c_ptrfoundsdatas        r>   rI   rI      s.    
 2 2+f4e
 
 #fk1	2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5"<%**1==E	 7 7 	75:uz5:6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 Ls#   1A

AA:#B))B-0B-c                   R   e Zd ZdZd,dZd Zd,dZd Zej	        dej
        fd            Zej	        dej        fd	            Zej	        d
ej        fd            Zd Zed             Zed             Zej        def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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d              Z ed!             Z!ed"             Z"e"j        d#             Z"d$e#de$fd%Z%d$e#de&fd&Z'd-d(e&d)ej(        fd*Z)de*e&         fd+Z+dS ).rp   zA packet of encoded data within a :class:`~av.format.Stream`.

    This may, or may not include a complete object within a stream.
    :meth:`decode` must be called to extract encoded data.
    Nc                     t           j        5  t          j                    | _        d d d            d S # 1 swxY w Y   d S r8   )r:   rO   rQ   av_packet_allocrJ   )rV   inputs     r>   rW   zPacket.__cinit__   s~    \ 	- 	-*,,DH	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   377c                     t           j        5  t          j        t          j        | j                             d d d            d S # 1 swxY w Y   d S r8   )r:   rO   rQ   av_packet_freerZ   rJ   r[   s    r>   r\   zPacket.__dealloc__   s    \ 	9 	9v~dh77888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r]   c                     d}d }|d S t          |t                    r|}nt          |          }|j        }|r't	          t          j        | j        |                     ||                     |           d S d S ry   )	
isinstancer<   r   lengthr   rQ   av_new_packetrJ   update)rV   r   rL   sources       r>   __init__zPacket.__init__   s    !=FeS!! 	!DD&&F=D 	9c'$77888KK r@   c                     | j         r| j         j        nd}d| j        j         d| d| j         d| j         d| j        j         dt          |           dd	S )
Nr   zav.z of #z, dts=z, pts=z; z bytes at 0xx>)	_streamrB   	__class__rl   dtsptsrJ   rL   idrV   streams     r>   __repr__zPacket.__repr__   s    '+|:##I$.) I I I Idh I IHI I $I I;=d88HI I I	
r@   r6   c                     | j         j        S r8   rJ   rL   r[   s    r>   _buffer_sizezPacket._buffer_size       x}r@   c                     | j         j        S r8   )rJ   rS   r[   s    r>   _buffer_ptrzPacket._buffer_ptr   r   r@   dstc                 >   |j         st          d          | j        j        j         s|| j        _        d S | j        j        j         |j         k    r| j        j        j        |j        k    rd S t          j        | j        | j        j        |           || j        _        d S )NzCannot rebase to zero time.)num
ValueErrorrJ   	time_basedenrQ   av_packet_rescale_ts)rV   r   s     r>   _rebase_timezPacket._rebase_time   s    w 	<:;;;x!% 	!$DHF8!SW,,1C1G371R1RF 48+=sCCC r@   c                 6    | j                             |           S )z
        Send the packet's data to the decoder and return a list of
        :class:`.AudioFrame`, :class:`.VideoFrame` or :class:`.SubtitleSet`.
        )r   decoder[   s    r>   r   zPacket.decode   s    
 |""4(((r@   c                     | j         j        S r8   )rJ   stream_indexr[   s    r>   r   zPacket.stream_index  s    x$$r@   c                     | j         S )zC
        The :class:`Stream` this packet was demuxed from.
        )r   r[   s    r>   r   zPacket.stream  s    
 |r@   r   c                 @    || _         |j        j        | j        _        d S r8   )r   rJ   rB   r   r   s     r>   r   zPacket.stream  s     &
 0r@   c                 X    t          t          j        | j        j                            S )z
        The unit of time (in fractional seconds) in which timestamps are expressed.

        :type: fractions.Fraction
        )r
   r:   rZ   rJ   r   r[   s    r>   r   zPacket.time_base  s!     &fnTX5G&H&HIIIr@   c                 ^    t          |t          j        | j        j                             d S r8   )r   r:   rZ   rJ   r   )rV   values     r>   r   zPacket.time_base  s'    eV^DH,>??@@@@@r@   c                 R    | j         j        t          j        k    r| j         j        S dS )z
        The presentation timestamp in :attr:`time_base` units for this packet.

        This is the time at which the packet should be shown to the user.

        :type: int | None
        N)rJ   r   rQ   AV_NOPTS_VALUEr[   s    r>   r   z
Packet.pts   s(     8<3---8< .-r@   c                 R    |t           j        | j        _        d S || j        _        d S r8   )rQ   r   rJ   r   rV   vs     r>   r   z
Packet.pts,  $    9-DHLLLDHLLLr@   c                 R    | j         j        t          j        k    r| j         j        S dS )zo
        The decoding timestamp in :attr:`time_base` units for this packet.

        :type: int | None
        N)rJ   r   rQ   r   r[   s    r>   r   z
Packet.dts3  s(     8<3---8< .-r@   c                 R    |t           j        | j        _        d S || j        _        d S r8   )rQ   r   rJ   r   r   s     r>   r   z
Packet.dts=  r   r@   c                 >    | j         j        dk    r| j         j        S dS )z
        The byte position of this packet within the :class:`.Stream`.

        Returns `None` if it is not known.

        :type: int | None
        N)rJ   posr[   s    r>   r   z
Packet.posD  s%     8<28< r@   c                     | j         j        S )zN
        The size in bytes of this packet's data.

        :type: int
        r   r[   s    r>   rL   zPacket.sizeP  s     x}r@   c                 R    | j         j        t          j        k    r| j         j        S dS )z
        The duration in :attr:`time_base` units for this packet.

        Returns `None` if it is not known.

        :type: int
        N)rJ   durationrQ   r   r[   s    r>   r   zPacket.durationY  s*     8 2228$$ 32r@   c                 R    |t           j        | j        _        d S || j        _        d S r8   )rQ   r   rJ   r   r   s     r>   r   zPacket.duratione  s*    9 # 2DH !DHr@   c                 N    t          | j        j        t          j        z            S r8   )rv   rJ   flagsrQ   AV_PKT_FLAG_KEYr[   s    r>   is_keyframezPacket.is_keyframel  s    DHNS%88999r@   c                     |r!| j         xj        t          j        z  c_        d S | j         xj        t          j         z  c_        d S r8   )rJ   r   rQ   r   r   s     r>   r   zPacket.is_keyframep  s?     	5HNNc11NNNNHNN 344NNNNr@   c                 N    t          | j        j        t          j        z            S r8   )rv   rJ   r   rQ   AV_PKT_FLAG_CORRUPTr[   s    r>   
is_corruptzPacket.is_corruptw      DHNS%<<===r@   c                     |r!| j         xj        t          j        z  c_        d S | j         xj        t          j         z  c_        d S r8   )rJ   r   rQ   r   r   s     r>   r   zPacket.is_corrupt{  s?     	9HNNc55NNNNHNN 788NNNNr@   c                 N    t          | j        j        t          j        z            S r8   )rv   rJ   r   rQ   AV_PKT_FLAG_DISCARDr[   s    r>   
is_discardzPacket.is_discard  r   r@   c                 N    t          | j        j        t          j        z            S r8   )rv   rJ   r   rQ   AV_PKT_FLAG_TRUSTEDr[   s    r>   
is_trustedzPacket.is_trusted  r   r@   c                 N    t          | j        j        t          j        z            S r8   )rv   rJ   r   rQ   AV_PKT_FLAG_DISPOSABLEr[   s    r>   is_disposablezPacket.is_disposable  s    DHNS%??@@@r@   c                     | j         j        t          j        ur@t	          j        t          j        t          j        | j         j        j                            S d S r8   )	rJ   
opaque_refr:   rT   r	   getr;   p_charrS   r[   s    r>   opaquezPacket.opaque  sJ    8fk11#'FM48+>+CDD   21r@   c                     t          j        t          j        | j        j                             |d S t          j        |          | j        _        d S r8   )rQ   av_buffer_unrefr:   rZ   rJ   r   r	   addr   s     r>   r   zPacket.opaque  sG    FN48+>??@@@9F.2155r@   r5   c                     t          |          }t          j        | j        j        | j        j        |          t          j        k    S )zwTrue if this packet has the specified side data

        :param dtype: side data type
        :type dtype: str
        )rC   rQ   rz   rJ   r{   r|   r:   rT   )rV   r5   dtype2s      r>   has_sidedatazPacket.has_sidedata  sC     3599'"DH$<f  {	
r@   c                 8    t                               | |          S )a  get a copy of the side data

        :param dtype: side data type (:method:`~av.packet.PacketSideData.sidedata_types` for the full list of options)
        :type dtype: str
        :return: newly created copy of the side data if the side data of the
                 requested type is found in the packet, else an empty object
        :rtype: :class:`~av.packet.PacketSideData`
        )rE   rK   )rV   r5   s     r>   get_sidedatazPacket.get_sidedata  s     ))$666r@   Fsidedatar^   c                 2    |                     | |           dS )a
  copy or move side data to this packet

        :param sidedata: Source packet side data
        :type sidedata: :class:`~av.packet.PacketSideData`
        :param move: If True, move the data from `sidedata` object, defaults to False
        :type move: bool
        N)rb   )rV   r   r^   s      r>   set_sidedatazPacket.set_sidedata  s      	4&&&&&r@   c              #      K   t          | j        j                  D ].}t          | j        | j        j        |         j                  V  /dS )zjiterate over side data of this packet.

        :yield: :class:`~av.packet.PacketSideData` object
        N)rangerJ   r|   rI   r{   type)rV   is     r>   iter_sidedatazPacket.iter_sidedata  sZ       tx/00 	U 	UA.tx9KA9N9STTTTTT	U 	Ur@   r8   rk   ),rl   rm   rn   __doc__rW   r\   r   r   r:   cfuncrr   r   p_voidr   rQ   
AVRationalr   r   rt   r   r   setterStreamr   r   r   r   rL   r   r   r   r   r   r   r   ru   rv   r   rE   r   rs   r   r   r   rw   r@   r>   rp   rp      s        - - - -9 9 9       ,
 
 
 \fm    \ \V]    \ \! ! ! ! \!) ) ) % % X%   X ]1V 1 1 1 ]1 J J XJ A A A 	  	  X	  	Z  Z     X  	Z  Z 	  	  X	    X 	% 	% X	% _" " _" : : X: 5 5 5 > > X> 9 9 9 > > X> > > X> A A XA   X ]6 6 ]6
# 
$ 
 
 
 
	7# 	7. 	7 	7 	7 	7' '^ '6; ' ' ' 'Ux7 U U U U U Ur@   rp   )typingr   r   r   r:   cython.cimportsr   rQ   cython.cimports.av.bytesourcer   cython.cimports.av.errorr   cython.cimports.av.opaquer	   cython.cimports.av.utilsr
   r   cython.cimports.libc.stringr   r9   rq   r?   rC   cclassrE   r   pointerAVPacketrI   Bufferrp   rw   r@   r>   <module>r      s   . . . . . . . . . .  ( ( ( ( ( ( 4 4 4 4 4 4 . . . . . . 6 6 6 6 6 6 J J J J J J J J . . . . . .
 ')X;3+C ; ; ; ; ;/\ /c>V / / / / ^( ^( ^( ^( ^( ^( ^( ^(B N3<(141I   $ PU PU PU PU PUV PU PU PU PU PUr@   