feat: Add Camera Settings dialog for UVC controls and Qt parameters
- 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.
This commit is contained in:
43
app/camera/uvc/stub.py
Normal file
43
app/camera/uvc/stub.py
Normal file
@@ -0,0 +1,43 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user