
    ybjm                     v    S SK r S SKJr  S SKJr  S SKJrJrJr  S SK	J
r
  \ R                   " S S5      5       rg)    N)	err_check)opaque_container)avdict_to_dictavrational_to_fractionto_avrational)SideDataContainerc                   ~   \ rS rSrSrS rS rS r\R                  S S\
S\R                  4S	 jj5       r\R                  S
 5       r\R                  S\R                  4S j5       r\S 5       r\R&                  S 5       r\S 5       r\R&                  S 5       r\S 5       r\R&                  S 5       r\\R,                  " S5      S 5       5       r\S 5       r\R&                  S 5       r\S 5       r\S 5       r\R&                  S 5       r\S 5       r\S 5       rS r\S 5       r\R&                  S 5       rSrg)!Frame   z
Base class for audio and video frames.

See also :class:`~av.audio.frame.AudioFrame` and :class:`~av.video.frame.VideoFrame`.
c                     [         R                     [        R                  5       U l        S S S 5        g ! , (       d  f       g = fN)cythonnogillibav_frame_allocptr)selfargskwargss      ڄ/tmp/claude-0/-home-danvics-docker-quiz/c1e0577a-e42c-4a3d-b1ea-3edd61103a4e/scratchpad/stt/lib/python3.13/site-packages/av/frame.py	__cinit__Frame.__cinit__   s#    \\))+DH \\s	   4
Ac                     [         R                     [        R                  [         R                  " U R
                  5      5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   av_frame_freeaddressr   r   s    r   __dealloc__Frame.__dealloc__   s.    \\fnnTXX67 \\s   4A
Ac                 j    SU R                   R                   SU R                   S[        U 5      S S3$ )Nz<av.z pts=z at 0xx>)	__class____name__ptsidr   s    r   __repr__Frame.__repr__   s2    dnn--.eDHH:VBtHQ<qQQ    Tsourcedata_layoutc                    UR                   U l         [        R                  U R                  UR                  5        U(       a  UR                  R                  U R                  l        UR                  R
                  U R                  l        UR                  R                  U R                  l        UR                  R                  U R                  l        g g r   )
_time_baser   av_frame_copy_propsr   formatwidthheight	ch_layout)r   r)   r*   s      r   _copy_internal_attributesFrame._copy_internal_attributes    s     !++&**5$jj//DHHO#ZZ--DHHN$jj//DHHO!'!5!5DHH r(   c                     g r    r   s    r   _init_user_attributesFrame._init_user_attributes,   s    r(   dstc                    UR                   (       d  [        S5      eU R                  R                   (       d  Xl        g U R                  R                   UR                   :X  a%  U R                  R                  UR                  :X  a  g U R                  R
                  [        R                  :w  aD  [        R                  U R                  R
                  U R                  U5      U R                  l        U R                  R                  S:w  aD  [        R                  U R                  R                  U R                  U5      U R                  l	        Xl        g )NzCannot rebase to zero time.r   )
num
ValueErrorr,   denr   r$   r   AV_NOPTS_VALUEav_rescale_qduration)r   r8   s     r   _rebase_timeFrame._rebase_time0   s    ww:;;""!O??#'')doo.A.ASWW.L88<<3---++DHHLL$//3ODHHL88! # 0 0!!4??C!DHH r(   c                     U R                   R                  [        R                  :X  a  gU R                   R                  $ )a,  
The decoding timestamp copied from the :class:`~av.packet.Packet` that triggered returning this frame in :attr:`time_base` units.

(if frame threading isn't used) This is also the Presentation time of this frame calculated from only :attr:`.Packet.dts` values without pts values.

:type: int | None
N)r   pkt_dtsr   r=   r   s    r   dts	Frame.dtsF   s/     88s111xxr(   c                 j    Uc   [         R                  U R                  l        g XR                  l        g r   )r   r=   r   rC   r   values     r   rD   rE   S   s#    ="11DHH$HHr(   c                     U R                   R                  [        R                  :X  a  gU R                   R                  $ )z
The presentation timestamp in :attr:`time_base` units for this frame.

This is the time at which the frame should be shown to the user.

:type: int | None
N)r   r$   r   r=   r   s    r   r$   	Frame.ptsZ   s+     88<<3---xx||r(   c                 j    Uc   [         R                  U R                  l        g XR                  l        g r   )r   r=   r   r$   rG   s     r   r$   rJ   g   s!    =--DHHL HHLr(   c                 .    U R                   R                  $ )zB
The duration of the frame in :attr:`time_base` units

:type: int
r   r?   r   s    r   r?   Frame.durationn   s     xx   r(   c                 $    XR                   l        g r   rM   rG   s     r   r?   rN   w   s    !r(   c                     U R                   R                  [        R                  :X  a  g[	        U R                   R                  5      U R
                  R                  -  U R
                  R                  -  $ )z
The presentation time in seconds for this frame.

This is the time at which the frame should be shown to the user.

:type: float | None
N)r   r$   r   r=   floatr,   r:   r<   r   s    r   time
Frame.time{   sN     88<<3---TXX\\"T__%8%884??;N;NNNr(   c                     U R                   R                  (       a)  [        [        R                  " U R                   5      5      $ g)zo
The unit of time (in fractional seconds) in which timestamps are expressed.

:type: fractions.Fraction | None
N)r,   r:   r   r   r   r   s    r   	time_baseFrame.time_base   s.     ??)&..*IJJ r(   c                 X    [        U[        R                  " U R                  5      5        g r   )r   r   r   r,   rG   s     r   rU   rV      s    eV^^DOO<=r(   c                     U R                   R                  S:g  =(       d0    [        U R                   R                  [        R
                  -  5      $ )z%
Is this frame corrupt?

:type: bool
r   )r   decode_error_flagsboolflagsr   AV_FRAME_FLAG_CORRUPTr   s    r   
is_corruptFrame.is_corrupt   s=     xx**a/ 
4HHNNS6664
 	
r(   c                 b    [        U R                  R                  [        R                  -  5      $ )z@Is this frame a key frame?

Wraps :ffmpeg:`AVFrame.key_frame`.

)rZ   r   r[   r   AV_FRAME_FLAG_KEYr   s    r   	key_frameFrame.key_frame   s"     DHHNNS%:%::;;r(   c                     U(       a.  U R                   =R                  [        R                  -  sl        g U R                   =R                  [        R                  ) -  sl        g r   )r   r[   r   r`   r   vs     r   ra   rb      s:     HHNNc333NHHNNs4444Nr(   c                 T    U R                   c  [        U 5      U l         U R                   $ r   )
_side_datar   r   s    r   	side_dataFrame.side_data   s"    ??"/5DOr(   c                 D    [        U R                  R                  SS5      $ )z)Metadata attached to the frame by FFmpeg.zutf-8strict)r   r   metadatar   s    r   rl   Frame.metadata   s     dhh//(CCr(   c                 X    [         R                  U R                  5      n[        U5        g)z
Ensures that the frame data is writable. Copy the data to new buffer if it is not.
This is a wrapper around :ffmpeg:`av_frame_make_writable`.
N)r   av_frame_make_writabler   r   )r   rets     r   make_writableFrame.make_writable   s    
 44TXX>#r(   c                     U R                   R                  [        R                  LaW  [        R
                  " [        R                  " [        R                  U R                   R                  R                  5      5      $ g r   )	r   
opaque_refr   NULLr   getcastp_chardatar   s    r   opaqueFrame.opaque   sR    88fkk1#''FMM488+>+>+C+CD  2r(   c                     [         R                  [        R                  " U R                  R
                  5      5        Ub&  [        R                  " U5      U R                  l        g g r   )r   av_buffer_unrefr   r   r   rt   r   addrd   s     r   rz   r{      sD    FNN488+>+>?@="2"6"6q"9DHH r(   )rg   r,   r   N)T) r#   
__module____qualname____firstlineno____doc__r   r   r&   r   cfuncr
   bintr2   r6   r   
AVRationalr@   propertyrD   setterr$   r?   	cdivisionrR   rU   r]   ra   rh   rl   rq   rz   __static_attributes__r5   r(   r   r
   r
      s   ,8R \\	6 	6FKK 	6 	6 \\  \\  * 
  
  	ZZ% % 
 
 	ZZ! ! ! ! __" " d
O  
O K K > > 
 
 < < 5 5  
 D D   ]]: :r(   r
   )r   cython.cimports.av.errorr   cython.cimports.av.opaquer   cython.cimports.av.utilsr   r   r   av.sidedata.sidedatar   cclassr
   r5   r(   r   <module>r      s=     . 6  3 D: D: D:r(   