Ë
    ÛÍ:jªX  ã                   ó  — d dl Z d dlZd dlmZ d dlmZ d dlmZm	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mZ ej0                  defd„«       Zej6                  ej8                   G d„ de«      «       «       Zy)é    N)Úlibav)ÚCodec)ÚCodecContextÚwrap_codec_context)ÚStreamContainer)Ú
Dictionary)Ú	err_check)ÚPacket)ÚStreamÚwrap_stream)Údict_to_avdictÚto_avrationalÚselfc                 óp  — t        «       | _        | j                  dz  dk(  �r| j                  �7t	        | j                  j                  dd«      r| xj                  dz  c_        y 	 | j                  t        j                  | j                  «      «       | j                  €m| j                  j                  j                  t        j                  z  s<t        j                  t        j                  | j                  j                  «      «       | xj                  dz  c_        y y # | j                  €m| j                  j                  j                  t        j                  z  s<t        j                  t        j                  | j                  j                  «      «       | xj                  dz  c_        w xY w)Né   é   ÚclosedFé   )r   ÚstreamsÚ_myflagÚfileÚgetattrr	   ÚlibÚav_write_trailerÚptrÚoformatÚflagsÚAVFMT_NOFILEÚavio_closepÚcythonÚaddressÚpb©r   s    úh/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/container/output.pyÚclose_outputr%      s  € ä"Ó$€D„LØ‡|�|�bÑ˜AÓð �9‰9Ð ¤W¨T¯Y©Y¯^©^¸XÀuÔ%MØ�LŠL˜AÑ�LØð	Ø�N‰Nœ3×/Ñ/°·±Ó9Ô:à�y‰yÐ ¨$¯(©(×*:Ñ*:×*@Ñ*@Ä3×CSÑCSÒ*SÜ—‘¤§¡¨t¯x©x¯{©{Ó ;Ô<Ø�LŠL˜AÑŽLð øð �y‰yÐ ¨$¯(©(×*:Ñ*:×*@Ñ*@Ä3×CSÑCSÒ*SÜ—‘¤§¡¨t¯x©x¯{©{Ó ;Ô<Ø�LŠL˜AÑŽLús   Á'.D% Ä%BF5c                   ó  — e Zd Zd„ Zd„ Zd„ Zddedz  fd„Zddede	fd	„Z
	 dd
e	dedz  fd„Zd
e	de	fd„Zdededefd„Zddedz  fd„Zej$                  d„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zdefd„Zy)ÚOutputContainerc                 ó¬   — t        «       | _        i | _        t        j                  5  t        j                  «       | _        d d d «       y # 1 sw Y   y xY w©N)r   r   Úmetadatar    Únogilr   Úav_packet_allocÚ
packet_ptr)r   ÚargsÚkwargss      r$   Ú	__cinit__zOutputContainer.__cinit__&   s?   € Ü&Ó(ˆŒØˆŒÜ�\‰\ñ 	4Ü!×1Ñ1Ó3ˆDŒO÷	4÷ 	4ñ 	4ús   §A
Á
Ac                 ó   — t        | «       y r)   ©r%   r#   s    r$   Ú__del__zOutputContainer.__del__,   ó
   € Ü�TÕó    c                 ó²   — t         j                  5  t        j                  t        j                  | j
                  «      «       d d d «       y # 1 sw Y   y xY wr)   )r    r+   r   Úav_packet_freer!   r-   r#   s    r$   Ú__dealloc__zOutputContainer.__dealloc__/   s=   € Ü�\‰\ñ 	@Ü×ÑœvŸ~™~¨d¯o©oÓ>Ô?÷	@÷ 	@ñ 	@ús   ‘3AÁANÚoptionsc           	      ó	  — t        |d«      }|j                  }t        j                  | j                  j                  |j
                  t        j                  «      s/t        | j                  j                  ›d|j                  ›d�«      ‚t        j                  | j                  |«      }t        j                  |«      }|j                  t        j                  k(  rût        j                  |_        |j!                  dd«      |_        |j!                  dd«      |_        |j!                  dd	«      |_        |j!                  d
d«      |_        	 t+        |j!                  d«      t-        j.                  |j0                  «      «       t+        |xs dt-        j.                  |j4                  «      «       |j4                  |_        |j0                  |_        �n�|j                  t        j8                  k(  �rt,        j:                  }	t        j<                  t,        j:                  |t        j>                  d	t-        j.                  |	«      t,        j:                  «       |	r=t-        j@                  t,        jB                  t        jD                     |	«      d	   |_#        |j!                  dd	«      |_        |j!                  d
d«      |_        	 t+        |j!                  d«      t-        j.                  |j0                  «      «       |€d|_$        n$t        |«      tJ        u r||_$        ntM        d«      ‚|j0                  |_        t        jN                  t-        j.                  |jP                  «      d«       | j                  j                  jR                  t        jT                  z  r#|xjR                  t        jV                  z  c_)        tY        t        jZ                  |j\                  |«      «       t_        ||d«      }
ta        | ||
«      }| jb                  je                  |«       |r|jf                  ji                  |«       |jk                  «       D ]  \  }}tm        |||«       Œ |S # t2        $ r Y �Œðw xY w# t2        $ r Y �Œ„w xY w)a‰  add_stream(codec_name, rate=None)

        Creates a new stream from a codec name and returns it.
        Supports video, audio, and subtitle streams.

        :param codec_name: The name of a codec.
        :type codec_name: str
        :param dict options: Stream options.
        :param \**kwargs: Set attributes for the stream.
        :rtype: The new :class:`~av.stream.Stream`.

        Úwú format does not support ú codecÚwidthi€  Úheightià  Úbit_rater   Úbit_rate_tolerancei ô Ú	time_baseé   i }  Ni€»  ú'audio stream `rate` must be: int | Noneé   )7r   r   r   Úavformat_query_codecr   ÚidÚFF_COMPLIANCE_NORMALÚ
