Ë
    ÛÍ:jÌ&  ã            	       óî  — d dl 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mZmZmZ  G d„ de«      Z G d	„ d
e«      Z ej$                  e e«       «      Zej*                  dedej.                  ej0                     dedefd„«       Zej8                   G d„ d«      «       Zej:                  ej8                   G d„ de«      «       «       Zej:                  ej8                   G d„ de«      «       «       Zy)é    )ÚIntEnumÚIntFlagN)Úlibav)Ú	err_check)Úwrap_index_entries)Úavdict_to_dictÚavrational_to_fractionÚdict_to_avdictÚto_avrationalc                   óX   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZy)ÚDispositioné   é   é   é   é   é    é@   é€   é   i   i   i   i   i   i   i   i   i   i    N)Ú__name__Ú
__module__Ú__qualname__ÚdefaultÚdubÚoriginalÚcommentÚlyricsÚkaraokeÚforcedÚhearing_impairedÚvisual_impairedÚclean_effectsÚattached_picÚtimed_thumbnailsÚnon_diegeticÚcaptionsÚdescriptionsÚmetadataÚ	dependentÚstill_imageÚ
multilayer© ó    ú^/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/stream.pyr   r      sc   „ Ø€GØ
€CØ€HØ€GØ€FØ€GØ€FØÐØ€OØ€MØ€LØÐØ€LØ€HØ€LØ€HØ€IØ€KØ�Jr.   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y)ÚDiscardN)r   r   r   ÚlibÚAVDISCARD_NONEÚnoneÚAVDISCARD_DEFAULTr   ÚAVDISCARD_NONREFÚnonrefÚAVDISCARD_BIDIRÚbidirÚAVDISCARD_NONINTRAÚnonintraÚAVDISCARD_NONKEYÚnonkeyÚAVDISCARD_ALLÚallr-   r.   r/   r1   r1   %   sO   „ Ø×Ñ€DØ×#Ñ#€GØ×!Ñ!€FØ×Ñ€EØ×%Ñ%€HØ×!Ñ!€FØ
×
Ñ
�Cr.   r1   Ú	containerÚc_streamÚcodec_contextÚreturnc                 ój  — | j                   j                  |j                     |k(  sJ ‚ddlm} ddlm} ddlm} |j                  j                  t        j                  k(  r|j                  |t        «      }�n&|j                  j                  t        j                  k(  r|j                  |t        «      }nè|j                  j                  t        j                   k(  r|j                  |t        «      }nª|j                  j                  t        j"                  k(  rt$        j                  t$        t        «      }nd|j                  j                  t        j&                  k(  rt(        j                  t(        t        «      }nt*        j                  t*        t        «      }|j-                  | ||«       |S )z†Build an av.Stream for an existing AVStream.

    The AVStream MUST be fully constructed and ready for use before this is called.
    r   )ÚAudioStream)ÚSubtitleStream)ÚVideoStream)ÚptrÚstreamsÚindexÚav.audio.streamrE   Úav.subtitles.streamrF   Úav.video.streamrG   ÚcodecparÚ
