
    3j                         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  \ R                  \ R                   " S S5      5       5       r\ R                   S\4S	 j5       r\" 5       rg)
    N)	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 Stream in_stream: A stream that defines the input codec for the bitfilter.
: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bc  [         R                     [        R                  " U R
                  R                  UR
                  R                  5      nS S S 5        [        U5        [         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        [        R                  " UR                  R
                  UR
                  R                  5        g g ! , (       d  f       GNk= 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   avcodec_parameters_copypar_incodecparav_bsf_initpar_outavcodec_parameters_to_contextcodec_context)selffilter_descriptionr
   r   
filter_strress         F/home/wildlama/miniconda3/lib/python3.13/site-packages/av/bitstream.py	__cinit__ BitStreamFilterContext.__cinit__   s4    %7
\\++Jtxx8PQC # 11HHOOY]]%;%;  cN\\//$((+C #!11NN++TXX-=-=  cN--((,,jnn.E.E " \
  \
 s1   6F-/A F?!GA G"-
F<?
G
G"
G0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__7   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   r(   r   output
new_packets        r   filterBitStreamFilterContext.filter;   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.flush[   s     	"r'    )NNr   )__name__
__module____qualname____firstlineno____doc__r   r    r%   r   ccallr   r1   r5   __static_attributes__r7   r'   r   r   r   	   sq     $($(	  D=  TM	 D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   r+   r   av_bsf_iterater   addname)namesopaquer   s      r   get_filter_namesrG   e   sN    E"KKF
  !78IIchhL r'   )r   cython.cimports.libavcimportslibavr   cython.cimports.av.errorr   cython.cimports.av.packetr   cython.cimports.av.streamr   cython.cimports.libc.errnor   finalcclassr   cfuncrA   rG   bitstream_filters_availabler7   r'   r   <module>rS      sq     # # . , , - W# W#  W#t #   /0 r'   