From: Kieran Bingham <kieran.bingham@ideasonboard.com>
To: Troy Kisky <troy.kisky@boundarydevices.com>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
laurent.pinchart@ideasonboard.com
Cc: Olivier BRAUN <olivier.braun@stereolabs.com>,
kieran.bingham@ideasonboard.com
Subject: Re: [RFC/RFT PATCH 0/6] Asynchronous UVC
Date: Thu, 4 Jan 2018 10:25:10 +0000 [thread overview]
Message-ID: <98e9fe58-b2d1-9a0c-df3a-e8e3ea7c25ca@ideasonboard.com> (raw)
In-Reply-To: <b18d0633-cb04-639b-4ade-55b6839da0b3@boundarydevices.com>
Hi Troy,
On 03/01/18 21:13, Troy Kisky wrote:
> On 1/3/2018 12:32 PM, Kieran Bingham wrote:
>> 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.
>
> I have a rather large patch that does provide frame buffers directly for bulk
> cameras. It cannot be used with ISOC cameras. But it is currently for 4.1.
> I'll be porting it to 4.9 in a few days if you'd like to see it.
That does indeed sound interesting!
Having direct frame buffers for bulk would certainly be a benefit.
This series could then only be relevant to the ISOC cameras.
Let me know if there's anything I can do to help with porting to mainline, (as
opposed to 4.9) and feel free to send me patches to test and review.
If you're able to test these patches along side yours then that could also be
useful, although I suspect there may be a lot of cross-over - so it will likely
be more effort than just applying the patches :)
--
Regards
Kieran
> BR
> Troy
>
>
>>
>> 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
>>
>
next prev parent reply other threads:[~2018-01-04 10:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 20:32 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 [this message]
2018-06-05 9:01 ` Kieran Bingham
2018-06-05 19:18 ` Troy Kisky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=98e9fe58-b2d1-9a0c-df3a-e8e3ea7c25ca@ideasonboard.com \
--to=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=olivier.braun@stereolabs.com \
--cc=troy.kisky@boundarydevices.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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®