codec_typer2   ÚAVMEDIA_TYPE_VIDEOÚ__new__Ú_cinit_bypass_sentinelÚAVMEDIA_TYPE_AUDIOÚAVMEDIA_TYPE_SUBTITLEÚAVMEDIA_TYPE_ATTACHMENTÚAttachmentStreamÚAVMEDIA_TYPE_DATAÚ
DataStreamÚStreamÚ_init)r@   rA   rB   rE   rF   rG   Ú	py_streams          r/   Úwrap_streamr\   2   s9  € ð �=‰=× Ñ  §¡Ñ0°HÒ<Ð<Ð<õ ,Ý2Ý+à×Ñ×#Ñ#¤s×'=Ñ'=Ò=Ø×'Ñ'¨Ô5KÓLŠ	Ø	×	Ñ	×	%Ñ	%¬×)?Ñ)?Ò	?Ø×'Ñ'¨Ô5KÓL‰	Ø	×	Ñ	×	%Ñ	%¬×)BÑ)BÒ	BØ"×*Ñ*¨>Ô;QÓR‰	Ø	×	Ñ	×	%Ñ	%¬×)DÑ)DÒ	DÜ$×,Ñ,Ô-=Ô?UÓV‰	Ø	×	Ñ	×	%Ñ	%¬×)>Ñ)>Ò	>Ü×&Ñ&¤zÔ3IÓJ‰	ä—N‘N¤6Ô+AÓBˆ	à‡O�O�I˜x¨Ô7ØÐr.   c                   óŠ  — e Zd ZdZd„ Zej                  dedej                  e	j                     defd„«       Zd„ Z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d„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)rY   a  
    A single stream of audio, video or subtitles within a :class:`.Container`.

    ::

        >>> fh = av.open(video_path)
        >>> stream = fh.streams.video[0]
        >>> stream
        <av.VideoStream #0 h264, yuv420p 1280x720 at 0x...>

    This encapsulates a :class:`.CodecContext`, located at :attr:`Stream.codec_context`.
    Attribute access is passed through to that context when attributes are missing
    on the stream itself. E.g. ``stream.options`` will be the options on the
    context.
    c                 ó*   — |t         u ry t        d«      ‚)Nz"cannot manually instantiate Stream)rR   ÚRuntimeError©ÚselfÚnames     r/   Ú	__cinit__zStream.__cinit__i   s   € ØÔ)Ñ)ØÜÐ?Ó@Ð@r.   r@   ÚstreamrB   c                 ó:  — || _         || _        t        | j                  «      | _        || _        | j                  r|j
                  | j                  _        t        |j                  | j                   j                  | j                   j                  ¬«      | _        y ©N)ÚencodingÚerrors)r@   rH   r   Úindex_entriesrB   rJ   Ústream_indexr   r)   Úmetadata_encodingÚmetadata_errors)ra   r@   rd   rB   s       r/   rZ   zStream._initn   ss   € ð #ˆŒØˆŒÜ/°·±Ó9ˆÔà*ˆÔØ×ÒØ.4¯l©lˆD×ÑÔ+ä&Ø�O‰OØ—^‘^×5Ñ5Ø—>‘>×1Ñ1ô
ˆ�r.   c                 ó´   — t        | dd «      }d| j                  j                  › d| j                  › d| j                  xs d› d|xs d› dt        | «      d	›d
�S )Nrb   ú<av.ú #ú z<notype>ú/ú	<nocodec>ú at 0xÚxú>)ÚgetattrÚ	__class__r   rJ   ÚtypeÚidr`   s     r/   Ú__repr__zStream.__repr__ƒ   sb   € Ü�t˜V TÓ*ˆà�4—>‘>×*Ñ*Ð+¨2¨d¯j©j¨\¸¸4¿9¹9Ò;RÈ
Ð:SÐSTØÒ"�{Ð# 6¬"¨T«(°1¨°Qð8ð	
r.   c                 ón  — |dk(  r| j                  |«       y |dk(  r|| j                  _        y |dk(  r%t        |«      j                  | j                  _        y |dk(  r4t        |t        j                  | j                  j                  «      «       y | j                  �t        | j                  ||«       y y )Nry   ÚdispositionÚdiscardÚ	time_base)Ú_set_idrH   r|   r1   Úvaluer}   r   ÚcythonÚaddressr~   rB   Úsetattr)ra   rb   r€   s      r/   Ú__setattr__zStream.__setattr__Š   s�   € Ø�4Š<Ø�L‰L˜ÔØØ�=Ò Ø#(ˆD�H‰HÔ ØØ�9ÒÜ& u›~×3Ñ3ˆD�H‰HÔØØ�;ÒÜ˜%¤§¡°·±×0BÑ0BÓ!CÔDØð ×ÑÐ)Ü�D×&Ñ&¨¨eÕ4ð *r.   c                 ó  — t        t        j                  | j                  j                  «      | j                  | j
                  j                  | j
                  j                  ¬«       | j                  €y | j                  j                  j                  s/| j                  j                  j                  | j                  _	        t        t        j                  | j                  j                  | j                  j                  «      «       y rf   )r
   r�   r‚   rH   r)   r@   rk   rl   rB   r~   Únumr   r2   Úavcodec_parameters_from_contextrN   ©ra   s    r/   Ú_finalize_for_outputzStream._finalize_for_outputœ   s¶   € äÜ�N‰N˜4Ÿ8™8×,Ñ,Ó-Ø�M‰MØ—^‘^×5Ñ5Ø—>‘>×1Ñ1õ		
