[libcamera-devel,v3,0/5] android: Camera hotplug support
mbox series

Message ID 20200817202629.4277-1-email@uajain.com
Headers show
Series
  • android: Camera hotplug support
Related show

Message

Umang Jain Aug. 17, 2020, 8:26 p.m. UTC
Changes from v2:
- Separate CameraDevice as shared pointer and a getter func
  as two new commits from "camera_hal_manager: Support camera hotplug"
- Rename few variables and refactor to have more code-sharing.
- Drop "camera_hal_manager: Handle hot-unplug of currently open camera"
  - Still finding out a nice way to deal with this. Current stock
    implementation on CrOS is to ::exit(1) cros_camera_service 
    if an open camera is unplugged. AOSP doesn't seem to handle
    this use case, maybe because it doesn't have notion of 
    hot-[un]pluggable cameras? Add a \todo on unplug handler path.
 
Changes from v1:
- Treat all UVC cameras as external - based off Laurent's suggestion.
   -It's difficult to know whether a UVC camera is external or internal.
    Hence, treat all UVC camereas as external by setting their
    CameraLocation property as CameraLocationExternal.
- Use different IDs for internal and external cameras.
   -Internal camera IDs are meant to be started with 0 and
    external/removable ones from 1000. Also, support  that
    if the camera has been seen in the past, reuse it's ID.
- Few changes dealing with race conditions, locking and graceful
  handling of currently streaming camera.

Umang Jain (5):
  libcamera: pipeline: uvcvideo: Treat all UVC cameras as external
  android: camera_hal_manager: Set camera module callbacks
  android: camera_device: Make CameraDevice a shared object
  android: camera_device: Add a getter to get libcamera::Camera pointer
  android: camera_hal_manager: Support camera hotplug

 src/android/camera3_hal.cpp                  |   2 +
 src/android/camera_device.cpp                |  15 ++
 src/android/camera_device.h                  |   8 +-
 src/android/camera_hal_manager.cpp           | 179 ++++++++++++++++---
 src/android/camera_hal_manager.h             |  23 ++-
 src/libcamera/pipeline/uvcvideo/uvcvideo.cpp |   7 +
 6 files changed, 209 insertions(+), 25 deletions(-)