File tree Expand file tree Collapse file tree 1 file changed +16
-1
lines changed
Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -302,22 +302,37 @@ def writer_thread(video_sink: VideoSink) -> None:
302302 desc = progress_message ,
303303 )
304304
305+ exception_in_worker : Exception | None = None
306+ read_finished = False
307+
305308 try :
306309 while True :
307310 read_item = frame_read_queue .get ()
308311 if read_item is None :
312+ read_finished = True
309313 break
310314
311315 frame_index , frame = read_item
312- processed_frame = callback (frame , frame_index )
316+ try :
317+ processed_frame = callback (frame , frame_index )
318+ except Exception as exc :
319+ exception_in_worker = exc
320+ break
313321
314322 frame_write_queue .put (processed_frame )
315323 progress_bar .update (1 )
316324 finally :
317325 frame_write_queue .put (None )
326+ if not read_finished :
327+ while True :
328+ read_item = frame_read_queue .get ()
329+ if read_item is None :
330+ break
318331 reader_worker .join ()
319332 writer_worker .join ()
320333 progress_bar .close ()
334+ if exception_in_worker is not None :
335+ raise exception_in_worker
321336
322337
323338class FPSMonitor :
You can’t perform that action at this time.
0 commit comments