<feed xmlns='http://www.w3.org/2005/Atom'>
<title>uvc-gadget.git/lib, branch master</title>
<subtitle>UVC gadget userspace sample application</subtitle>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/'/>
<entry>
<title>lib/mjpeg_encoder: Add an MJPEG encoder for YUV420 data</title>
<updated>2023-01-16T15:22:38+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2023-01-10T08:49:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=29be8034518c0babbf6334d3ef6fc9ffe30e6b70'/>
<id>29be8034518c0babbf6334d3ef6fc9ffe30e6b70</id>
<content type='text'>
MJPEG is an extremely useful format given its compression allows
high framerates even over limited bandwith USB connections. Add
an MJPEG encoder class that converts YUV420 data into MJPEG data.

Where a libcamera-source does not support MJPEG natively, convert
YUV420 into MJPEG if the user tries to set MJPEG format.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MJPEG is an extremely useful format given its compression allows
high framerates even over limited bandwith USB connections. Add
an MJPEG encoder class that converts YUV420 data into MJPEG data.

Where a libcamera-source does not support MJPEG natively, convert
YUV420 into MJPEG if the user tries to set MJPEG format.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib/stream: Add and handle new VIDEO_SOURCE_ENCODED type</title>
<updated>2023-01-16T13:10:16+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2023-01-10T12:06:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=3a4e214882b362dc6dccd28d0862a258af75cf33'/>
<id>3a4e214882b362dc6dccd28d0862a258af75cf33</id>
<content type='text'>
Add functions to handle a new entry into video_source_type, representing
data with an encoding step between the source and sink. When running
through this route, buffers are allocated and mmaped on both the source
and the sink, then imported to the source to be filled before being queued
to the sink.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add functions to handle a new entry into video_source_type, representing
data with an encoding step between the source and sink. When running
through this route, buffers are allocated and mmaped on both the source
and the sink, then imported to the source to be filled before being queued
to the sink.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib/video-source: Add video_source_import_buffers</title>
<updated>2023-01-16T13:10:16+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2023-01-13T16:27:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=afd7ad5f9dbef7f31162b9a49b9f85c0a309a3a0'/>
<id>afd7ad5f9dbef7f31162b9a49b9f85c0a309a3a0</id>
<content type='text'>
We need to be able to place encoded data into the sink device's bufs.
To facilitate that add a video_source operation that allows the source
to import buffers from the sink.

Add a .import_buffers() callback so that the libcamera-source can
access a sink's buffers.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We need to be able to place encoded data into the sink device's bufs.
To facilitate that add a video_source operation that allows the source
to import buffers from the sink.

Add a .import_buffers() callback so that the libcamera-source can
access a sink's buffers.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: Add video_source_type enumeration</title>
<updated>2023-01-16T13:10:16+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2023-01-10T11:58:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=4d9897c5aa5376f89e0d5ed1534536f680939e0d'/>
<id>4d9897c5aa5376f89e0d5ed1534536f680939e0d</id>
<content type='text'>
Add an enum to struct video_source that details the type of source
we're dealing with. This will be used to make decisions about buffer
allocation and handling in a more explicit way.

Use the video_source_type associated with a video_source to decide on
the appropriate allocation function and buffer handler at stream on time.
This is a more explicit method than relying on the presence of the
.alloc_buffers op and allows more flexibility.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add an enum to struct video_source that details the type of source
we're dealing with. This will be used to make decisions about buffer
allocation and handling in a more explicit way.

