Commit Graph

258 Commits

Author SHA1 Message Date
Laurent Pinchart
8bc88758d2 libcamera: Document documentation style and update the code accordingly
The documentation style for the Doxygen comment blocks is inconsistent
in the library. Document the expectations and update all existing
comment blocks to match.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-19 13:20:46 +03:00
Laurent Pinchart
0d1b60adaf libcamera: pipeline: Add RKISP1 pipeline
The pipeline handler for the Rockchip ISP creates one camera instance
per detected raw Bayer CSI-2 sensor. Parallel sensors and YUV sensors
are not supported yet.

As the ISP has a single CSI-2 receiver, only one camera can be used at a
time. Mutual exclusion isn't implemented yet.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Tested-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:28 +03:00
Laurent Pinchart
2619480146 libcamera: pipeline: ipu3: Use the new CameraSensor class
Replace the manual handling of sensor formats with usage of the new
CameraSensor class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:22 +03:00
Laurent Pinchart
7645083c72 libcamera: camera_sensor: Add a new class to model a camera sensor
The CameraSensor class abstracts camera sensors and provides helper
functions to ease interactions with them. It is currently limited to
sensors that expose a single subdev, and offer the same frame sizes for
all media bus codes, but will be extended to support more complex
sensors as the needs arise.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:17 +03:00
Laurent Pinchart
05b0e5ed53 libcamera: v4l2_subdevice: Add method to retrieve the media entity
Add a method to retrieve the media entity associated with a subdevice.
The entityName() and deviceNode() methods are not needed anymore as they
can be accessed through the media entity, remove them.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:16 +03:00
Laurent Pinchart
d97cafdf3c libcamera: v4l2_subdevice: Close subdevice when destroyed
Make sure the subdevice file descriptor isn't leaked by closing it when
the V4L2Subdevice instance is destroyed.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:15 +03:00
Laurent Pinchart
889b70d62d libcamera: utils: Add set_overlap() function
The new set_overlap() function counts the number of overlapping elements
in the intersection of two sorted ranges defined by their beginning and
ending iterators.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:14 +03:00
Laurent Pinchart
66337b96b1 libcamera: geometry: Add comparison operators to geometry classes
Add equality and inequality comparison operators for the Rectangle, Size
and SizeRange classes.

For the Size class, also add ordering operators. Sizes are first
compared on combined width and height, then on area, and finally on
width only to achieve a stable ordering.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:07 +03:00
Laurent Pinchart
72afcbb087 libcamera: geometry: Use Size to store min and max in SizeRange
Instead of storing four integers for the minimum and maximum width and
height in the SizeRange class, use two instance of the Size class for
the minimum and maximum sizes.

While it at replace the mention of image size with size in the SizeRange
documentation, as the Size class isn't limited to image sizes.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:06 +03:00
Laurent Pinchart
e7f446e1ed libcamera: geometry: Sort classes alphabetically
Move the Size class before the SizeRange class. No functional change.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:05 +03:00
Laurent Pinchart
9c90781332 libcamera: camera: Log requested configuration in configureStreams()
The IPU3 pipeline handler logs the requested configuration in its
configureStreams() handler. This is useful for other pipeline handlers
as well, move it to the Camera class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:13:00 +03:00
Laurent Pinchart
8f6f63a208 libcamera: log: Mark Loggable::_log() methods as const
The methods don't modify the object instance, mark them as const. This
allows using the LOG() macro from a const method of a Loggable object.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 18:12:59 +03:00
Jacopo Mondi
ee027781b4 libcamera: buffer: Store Request reference in Buffer
Add to the Buffer class methods to set and retrieve a reference to the
Request instance the buffer is part of.

As buffers outlive the Request they are associated with, the reference
is only temporary valid during the buffer completion interval (from when
the buffer gets queued to Camera for processing, until it gets marked as
completed).

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:37:59 +02:00
Jacopo Mondi
0527ba92ad libcamera: request: Expose the Stream to Buffers map
Add to the Request class a method to access the map of Stream to Buffer.

With the introduction of multiple stream support, pipeline handler
should be able to access the map of streams at request queueing time.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:36:48 +02:00
Jacopo Mondi
e671485989 libcamera: camera: Validate Request before queueing it
Extend the Request::prepare() operation to validate the request before
preparing it. Return an error if the request is invalid, which for now
is limited to ensuring that the request contains at least one buffer.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:36:37 +02:00
Jacopo Mondi
571d16b539 libcamera: request: Add hasPendingBuffers() method
Add method to verify if a request has pending buffers yet to be
completed.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:35:34 +02:00
Jacopo Mondi
7b7c8f06a0 libcamera: v4l2_device: Propagate releaseBuffers() error
The error code returned by requestBuffers(0) was not propagated to the
caller. Fix it.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:35:18 +02:00
Jacopo Mondi
da341a4dd1 libcamera: camera: Don't call freeBuffer() on allocateBuffer() error
Do not assume the freeBuffer() function can handle allocateBuffer()
method failures, as error handling and clean up should be performed
by allocateBuffer() method itself.

