
    ybj                         S SK r S SKJs  Jr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  \ R                  \ R                    " S S5      5       5       r\ R$                  S	\4S
 j5       r\" 5       rg)    N)Codec)	err_check)Packet)Stream)EAGAINc                       \ rS rSrSr  SS\\-  \-  S-  S\S-  4S jjrS r	\
R                  SS\S-  4S	 jj5       r\
R                  S
 5       rSrg)BitStreamFilterContext
   a=  
Initializes a bitstream filter: a way to directly modify packet data.

Wraps :ffmpeg:`AVBSFContext`

:param in_stream: Defines the input codec for the bitfilter. A :class:`.Stream`
    copies the full input codec parameters, while a :class:`.Codec` or a codec-name
    ``str`` only pins the input codec, which is all a codec-specific filter (such as
    ``h264_mp4toannexb``) needs to initialize.
:type in_stream: :class:`.Stream`, :class:`.Codec`, str, or None
:param Stream out_stream: A stream whose codec is overwritten using the output parameters from the bitfilter.
N	in_stream
out_streamc                 `   Un[         R                     [        R                  " U[         R                  " U R
                  5      5      nS S S 5        [        W5        [        U[        5      (       a}  [         R                     [        R                  " U R
                  R                  [         R                  " [        U5      R
                  R                  5      nS S S 5        [        U5        OUb  [        U[        5      (       a  UO
[        U5      nUR
                  R                  U R
                  R                  l        UR
                  R                   U R
                  R                  l        [         R                     [        R$                  " U R
                  5      nS S S 5        [        U5        Ub  [         R                     [        R                  " UR
                  R                  U R
                  R&                  5      nS S S 5        [        U5        UR(                  b@  [        R*                  " UR(                  R
                  UR
                  R                  5        g g g ! , (       d  f       GN(= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= fN)cythonnogillibav_bsf_list_parse_straddressptrr   
isinstancer   avcodec_parameters_copypar_incastcodecparr   idcodec_idtype
codec_typeav_bsf_initpar_outcodec_contextavcodec_parameters_to_context)selffilter_descriptionr   r   
filter_strrescodecs          ڈ/tmp/claude-0/-home-danvics-docker-quiz/c1e0577a-e42c-4a3d-b1ea-3edd61103a4e/scratchpad/stt/lib/python3.13/site-packages/av/bitstream.py	__cinit__ BitStreamFilterContext.__cinit__   s    %7
\\++Jtxx8PQC #i((11HHOOV[[%C%G%G%P%P  cN" (	599	uY?O  (-yy||DHHOO$).DHHOO&\\//$((+C #!11NN++TXX-=-=  cN ''311,,00*..2I2I 4 "/ \
  \
 s1   6I*AI<!JA J*
I9<
J
J
J-c                     U R                   (       a5  [        R                  " [        R                  " U R                   5      5        g g r   )r   r   av_bsf_freer   r   r"   s    r'   __dealloc__"BitStreamFilterContext.__dealloc__G   s'    88OOFNN48845     packetc                 <   [         R                     [        R                  " U R                  Ub  UR                  O[         R
                  5      nSSS5        [        W5        / n [        5       n[         R                     [        R                  " U R                  UR                  5      nSSS5        U[        * :X  d  U[        R                  :X  a  U$ [        U5        U(       a  U$ UR                  U5        M  ! , (       d  f       N= f! , (       d  f       Ng= f)z
Processes a packet based on the filter_description set during initialization.
Multiple packets may be created.

:type: list[Packet]
N)r   r   r   av_bsf_send_packetr   NULLr   r   av_bsf_receive_packetr   AVERROR_EOFappend)r"   r0   r%   output
new_packets        r'   filterBitStreamFilterContext.filterK   s     \\(((:&**C  	#J//*..I  vg~!7cNMM*%  \ s   ?C< ,D<
D

Dc                 D    [         R                  " U R                  5        g)z
Reset the internal state of the filter.
Should be called e.g. when seeking.
Can be used to make the filter usable again after draining it with EOF marker packet.
N)r   av_bsf_flushr   r,   s    r'   flushBitStreamFilterContext.flushk   s     	"r/    )NNr   )__name__
__module____qualname____firstlineno____doc__r   r   strr(   r-   r   ccallr   r9   r=   __static_attributes__r?   r/   r'   r	   r	   
   s{      26$(	+ E>C'$.+ TM	+Z6 \\&Vd] & &> \\# #r/   r	   returnc                      [        5       n [        R                  n [        R                  " [        R
                  " U5      5      nU(       a  U R                  UR                  5        O U $ MR  r   )setr   r3   r   av_bsf_iterater   addname)namesopaquer   s      r'   get_filter_namesrP   u   sN    E"KKF
  !78IIchhL r/   )r   cython.cimports.libavcimportslibavr   cython.cimports.av.codec.codecr   cython.cimports.av.errorr   cython.cimports.av.packetr   cython.cimports.av.streamr   cython.cimports.libc.errnor   finalcclassr	   cfuncrJ   rP   bitstream_filters_availabler?   r/   r'   <module>r]      st     # # 0 . , , - f# f#  f#R #   /0 r/   