ValueErrorÚformatÚnameÚavformat_new_streamÚavcodec_alloc_context3ÚtypeÚAVMEDIA_TYPE_VIDEOÚAV_PIX_FMT_YUV420PÚpix_fmtÚpopr>   r?   r@   rA   r   r    r!   rB   ÚKeyErrorÚ	framerateÚavg_frame_rateÚAVMEDIA_TYPE_AUDIOÚNULLÚavcodec_get_supported_configÚAV_CODEC_CONFIG_SAMPLE_FORMATÚcastÚpointerÚAVSampleFormatÚ
sample_fmtÚsample_rateÚintÚ	TypeErrorÚav_channel_layout_defaultÚ	ch_layoutr   ÚAVFMT_GLOBALHEADERÚAV_CODEC_FLAG_GLOBAL_HEADERr	   Úavcodec_parameters_from_contextÚcodecparr   r   r   Ú
add_streamr9   ÚupdateÚitemsÚsetattr)r   Ú
codec_nameÚrater9   r/   Ú	codec_objÚcodecÚstreamÚctxÚoutÚpy_codec_contextÚ	py_streamÚkÚvs                 r$   rg   zOutputContainer.add_stream3   sr  € ô ! ¨SÓ1ˆ	Ø;D¿=¹=ˆô ×'Ñ'Ø�H‰H×Ñ˜eŸh™h¬×(@Ñ(@ô
ô Ø—;‘;×#Ñ#Ð&Ð&?À	ÇÁÐ?QÐQWÐXóð ô
 03×/FÑ/FÀtÇxÁxÐQVÓ/WˆÜ25×2LÑ2LÈUÓ2Sˆð �:‰:œ×/Ñ/Ò/Ü×0Ñ0ˆCŒKØŸ
™
 7¨CÓ0ˆCŒIØŸ™ H¨cÓ2ˆCŒJØ!Ÿ:™: j°!Ó4ˆCŒLØ%+§Z¡ZÐ0DÀfÓ%MˆCÔ"ðÜ˜fŸj™j¨Ó5´v·~±~ÀcÇmÁmÓ7TÔUô ˜$š* "¤f§n¡n°S·]±]Ó&CÔDà$'§M¡MˆFÔ!Ø"Ÿ}™}ˆFÖð �Z‰Zœ3×1Ñ1Ó1Ü=C¿[¹[ˆCÜ×,Ñ,Ü—‘ØÜ×1Ñ1ØÜ—‘˜sÓ#Ü—‘ôñ Ü!'§¡¬V¯^©^¼C×<NÑ<NÑ-OÐQTÓ!UÐVWÑ!X�”Ø!Ÿ:™: j°!Ó4ˆCŒLØ%+§Z¡ZÐ0DÀeÓ%LˆCÔ"ðÜ˜fŸj™j¨Ó5´v·~±~ÀcÇmÁmÓ7TÔUð ˆ|Ø"'�•Ü�d“œsÑ"Ø"&�•äÐ IÓJÐJØ"Ÿ}™}ˆFÔÜ×)Ñ)¬&¯.©.¸¿¹Ó*GÈÔKð �8‰8×Ñ×!Ñ!¤C×$:Ñ$:Ò:Ø�IŠIœ×8Ñ8Ñ8�Iô 	”#×5Ñ5°f·o±oÀsÓKÔLô *<¸CÀÈÓ)MÐÜ'¨¨fÐ6FÓGˆ	Ø�‰×Ñ 	Ô*áØ×Ñ×$Ñ$ WÔ-à—L‘L“Nò 	%‰DˆAˆqÜ�I˜q !Õ$ð	%ð Ðøôs ò Úðûô0 ò Úðús$   Å8Q+ Ë8Q; Ñ+	Q8Ñ7Q8Ñ;	RÒRrk   Úreturnc                 ó”  — |j                  «       }t        j                  |«      }t        j                  }|t        j                  k(  rt        j
                  |«      }|t        j                  k(  r6t        j                  |«      }|t        j                  k(  rt        d|›�«      ‚|t        j                  k7  r|j                  }|j                  }n|j                  }|j                  }t        j                  | j                  j                  |t        j                  «      s%t        | j                  j                  ›d|›d�«      ‚t        j                   | j                  t        j                  «      }	|	t        j                  k(  rt#        d«      ‚||	j$                  _        ||	j$                  _        |t        j*                  k(  rn|j-                  dd«      |	j$                  _        |j-                  dd«      |	j$                  _        |�mt3        |t        j4                  |	j6                  «      «       nC|t        j8                  k(  r0|�.t        |«      t:        u r||	j$                  _        nt?        d	«      ‚tA        | |	d«      }
| jB                  jE                  |
«       |jG                  «       D ]  \  }}tI        |
||«       Œ |
S )
a  add_mux_stream(codec_name, rate=None)

        Creates a new stream for muxing pre-encoded data without creating a
        :class:`.CodecContext`. Use this when you want to mux packets that were
        already encoded externally and no encoding/decoding is needed.

        :param codec_name: The name of a codec.
        :type codec_name: str
        :param \**kwargs: Set attributes for the stream (e.g. ``width``, ``height``,
            ``time_base``).
        :rtype: The new :class:`~av.stream.Stream`.

        zUnknown codec: r<   r=   úCould not allocate streamr>   r   r?   NrD   )%Úencoder   Úavcodec_find_encoder_by_namer    rW   Úavcodec_find_decoder_by_nameÚavcodec_descriptor_get_by_namerI   rG   rN   rF   r   r   rH   rJ   rK   rL   ÚMemoryErrorrf   Úcodec_idÚ