Use the video_source_type associated with a video_source to decide on
the appropriate allocation function and buffer handler at stream on time.
This is a more explicit method than relying on the presence of the
.alloc_buffers op and allows more flexibility.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libcamera: Add new libcamera source</title>
<updated>2023-01-16T13:10:03+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2023-01-16T07:58:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=006aa232ac92e3ccde06a3b1536d6e02e8496766'/>
<id>006aa232ac92e3ccde06a3b1536d6e02e8496766</id>
<content type='text'>
Provide the integration of a libcamera source within uvc-gadget.
This adds C++ support to the project and adds libcamera as an
optional external dependency.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Provide the integration of a libcamera source within uvc-gadget.
This adds C++ support to the project and adds libcamera as an
optional external dependency.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>slideshow-source: add slideshow source class</title>
<updated>2022-12-06T14:42:12+00:00</updated>
<author>
<name>Paul Elder</name>
<email>paul.elder@ideasonboard.com</email>
</author>
<published>2022-11-23T07:33:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=becfda202621418f2304649249d4437481b691c1'/>
<id>becfda202621418f2304649249d4437481b691c1</id>
<content type='text'>
The slideshow_source class is an implementation of the video_source
class that streams a set of images as video.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Paul Elder &lt;paul.elder@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The slideshow_source class is an implementation of the video_source
class that streams a set of images as video.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Paul Elder &lt;paul.elder@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib/jpg-source: Constrain fps</title>
<updated>2022-11-30T13:48:26+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2022-11-30T13:31:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=d2427718c9e91870ceddc032bcfce51def667596'/>
<id>d2427718c9e91870ceddc032bcfce51def667596</id>
<content type='text'>
As written the fps output by the jpg-source is unconstrained; it will
simply fill buffers as quickly as the USB subsysem can handle them.
This is not particularly realistic and also means that the frame rates
configured (and thus expected) by the host are not being adhered to.
Use the new timer infrastructure to slow down the buffer fill operation
such that the frame rates seen match those configured by the host.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As written the fps output by the jpg-source is unconstrained; it will
simply fill buffers as quickly as the USB subsysem can handle them.
This is not particularly realistic and also means that the frame rates
configured (and thus expected) by the host are not being adhered to.
Use the new timer infrastructure to slow down the buffer fill operation
such that the frame rates seen match those configured by the host.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib/timer: Add timer infrastructure</title>
<updated>2022-11-30T13:48:26+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2022-11-30T13:31:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=1c18c451f3a48507e876cfdb03c0a6f2187f62cb'/>
<id>1c18c451f3a48507e876cfdb03c0a6f2187f62cb</id>
<content type='text'>
Some sources simply fill the buffers passed by the USB subsystem and
return them as quickly as possible. Particularly with compressed
formats operating at superspeed this rapidly results in unrealistic
frame rates.

Add infrastructure that allows us to define a specific
framerate and introduce blocking calls that constrain those sources
to the framerates expected by the host.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some sources simply fill the buffers passed by the USB subsystem and
return them as quickly as possible. Particularly with compressed
formats operating at superspeed this rapidly results in unrealistic
frame rates.

Add infrastructure that allows us to define a specific
framerate and introduce blocking calls that constrain those sources
to the framerates expected by the host.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: uvc: Respond to control requests with dummy values</title>
<updated>2022-11-22T16:08:30+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2022-11-22T15:34:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=0df9d3ad860ecd78f1bf8ad6bd5ceccaf40a9e07'/>
<id>0df9d3ad860ecd78f1bf8ad6bd5ceccaf40a9e07</id>
<content type='text'>
Without a response, the host will assume there has been an error and
throw a bunch of errors. The noise of those errors makes it difficult
to see what's going on properly, so return a dummy response that
silences the errors until the functionality is properly implemented.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without a response, the host will assume there has been an error and
throw a bunch of errors. The noise of those errors makes it difficult
to see what's going on properly, so return a dummy response that
silences the errors until the functionality is properly implemented.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: uvc: Add control names in output prints</title>
<updated>2022-11-22T16:08:30+00:00</updated>
<author>
<name>Daniel Scally</name>
<email>dan.scally@ideasonboard.com</email>
</author>
<published>2022-11-22T15:34:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ideasonboard.org/uvc-gadget.git/commit/?id=70d68062373502d159771b53b3e6d94c0557a0da'/>
<id>70d68062373502d159771b53b3e6d94c0557a0da</id>
<content type='text'>
It's easier to see what's going on at a glance when the output is
human-readable, so replace the control codes with their names.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's easier to see what's going on at a glance when the output is
human-readable, so replace the control codes with their names.

Reviewed-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
Signed-off-by: Daniel Scally &lt;dan.scally@ideasonboard.com&gt;
Signed-off-by: Kieran Bingham &lt;kieran.bingham@ideasonboard.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