Perform clean-up on allocations failures in the IPU3 pipeline handler,
now that freeBuffers() is not called anymore.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-18 15:34:54 +02:00
Jacopo Mondi
911bc4aa41 libcamera: camera: Pass the stream set to allocate/freeBuffers()
Pipeline handlers might need to perform allocation of internal buffers,
setup operations, or simple sanity check before going into the
per-stream buffer allocation.

As of now, PipelineHandler::allocateBuffers() is called once for each
active stream, leaving no space for stream-independent configuration.

Change this by providing to the pipeline handlers the full set of active
streams, and ask them to loop over them to perform per-streams
memory allocations and freeing.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-17 15:42:24 +02:00
Niklas Söderlund
7726cba16f libcamera: pipeline_handler: Add missing forward declaration of StreamUsage
When switching to stream usages in the PipelineHandler StreamUsage was
was not forward declared as it should and was hid by other include
files, fix this.

Fixes: 20a6455e0b ("libcamera: camera: Add support for stream usages")
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-04-14 13:55:18 +02:00
Niklas Söderlund
8b26fec690 libcamera: Add missing header files to meson.build
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-09 17:36:30 +02:00
Niklas Söderlund
b0c730e330 libcamera: Switch to CameraConfiguration
Implement the camera configuration thru out the library, tests, cam and
qcam tools.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-09 16:59:19 +02:00
Niklas Söderlund
9a7dc3ce7f libcamera: camera: Add CameraConfiguration
To properly support both multiple streams and stream usages the library
must provide a method to map the stream usages to the returned streams
configurations. Add a camera configuration object to handle this
mapping.

Applications can iterate over the returned camera configuration to
retrieve the streams selected by the library in the same order as the
usages it provided to the library.

Applications can use the operator[] to retrieve the stream pointer and
the stream configuration. Using a numerical index retrieves the stream
pointer, the numerical indexes corresponds to the insertion order of
usages in the CameraConfiguration, using the stream pointer retrieves
the stream's configuration.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-09 16:57:53 +02:00
Niklas Söderlund
20a6455e0b libcamera: camera: Add support for stream usages
Instead of requesting the default configuration for a set of streams
where the application has to figure out which streams provided by the
camera is best suited for its intended usage, have the library figure
this out by using stream usages.

The application asks the library for a list of streams and a suggested
default configuration for them by supplying a list of stream usages.
Once the list is retrieved the application can fine-tune the returned
configuration and then try to apply it to the camera.

Currently no pipeline handler is prepared to handle stream usages but
nor did it make use of the list of Stream IDs which was the previous
interface. The main reason for this is that all cameras currently only
provide one stream each. This will still be the case but the API will be
prepared to expand both pipeline handlers and applications to support
streams usages.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-05 22:07:47 +02:00
Niklas Söderlund
70e53be538 libcamera: stream: Add basic stream usages
In preparation of reworking how a default configuration is retrieved
from a camera add stream usages. The usages will be used by applications
to describe how they intend to use a camera and replace the Stream IDs
when retrieving default configuration from the camera using
streamConfiguration().

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-05 22:07:24 +02:00
Niklas Söderlund
58f1ad3c79 libcamera: Make geometry.h a public header
Make the geometry header public so it can be used by the API facing
applications.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-05 21:47:34 +02:00
Kieran Bingham
78552c818b libcamera: ipu3: Catch return value when disabling links
Ensure that any error from the disableLinks() call during match() is
propogated to the caller.

Fixes: d698ed2749 ("libcamera: ipu3: Create ImgUDevice class")
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-04-03 18:03:41 +07:00
Jacopo Mondi
a8cab93b18 libcamera: ipu3: Enable ImgU media links
As the lengthy comment reports, link enable/disable is not trivial, as
links in one ImgU instance interfere with capture operations in the
other one. As it is not yet clear if this behaviour is intended, as of
now reset the media graph during pipeline's match() and enable the
required links at streamConfiguration time.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
b95d12ac31 libcamera: ipu3: Limit resolution to 2560x1920
As the procedure to configure the intermediate sizes and the alignement
requirements of the ImgU device have not been clarified yet, return as
default configuration the (2560x1920) resolution that has been validated
for both cameras.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
9a1cdb7500 libcamera: ipu3: Set stream configuration
Use the cached sensor maximum resolution and the pixel format
generated by the ImgU output devices as default stream configuration.