codec_typerO   rR   r>   r?   r   r!   rU   rV   r_   r^   r`   r   r   rg   ri   rj   )r   rk   rl   r/   Úcodec_name_bytesrn   Úcodec_descriptorr~   r   ro   rs   rt   ru   s                r$   Úadd_mux_streamzOutputContainer.add_mux_stream”   sK  € ð #-×"3Ñ"3Ó"5Ðä×,Ñ,Ð-=Ó>ð 	ô �K‰Kð 	ð ”F—K‘KÒÜ×4Ñ4Ð5EÓFˆEØ”F—K‘KÒÜ"×AÑAÐBRÓSÐØ¤6§;¡;Ò.Ü  ?°:°.Ð!AÓBÐBð ”F—K‘KÒØ—x‘xˆHØŸ™‰Jà'×*Ñ*ˆHØ)×.Ñ.ˆJô ×'Ñ'Ø�H‰H×Ñ˜h¬×(@Ñ(@ô
ô Ø—;‘;×#Ñ#Ð&Ð&?À
¸~ÈVÐTóð ô
 03×/FÑ/FØ�H‰H”f—k‘kó0
ˆð ”V—[‘[Ò ÜÐ9Ó:Ð:à#+ˆ�‰Ô Ø%/ˆ�‰Ô"àœ×/Ñ/Ò/Ø$*§J¡J¨w¸Ó$:ˆF�O‰OÔ!Ø%+§Z¡Z°¸!Ó%<ˆF�O‰OÔ"ØÐÜ˜d¤F§N¡N°6×3HÑ3HÓ$IÕJØœ3×1Ñ1Ò1ØÐÜ˜“:¤Ñ$Ø26�F—O‘OÕ/ä#Ð$MÓNÐNô (¨¨f°dÓ;ˆ	Ø�‰×Ñ 	Ô*à—L‘L“Nò 	%‰DˆAˆqÜ�I˜q !Õ$ð	%ð Ðr5   ÚtemplateÚopaquec                 óD  — |€|j                   dk7  }|j                  € | j                  |fi |¤ŽS |r|j                  j                  }n*t	        |j                  j                  j
                  d«      }|j                  }t        j                  | j                  j                  |j                  t        j                  «      s/t        | j                  j
                  ›d|j
                  ›d�«      ‚t        j                  | j                  |«      }t        j                  |«      }t!        t        j"                  ||j                  j$                  «      «       d|_        |j                  j(                  |_        |j                  j(                  |_        | j                  j                  j*                  t        j,                  z  r#|xj*                  t        j.                  z  c_        |s|j                  j*                  |_        t!        t        j0                  |j$                  |«      «       t3        ||d«      }|xj4                  dz  c_        t7        | ||«      }	| j8                  j;                  |	«       |j=                  «       D ]  \  }
}t?        |	|
|«       Œ |	S )a�  
        Creates a new stream from a template. Supports video, audio, subtitle, data and attachment streams.

        :param template: Copy codec from another :class:`~av.stream.Stream` instance.
        :param opaque: If True, copy opaque data from the template's codec context.
        :param \**kwargs: Set attributes for the stream.
        :rtype: The new :class:`~av.stream.Stream`.
        NÚvideor;   r<   r=   r   é   ) rN   Úcodec_contextÚ'_add_stream_without_codec_from_templatern   r   rK   r   r   rF   r   rG   rH   rI   rJ   rL   rM   r	   Úavcodec_parameters_to_contextrf   Ú	codec_tagrB   r   rc   rd   re   r   Ú	_ctxflagsr   r   rg   ri   rj   )r   rƒ   r„   r/   rm   rn   ro   rp   rr   rs   rt   ru   s               r$   Úadd_stream_from_templatez(OutputContainer.add_stream_from_templateá   s  € ð ˆ>Ø—]‘] gÑ-ˆFà×!Ñ!Ð)Ø?�4×?Ñ?ÀÑSÈFÑSÐSñ Ø ×.Ñ.×4Ñ4‰Iä˜h×4Ñ4×:Ñ:×?Ñ?ÀÓEˆIà;D¿=¹=ˆô ×'Ñ'Ø�H‰H×Ñ˜eŸh™h¬×(@Ñ(@ô
ô Ø—;‘;×#Ñ#Ð&Ð&?À	ÇÁÐ?QÐQWÐXóð ô
 03×/FÑ/FÀtÇxÁxÐQVÓ/WˆÜ25×2LÑ2LÈUÓ2Sˆä”#×3Ñ3°C¸¿¹×9NÑ9NÓOÔPàˆŒð $Ÿ<™<×1Ñ1ˆÔØ Ÿ™×.Ñ.ˆŒð �8‰8×Ñ×!Ñ!¤C×$:Ñ$:Ò:Ø�IŠIœ×8Ñ8Ñ8�Iñ Ø ×.Ñ.×4Ñ4ˆCŒIô 	”#×5Ñ5°f·o±oÀsÓKÔLô *<¸CÀÈÓ)MÐØ×"Ò" aÑ'Õ"Ü'¨¨fÐ6FÓGˆ	Ø�‰×Ñ 	Ô*à—L‘L“Nò 	%‰DˆAˆqÜ�I˜q !Õ$ð	%ð Ðr5   c                 ót  — |j                   j                  j                  }|t        j                  t        j
                  hvrt        d|j                  › d�«      ‚t        j                  | j                   t        j                  «      }|t        j                  k(  rt        d«      ‚t        t        j                  |j                  |j                   j                  «      «       |j                   j                  |_        |j                   j                  |_        |j                   j                   |_        |j                   j"                  |_        t%        | |d «      }| j&                  j)                  |«       t+        |j,                  «      |_        |j/                  «       D ]  \  }}t1        |||«       Œ |S )Nztemplate stream of type z has no codec contextrx   )r   rf   r   r   ÚAVMEDIA_TYPE_ATTACHMENTÚAVMEDIA_TYPE_DATArI   rN   rL   r    rW   r}   r	   Úavcodec_parameters_copyrB   Ú
start_timeÚdurationÚdispositionr   r   rg   Údictr*   ri   rj   )r   rƒ   r/   r   ro   rs   rt   ru   s           r$   r‰   z7OutputContainer._add_stream_without_codec_from_template&  sU  € ð "*§¡×!6Ñ!6×!AÑ!Aˆ
Øœc×9Ñ9¼3×;PÑ;PÐQÑQÜØ*¨8¯=©=¨/Ð9NÐOóð ô 03×/FÑ/FØ�H‰H”f—k‘kó0
ˆð ”V—[‘[Ò ÜÐ9Ó:Ð:ä”#×-Ñ-¨f¯o©o¸x¿|¹|×?TÑ?TÓUÔVð $Ÿ<™<×1Ñ1ˆÔØ$ŸL™L×3Ñ3ˆÔØ"Ÿ,™,×/Ñ/ˆŒØ%Ÿ\™\×5Ñ5ˆÔä'¨¨f°dÓ;ˆ	Ø�‰×Ñ 	Ô*ä! (×"3Ñ"3Ó4ˆ	Ôà—L‘L“Nò 	%‰DˆAˆqÜ�I˜q !Õ$ð	%ð Ðr5   rK   ÚmimetypeÚdatac                 óô  — t        j                  | j                  t        j                  «      }|t        j                  k(  rt        d«      ‚t         j                  |j                  _        t         j                  |j                  _
        t        |«      }|r¹t        j                  t        j                  t        j                  |dz   «      «      }|t        j                  k(  rt        d«      ‚t        |«      D ]
  }||   ||<   Œ d||<   t        j                  t        j                  |«      |j                  _        ||j                  _        t        j$                  |j&                  «      }t)        t        j*                  |d|j-                  «       d«      «       |j-                  «       }	t)        t        j*                  |d|	d«      «       t/        | |d«      }
| j0                  j3                  |
«       |
S )a  
        Create an attachment stream and embed its payload into the container header.

        - Only supported by formats that support attachments (e.g. Matroska).
        - No per-packet muxing is required; attachments are written at header time.
        rx   r‡   z"Could not allocate attachment datar   s   filenames   mimetypeN)r   rL   r   r    rW   r}   r�   rf   r   ÚAV_CODEC_ID_NONEr~   ÚlenrZ   Úp_ucharÚ	av_mallocÚrangeÚ	extradataÚextradata_sizer!   r*   r	   Úav_dict_setry   r   r   rg   )r   rK   r–   r—   ro   Úpayload_sizeÚbufÚiÚmeta_ptrÚ
mime_bytesrs   s              r$   Úadd_attachmentzOutputContainer.add_attachmentG  ss  € ô 03×/FÑ/FØ�H‰H”f—k‘kó0
ˆð ”V—[‘[Ò ÜÐ9Ó:Ð:ä%(×%@Ñ%@ˆ�‰Ô"Ü#&×#7Ñ#7ˆ�‰Ô ô '*¨$£iˆÙÜ—+‘+œfŸn™n¬c¯m©m¸LÈ1Ñ<LÓ.MÓNˆCØ”f—k‘kÒ!Ü!Ð"FÓGÐGä˜<Ó(ò !�Ø˜a™��A’ð!à !ˆC�ÑÜ(.¯©´F·N±NÀCÓ(HˆF�O‰OÔ%Ø-9ˆF�O‰OÔ*ô —>‘> &§/¡/Ó2ˆÜ”#—/‘/ (¨K¸¿¹»ÈÓJÔKØ—_‘_Ó&ˆ
Ü”#—/‘/ (¨K¸ÀQÓGÔHä'¨¨f°dÓ;ˆ	Ø�‰×Ñ 	Ô*ØÐr5   c                 ó  — t         j                  }t         j                  }|��|j                  «       }t        j                  |«      }|t         j                  k(  rt        j
                  |«      }|t         j                  k(  r6t        j                  |«      }|t         j                  k(  rt        d|› �«      ‚|t         j                  k7  r|j                  n|j                  }t        j                  | j                  j                  |t        j                  «      s%t        | j                  j                  ›d|›d�«      ‚t        j                  | j                  |«      }|t         j                  k(  rt!        d«      ‚t         j                  }|t         j                  k7  r±t        j"                  |«      }|t         j                  k(  rt!        d«      ‚| j                  j                  j$                  t        j&                  z  r#|xj$                  t        j(                  z  c_        t+        t        j,                  |j.                  |«      «       nMt        j0                  |j.                  _        |t         j                  k7  r|j                  |j.                  _        d}	|t         j                  k7  rt7        ||d«      }	t9        | ||	«      }
| j:                  j=                  |
«       |r|
j>                  jA                  |«       |
S )a4  add_data_stream(codec_name=None)

        Creates a new data stream and returns it.

        :param codec_name: Optional name of the data codec (e.g. 'klv')
        :type codec_name: str | None
        :param dict options: Stream options.
        :rtype: The new :class:`~av.data.stream.DataStream`.
        NzUnknown data codec: r<   r=   rx   z Could not allocate codec context)!r    rW   ry   r   rz   r{   r|   rI   rG   rF   r   r   rH   rJ   rK   rL   r}   rM   r   rc   rd   r	   re   rf   r�   r   r~   r   r   r   rg   r9   rh   )r   rk   r9   rn   r�   r€   r~   ro   rp   rr   rs   s              r$   Úadd_data_streamzOutputContainer.add_data_streamo  s^  € ô <B¿;¹;ˆä�K‰Kð 	ð Ñ!Ø&0×&7Ñ&7Ó&9ÐÜ×4Ñ4Ð5EÓFˆEØœŸ™Ò#Ü×8Ñ8Ð9IÓJ�ØœŸ™Ò#Ü#&×#EÑ#EÐFVÓ#WÐ Ø#¤v§{¡{Ò2Ü$Ð';¸J¸<Ð%HÓIÐIð $)¬F¯K©KÒ#7�u—x’xÐ=M×=PÑ=PˆHÜ×+Ñ+Ø—‘× Ñ  (¬C×,DÑ,Dôô !Ø—{‘{×'Ñ'Ð*Ð*CÀJÀ>ÐQWÐXóð ô
 03×/FÑ/FÀtÇxÁxÐQVÓ/WˆØ”V—[‘[Ò ÜÐ9Ó:Ð:ô 39·+±+ˆØ”F—K‘KÒÜ×,Ñ,¨UÓ3ˆCØ”f—k‘kÒ!Ü!Ð"DÓEÐEð �x‰x×Ñ×%Ñ%¬×(>Ñ(>Ò>Ø—	’	œS×<Ñ<Ñ<•	ô ”c×9Ñ9¸&¿/¹/È3ÓOÕPô *-×)>Ñ)>ˆF�O‰OÔ&Ø¤6§;¡;Ò.Ø+;×+>Ñ+>�—‘Ô(ð 15ÐØ”&—+‘+ÒÜ1°#°u¸dÓCÐä'¨¨fÐ6FÓGˆ	Ø�‰×Ñ 	Ô*áØ×Ñ×$Ñ$ WÔ-àÐr5   c                 óT  — | j                   dz  ryt        «       }| j                  D ]º  }|j                  }|�š|j                  sŽ| j
                  j                  «       D ]!  \  }}|j
                  j                  ||«       Œ# |j                  dz  sA|j                  «        | j
                  D ]"  }||j
                  vsŒ|j                  |«       Œ$ |j                  «        Œ¼ t        j                  | j                  €| j                  nd«      }|}| j                   j"                  t$        j&                  k(  r†| j                   j(                  j*                  t,        j.                  z  sUt1        t-        j2                  t%        j4                  | j                   j"                  «      |t,        j6                  «      «       t9        t%        j4                  | j                   j:                  «      | j:                  | j<                  | j>                  ¬«       tA        | j
                  | jB                  «      }|jE                  «       }	| j1                  t-        jF                  | j                   t%        j4                  |	j                   «      «      «       |D ]  }||	vsŒ|j                  |«       Œ | j
                  j                  «       D ��ci c]  \  }}||vsŒ||“Œ }
}}|
r-ddl$}|jK                  tL        «      }|jO                  d|
z  «       | xj                   dz  c_         yc c}}w )z,Write the file header! Called automatically.r   Nr‡   Ú )ÚencodingÚerrorsr   zSome options were not used: %s)(r   Úsetr   rˆ   Úis_openr9   ri   Ú
setdefaultrŒ   ÚopenÚaddÚ_finalize_for_outputÚosÚfsencoder   rK   r   r"   r    rW   r   r   r   r   r	   Ú	avio_openr!   ÚAVIO_FLAG_WRITEr   r*   Úmetadata_encodingÚmetadata_errorsr   Úcontainer_optionsÚcopyÚavformat_write_headerÚloggingÚ	getLoggerÚ__name__Úwarning)r   Úused_optionsro   rp   rt   ru   Úname_objrK   Úall_optionsr9   Úunused_optionsr¼   Úlogs                r$   Ústart_encodingzOutputContainer.start_encoding¶  sx  € ð �<‰<˜!ÒØô  ›Eˆð —l‘lò 	*ˆFØ×&Ñ&ˆCØˆ s§{¢{Ø ŸL™L×.Ñ.Ó0ò 1‘D�A�qØ—K‘K×*Ñ*¨1¨aÕ0ð1ð Ÿ™¨Ò)Ø—H‘H”Jð "Ÿ\™\ò 0˜Ø C§K¡KÒ/Ø(×,Ñ,¨QÕ/ð0ð ×'Ñ'Õ)ð	*ô" Ÿ+™+°4·9±9Ð3D d§i¢iÈ"ÓMˆØ&ˆØ�8‰8�;‰;œ&Ÿ+™+Ò%¨d¯h©h×.>Ñ.>×.DÑ.DÄs×GWÑGWÒ.WÜÜ—‘œfŸn™n¨T¯X©X¯[©[Ó9¸4Ä×ATÑATÓUôô
 	Ü�N‰N˜4Ÿ8™8×,Ñ,Ó-Ø�M‰MØ×+Ñ+Ø×'Ñ'õ		
ô #-¨T¯\©\¸4×;QÑ;QÓ"RˆØ)×.Ñ.Ó0ˆØ�‰”s×0Ñ0°·±¼6¿>¹>È'Ï+É+Ó;VÓWÔXð ò 	$ˆAØ˜ÒØ× Ñ  Õ#ð	$ð "Ÿ\™\×/Ñ/Ó1÷
Ù�Q˜°Q¸lÒ5JˆAˆq‰Dð
ˆñ 
ñ Ûà×#Ñ#¤HÓ-ˆCØ�K‰KÐ8¸>ÑIÔJà�Š˜ÑŽùó
s   Ë
L$ËL$c                 ó˜  — t        «       }t        j                  }t        j                  }	 t        j                  t        j
                  |«      «      }|t        j                  k(  r	 |S t        j                  | j                  j                  |j                  t        j                  «      dk(  r|j                  |j                  «       Œ )zC
        Returns a set of all codecs this format supports.
        r‡   )r­   r    rW   r   Úav_codec_iterater!   rF   r   r   rG   rH   r±   rK   )r   Úresultrn   r„   s       r$   Úsupported_codecsz OutputContainer.supported_codecs÷  s›   € ô
 “eˆÜ;A¿;¹;ˆÜ &§¡ˆàÜ×(Ñ(¬¯©¸Ó)?Ó@ˆEØœŸ™Ò#Øð ˆô ×(Ñ(Ø—H‘H×$Ñ$ e§h¡h´×0HÑ0Hóð òð
 —
‘
˜5Ÿ:™:Ô&ð r5   c                 óh   — t        j                  | j                  j                  j                  «      S )zL
        Returns the default video codec this container recommends.
        )r   Úavcodec_get_namerJ   ÚoptrÚvideo_codecr#   s    r$   Údefault_video_codecz#OutputContainer.default_video_codec  ó%   € ô
 ×#Ñ# D§K¡K×$4Ñ$4×$@Ñ$@ÓAÐAr5   c                 óh   — t        j                  | j                  j                  j                  «      S )zL
        Returns the default audio codec this container recommends.
        )r   rË   rJ   rÌ   Úaudio_codecr#   s    r$   Údefault_audio_codecz#OutputContainer.default_audio_codec  rÏ   r5   c                 óh   — t        j                  | j                  j                  j                  «      S )zO
        Returns the default subtitle codec this container recommends.
        )r   rË   rJ   rÌ   Úsubtitle_codecr#   s    r$   Údefault_subtitle_codecz&OutputContainer.default_subtitle_codec  s%   € ô
 ×#Ñ# D§K¡K×$4Ñ$4×$CÑ$CÓDÐDr5   c                 ó   — t        | «       y r)   r2   r#   s    r$   ÚclosezOutputContainer.close$  r4   r5   c                 óx   — t        |t        «      r| j                  |«       y |D ]  }| j                  |«       Œ y r)   )Ú
isinstancer
   Úmux_one)r   ÚpacketsÚpackets      r$   ÚmuxzOutputContainer.mux'  s5   € ô �gœvÔ&Ø�L‰L˜Õ!à!ò %�Ø—‘˜VÕ$ñ%r5   rÜ   c                 óÌ  — | j                  «        |j                  j                  dk  sOt        j                  t        j
                  |j                  j                  «      | j                  j                  k\  rt        d«      ‚| j                  j                  |j                  j                     }|j                  |j                  «       | j                  t        j                  | j                  |j                  «      «       t        j                  5  t        j                   | j                  | j                  «      }d d d «       | j                  «       y # 1 sw Y   ŒxY w)Nr   zBad Packet stream_index.)rÅ   r   Ústream_indexr    rZ   ÚuintÚ
nb_streamsrI   r   Ú_rebase_timerB   r	   r   Úav_packet_refr-   r+   Úav_interleaved_write_frame)r   rÜ   ro   Úrets       r$   rÚ   zOutputContainer.mux_one0  sô   € Ø×ÑÔð �J‰J×#Ñ# aÒ'Ü�{‰{œ6Ÿ;™;¨¯
©
×(?Ñ(?Ó@ÀDÇHÁH×DWÑDWÒWäÐ7Ó8Ð8à/3¯x©x×/?Ñ/?ÀÇ
Á
×@WÑ@WÑ/XˆØ×Ñ˜F×,Ñ,Ô-ð 	�‰”s×(Ñ(¨¯©¸&¿*¹*ÓEÔFä�\‰\ñ 	XÜ!×<Ñ<¸T¿X¹XÀtÇÁÓWˆC÷	Xà�‰�sÕ÷	Xð 	Xús   Ä+EÅE#)NNr)   )r¾   Ú
__module__Ú__qualname__r0   r3   r8   r•   rg   Ústrr   r‚   Úboolr�   r‰   Úbytesr¦   r¨   r    ÚccallrÅ   ÚpropertyrÉ   rÎ   rÒ   rÕ   r×   rÝ   r
   rÚ   © r5   r$   r'   r'   #   s'  „ ò4òò@ñ_¸À¹ó _ñBK¨ð KÀfó Kð\ 7;ñCØðCØ(,¨t©óCðJØðà	óðB& 3ð &°#ð &¸Uó &ñPE¸¸t¹ó EðN ‡\�\ñ>ó ð>ð@ ñó ðð. ñBó ðBð ñBó ðBð ñEó ðEòò%ð˜fô r5   r'   )r³   r    Úcython.cimportsr   r   Úcython.cimports.av.codec.codecr   Ú cython.cimports.av.codec.contextr   r   Ú$cython.cimports.av.container.streamsr   Úcython.cimports.av.dictionaryr   Úcython.cimports.av.errorr	   Úcython.cimports.av.packetr
   Úcython.cimports.av.streamr   r   Úcython.cimports.av.utilsr   r   Úcfuncr'   r%   ÚfinalÚcclassÚ	Containerrí   r5   r$   ú<module>rû      ss   ðÛ 	ã Ý (Ý 0ß MÝ @Ý 4Ý .Ý ,ß 9ß Bð ‡�ð�ò ó ðð& ‡�Ø‡�ô^�ió ^ó ó ñ^r5   