ð ×ÑÐ%Øà�x‰x×!Ñ!×%Ò%Ø!%×!3Ñ!3×!7Ñ!7×!AÑ!AˆD�H‰HÔô 	Ü×/Ñ/Ø—‘×!Ñ! 4×#5Ñ#5×#9Ñ#9óõ	
r.   c                 ó.   — | j                   j                  S )zM
        The format-specific ID of this stream.

        :type: int

        ©rH   ry   rˆ   s    r/   ry   z	Stream.id²   s   € ð �x‰x�{‰{Ðr.   c                 óN   — |€d| j                   _        y || j                   _        y )Nr   r‹   )ra   r€   s     r/   r   zStream._set_id¼   s   € àˆ=ØˆD�H‰H�KàˆD�H‰H�Kr.   c                 óJ   — | j                   r| j                   j                  S g S )zX
        List the available profiles for this stream.

        :type: list[str]
        )rB   Úprofilesrˆ   s    r/   rŽ   zStream.profilesÃ   s$   € ð ×ÒØ×%Ñ%×.Ñ.Ð.àˆIr.   c                 óH   — | j                   r| j                   j                  S y)zA
        The profile of this stream.

        :type: str
        N)rB   Úprofilerˆ   s    r/   r�   zStream.profileÏ   s"   € ð ×ÒØ×%Ñ%×-Ñ-Ð-àr.   c                 ó.   — | j                   j                  S )zZ
        The index of this stream in its :class:`.Container`.

        :type: int
        )rH   rJ   rˆ   s    r/   rJ   zStream.indexÛ   s   € ð �x‰x�~‰~Ðr.   c                 óf   — t        t        j                  | j                  j                  «      «      S )zˆ
        The unit of time (in fractional seconds) in which timestamps are expressed.

        :type: fractions.Fraction | None

        )r	   r�   r‚   rH   r~   rˆ   s    r/   r~   zStream.time_baseä   s"   € ô &¤f§n¡n°T·X±X×5GÑ5GÓ&HÓIÐIr.   c                 ó~   — | j                   j                  t        j                  k7  r| j                   j                  S y)z�
        The presentation timestamp in :attr:`time_base` units of the first
        frame in this stream.

        :type: int | None
        N)rH   Ú
start_timer2   ÚAV_NOPTS_VALUErˆ   s    r/   r”   zStream.start_timeî   s1   € ð �8‰8×Ñ¤#×"4Ñ"4Ò4Ø—8‘8×&Ñ&Ð&ð 5r.   c                 ó~   — | j                   j                  t        j                  k7  r| j                   j                  S y)ze
        The duration of this stream in :attr:`time_base` units.

        :type: int | None

        N)rH   Údurationr2   r•   rˆ   s    r/   r—   zStream.durationù   s1   € ð �8‰8×Ñ¤× 2Ñ 2Ò2Ø—8‘8×$Ñ$Ð$ð 3r.   c                 ó.   — | j                   j                  S )z{
        The number of frames this stream contains.

        Returns ``0`` if it is not known.

        :type: int
        )rH   Ú	nb_framesrˆ   s    r/   ÚframeszStream.frames  s   € ð �x‰x×!Ñ!Ð!r.   c                 ó8   — | j                   j                  d«      S )zH
        The language of the stream.

        :type: str | None
        Úlanguage©r)   Úgetrˆ   s    r/   rœ   zStream.language  ó   € ð �}‰}× Ñ  Ó,Ð,r.   c                 ó@   — t        | j                  j                  «      S ©N)r   rH   r|   rˆ   s    r/   r|   zStream.disposition  s   € ä˜4Ÿ8™8×/Ñ/Ó0Ð0r.   c                 ó@   — t        | j                  j                  «      S )aH  
        Controls which packets of this stream are discarded by the demuxer.

        Set this to e.g. :attr:`Discard.all` on streams you don't need so that
        :meth:`.Container.demux` and :meth:`.Container.seek` skip them, avoiding
        the cost of synchronizing streams you never read.

        :type: Discard
        )r1   rH   r}   rˆ   s    r/   r}   zStream.discard  s   € ô �t—x‘x×'Ñ'Ó(Ð(r.   c                 ó–   — t        j                  | j                  j                  j                  «      }|t
        j                  k(  rdS |S )zu
        The type of the stream.

        :type: Literal["audio", "video", "subtitle", "data", "attachment"]
        Úunknown)r2   Úav_get_media_type_stringrH   rN   rO   r�   ÚNULL)ra   Ú
media_types     r/   rx   zStream.type)  s:   € ô ×1Ñ1°$·(±(×2CÑ2C×2NÑ2NÓOˆ
Ø&¬&¯+©+Ò5ˆyÐE¸:ÐEr.   N)r   r   r   Ú__doc__rc   r�   ÚcfuncÚ	ContainerÚpointerr2   ÚAVStreamÚCodecContextrZ   rz   r„   r‰   Úpropertyry   r   rŽ   r�   rJ   r~   r”   r—   rš   rœ   r|   r}   rx   r-   r.   r/   rY   rY   W   s|  „ ñò Að
 ‡\�\ð
