+
    ~j                        ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^RI	H
t
Ht ^RIHt ^RIHt ^RIHt ^R	IHtHt ^R
IHt ^RIHt ^RIHt ] ! R R4      4       t ! R R4      tR# )    )annotationsN)	dataclass)AnyAsyncIteratorOptional)	FfiClient	FfiHandle)ffi_pb2)video_frame_pb2)TrackSource)	RingQueuetask_done_logger)Participant)Track)
VideoFramec                  6    ] tR t^t$ R]R&   R]R&   R]R&   RtR# )	VideoFrameEventr   frameinttimestamp_uszproto_video_frame.VideoRotationrotation N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       m/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/rtc/video_stream.pyr   r      s    --r   r   c                      ] tR t^&tRtRR R llt]RRRRR^ /R R	 ll4       t]RRRRR^ /R
 R ll4       tR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltRtR# )VideoStreamzDVideoStream is a stream of video frames received from a RemoteTrack.Nc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )   trackr   loop#Optional[asyncio.AbstractEventLoop]capacityr   format5Optional[proto_video_frame.VideoBufferType.ValueType]returnNoner   )r)   s   "r    __annotate__VideoStream.__annotate__)   s=      7  7 7 2 7 	 7
 F 7 
 7r   c                	   T;'       g    \         P                  ! 4       V n        \        P                  P
                  P                  V P                  R  R7      V n        \        V4      V n	        Wn
        W@n        W0n        W@n        RpRV9   d#   V P                  VR,          VR,          R7      pMV P                  4       p\        VP                   P"                  4      V n        VP&                  V n        V P                  P+                  V P-                  4       4      V n        V P.                  P1                  \2        4       R# )c                *    V P                  R 4      R8H  # )messagevideo_stream_event)
