Age | Commit message (Collapse) | Author |
|
Allocating buffers allocates resources that must be explicitly freed.
Calling v4l2_alloc_buffers() a second time without freeing the buffers
in between causes memory leaks and must not be allowed.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The v4l2_device object is allocated dynamically by v4l2_open(), free it
in v4l2_close() to make the API symmetrical.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The omap3-isp-live project [1] includes generic V4L2 support code that
implements the V4L2 API. Instead of reinventing the wheel, import the
code and use it.
The code has been modified to merge the V4L2 buffers pool implementation
in the V4L2 support code as the abstraction wasn't right for the
uvc-gadget project. Further refactoring will be performed separately.
The original license hasn't been modified from the original LGPL-2.1+.
The sole copyright owner is Laurent Pinchart.
[1] git://git.ideasonboard.org/omap3-isp-live.git
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The tools.h header defines clamp and ARRAY_SIZE macros. Use the header
to replace the private implementation.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
When the uvc device fd is put on the watch list statically, then there
are many "Unable to dequeue buffer: Invalid argument (22)." because the
V4L2 API returns write events immediately when the stream is off.
To fix this, add the fd to the watch list on streamon, and remove it on
streamoff.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
Replace the manual implementation of the select-based event loop with the
events library. This cleans up the code and simplifies event handling.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The reason why no timeout is needed is twofold:
When the stream is off extensive periods of time can pass without an
event occurring if the host doesn't send any UVC request. As that period
of time is unbound, we can't set any meaningful timeout.
When the stream is on buffers are supposed to flow constantly. If
buffers stop flowing that would indicate a bug somewhere in the stack,
which could be caught by a timeout, but that we wouldn't be able to
recover from anyway.
The timeout is thus not needed and harmful when the stream is off.
Remove it.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
glibc version 2.27 warns that _BSD_SOURCE is deprecated in favour of _DEFAULT
_SOURCE:
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use
_DEFAULT_SOURCE"
Fix the source code accordingly.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
Add events to the watch list allocates memory. Add a cleanup function to
free all memory at cleanup time without having to remove all events
explicitly one by one.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
If a single file descriptor is being watch for multiple event types, it
will be present in multiple entries in the watch list. The
events_unwatch_fd() function will remove the first entry regardless of
its type, not allowing removal of a particular event type.
Fix this by extending the events_unwatch_fd() API to take an event type,
and remove the corresponding entry.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The omap3-isp-live project [1] includes a generic event handling library
that implements a select-based loop. Instead of reinventing the wheel,
import the library and use it.
The original license hasn't been modified, and includes both GPL-2.0+
and LGPL-2.1+ code. The sole copyright owner is Laurent Pinchart.
[1] git://git.ideasonboard.org/omap3-isp-live.git
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The UVC gadget driver now defines its API in the linux/usb/g_uvc.h
public header, use it instead of including an internal kernel header
through a relative path.
The public API doesn't define the UVC_INTF_CONTROL and
UVC_INTF_STREAMING macros, define them locally until we can get rid of
them.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
On alternate setting change, the webcam gadget sends us a
UVC_EVENT_STREAMON or UVC_EVENT_STREAMOFF event. In the first case, the
driver will issue a delayed status response automatically when we call
the VIDIOC_STREAMON ioctl. In the second case, the driver sends the
status response immediately. We must thus not send the status response
manually with UVCIOC_SEND_RESPONSE in any of those cases.
Without this, the ISO streaming doesn't work if host application
(e.g. luvcview) is closed and restarted.
On dwc3 gadget controller it was resulting in Buffer Expiry error on
the ISO endpoint.
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|