mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RFC/RFT PATCH 0/6] Asynchronous UVC
@ 2018-01-03 20:32 Kieran Bingham
  2018-01-03 20:32 ` [RFC/RFT PATCH 1/6] uvcvideo: Refactor URB descriptors Kieran Bingham
                   ` (6 more replies)
  0 siblings, 7 replies; 17+ messages in thread
From: Kieran Bingham @ 2018-01-03 20:32 UTC (permalink / raw)
  To: linux-media, linux-kernel, laurent.pinchart; +Cc: Olivier BRAUN, kieran.bingham

From: Kieran Bingham <kieran.bingham@ideasonboard.com>

The Linux UVC driver has long provided adequate performance capabilities for
web-cams and low data rate video devices in Linux while resolutions were low.

Modern USB cameras are now capable of high data rates thanks to USB3 with
1080p, and even 4k capture resolutions supported.

Cameras such as the Stereolabs ZED or the Logitech Brio can generate more data
than an embedded ARM core is able to process on a single core, resulting in
frame loss.

A large part of this performance impact is from the requirement to
‘memcpy’ frames out from URB packets to destination frames. This unfortunate
requirement is due to the UVC protocol allowing a variable length header, and
thus it is not possible to provide the target frame buffers directly.

Extra throughput is possible by moving the actual memcpy actions to a work
queue, and moving the memcpy out of interrupt context and allowing work tasks
to be scheduled across multiple cores.

This series has been tested on both the ZED and Brio cameras on arm64
platforms, however due to the intrinsic changes in the driver I would like to
see it tested with other devices and other platforms, so I'd appreciate if
anyone can test this on a range of USB cameras.

Kieran Bingham (6):
  uvcvideo: Refactor URB descriptors
  uvcvideo: Convert decode functions to use new context structure
  uvcvideo: Protect queue internals with helper
  uvcvideo: queue: Simplify spin-lock usage
  uvcvideo: queue: Support asynchronous buffer handling
  uvcvideo: Move decode processing to process context

 drivers/media/usb/uvc/uvc_isight.c |   4 +-
 drivers/media/usb/uvc/uvc_queue.c  | 115 ++++++++++++++----
 drivers/media/usb/uvc/uvc_video.c  | 191 ++++++++++++++++++++++--------
 drivers/media/usb/uvc/uvcvideo.h   |  56 +++++++--
 4 files changed, 289 insertions(+), 77 deletions(-)

base-commit: 6f0e5fd39143a59c22d60e7befc4f33f22aeed2f
-- 
git-series 0.9.1

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-06-05 19:18 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-03 20:32 [RFC/RFT PATCH 0/6] Asynchronous UVC Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 1/6] uvcvideo: Refactor URB descriptors Kieran Bingham
2018-01-04 18:24   ` Guennadi Liakhovetski
2018-01-06 18:30     ` Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 2/6] uvcvideo: Convert decode functions to use new context structure Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 3/6] uvcvideo: Protect queue internals with helper Kieran Bingham
2018-01-04 18:25   ` Guennadi Liakhovetski
2018-01-06 18:37     ` Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 4/6] uvcvideo: queue: Simplify spin-lock usage Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 5/6] uvcvideo: queue: Support asynchronous buffer handling Kieran Bingham
2018-01-03 20:32 ` [RFC/RFT PATCH 6/6] uvcvideo: Move decode processing to process context Kieran Bingham
2018-01-04 18:54   ` Guennadi Liakhovetski
2018-01-06 18:29     ` Kieran Bingham
2018-01-03 21:13 ` [RFC/RFT PATCH 0/6] Asynchronous UVC Troy Kisky
2018-01-04 10:25   ` Kieran Bingham
2018-06-05  9:01   ` Kieran Bingham
2018-06-05 19:18     ` Troy Kisky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®