
    dj6              	       :   d dl mZmZmZ d dl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 d dlmZmZ d dlmZmZ d d	l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e	                      Zej         dej!        ej"                 dej        defd            Z#ej         ej$         ej%        d          dej&        dej!        e         dej'        fd                                    Z(ej         G d de	                      Z)dS )    )IteratorLiteralget_argsN)libav)Buffer
ByteSource
bytesource)	err_check)opaque_container)avrational_to_fractionto_avrational)	Py_DECREF	Py_INCREF)uint8_t)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r:   s    D/home/agentuser/manim-venv/lib/python3.11/site-packages/av/packet.pypacket_sidedata_type_to_literalrD   <   s!    L!!&+c5"9"9::    c                 P    t          t                                        |           S r=   )r   r>   indexrB   s    rC   !packet_sidedata_type_from_literalrH   @   s    L!!''...rE   c                   h   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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efdZdS )PacketSideDatapacket	data_typer;   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`
        )rH   _packet_sidedata_from_packetptr)rK   rL   r:   s      rC   from_packetzPacketSideData.from_packetF   s#     2)<<+FJ>>>rE   r:   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)r:   r?   nogilr@   p_ucharlib	av_mallocdataNULLMemoryErrorrQ   )selfr:   rQ   s      rC   	__cinit__zPacketSideData.__cinit__U   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 r=   )r?   rT   rV   av_freepaddressrX   r[   s    rC   __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   NrS   )rQ   rX   r?   rT   r@   rU   rV   rW   rY   rZ   r   av_packet_add_side_datarO   r:   r
   )r[   rK   rc   rX   ress        rC   	to_packetzPacketSideData.to_packetd   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
        )rD   r:   r`   s    rC   rL   zPacketSideData.data_type   s     /tz:::rE   c                 4    t          j        | j                  S )zT
        The description of this packet side data type.

        :type: str
        )rV   av_packet_side_data_namer:   r`   s    rC   	data_desczPacketSideData.data_desc   s     +DJ777rE   c                     | j         S )zQ
        The size in bytes of this packet side data.

        :type: int
        rQ   r`   s    rC   	data_sizezPacketSideData.data_size   s     yrE   c                     | j         S r=   rm   r`   s    rC   _buffer_sizezPacketSideData._buffer_size   
    yrE   c                     | j         S r=   )rX   r`   s    rC   _buffer_ptrzPacketSideData._buffer_ptr   rq   rE   c                     dS )NT r`   s    rC   _buffer_writablezPacketSideData._buffer_writable   s    trE   c                 ,    | j         t          j        k    S )zK
        True if this object holds side data.

        :type: bool
        )rX   r?   rY   r`   s    rC   __bool__zPacketSideData.__bool__   s     yFK''rE   NF)__name__
__module____qualname__staticmethodPacketr>   rJ   rP   rV   AVPacketSideDataTyper?   size_tr\   ra   bintrg   propertystrrL   rk   rA   rn   cfuncrp   p_voidrs   rv   boolrx   ru   rE   rC   rJ   rJ   D   s       ?F ?| ? ? ? ? \?	s7 	v} 	 	 	 	4 4 4  fk    : ;3 ; ; ; X; 83 8 8 8 X8 3    X \fm    \ \V]    \ \&+    \($ ( ( ( ( ( (rE   rJ   rK   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?   rT   rV   av_packet_side_data_get	side_dataside_data_elemsrY   rJ   rQ   r   rX   )rK   r:   c_ptrfoundsdatas        rC   rN   rN      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-F)checkopaquerX   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?   rY   gilr   r@   object)r   rX   s     rC   _python_freer      s     Z 	3 	3fk&&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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 ).r~   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 r=   )r?   rT   rV   av_packet_allocrO   )r[   inputs     rC   r\   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 r=   )r?   rT   rV   av_packet_freer_   rO   r`   s    rC   ra   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 	9rb   c           	         d}d }|d S t          |t                    r/|}|r)t          t          j        | j        |                     d S d S t          |          }|j        }|rt          |           t          j	        |j        |t          t          j        t          j        |          d          }|t          j        k    rt          |           t!          d          || j        _        |j        | j        _        || j        _        d S d S )Nr   zCould not allocate AVBufferRef)
isinstancerA   r
   rV   av_new_packetrO   r	   lengthr   av_buffer_creater   r?   r@   r   rY   r   rZ   bufrX   rQ   )r[   r   rQ   sourcer   s        rC   __init__zPacket.__init__   s   ! =FeS!! 	%D =#+DHd;;<<<<<= =  &&F=D %&!!!*J Kv66  &+%%f%%%%&FGGG" &
 $% %rE   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>)	_streamrG   	__class__rz   dtsptsrO   rQ   idr[   streams     rC   __repr__zPacket.__repr__  s    '+|:##I$.) I I I Idh I IHI I $I I;=d88HI I I	
rE   r;   c                     | j         j        S r=   rO   rQ   r`   s    rC   rp   zPacket._buffer_size
      x}rE   c                     | j         j        S r=   )rO   rX   r`   s    rC   rs   zPacket._buffer_ptr  r   rE   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
ValueErrorrO   	time_basedenrV   av_packet_rescale_ts)r[   r   s     rC   _rebase_timezPacket._rebase_time  s    w 	<:;;;x!% 	!$DHF8!SW,,1C1G371R1RF 48+=sCCC rE   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    rC   r   zPacket.decode!  s    
 |""4(((rE   c                     | j         j        S r=   )rO   stream_indexr`   s    rC   r   zPacket.stream_index(  s    x$$rE   c                     | j         S )zC
        The :class:`Stream` this packet was demuxed from.
        )r   r`   s    rC   r   zPacket.stream,  s    
 |rE   r   c                 @    || _         |j        j        | j        _        d S r=   )r   rO   rG   r   r   s     rC   r   zPacket.stream3  s     &
 0rE   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?   r_   rO   r   r`   s    rC   r   zPacket.time_base8  s!     &fnTX5G&H&HIIIrE   c                 ^    t          |t          j        | j        j                             d S r=   )r   r?   r_   rO   r   )r[   values     rC   r   zPacket.time_baseA  s'    eV^DH,>??@@@@@rE   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)rO   r   rV   AV_NOPTS_VALUEr`   s    rC   r   z
Packet.ptsE  s(     8<3---8< .-rE   c                 R    |t           j        | j        _        d S || j        _        d S r=   )rV   r   rO   r   r[   vs     rC   r   z
Packet.ptsQ  $    9-DHLLLDHLLLrE   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)rO   r   rV   r   r`   s    rC   r   z
Packet.dtsX  s(     8<3---8< .-rE   c                 R    |t           j        | j        _        d S || j        _        d S r=   )rV   r   rO   r   r   s     rC   r   z
Packet.dtsb  r   rE   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)rO   posr`   s    rC   r   z
Packet.posi  s%     8<28< rE   c                     | j         j        S )zN
        The size in bytes of this packet's data.

        :type: int
        r   r`   s    rC   rQ   zPacket.sizeu  s     x}rE   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)rO   durationrV   r   r`   s    rC   r   zPacket.duration~  s*     8 2228$$ 32rE   c                 R    |t           j        | j        _        d S || j        _        d S r=   )rV   r   rO   r   r   s     rC   r   zPacket.duration  s*    9 # 2DH !DHrE   c                 N    t          | j        j        t          j        z            S r=   )r   rO   flagsrV   AV_PKT_FLAG_KEYr`   s    rC   is_keyframezPacket.is_keyframe  s    DHNS%88999rE   c                     |r!| j         xj        t          j        z  c_        d S | j         xj        t          j         z  c_        d S r=   )rO   r   rV   r   r   s     rC   r   zPacket.is_keyframe  s?     	5HNNc11NNNNHNN 344NNNNrE   c                 N    t          | j        j        t          j        z            S r=   )r   rO   r   rV   AV_PKT_FLAG_CORRUPTr`   s    rC   
