@@ -122,8 +122,12 @@ def _create_owned_stream_from_participant(
122122 ) -> Any :
123123 req = proto_ffi .FfiRequest ()
124124 video_stream_from_participant = req .video_stream_from_participant
125- video_stream_from_participant .participant_handle = participant ._ffi_handle .handle
126- video_stream_from_participant .type = proto_video_frame .VideoStreamType .VIDEO_STREAM_NATIVE
125+ video_stream_from_participant .participant_handle = (
126+ participant ._ffi_handle .handle
127+ )
128+ video_stream_from_participant .type = (
129+ proto_video_frame .VideoStreamType .VIDEO_STREAM_NATIVE
130+ )
127131 video_stream_from_participant .track_source = track_source
128132 video_stream_from_participant .normalize_stride = True
129133 if self ._format is not None :
@@ -133,22 +137,25 @@ def _create_owned_stream_from_participant(
133137
134138 async def _run (self ) -> None :
135139 while True :
136- event = await self ._ffi_queue .wait_for (self ._is_event )
137- video_event = event .video_stream_event
138-
139- if video_event .HasField ("frame_received" ):
140- owned_buffer_info = video_event .frame_received .buffer
141- frame = VideoFrame ._from_owned_info (owned_buffer_info )
142-
143- event = VideoFrameEvent (
144- frame = frame ,
145- timestamp_us = video_event .frame_received .timestamp_us ,
146- rotation = video_event .frame_received .rotation ,
147- )
148-
149- self ._queue .put (event )
150- elif video_event .HasField ("eos" ):
151- break
140+ try :
141+ event = await self ._ffi_queue .wait_for (self ._is_event )
142+ video_event = event .video_stream_event
143+
144+ if video_event .HasField ("frame_received" ):
145+ owned_buffer_info = video_event .frame_received .buffer
146+ frame = VideoFrame ._from_owned_info (owned_buffer_info )
147+
148+ event = VideoFrameEvent (
149+ frame = frame ,
150+ timestamp_us = video_event .frame_received .timestamp_us ,
151+ rotation = video_event .frame_received .rotation ,
152+ )
153+
154+ self ._queue .put (event )
155+ elif video_event .HasField ("eos" ):
156+ break
157+ finally :
158+ self ._ffi_queue .task_done ()
152159
153160 FfiClient .instance .queue .unsubscribe (self ._ffi_queue )
154161
0 commit comments