WhichOneof)es   &r    <lambda>&VideoStream.__init__.<locals>.<lambda>6   s    Y 7;O Or   )	filter_fnNparticipanttrack_source)r8   r9   )asyncioget_event_loop_loopr   instancequeue	subscribe
_ffi_queuer   _queue_track_format	_capacity%_create_owned_stream_from_participant_create_owned_streamr	   handleid_ffi_handleinfo_infocreate_task_run_taskadd_done_callbackr   )selfr%   r&   r(   r)   kwargsstreams   &&&&&, r    __init__VideoStream.__init__)   s    55W335
 $,,22<<JJO = 
 :C89L$)!F"??"=1~@V @ F ..0F$V]]%5%56[[
ZZ++DIIK8


$$%56r   r&   r)   r(   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r$   r8   r   r9   TrackSource.ValueTyper&   r'   r)   r*   r(   r   r+   r"   r   )r)   s   "r    r-   r.   L   sI     
 
 !
 ,	

 2
 F
 
 

r   c          	     	$    \        VVVVVR R7      # )N)r8   r9   r&   r(   r)   r%   r"   )clsr8   r9   r&   r)   r(   s   &$$$$$r    from_participantVideoStream.from_participantK   s#     #%
 	
r   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r$   r%   r   r&   r'   r)   r*   r(   r   r+   r"   r   )r)   s   "r    r-   r.   _   s?     
 
 
 2	

 F
 
 

r   c               	     \        VVVVR 7      # ))r%   r&   r(   r)   rX   )rY   r%   r&   r)   r(   s   &$$$$r    
from_trackVideoStream.from_track^   s     	
 	
r   c                   V ^8  d   QhRR/# r$   r+   r,   r   )r)   s   "r    r-   r.   n   s     > > >r   c                	l    \         P                  P                  P                  V P                  4       R # N)r   r=   r>   unsubscriber@   rP   s   &r    __del__VideoStream.__del__n   s       ,,T__=r   c                   V ^8  d   QhRR/# )r$   r+   r   r   )r)   s   "r    r-   r.   q   s     
, 
,c 
,r   c                	   V P                   f   Q h\        P                  ! 4       pVP                  pV P                   P                  P
                  Vn        \        P                  P                  Vn
        V P                  e   V P                  Vn        RVn        \        P                  P!                  V4      pVP                  P"                  # )NT)rB   	proto_ffi
FfiRequestnew_video_streamrI   rG   track_handleproto_video_frameVideoStreamTypeVIDEO_STREAM_NATIVEtyperC   r)   normalize_strider   r=   requestrR   )rP   reqrl   resps   &   r    rF    VideoStream._create_owned_streamq   s    {{&&&""$//(,(?(?(F(F% 1 A A U U<<#&*ll#,0)!!))#.$$+++r   c               $    V ^8  d   QhRRRRRR/# )r$   r8   r   r9   rV   r+   r   r   )r)   s   "r    r-   r.   }   s$     9 9&96K9	9r   c                	z   \         P                  ! 4       pVP                  pVP                  P                  Vn        \        P                  P                  Vn	        W$n
        R Vn        V P                  e   V P                  Vn        \        P                  P!                  V4      pVP                  P"                  # )T)rj   rk   video_stream_from_participantrI   rG   participant_handlern   ro   rp   rq   r9   rr   rC   r)   r   r=   rs   rR   )rP   r8   r9   rt   ry   ru   s   &&&   r    rE   1VideoStream._create_owned_stream_from_participant}   s     ""$(+(I(I%;F;R;R;Y;Y%8->-N-N-b-b%*5A29=%6<<#37<<)0!!))#.11888r   c                   V ^8  d   QhRR/# ra   r   )r)   s   "r    r-   r.      s     > >D >r   c                	L  "    V P                   P                  V P                  4      G Rj  xL
 pVP                  pVP	                  R4      '       d   VP
                  P                  p\        P                  ! V4      p\        VVP
                  P                  VP
                  P                  R7      pV P                  P                  V4       K  VP	                  R4      '       g   K   \        P                  P                   P#                  T P                   4       R#  L5i)TNframe_received)r   r   r   eos)r@   wait_for	_is_eventr2   HasFieldr~   bufferr   _from_owned_infor   r   r   rA   putr   r=   r>   rd   )rP   eventvideo_eventowned_buffer_infor   s   &    r    rM   VideoStream._run   s     //224>>BBE22K##$455$/$>$>$E$E!"334EF'!,!;!;!H!H(77@@ &%%e,,  ,,T__=# Cs   *D$D"&D$BD$,7D$c                   V ^8  d   QhRR/# ra   r   )r)   s   "r    r-   r.      s      d r   c                	n   "   V P                   P                  4        V P                  G R j  xL
  R #  L5irc   )rI   disposerN   re   s   &r    acloseVideoStream.aclose   s$       "jjs   *535c                    V ^8  d   QhRRRR/# )r$   r4   zproto_ffi.FfiEventr+   boolr   )r)   s   "r    r-   r.      s     M M- M$ Mr   c                	\    VP                   P                  V P                  P                  8H  # rc   )r2   stream_handlerI   rG   )rP   r4   s   &&r    r   VideoStream._is_event   s%    ##11T5E5E5L5LLLr   c                   V ^8  d   QhRR/# )r$   r+   zAsyncIterator[VideoFrameEvent]r   )r)   s   "r    r-   r.      s      9 r   c                	    V # rc   r   re   s   &r    	__aiter__VideoStream.__aiter__   s    r   c                   V ^8  d   QhRR/# )r$   r+   r   r   )r)   s   "r    r-   r.      s       r   c                	   "   V P                   P                  4       '       d   \        hV P                  P	                  4       G R j  xL
 pVf   \        hV#  L5irc   )rN   doneStopAsyncIterationrA   get)rP   items   & r    	__anext__VideoStream.__anext__   sD     ::??$$[[__&&<$$	 's   AAAA)	rD   rI   r@   rC   rK   r<   rA   rN   rB   )Nr   N)r   r   r   r   __doc__rS   classmethodrZ   r^   rf   rF   rE   rM   r   r   r   r   r   r   r   r    r"   r"   &   s    N 7D 

 59
 IM
 
 
$ 
 59	

 IM
 
 
>
,9>*M r   r"   )
__future__r   r:   dataclassesr   typingr   r   r   _ffi_clientr   r	   _protor
   rj   r   rn   _proto.track_pb2r   _utilsr   r   r8   r   r%   r   video_framer   r   r"   r   r   r    <module>r      sS    #  ! / / - ( 8 ) / $  # . . .L Lr   