- Implemented CameraSettingsDialog to manage UVC and Qt camera controls. - Integrated UVC parameter sliders and auto controls for brightness, contrast, saturation, hue, sharpness, gamma, white balance, backlight compensation, and exposure. - Added functionality to change white balance and exposure settings via Qt controls. - Updated MainWindow to open CameraSettingsDialog and manage UVC controller lifecycle. - Enhanced AppMenuBar to include a Camera Settings option. - Created tests for UVC controller abstraction layer and parameter info. - Documented camera specifications and supported features in new markdown files.
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""Null (no-op) UVC controller — used when no native library is available."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from app.camera.uvc.base import UvcControllerBase, UvcParam, UvcParamInfo
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class NullUvcController(UvcControllerBase):
|
|
"""
|
|
Fallback controller that reports all controls as unsupported.
|
|
|
|
Used on platforms where no UVC library is installed or when device
|
|
enumeration fails.
|
|
"""
|
|
|
|
def open(self, device_name: str) -> bool: # noqa: ARG002
|
|
return False
|
|
|
|
def close(self) -> None:
|
|
pass
|
|
|
|
def is_open(self) -> bool:
|
|
return False
|
|
|
|
def get_param_info(self, param: UvcParam) -> UvcParamInfo:
|
|
return UvcParamInfo(param=param, supported=False)
|
|
|
|
def get_all_params(self) -> list[UvcParamInfo]:
|
|
return [UvcParamInfo(param=p, supported=False) for p in UvcParam]
|
|
|
|
def set_value(self, param: UvcParam, value: int) -> bool: # noqa: ARG002
|
|
logger.debug("NullUvcController: set_value ignored (%s=%d)", param.name, value)
|
|
return False
|
|
|
|
def set_auto(self, param: UvcParam, enabled: bool) -> bool: # noqa: ARG002
|
|
logger.debug(
|
|
"NullUvcController: set_auto ignored (%s, auto=%s)", param.name, enabled
|
|
)
|
|
return False
|