àð
ð —‘˜sŸ|™|Ñ,ð
ð $ò	
ó ð
ò(
ò5ð$ ‡\�\ñ
ó ð
ð* ñó ðð ‡\�\ñ ó ð ð ñ	ó ð	ð ñ	ó ð	ð ñó ðð ñJó ðJð ñ'ó ð'ð ñ%ó ð%ð ñ"ó ð"ð ñ-ó ð-ð ñ1ó ð1ð ñ
)ó ð
)ð ñFó ñFr.   rY   c                   ó"   — e Zd Zd„ Zed„ «       Zy)rX   c           
      óŒ   — d| j                   j                  › d| j                  › d| j                  xs d› dt	        | «      d›d�	S )Nrn   ro   z data/rr   rs   rt   ru   )rw   r   rJ   rb   ry   rˆ   s    r/   rz   zDataStream.__repr__7  sG   € à�4—>‘>×*Ñ*Ð+¨2¨d¯j©j¨\¸Ø�y‰yÒ'˜KÐ(¨¬r°$«x¸¨l¸!ð=ð	
r.   c                 ó¨   — t        j                  | j                  j                  j                  «      }|t
        j                  k(  ry |j                  S r¡   )r2   Úavcodec_descriptor_getrH   rN   Úcodec_idr�   r¦   rb   )ra   Údescs     r/   rb   zDataStream.name=  sB   € ô ×&Ñ& t§x¡x×'8Ñ'8×'AÑ'AÓBð 	ð ”6—;‘;ÒØØ�y‰yÐr.   N)r   r   r   rz   r®   rb   r-   r.   r/   rX   rX   4  s   „ ò
ð ñó ñr.   rX   c                   ó@   — e Zd ZdZed„ «       Zed„ «       Zed„ «       Zy)rV   zÀ
    An :class:`AttachmentStream` represents a stream of attachment data within a media container.
    Typically used to attach font files that are referenced in ASS/SSA Subtitle Streams.
    c                 ó8   — | j                   j                  d«      S )zV
        Returns the file name of the attachment.

        :rtype: str | None
        Úfilenamer�   rˆ   s    r/   rb   zAttachmentStream.nameO  rŸ   r.   c                 ó8   — | j                   j                  d«      S )zV
        Returns the MIME type of the attachment.

        :rtype: str | None
        Úmimetyper�   rˆ   s    r/   r¹   zAttachmentStream.mimetypeX  rŸ   r.   c                 ó  — | j                   j                  j                  }| j                   j                  j                  }|t        j
                  k(  s|dk  ryt        |«      }t        |«      D ]
  }||   ||<   Œ t        |«      S )z+Return the raw attachment payload as bytes.r   r.   )	rH   rN   Ú	extradataÚextradata_sizer�   r¦   Ú	bytearrayÚrangeÚbytes)ra   r»   ÚsizeÚpayloadÚis        r/   ÚdatazAttachmentStream.dataa  sx   € ð %)§H¡H×$5Ñ$5×$?Ñ$?ˆ	Ø"&§(¡(×"3Ñ"3×"BÑ"BˆØœŸ™Ò# t¨q¢yØä˜D“/ˆÜ�t“ò 	&ˆAØ" 1™ˆG�AŠJð	&ô �W‹~Ðr.   N)r   r   r   r¨   r®   rb   r¹   rÃ   r-   r.   r/   rV   rV   G  sC   „ ñð
 ñ-ó ð-ð ñ-ó ð-ð ñó ñr.   rV   ) Úenumr   r   r�   Úcython.cimportsr   r2   Úcython.cimports.av.errorr   Úcython.cimports.av.indexr   Úcython.cimports.av.utilsr   r	   r
   r   r   r1   ÚdeclareÚobjectrR   r©   rª   r«   r¬   r­   rY   r\   ÚcclassÚfinalrX   rV   r-   r.   r/   ú<module>rÍ      s  ðß !ã Ý (Ý .Ý 7÷ó ô�'ô ô,ˆgô ð (˜Ÿ™¨±³Ó9Ð ð ‡�ð!Øð!à�n‰n˜SŸ\™\Ñ*ð!ð  ð!ð ò	!ó ð!ðH ‡�÷YFð YFó ðYFðx ‡�Ø‡�ô�ó ó ó ðð" ‡�Ø‡�ô$�vó $ó ó ñ$r.   