While at it, replace the hardcoded numerical value for the number of
buffers with a named constexpr.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
4ce2f06a1b libcamera: ipu3: Connect CIO2 and ImgU bufferReady signals
Connect the CIO2 output bufferRead signal to a slot that simply
queue the received buffer to ImgU for processing, and connect the ImgU
main output bufferReady signal to the cameraData slot that notifies
to applications that a new image buffer is available.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
b7ddedaf42 libcamera: ipu3: Queue requests to ImgU
Implement queueRequest for the IPU3 pipeline manager. When a request is
queued, a new buffer is queued to the ImgU output for capture.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
88316d63f0 libcamera: ipu3: Implement camera start/stop
Start and stop video devices in the pipeline.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
4f370e1001 libcamera: ipu3: Implement memory handling
Implement buffer allocation and release in IPU3 pipeline handlers.

As the pipeline handler currently supports a single stream, provide two
internal buffer pools for 'viewfinder' and 'stat' video devices, and
export the 'output' video device buffers to the stream's pool. This
works around the fact that the ImgU requires buffers to be queued on all
its outputs, even when they are not in use.

Share buffers between the CIO2 output and the ImgU input video devices,
as the output of the former should immediately be provided to the
latter for further processing.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
83458e5712 libcamera: ipu3: Apply image format to the pipeline
Apply the requested stream configuration to the CIO2 device, and
propagate formats through the the ImgU subdevice and its input and
output video devices.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
d698ed2749 libcamera: ipu3: Create ImgUDevice class
Group ImgU components in a class associated with a camera at camera
registration time and provide an intialization method to create and open
all video devices and subdevices of the ImgU.

Statically assign imgu0 to the first camera and imgu1 to the second one
and limit support to two cameras. This will have to be revised in the
future.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
2be53dc605 libcamera: ipu3: Cache the sensor size and format
Cache the sensor maximum size and the media bus code used to produce
it.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
cfd2fff2cd libcamera: ipu3: Create CIO2Device class
Group CIO2 components (cio2, csi2 and image sensor) in a class
associated with the CameraData, to ease management and initialization of
CIO2 unit at camera registration time. A CIO2 unit will always be
associated with a single Camera only.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
289343a24a libcamera: geometry: Add Size structure
Add a simple Size structure that contains an image width and height.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Jacopo Mondi
05a8608f1f libcamera: geometry: Add 0-initialized SizeRange constructor
Add constructor to SizeRange which initialize all the size range fields
to 0.

While at there make the in-line constructor declarations respect the
coding style by moving braces to a new line.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-03 10:11:17 +02:00
Kieran Bingham
88646061e0 libcamera: utils: Use internal secure_getenv() implementation
The secure_getenv() call is not provided by all C libraries. Support
this feature by implementing our own version.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-04-03 13:56:31 +07:00
Kieran Bingham
0e1a809525 libcamera: utils: Use internal basename implementation.
Differing implementations of basename() exist, some of which may modify
the content of the string passed as an argument.

The implementation of basename() is trivial, thus to support different
C librariese, provide our own version which accepts and returns a const
char *.

Update the call sites to use the new implementation.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-04-03 13:56:10 +07:00
Jacopo Mondi
c5ef6310fd libcamera: v4l2_subdevice: Create device from entity name
Add a static method to V4L2Subdevice class to create a V4L2Subdevice
instance from a media entity name.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Jacopo Mondi
69c97ec042 libcamera: v4l2_device: Create device from entity name
Add a static method to V4L2Device class to create a V4L2Device instance
from a media entity name.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Jacopo Mondi
5b9b3c38a1 libcamera: v4l2_subdevice: Rename deviceName() method
Rename the 'deviceName()' method to 'entityName()' as it actually
returns the name of the entity backing the v4l2 subdevice.

While at it, make the names getter methods return a const reference
instead of returning by copy.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Jacopo Mondi
a20182310d libcamera: geometry: Add toString to Rectangle
Add toString() helpers to pretty print out the sizes of a Rectangle.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Jacopo Mondi
8dcd871fec libcamera: formats: Define FormatEnum type
Add an internal format.h and format.cpp files to collect libcamera image
format related types, helpers and structures. Define and document the
FormatEnum type, used to enumerate pixel image formats and associated
image resolutions.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Jacopo Mondi
ee81275238 libcamera: formats: Add toString() methods
Add toString() helpers to pretty print out a V4L2Device or V4L2Subdevice
format.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00
Kieran Bingham
651f6973a0 libcamera: v4l2_device: Fix trivial spelling errors
succcess -> success
  categorized -> categorised

Acked-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-03-20 15:39:25 +00:00
Kieran Bingham
18647a5324 libcamera: media_device: Initialise local variable
The local variable ifaceId generates a compiler warning that it is used
without initialisation.

The loop, and check against the loop iterator, and the
topology.num_interfaces actually ensures that this isn't the case, and
that ifaceId can only be used when set to a valid ID.

The media_v2_interface.id field documents the ID as simply "Unique ID
for the interface" but does not specify if zero is a valid ID or not. As
such we don't further check the pre-initialised ID for validity and keep
the existing check on the iterator count to determine if the ID had been
discovered successfully.

Fixes: d4af90d729 ("libcamera: media_device: Create entities with
major and minor numbers")

Acked-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-03-20 10:25:30 +00:00