is_corruptzPacket.is_corrupt      DHNS%<<===rE   c                     |r!| j         xj        t          j        z  c_        d S | j         xj        t          j         z  c_        d S r=   )rO   r   rV   r   r   s     rC   r   zPacket.is_corrupt  s?     	9HNNc55NNNNHNN 788NNNNrE   c                 N    t          | j        j        t          j        z            S r=   )r   rO   r   rV   AV_PKT_FLAG_DISCARDr`   s    rC   
is_discardzPacket.is_discard  r   rE   c                 N    t          | j        j        t          j        z            S r=   )r   rO   r   rV   AV_PKT_FLAG_TRUSTEDr`   s    rC   
is_trustedzPacket.is_trusted  r   rE   c                 N    t          | j        j        t          j        z            S r=   )r   rO   r   rV   AV_PKT_FLAG_DISPOSABLEr`   s    rC   is_disposablezPacket.is_disposable  s    DHNS%??@@@rE   c                     | j         j        t          j        ur@t	          j        t          j        t          j        | j         j        j                            S d S r=   )	rO   
opaque_refr?   rY   r   getr@   p_charrX   r`   s    rC   r   zPacket.opaque  sJ    8fk11#'FM48+>+CDD   21rE   c                     t          j        t          j        | j        j                             |d S t          j        |          | j        _        d S r=   )rV   av_buffer_unrefr?   r_   rO   r   r   addr   s     rC   r   zPacket.opaque  sG    FN48+>??@@@9F.2155rE   r:   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
        )rH   rV   r   rO   r   r   r?   rY   )r[   r:   dtype2s      rC   has_sidedatazPacket.has_sidedata  sC     3599'"DH$<f  {	
rE   c                 8    t                               | |          S )a  get a copy of the side data

        :param dtype: side data type (:meth:`~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`
        )rJ   rP   )r[   r:   s     rC   get_sidedatazPacket.get_sidedata  s     ))$666rE   Fsidedatarc   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)rg   )r[   r   rc   s      rC   set_sidedatazPacket.set_sidedata  s      	4&&&&&rE   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)rangerO   r   rN   r   type)r[   is     rC   iter_sidedatazPacket.iter_sidedata  sZ       tx/00 	U 	UA.tx9KA9N9STTTTTT	U 	UrE   r=   ry   ),rz   r{   r|   __doc__r\   ra   r   r   r?   r   r   rp   r   rs   rV   
AVRationalr   r   r   r   r   setterStreamr   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   rJ   r   r   r   r   r   ru   rE   rC   r~   r~      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rE   r~   )*typingr   r   r   r?   cython.cimportsr   rV   cython.cimports.av.bufferr   r   r	   cython.cimports.av.errorr
   cython.cimports.av.opaquer   cython.cimports.av.utilsr   r   cython.cimports.cpython.refr   r   cython.cimports.libc.stdintr   cython.cimports.libc.stringr   r>   r   rD   rH   cclassrJ   r   pointerAVPacketrN   rT   	exceptvalr   voidr   r~   ru   rE   rC   <module>r
     s{   . . . . . . . . . .  ( ( ( ( ( ( D D D D D D D D D D . . . . . . 6 6 6 6 6 6 J J J J J J J J < < < < < < < < / / / / / / . . . . . .
 ')X;3+C ; ; ; ; ;/\ /c>V / / / / k( k( k( k( k(V k( k( k(\ N3<(141I   $ 3M3
.
!3 [3 3 3   3 ZU ZU ZU ZU ZUV ZU ZU ZU ZU ZUrE   