Fuchsia Camera Stack

While camera code follows the Fuchsia coding guide, we have added additional
stylistic rules to ensure that all camera code remains consistent.


Code Layout

Camera code is layed out in the following fashion. Note that some code does not
obey this layout; this represents the planned organization.

camera
├── camera_manager
├── drivers
│   ├── camera_controller <- Provides a camera driver interface for the ISP and other hw
│   ├── common            <- for drivers that are related to cameras, like mipi
│   ├── hw_accel          <- For all hardware accelerators, scalars, etc.
│   ├── isp               <- For code relating to the actual isp block
│   │   ├── <isp_name>    <- Each ISP has a folder for device specific code
│   │   └── modules       <- shared ISP logic blocks go in modules
│   ├── sensors           <- For image sensors
│   ├── virtual           <- For virtual cameras, other mock devices
│   └── usb               <- For usb cameras implementing UVC
├── examples              <- Any examples of camera usages
└── e2e_tests             <- End to end tests of the camera stack

Tests

Organization

With the exception of end-to-end tests, all camera tests shall be located in a
test folder next to the code it tests.
The test source shall be named <object-of-test>-test.cc.
The meta folder for the test is located in the test directory.

Example:

bar
├── BUILD.gn
├── foo.cc
└── foo.h
   └── test
        ├── foo_test.cc
        ├── BUILD.gn
        └── meta
            └── foo_test.cmx

Automation

Tests shall be automated in one of 3 ways:

  • Unit Tests and Integration Tests shall be made into components that
    are part of the camera_full_test test package, defined in
    camera/BUILD.gn. These tests should be able to be run in Qemu.
  • Driver Unit Tests are built into drivers, and will be tested by .
  • Debug interfaces shall provide fidl interfaces, which will be connected
    to by test programs. These programs shall be included in the
    camera_full_on_device_test test package, defined in camera/BUILD.gn.
    All such tests shall operate on any Fuchsia platform, and shall only run tests
    on appropriate devices.

Tests should be written using the gtest
framework.

【Fuchsia】Fuchsia Camera Stack

1 Like