Re: [RFD] frame-size switching: preview / single-shot use-case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 18 Feb 2011 13:57:25 +0100, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> wrote:

Hi Michal,

On Friday 18 February 2011 12:37:24 Michal Nazarewicz wrote:

[snip]

What I'm trying to say is that it would be best if one could configure the device in such a way that switching between modes would not require
the device to free buffers (even though in user space they could be
inaccessible).


This is what I have in mind the usage would look like:

1. Open device
		Kernel creates some control structures, the usual stuff.
2. Initialize multi-format (specifying what formats user space will use).
		Kernel calculates amount of memory needed for the most
		demanding format and allocates it.

Don't forget that applications can also use USERPTR. We need a low-latency solution for that as well.

That would probably work best if user provided one big buffer.  Again,
I don't know how this maps to V4L API.


3. Set format (restricted to one of formats specified in step 2)
		Kernel has memory already allocated, so it only needs to split
		it to buffers needed in given format.
4. Allocate buffers.
		Kernel allocates memory needed for most demanding format
		(calculated in step 2).
		Once memory is allocated, splits it to buffers needed in
		given format.
5. Do the loop... queue, dequeue, all the usual stuff.
		Kernel instructs device to handle buffers, the usual stuff.

When buffers are queued cache needs to be cleaned. This is an expensive
operation, and we need to be able to pre-queue (or at least pre-clean)
buffers.

Cache operations are always needed, aren't they?  Whatever you do, you
will always have to handle cache coherency (in one way or another) so
there's nothing we can do about it, or is there?

6. Free buffers.
		Kernel space destroys the buffers needed for given format
		but DOES NOT free memory.

7. If not done, go to step 3.

8. Finish multi-format mode.
		Kernel actually frees the memory.

9. Close the device.

A V4L device driver could just ignore step 2 and 7 and work in the less
optimal mode.

If I understand V4L2 correctly, the API does not allow for step 2 and 8.
In theory, they could be merged with step 1 and 9 respectively, I don't
know id that feasible though.

--
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michal "mina86" Nazarewicz    (o o)
ooo +-----<email/xmpp: mnazarewicz@xxxxxxxxxx>-----ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux