Enhance camera recording functionality with streamer integration
- Updated CameraRecorder to support frame sharing from CameraStreamer, allowing for more efficient video recording. - Modified CameraManager to ensure streamer references are correctly assigned to recorders. - Enhanced CameraStreamer to include a recording frame queue for concurrent access during recording. - Improved logging for better tracking of recording states and streamer activity. - Updated API tests to include new functionality for retrieving video lists.
This commit is contained in:
@@ -167,7 +167,9 @@ class CameraManager:
|
||||
continue
|
||||
|
||||
# Create recorder (uses lazy initialization - camera will be initialized when recording starts)
|
||||
recorder = CameraRecorder(camera_config=camera_config, device_info=device_info, state_manager=self.state_manager, event_system=self.event_system)
|
||||
# Get corresponding streamer for frame sharing
|
||||
streamer = self.camera_streamers.get(camera_config.name)
|
||||
recorder = CameraRecorder(camera_config=camera_config, device_info=device_info, state_manager=self.state_manager, event_system=self.event_system, streamer=streamer)
|
||||
|
||||
# Add recorder to the list (camera will be initialized lazily when needed)
|
||||
self.camera_recorders[camera_config.name] = recorder
|
||||
@@ -291,6 +293,13 @@ class CameraManager:
|
||||
self.logger.error(f"Camera not found: {camera_name}")
|
||||
return False
|
||||
|
||||
# Ensure streamer reference is set (in case recorder was created before streamer)
|
||||
if not recorder.streamer:
|
||||
streamer = self.camera_streamers.get(camera_name)
|
||||
if streamer:
|
||||
recorder.streamer = streamer
|
||||
self.logger.debug(f"Updated streamer reference for recorder {camera_name}")
|
||||
|
||||
# Update camera settings if provided
|
||||
if exposure_ms is not None or gain is not None or fps is not None:
|
||||
settings_updated = recorder.update_camera_settings(exposure_ms=exposure_ms, gain=gain, target_fps=fps)
|
||||
@@ -444,7 +453,9 @@ class CameraManager:
|
||||
return False
|
||||
|
||||
# Create new recorder (uses lazy initialization)
|
||||
recorder = CameraRecorder(camera_config=camera_config, device_info=device_info, state_manager=self.state_manager, event_system=self.event_system)
|
||||
# Get corresponding streamer for frame sharing
|
||||
streamer = self.camera_streamers.get(camera_config.name)
|
||||
recorder = CameraRecorder(camera_config=camera_config, device_info=device_info, state_manager=self.state_manager, event_system=self.event_system, streamer=streamer)
|
||||
|
||||
# Success - add to recorders (camera will be initialized lazily when needed)
|
||||
self.camera_recorders[camera_name] = recorder
|
||||
@@ -481,6 +492,13 @@ class CameraManager:
|
||||
|
||||
# Add streamer to the list
|
||||
self.camera_streamers[camera_config.name] = streamer
|
||||
|
||||
# Update recorder's streamer reference if recorder already exists
|
||||
recorder = self.camera_recorders.get(camera_config.name)
|
||||
if recorder:
|
||||
recorder.streamer = streamer
|
||||
self.logger.debug(f"Updated streamer reference for recorder {camera_config.name}")
|
||||
|
||||
self.logger.info(f"Successfully created streamer for camera: {camera_config.name}")
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user