Ë
    ÛÍ:j `  ã            	       óð  — d dl mZmZ d dl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 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  ej8                  e e«       «      Zej>                  dej@                  ejB                     dej@                  ejD                  ejF                        de$de%fd„«       Z& G d„ de«      Z' G d„ de«      Z( G d„ de«      Z)ejT                   G d„ d«      «       Z%y)é    )ÚFlagÚIntEnumN)Úlibav)Ú
ByteSourceÚ
bytesource)ÚCodecÚ
wrap_codec)Ú
Dictionary)Ú	err_check)ÚPacket)Úavrational_to_fractionÚto_avrational)ÚEAGAIN)Úuint8_t)ÚmemcpyÚc_ctxÚc_codecÚhwaccelÚreturnc                 ój  — | j                   t        j                  k(  rddlm}  |t
        «      }no| j                   t        j                  k(  rddlm}  |t
        «      }n?| j                   t        j                  k(  rddl
m}  |t
        «      }nt        t
        «      }|j                  | ||«       |S )z8Build an bv.CodecContext for an existing AVCodecContext.r   )ÚVideoCodecContext)ÚAudioCodecContext)ÚSubtitleCodecContext)Ú
codec_typeÚlibÚAVMEDIA_TYPE_VIDEOÚav.video.codeccontextr   Ú_cinit_sentinelÚAVMEDIA_TYPE_AUDIOÚav.audio.codeccontextr   ÚAVMEDIA_TYPE_SUBTITLEÚav.subtitles.codeccontextr   ÚCodecContextÚ_init)r   r   r   r   Úpy_ctxr   r   s          úe/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/av/codec/context.pyÚwrap_codec_contextr'      s†   € ð ×Ñœ3×1Ñ1Ò1Ý;á"¤?Ó3‰Ø	×	Ñ	œS×3Ñ3Ò	3Ý;á"¤?Ó3‰Ø	×	Ñ	œS×6Ñ6Ò	6ÝBá%¤oÓ6‰äœoÓ.ˆà
‡L�L�˜ Ô)à€Mó    c                   ó’   — e Zd ZU dZej
                  Zded<   ej                  Z	ded<   ej                  ej
                  z  Z
ded<   y)	Ú
ThreadTyper   z"Decode more than one frame at onceÚFRAMEz3Decode more than one part of a single frame at onceÚSLICEz*Decode using both FRAME and SLICE methods.ÚAUTON)Ú__name__Ú
__module__Ú__qualname__ÚNONEr   ÚFF_THREAD_FRAMEr+   Ú__annotations__ÚFF_THREAD_SLICEr,   r-   © r(   r&   r*   r*   /   sJ   … Ø€DØ25×2EÑ2E€EÐ/ÓEØCF×CVÑCV€EÐ@ÓVà×Ñ˜c×1Ñ1Ñ1ð 	Ð
6ô r(   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ej$                  Zej(                  Zej,                  Zej0                  Zej4                  Zej8                  Zej<                  Zej@                  Z!ejD                  Z#ejH                  Z%ejL                  Z'ejP                  Z)ejT                  Z+y)ÚFlagsN),r.   r/   r0   r   ÚAV_CODEC_FLAG_UNALIGNEDÚ	unalignedÚAV_CODEC_FLAG_QSCALEÚqscaleÚAV_CODEC_FLAG_4MVÚfour_mvÚAV_CODEC_FLAG_OUTPUT_CORRUPTÚoutput_corruptÚAV_CODEC_FLAG_QPELÚqpelÚAV_CODEC_FLAG_RECON_FRAMEÚrecon_frameÚAV_CODEC_FLAG_COPY_OPAQUEÚcopy_opaqueÚAV_CODEC_FLAG_FRAME_DURATIONÚframe_durationÚAV_CODEC_FLAG_PASS1Úpass1ÚAV_CODEC_FLAG_PASS2Úpass2ÚAV_CODEC_FLAG_LOOP_FILTERÚloop_filterÚAV_CODEC_FLAG_GRAYÚgrayÚAV_CODEC_FLAG_PSNRÚpsnrÚAV_CODEC_FLAG_INTERLACED_DCTÚinterlaced_dctÚAV_CODEC_FLAG_LOW_DELAYÚ	low_delayÚAV_CODEC_FLAG_GLOBAL_HEADERÚglobal_headerÚAV_CODEC_FLAG_BITEXACTÚbitexactÚAV_CODEC_FLAG_AC_PREDÚac_predÚAV_CODEC_FLAG_INTERLACED_MEÚinterlaced_meÚAV_CODEC_FLAG_CLOSED_GOPÚ
closed_gopr5   r(   r&   r7   r7   8   sÞ   „ Ø×+Ñ+€IØ×%Ñ%€FØ×#Ñ#€GØ×5Ñ5€NØ×!Ñ!€DØ×/Ñ/€KØ×/Ñ/€KØ×5Ñ5€NØ×#Ñ#€EØ×#Ñ#€EØ×/Ñ/€KØ×!Ñ!€DØ×!Ñ!€DØ×5Ñ5€NØ×+Ñ+€IØ×3Ñ3€MØ×)Ñ)€HØ×'Ñ'€GØ×3Ñ3€MØ×-Ñ-�Jr(   r7   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ej$                  Zej(                  Zy)ÚFlags2N)r.   r/   r0   r   ÚAV_CODEC_FLAG2_FASTÚfastÚAV_CODEC_FLAG2_NO_OUTPUTÚ	no_outputÚAV_CODEC_FLAG2_LOCAL_HEADERÚlocal_headerÚAV_CODEC_FLAG2_CHUNKSÚchunksÚAV_CODEC_FLAG2_IGNORE_CROPÚignore_cropÚAV_CODEC_FLAG2_SHOW_ALLÚshow_allÚAV_CODEC_FLAG2_EXPORT_MVSÚ
export_mvsÚAV_CODEC_FLAG2_SKIP_MANUALÚskip_manualÚAV_CODEC_FLAG2_RO_FLUSH_NOOPÚro_flush_noopr5   r(   r&   ra   ra   O   se   „ Ø×"Ñ"€DØ×,Ñ,€IØ×2Ñ2€LØ×&Ñ&€FØ×0Ñ0€KØ×*Ñ*€HØ×.Ñ.€JØ×0Ñ0€KØ×4Ñ4�Mr(   ra   c                   óV  — e Zd ZedDd„«       ZdEd„Zej                  dej                  e	j                     dej                  ej                  e	j                        defd„«       Zed„ «       Zej"                  d	ej$                  fd
„«       Zed„ «       Zej"                  d„ «       Zed„ «       Zej"                  d„ «       Zed„ «       Zej"                  d	ej$                  fd„«       Zed„ «       Zej"                  d„ «       Zed„ «       Zed„ «       Zed„ «       Zej4                  dFdej6                  fd„«       Zd„ Zd„ ZdEd„Zed„ «       Z de!dz  fd„Z"ej                  de!dz  de#fd „«       Z$ej                  de!fd!„«       Z%ej                  d"„ «       Z&ej                  de!fd#„«       Z'ej                  d$„ «       Z(ej                  de!fd%„«       Z)ej4                  dEde!dz  fd&„«       Z*dEde!dz  fd'„Z+ej                  d(e,fd)„«       Z-ej4                  dEd(e,dz  fd*„«       Z.ej4                  d+„ «       Z/ej                  de!d(e,dz  fd,„«       Z0ed-„ «       Z1ed.„ «       Z2ed/„ «       Z3ed0„ «       Z4e4j"                  d1„ «       Z4ed2„ «       Z5e5j"                  d3„ «       Z5ed4„ «       Z6e6j"                  d5„ «       Z6e ejn                  d«      d6„ «       «       Z8e8j"                  d	ej$                  fd7„«       Z8ed8„ «       Z9e9j"                  d	ej$                  fd9„«       Z9ed:„ «       Z:ed;„ «       Z;e;j"                  d	ej$                  fd<„«       Z;ed=„ «       Z<e<j"                  d	ej$                  fd>„«       Z<ed?„ «       Z=e=j"                  d@„ «       Z=edA„ «       Z>e>j"                  dB„ «       Z>edC„ «       Z?y)Gr#   Nc                 óª   — t        | t        «      r| nt        | |«      }t        j                  |j                  «      }t        ||j                  |«      S ©N)Ú
isinstancer   r   Úavcodec_alloc_context3Úptrr'   )ÚcodecÚmoder   Úcy_codecr   s        r&   ÚcreatezCodecContext.create]   sE   € ä#-¨e´UÔ#;™%ÄÀuÈdÓASˆÜ47×4NÑ4NØ�L‰Ló5
ˆô " %¨¯©°wÓ?Ð?r(   c                 óT   — |t         urt        d«      ‚i | _        d| _        d| _        y )NzCannot instantiate CodecContextéÿÿÿÿF)r   ÚRuntimeErrorÚoptionsÚstream_indexÚis_open)ÚselfÚsentinelÚargsÚkwargss       r&   Ú	__cinit__zCodecContext.__cinit__e   s,   € Øœ?Ñ*ÜÐ@ÓAÐAàˆŒØˆÔØˆ�r(   ry   rz   r   c                 óN  — || _         | j                   j                  r&|r$| j                   j                  |k7  rt        d«      ‚t        |t        j
                  k7  r|n| j                   j                  «      | _        || _        d| j                   _        d| j                   _        y )Nz,Wrapping CodecContext with mismatched codec.r   é   )	ry   rz   r€   r	   ÚcythonÚNULLr   Úthread_countÚthread_type)r„   ry   rz   r   s       r&   r$   zCodecContext._initm   su   € ð ˆŒØ�8‰8�>Š>™e¨¯©¯©¸%Ò(?ÜÐMÓNÐNÜ¨´&·+±+Ò)=¡À4Ç8Á8Ç>Á>ÓRˆŒ
ØˆŒð !"ˆ�‰ÔØ#ˆ�‰Õr(   c                 ó.   — | j                   j                  S )zU
        Get and set the flags bitmask of CodecContext.

        :rtype: int
        ©ry   Úflags©r„   s    r&   r‘   zCodecContext.flags~   ó   € ð �x‰x�~‰~Ðr(   Úvaluec                 ó&   — || j                   _        y rv   r�   ©r„   r”   s     r&   r‘   zCodecContext.flags‡   s   € àˆ�‰�r(   c                 ób   — t        | j                  j                  t        j                  z  «      S )z9
        Use fixed qscale.

        :rtype: bool
        )Úboolry   r‘   r   r:   r’   s    r&   r;   zCodecContext.qscale‹   s"   € ô �D—H‘H—N‘N¤S×%=Ñ%=Ñ=Ó>Ð>r(   c                 óÀ   — |r.| j                   xj                  t        j                  z  c_        y | j                   xj                  t        j                   z  c_        y rv   )ry   r‘   r   r:   r–   s     r&   r;   zCodecContext.qscale”   s8   € áØ�H‰H�NŠNœc×6Ñ6Ñ6ŽNà�H‰H�NŠNœs×7Ñ7Ð7Ñ7ŽNr(   c                 ób   — t        | j                  j                  t        j                  z  «      S rv   )r˜   ry   r‘   r   rD   r’   s    r&   rE   zCodecContext.copy_opaque›   s    € ä�D—H‘H—N‘N¤S×%BÑ%BÑBÓCÐCr(   c                 óÀ   — |r.| j                   xj                  t        j                  z  c_        y | j                   xj                  t        j                   z  c_        y rv   )ry   r‘   r   rD   r–   s     r&   rE   zCodecContext.copy_opaqueŸ   s8   € áØ�H‰H�NŠNœc×;Ñ;Ñ;ŽNà�H‰H�NŠNœs×<Ñ<Ð<Ñ<ŽNr(   c                 ó.   — | j                   j                  S )zV
        Get and set the flags2 bitmask of CodecContext.

        :rtype: int
        ©ry   Úflags2r’   s    r&   rž   zCodecContext.flags2¦   s   € ð �x‰x�‰Ðr(   c                 ó&   — || j                   _        y rv   r�   r–   s     r&   rž   zCodecContext.flags2¯   s   € àˆ�‰�r(   c                 óL  — | j                   t        j                  u ry | j                   j                  dkD  rnt        j                  t
        t        j                  t        j                  t           | j                   j                  «      d | j                   j                   «      S y ©Nr   )	ry   r‹   rŒ   Úextradata_sizeÚcastÚbytesÚpointerr   Ú	extradatar’   s    r&   r¦   zCodecContext.extradata³   su   € à�8‰8”v—{‘{Ñ"ØØ�8‰8×"Ñ" QÒ&Ü—;‘;ÜÜ—‘œFŸN™N¬7Ñ3°T·X±X×5GÑ5GÓHØ-�d—h‘h×-Ñ-ðóð ð r(   c                 ó–  — |€Nt        j                  t        j                  | j                  j
                  «      «       d| j                  _        y t        |«      }t        j                  t        j                  t           t        j                  | j                  j
                  |j                  t         j                  z   «      «      | j                  _        | j                  j
                  st        d«      ‚t        | j                  j
                  |j                  |j                  «       |j                  | j                  _        y )Nr   zCannot allocate extradata)r   Úav_freepr‹   Úaddressry   r¦   r¢   r   r£   r¥   r   Ú
av_reallocÚlengthÚAV_INPUT_BUFFER_PADDING_SIZEÚMemoryErrorr   )r„   ÚdataÚsources      r&   r¦   zCodecContext.extradataÀ   sÐ   € àˆ<Ü�L‰LœŸ™¨¯©×(:Ñ(:Ó;Ô<Ø&'ˆD�H‰HÕ#ä Ó%ˆFÜ!'§¡Ü—‘œwÑ'Ü—‘Ø—H‘H×&Ñ&¨¯©¼×8XÑ8XÑ(Xóó"ˆD�H‰HÔð —8‘8×%Ò%Ü!Ð"=Ó>Ð>Ü�4—8‘8×%Ñ% v§z¡z°6·=±=ÔAØ&,§m¡mˆD�H‰HÕ#r(   c                 ó.   — | j                   j                  S rv   )ry   r¢   r’   s    r&   r¢   zCodecContext.extradata_sizeÒ   s   € à�x‰x×&Ñ&Ð&r(   c                 óŽ   — | j                   t        j                  u ryt        j                  | j                   j
                  «      S ©NF)ry   r‹   rŒ   r   Úav_codec_is_encoderrz   r’   s    r&   Ú
is_encoderzCodecContext.is_encoderÖ   ó.   € à�8‰8”v—{‘{Ñ"ØÜ×&Ñ& t§x¡x§~¡~Ó6Ð6r(   c                 óŽ   — | j                   t        j                  u ryt        j                  | j                   j
                  «      S r²   )ry   r‹   rŒ   r   Úav_codec_is_decoderrz   r’   s    r&   Ú
is_decoderzCodecContext.is_decoderÜ   rµ   r(   TÚstrictc           	      ó‚  — | j                   r|rt        d«      ‚y t        «       }|j                  | j                  xs i «       | j
                  j                  j                  �sC| j                  �r6| j                  dk(  r‰| j
                  j                  j                  xs d| j
                  j                  _        | j
                  j                  j                  xs t        j                  | j
                  j                  _        nž| j                  dk(  rKd| j
                  j                  _        | j
                  j                  | j
                  j                  _        nDd| j
                  j                  _        t        j                  | j
                  j                  _        t        t        j                   | j
                  | j"                  j
                  t%        j&                  |j
                  «      «      d| j"                  j(                  › d| j                  › d�«       d| _         t+        |«      | _        y )	NzCodecContext is already open.Úvideoé   Úaudiozavcodec_open2("z", ú)T)rƒ   Ú
ValueErrorr
   Úupdater�   ry   Ú	time_baseÚnumr´   ÚtypeÚ	framerateÚdenr   ÚAV_TIME_BASEÚsample_rater   Úavcodec_open2rz   r‹   r©   ÚnameÚdict)r„   r¹   r�   s      r&   ÚopenzCodecContext.openâ   sz  € à�<Š<ÙÜ Ð!@ÓAÐAØä(›lˆØ�‰�t—|‘|Ò) rÔ*à�x‰x×!Ñ!×%Ó%¨$¯/«/Ø�y‰y˜GÒ#Ø)-¯©×);Ñ);×)?Ñ)?Ò)DÀ1�—‘×"Ñ"Ô&Ø)-¯©×);Ñ);×)?Ñ)?Ò)SÄ3×CSÑCS�—‘×"Ñ"Õ&Ø—‘˜gÒ%Ø)*�—‘×"Ñ"Ô&Ø)-¯©×)=Ñ)=�—‘×"Ñ"Õ&à)*�—‘×"Ñ"Ô&Ü),×)9Ñ)9�—‘×"Ñ"Ô&äÜ×Ñ˜dŸh™h¨¯
©
¯©¼¿¹ÀwÇ{Á{Ó8SÓTØ˜dŸj™jŸo™oÐ.¨c°$·,±,°¸qÐAô	
ð ˆŒÜ˜G“}ˆ�r(   c                 óP  — | j                   rnt        j                  t        j                  | j                   j
                  «      «       t        j                  t        j                  | j                   «      «       | j                  r t        j                  | j                  «       y y rv   )	ry   r   r¨   r‹   r©   r¦   Úavcodec_free_contextÚparserÚav_parser_closer’   s    r&   Ú__dealloc__zCodecContext.__dealloc__þ   sa   € Ø�8Š8Ü�L‰LœŸ™¨¯©×(:Ñ(:Ó;Ô<Ü×$Ñ$¤V§^¡^°D·H±HÓ%=Ô>Ø�;Š;Ü×Ñ §¡Õ,ð r(   c           
      óœ   — | j                   xs d}| j                  xs d}d| j                  j                  › d|› d|› dt	        | «      d›d�	S )	Nz<notype>z	<nocodec>z<av.ú ú/z at 0xÚxú>)rÃ   rÉ   Ú	__class__r.   Úid)r„   Ú_typerÉ   s      r&   Ú__repr__zCodecContext.__repr__  sP   € Ø—	‘	Ò'˜ZˆØ�y‰yÒ'˜KˆØ�d—n‘n×-Ñ-Ð.¨a°¨w°a¸°v¸VÄBÀtÃHÈQÀ<ÈqÐQÐQr(   c                 ó:  — | j                   sft        j                  | j                  j                  j
                  «      | _         | j                   s"t        d| j                  j                  › �«      ‚t        |d¬«      }|�|j                  nt        j                  }|�|j                  nd}d}g }	 t        j                  5  t        j                  | j                   | j                  t        j                  «      t        j                  «      ||t        j                  t        j                  d«	      }	ddd«       t!        	«       �r-t#        |«      }t%        |j                  j&                  |«       | j                   j(                  |j                  _        | j                   j*                  |j                  _        | j                   j,                  |j                  _        | j                   j.                  r%| j                   j.                  |j                  _        | j                   j0                  dk(  r-|j                  xj2                  t        j4                  z  c_        |j7                  |«       |s	 |S ||	z  }||	z  }|s	 |S �ŒÝ# 1 sw Y   �Œ[xY w)aN  Split up a byte stream into list of :class:`.Packet`.

        This is only effectively splitting up a byte stream, and does no
        actual interpretation of the data.

        It will return all packets that are fully contained within the given
        input, and will buffer partial packets until they are complete.

        Any timing information the parser is able to infer (``pts``, ``dts``,
        ``duration``, ``pos`` and the keyframe flag) is assigned onto the
        returned packets. Fields the parser cannot determine are left unset.

        :param ByteSource raw_input: A chunk of a byte-stream to process.
            Anything that can be turned into a :class:`.ByteSource` is fine.
            ``None`` or empty inputs will flush the parser's buffers.

        :return: ``list`` of :class:`.Packet` newly available.

        zNo parser for T)Ú
allow_noneNr   r¼   )rÎ   r   Úav_parser_initrz   ry   r×   r¿   rÉ   r   r‹   rŒ   r«   ÚnogilÚav_parser_parse2r©   ÚAV_NOPTS_VALUEr   r   r   r®   ÚptsÚdtsÚposÚdurationÚ	key_framer‘   ÚAV_PKT_FLAG_KEYÚappend)
r„   Ú	raw_inputr¯   Úin_dataÚin_sizeÚpacketÚpacketsÚout_dataÚout_sizeÚconsumeds
             r&   ÚparsezCodecContext.parse
  sñ  € ð* �{Š{Ü×,Ñ,¨T¯Z©Z¯^©^×->Ñ->Ó?ˆDŒKØ—;’;Ü  >°$·*±*·/±/Ð1BÐ!CÓDÐDä'¨	¸dÔCˆà06Ð0B &§*¢*ÌÏÉˆØ/5Ð/A˜fŸmšmÀqˆð
 ˆØˆàÜ—‘ñ Ü×/Ñ/Ø—K‘KØ—H‘HÜ—N‘N 8Ó,Ü—N‘N 8Ó,ØØÜ×&Ñ&Ü×&Ñ&Øó
�÷ô �hÔâô   Ó)�Ü�v—z‘z—‘¨°(Ô;ð "&§¡§¡�—
‘
”Ø!%§¡§¡�—
‘
”Ø!%§¡§¡�—
‘
”Ø—;‘;×'Ò'Ø*.¯+©+×*>Ñ*>�F—J‘JÔ'Ø—;‘;×(Ñ(¨AÒ-Ø—J‘J×$Ò$¬×(;Ñ(;Ñ;Õ$à—‘˜vÔ&áàð ˆð �xÑˆGØ�xÑˆGáØàˆñk ÷ñ ús   ÃA4JÊJc                 ó   — | j                   duS )zf
        Returns ``True`` if this codec context is hardware accelerated, ``False`` otherwise.
        N)Úhwaccel_ctxr’   s    r&   Ú
is_hwaccelzCodecContext.is_hwaccelf  s   € ð
 ×Ñ tÐ+Ð+r(   Úframec              #   ó:  K  — t         j                  5  t        j                  | j                  |�|j                  nt         j
                  «      }d d d «       t        d«       | j                  «       }|r|–— | j                  «       }|rŒy y # 1 sw Y   Œ@xY w­w)Nzavcodec_send_frame())r‹   rÝ   r   Úavcodec_send_framery   rŒ   r   Ú_recv_packet©r„   ró   Úresrê   s       r&   Ú_send_frame_and_recvz!CodecContext._send_frame_and_recvm  s�   è ø€ ô �\‰\ñ 	Ü×(Ñ(Ø—‘ uÐ'8˜%Ÿ)š)¼f¿k¹kóˆC÷	ô 	�#Ð-Ô.à×"Ñ"Ó$ˆÙØŠLØ×&Ñ&Ó(ˆFô ÷	ð 	üs"   ‚B“=BÁ<BÂBÂBÂBr   c                 ó   — |gS rv   r5   ©r„   ró   s     r&   Ú_prepare_frames_for_encodez'CodecContext._prepare_frames_for_encode{  s	   € àˆwˆr(   c                 ó   — t        d«      ‚)Nz Base CodecContext cannot decode.)ÚNotImplementedErrorr’   s    r&   Ú_alloc_next_framezCodecContext._alloc_next_frame  s   € ä!Ð"DÓEÐEr(   c                 óˆ  — | j                   s| j                  «       | _         | j                   }t        j                  5  t	        j
                  | j                  |j                  «      }d d d «       t         k(  s|t        j                  k(  ry t        |d«       | j                  |«      }|s	d | _         |S y # 1 sw Y   ŒPxY w)Nzavcodec_receive_frame())Ú_next_framerÿ   r‹   rÝ   r   Úavcodec_receive_framery   r   ÚAVERROR_EOFr   Ú_transfer_hwframe)r„   ró   rø   s      r&   Ú_recv_framezCodecContext._recv_frameƒ  s¬   € à×ÒØ#×5Ñ5Ó7ˆDÔà×'Ñ'ˆô �\‰\ñ 	AÜ×+Ñ+¨D¯H©H°e·i±iÓ@ˆC÷	Að ”6�'Š>˜S¤C§O¡OÒ3Øä�#Ð0Ô1Ø×&Ñ& uÓ-ˆáØ#ˆDÔØˆLð ÷	Að 	Aús   ¾+B8Â8Cc                 ó   — |S rv   r5   rû   s     r&   r  zCodecContext._transfer_hwframe˜  s   € àˆr(   c                 ó  — t        «       }t        j                  5  t        j                  | j
                  |j
                  «      }d d d «       t         k(  s|t        j                  k(  ry t        |d«       |s|S y # 1 sw Y   Œ8xY w)Nzavcodec_receive_packet())	r   r‹   rÝ   r   Úavcodec_receive_packetry   r   r  r   )r„   rê   rø   s      r&   rö   zCodecContext._recv_packetœ  sv   € ä›ˆô �\‰\ñ 	CÜ×,Ñ,¨T¯X©X°v·z±zÓBˆC÷	Cð ”6�'Š>˜S¤C§O¡OÒ3Øä�#Ð1Ô2ÙØˆMð ÷	Cð 	Cús   ›+A=Á=Bc                 ó,  — | j                   j                  t        j                  t        j                  fvrt        d«      ‚| j                  d¬«       | j                  |«      }|D ]*  }|€Œ|j                  | j                   j                  «       Œ, |S )Nz/Encoding is only supported for audio and video.F©r¹   )
ry   r   r   r   r   rþ   rË   rü   Ú_rebase_timerÁ   )r„   ró   Úframess      r&   Ú*_prepare_and_time_rebase_frames_for_encodez7CodecContext._prepare_and_time_rebase_frames_for_encode«  s…   € à�8‰8×Ñ¤s×'=Ñ'=¼s×?UÑ?UÐ&VÑVÜ%Ð&WÓXÐXà�	‰	˜ˆ	Ôà×0Ñ0°Ó7ˆð ò 	7ˆEØÑ Ø×"Ñ" 4§8¡8×#5Ñ#5Õ6ð	7ð ˆr(   c                 ó¦   — g }| j                  |«      D ]:  }| j                  |«      D ]$  }| j                  |«       |j                  |«       Œ& Œ< |S )zAEncode a list of :class:`.Packet` from the given :class:`.Frame`.)r  rù   Ú_setup_encoded_packetræ   r÷   s       r&   ÚencodezCodecContext.encode¼  s^   € ð ˆØ×DÑDÀUÓKò 	#ˆEØ×3Ñ3°EÓ:ò #�Ø×*Ñ*¨6Ô2Ø—
‘
˜6Õ"ñ#ð	#ð ˆ
r(   c              #   óŽ   K  — | j                  |«      D ]-  }| j                  |«      D ]  }| j                  |«       |–— Œ Œ/ y ­wrv   )r  rù   r  ©r„   ró   rê   s      r&   Úencode_lazyzCodecContext.encode_lazyÆ  sM   è ø€ Ø×DÑDÀUÓKò 	ˆEØ×3Ñ3°EÓ:ò �Ø×*Ñ*¨6Ô2Ø“ññ	ùs   ‚AArê   c                 óN   — | j                   j                  |j                   _        y rv   )ry   rÁ   )r„   rê   s     r&   r  z"CodecContext._setup_encoded_packetÌ  s   € ð  $Ÿx™x×1Ñ1ˆ�
‰
Õr(   c                 óÚ  — | j                   j                  st        d«      ‚| j                  d¬«       t        j
                  5  t        j                  | j                  |�|j                  nt        j                  «      }ddd«       t        d«       g }| j                  «       }|r6| j                  ||«       |j                  |«       | j                  «       }|rŒ6|S # 1 sw Y   ŒaxY w)aÛ  Decode a list of :class:`.Frame` from the given :class:`.Packet`.

        If the packet is None, the buffers will be flushed. This is useful if
        you do not want the library to automatically re-order frames for you
        (if they are encoded with a codec that has B-frames).

        .. warning::

            This method is **not thread-safe**. Calling :meth:`decode` concurrently
            from multiple threads on the same :class:`CodecContext` will corrupt
            internal FFmpeg state and likely cause a crash (segfault). FFmpeg 8.1
            enforces this more strictly than earlier releases. If you need to decode
            from multiple threads, give each thread its own :class:`CodecContext`.

        zcannot decode unknown codecFr
  Nzavcodec_send_packet())rz   ry   r¿   rË   r‹   rÝ   r   Úavcodec_send_packetrŒ   r   r  Ú_setup_decoded_frameræ   )r„   rê   rø   Úoutró   s        r&   ÚdecodezCodecContext.decode×  sÈ   € ð" �z‰z�~Š~ÜÐ:Ó;Ð;à�	‰	˜ˆ	Ôô �\‰\ñ 	Ü×)Ñ)Ø—‘¨Ð(:˜&Ÿ*š*ÄÇÁóˆC÷	ô 	�#Ð.Ô/àˆØ× Ñ Ó"ˆÙØ×%Ñ% e¨VÔ4Ø�J‰J�uÔØ×$Ñ$Ó&ˆEò ð ˆ
÷	ð 	ús   Á=C!Ã!C*c                 ó¦   — | j                   r9t        j                  5  t        j                  | j
                  «       ddd«       yy# 1 sw Y   yxY w)zÕReset the internal codec state and discard all internal buffers.

        Should be called before you start decoding from a new position e.g.
        when seeking or when switching to a different stream.

        N)rƒ   r‹   rÝ   r   Úavcodec_flush_buffersry   r’   s    r&   Úflush_bufferszCodecContext.flush_buffersü  sC   € ð �<Š<Ü—‘ñ 4Ü×)Ñ)¨$¯(©(Ô3÷4ð 4ð ÷4ð 4ús   � AÁAc                 ó@   — |�|j                   j                  |_        y y rv   )ry   rÁ   Ú
_time_baser  s      r&   r  z!CodecContext._setup_decoded_frame  s!   € ð ÐØ%Ÿz™z×3Ñ3ˆEÕð r(   c                 ó.   — | j                   j                  S rv   )rz   rÉ   r’   s    r&   rÉ   zCodecContext.name  ó   € à�z‰z�‰Ðr(   c                 ó.   — | j                   j                  S rv   )rz   rÃ   r’   s    r&   rÃ   zCodecContext.type  r   r(   c                 óÚ  — g }| j                   j                  r6| j                  j                  r | j                  j                  j                  s|S | j                  j                  }d}|j                  |   j                  t
        j                  k7  rX|j                  |j                  |   j                  «       |dz  }|j                  |   j                  t
        j                  k7  rŒX|S )zX
        List the available profiles for this stream.

        :type: list[str]
        r   r¼   )	ry   rz   ÚdescÚprofilesÚprofiler   ÚAV_PROFILE_UNKNOWNræ   rÉ   )r„   Úretr#  Úis       r&   r$  zCodecContext.profiles  s®   € ð ˆØ�x‰x�~Š~ T§Z¡Z§_¢_¸D¿J¹J¿O¹O×<TÒ<TØˆJð �z‰z�‰ˆØˆØ�m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Ò@Ø�J‰J�t—}‘} QÑ'×,Ñ,Ô-Ø�‰FˆAð �m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Ó@ð ˆ
r(   c                 ó  — | j                   j                  r6| j                  j                  r | j                  j                  j                  sy | j                  j                  }d}|j                  |   j                  t
        j                  k7  rz|j                  |   j                  | j                   j                  k(  r|j                  |   j                  S |dz  }|j                  |   j                  t
        j                  k7  rŒyy y ©Nr   r¼   )ry   rz   r#  r$  r%  r   r&  rÉ   )r„   r#  r(  s      r&   r%  zCodecContext.profile/  s¹   € à�x‰x�~Š~ T§Z¡Z§_¢_¸D¿J¹J¿O¹O×<TÒ<TØð �z‰z�‰ˆØˆØ�m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Ò@Ø�}‰}˜QÑ×'Ñ'¨4¯8©8×+;Ñ+;Ò;Ø—}‘} QÑ'×,Ñ,Ð,Ø�‰FˆAð �m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Õ@r(   c                 óú  — | j                   r6| j                   j                  r | j                   j                  j                  sy | j                   j                  }d}|j                  |   j                  t        j
                  k7  rv|j                  |   j                  |k(  r)|j                  |   j                  | j                  _        y |dz  }|j                  |   j                  t        j
                  k7  rŒuy y r*  )rz   r#  r$  r%  r   r&  rÉ   ry   )r„   r”   r#  r(  s       r&   r%  zCodecContext.profile=  s´   € à�zŠz §¡§¢¸¿
¹
¿¹×8PÒ8PØð �z‰z�‰ˆØˆØ�m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Ò@Ø�}‰}˜QÑ×$Ñ$¨Ò-Ø#'§=¡=°Ñ#3×#;Ñ#;�—‘Ô ØØ�‰FˆAð	 �m‰m˜AÑ×&Ñ&¬#×*@Ñ*@Õ@r(   c                 ó”   — | j                   rt        d«      ‚t        t        j                  | j
                  j                  «      «      S ©Nz&Cannot access 'time_base' as a decoder)r¸   r€   r   r‹   r©   ry   rÁ   r’   s    r&   rÁ   zCodecContext.time_baseL  s3   € à�?Š?ÜÐGÓHÐHÜ%¤f§n¡n°T·X±X×5GÑ5GÓ&HÓIÐIr(   c                 ó˜   — | j                   rt        d«      ‚t        |t        j                  | j
                  j                  «      «       y r-  )r¸   r€   r   r‹   r©   ry   rÁ   r–   s     r&   rÁ   zCodecContext.time_baseR  s2   € à�?Š?ÜÐGÓHÐHÜ�eœVŸ^™^¨D¯H©H×,>Ñ,>Ó?Õ@r(   c                 ór   — | j                   j                  j                  ddd¬«      j                  d¬«      S )Né   ÚlittleF©Ú	byteorderÚsignedÚascii©Úencoding)ry   Ú	codec_tagÚto_bytesr  r’   s    r&   r8  zCodecContext.codec_tagX  s:   € à�x‰x×!Ñ!×*Ñ*¨1¸ÈÐ*ÓO×VÑVØð Wó 
ð 	
r(   c                 óÄ   — t        |t        «      rFt        |«      dk(  r8t        j	                  |j                  d¬«      dd¬«      | j                  _        y t        d«      ‚)Nr0  r5  r6  r1  Fr2  z)Codec tag should be a 4 character string.)	rw   ÚstrÚlenÚintÚ
from_bytesr  ry   r8  r¿   r–   s     r&   r8  zCodecContext.codec_tag^  sP   € ä�eœSÔ!¤c¨%£j°A¢oÜ!$§¡Ø—‘ g�Ó.¸(È5ð "0ó "ˆD�H‰HÕô ÐHÓIÐIr(   c                 óP   — | j                   j                  t        j                  z  S )zñGlobal quality for codecs which cannot change it per frame.

        Stored internally in lambda units; this property converts to/from
        QP units using ``FF_QP2LAMBDA``.

        Wraps :ffmpeg:`AVCodecContext.global_quality`.

        )ry   Úglobal_qualityr   ÚFF_QP2LAMBDAr’   s    r&   r@  zCodecContext.global_qualityg  s   € ð �x‰x×&Ñ&¬#×*:Ñ*:Ñ:Ð:r(   c                 óH   — |t         j                  z  | j                  _        y rv   )r   rA  ry   r@  r–   s     r&   r@  zCodecContext.global_qualityt  s   € à"'¬#×*:Ñ*:Ñ":ˆ�‰Õr(   c                 ód   — | j                   j                  dkD  r| j                   j                  S d S r¡   ©ry   Úbit_rater’   s    r&   rE  zCodecContext.bit_ratex  s(   € à$(§H¡H×$5Ñ$5¸Ò$9ˆt�x‰x× Ñ ÐC¸tÐCr(   c                 ó&   — || j                   _        y rv   rD  r–   s     r&   rE  zCodecContext.bit_rate|  s   € à!ˆ�‰Õr(   c                 ób   — | j                   j                  dkD  r| j                   j                  S y r¡   )ry   Úrc_max_rater’   s    r&   Úmax_bit_ratezCodecContext.max_bit_rate€  s'   € à�8‰8×Ñ !Ò#Ø—8‘8×'Ñ'Ð'àr(   c                 ó0   — | j                   j                   y rv   ©ry   Úbit_rate_tolerancer’   s    r&   rL  zCodecContext.bit_rate_tolerance‡  s   € à�‰×#Ó#r(   c                 ó&   — || j                   _        y rv   rK  r–   s     r&   rL  zCodecContext.bit_rate_tolerance‹  s   € à&+ˆ�‰Õ#r(   c                 ó.   — | j                   j                  S )zfHow many threads to use; 0 means auto.

        Wraps :ffmpeg:`AVCodecContext.thread_count`.

        )ry   r�   r’   s    r&   r�   zCodecContext.thread_count�  s   € ð �x‰x×$Ñ$Ð$r(   c                 óT   — | j                   rt        d«      ‚|| j                  _        y )Nz/Cannot change thread_count after codec is open.)rƒ   r€   ry   r�   r–   s     r&   r�   zCodecContext.thread_count˜  s!   € à�<Š<ÜÐPÓQÐQØ %ˆ�‰Õr(   c                 ó@   — t        | j                  j                  «      S )z[One of :class:`.ThreadType`.

        Wraps :ffmpeg:`AVCodecContext.thread_type`.

        )r*   ry   rŽ   r’   s    r&   rŽ   zCodecContext.thread_typež  s   € ô ˜$Ÿ(™(×.Ñ.Ó/Ð/r(   c                 ó  — | j                   rt        d«      ‚t        |«      t        u r|| j                  _        y t        |«      t        u r#t        |   j                  | j                  _        y |j                  | j                  _        y )Nz.Cannot change thread_type after codec is open.)	rƒ   r€   rÃ   r=  ry   rŽ   r;  r*   r”   r–   s     r&   rŽ   zCodecContext.thread_type§  s`   € à�<Š<ÜÐOÓPÐPÜ�‹;œ#ÑØ#(ˆD�H‰HÕ Ü�%‹[œCÑÜ#-¨eÑ#4×#:Ñ#:ˆD�H‰HÕ à#(§;¡;ˆD�H‰HÕ r(   c                 óL  — | j                   j                  }|t        j                  k(  ry|t        j                  k(  ry|t        j
                  k(  ry|t        j                  k(  ry|t        j                  k(  ry|t        j                  k(  ry|t        j                  k(  ry|› S )a¦  Returns one of the following str literals:

        "NONE" Discard nothing
        "DEFAULT" Discard useless packets like 0 size packets in AVI
        "NONREF" Discard all non reference
        "BIDIR" Discard all bidirectional frames
        "NONINTRA" Discard all non intra frames
        "NONKEY Discard all frames except keyframes
        "ALL" Discard all

        Wraps :ffmpeg:`AVCodecContext.skip_frame`.
        r1   ÚDEFAULTÚNONREFÚBIDIRÚNONINTRAÚNONKEYÚALL)
ry   Ú
skip_framer   ÚAVDISCARD_NONEÚAVDISCARD_DEFAULTÚAVDISCARD_NONREFÚAVDISCARD_BIDIRÚAVDISCARD_NONINTRAÚAVDISCARD_NONKEYÚAVDISCARD_ALLr–   s     r&   rY  zCodecContext.skip_frame²  s’   € ð —‘×#Ñ#ˆØ”C×&Ñ&Ò&ØØ”C×)Ñ)Ò)ØØ”C×(Ñ(Ò(ØØ”C×'Ñ'Ò'ØØ”C×*Ñ*Ò*ØØ”C×(Ñ(Ò(ØØ”C×%Ñ%Ò%ØØ�Ðr(   c                 ó  — |dk(  r t         j                  | j                  _        y |dk(  r t         j                  | j                  _        y |dk(  r t         j
                  | j                  _        y |dk(  r t         j                  | j                  _        y |dk(  r t         j                  | j                  _        y |dk(  r t         j                  | j                  _        y |dk(  r t         j                  | j                  _        y t        d«      ‚)	Nr1   rS  rT  rU  rV  rW  rX  zInvalid skip_frame type)r   rZ  ry   rY  r[  r\  r]  r^  r_  r`  r¿   r–   s     r&   rY  zCodecContext.skip_frameÑ  sÂ   € à�FŠ?Ü"%×"4Ñ"4ˆD�H‰HÕØ�iÒÜ"%×"7Ñ"7ˆD�H‰HÕØ�hÒÜ"%×"6Ñ"6ˆD�H‰HÕØ�gÒÜ"%×"5Ñ"5ˆD�H‰HÕØ�jÒ Ü"%×"8Ñ"8ˆD�H‰HÕØ�hÒÜ"%×"6Ñ"6ˆD�H‰HÕØ�eŠ^Ü"%×"3Ñ"3ˆD�H‰HÕäÐ6Ó7Ð7r(   c                 ó.   — | j                   j                  S )zECodec delay.

        Wraps :ffmpeg:`AVCodecContext.delay`.

        )ry   Údelayr’   s    r&   rc  zCodecContext.delayä  r“   r(   )NNrv   )T)@r.   r/   r0   Ústaticmethodr}   rˆ   r‹   Úcfuncr¥   r   ÚAVCodecContextÚconstÚAVCodecÚHWAccelr$   Úpropertyr‘   Úsetterr=  r;   rE   rž   r¦   r¢   r´   r¸   ÚccallÚbintrË   rÐ   rÙ   rï   rò   ÚFramerù   Úlistrü   rÿ   r  r  rö   r  r  r  r   r  r  r  r  rÉ   rÃ   r$  r%  rÁ   r8  Ú	cdivisionr@  rE  rI  rL  r�   rŽ   rY  rc  r5   r(   r&   r#   r#   [   sº  „ àò@ó ð@óð ‡\�\ð$à�^‰^˜C×.Ñ.Ñ/ð$ð �~‰~˜fŸl™l¨3¯;©;Ñ7Ñ8ð$ð ò	$ó ð$ð  ñó ðð ‡\�\ð˜6Ÿ:™:ò ó ðð ñ?ó ð?ð ‡]�]ñ8ó ð8ð ñDó ðDð ×Ññ=ó ð=ð ñó ðð ‡]�]ð ˜FŸJ™Jò  ó ð ð ñ
ó ð
ð ×Ññ4ó ð4ð" ñ'ó ð'ð ñ7ó ð7ð
 ñ7ó ð7ð
 ‡\�\ñ%˜6Ÿ;™;ò %ó ð%ò6-òRó
Zðx ñ,ó ð,ð)¨%°$©,ó )ð ‡\�\ð°¸±ð Àò ó ðð ‡\�\ðF 5ò Fó ðFð ‡\�\ñó ðð( ‡\�\ð uò ó ðð ‡\�\ñó ðð ‡\�\ðÀò ó ðð  ‡\�\ñ˜E D™Lò ó ðñ ¨¡ó ð ‡\�\ð2¨Fò 2ó ð2ð ‡\�\ñ"˜V d™]ò "ó ð"ðH ‡\�\ñ	4ó ð	4ð ‡\�\ð4¨%ð 4¸À$¹ò 4ó ð4ð ñó ðð ñó ðð ñó ðð( ñó ðð ‡^�^ñó ðð ñJó ðJð
 ×ÑñAó ðAð
 ñ
ó ð
ð
 ×ÑñJó ðJð Ø€V×Ñ�dÓñ	;ó ó ð	;ð ×Ñð; F§J¡Jò ;ó ð;ð ñDó ðDð ‡_�_ð"˜fŸj™jò "ó ð"ð ñó ðð ñ$ó ð$ð ×Ñð,¨¯
©
ò ,ó ð,ð ñ%ó ð%ð ×Ñð& &§*¡*ò &ó ð&ð
 ñ0ó ð0ð ×Ññ/ó ð/ð ñó ðð< ×Ññ8ó ð8ð$ ñó ñr(   r#   )+Úenumr   r   r‹   Úcython.cimportsr   r   Úcython.cimports.av.bufferr   r   Úcython.cimports.av.codec.codecr   r	   Úcython.cimports.av.dictionaryr
   Úcython.cimports.av.errorr   Úcython.cimports.av.packetr   Úcython.cimports.av.utilsr   r   Úcython.cimports.libc.errnor   Úcython.cimports.libc.stdintr   Úcython.cimports.libc.stringr   ÚdeclareÚobjectr   re  r¥   rf  rg  rh  ri  r#   r'   r*   r7   ra   Úcclassr5   r(   r&   ú<module>r     sâ   ðß ã Ý (ß <ß <Ý 4Ý .Ý ,ß JÝ -Ý /Ý .à �&—.‘. ©«Ó2€ð ‡�ðØ�>‰>˜#×,Ñ,Ñ-ðà�^‰^˜FŸL™L¨¯©Ñ5Ñ6ðð ðð ò	ó ðô8�ô ô.ˆGô .ô.	5ˆWô 	5ð ‡�÷O
ð O
ó ñO
r(   