Nicolas Dufresne
b2dab42ce8
v4l2allocator: Fix libv4l2 support
...
Need to include config.h, otherwise we endup directly using the
ioct/mmap/munmap calls and need to vall v4l2_munmap.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
428d63c2e5
v4l2allocator: Set the flags on the object
...
We where not setting the probed flags on the allocator, which mean even if
CREATE_BUFS was supported on some driver, it would endup being ignored.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
cb311d57f5
v4l2bufferpool: Re-enqueue buffer at stream start
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
a946a7cde6
v4l2allocator: There is not group on error
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
6f5edb3b4b
v4l2transform: Handle FLUSH_STOP event
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
815c9b7d35
v4l2bufferpool: Acquire cannot return a buffer from another pool
...
Return a buffer from an otherpool has unwanted side effects that lead to leaks and
prevents deactivating the pool. Instead, we change the _process() API so it can
replace the internal buffer with the buffer from the downstream pool. This implied
moving from _fill() to _create() method in the src.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
97d0ca853e
v4l2bufferpool: Remove unreached acquire code
...
The acquire is done in _prepare now.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
f13331e928
v4l2bufferpool: Sanetize buffer refount handling
...
Buffer refcounting is a bit hard, because of the duality between CAPTURE and
OUTPUT mode. In the long term, we should consider having two seperate pool
instead of this mess. At least state should be better kept this way.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
deb40de4b8
v4l2transform: Add more traces
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
74a64be001
v4l2-allocator: Add S to REQBUFS/CREATE_BUFS enum
...
All enum that has REQBUFS and CREATE_BUFS where missing S, which was
confusing since they are supposed to match with associcated ioctl name. This
also fixes the yet unused CAN_REQUEST flag check.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
3500e44f17
v4l2transform: Enabled QoS
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
62605e11eb
v4l2: Fixup USERPTR/DMABUF capture support
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
7f8eff7845
v4l2object: Improve selecton of min/max in decide allocation
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
ba32cf10f3
v4l2bufferpool: Update config if meta is missing
...
Rather then hard failure, we should update the config with the meta option we
need and return false.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
92bdd596f2
v4l2: Add DMABUF and USERPTR importation
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
a114a32d22
v4l2allocator: Valid FD are bigger or equal to zero
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
d3383f9d4c
v4l2object: Don't leak downstream pool in propose_allocation
...
parse_nth_allocation_pool() give a ref on the pool, we need to unref it
when done.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
eee61f39e5
v4l2: Introduce DMABUF_IMPORT IO mode
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
1ab90ababa
v4l2: Add dmabuf export support
...
This can be enabled sing io-mode=dmabuf. This will enabled mmap base
drivers to export the buffers as dmabuf.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
7b00d7ac46
v4l2allocator: Guaranty queued state integrety
...
Because of the buf in videobuf2, dqbuf may leave the DONE flag being,
which would implied that the buffer is queued. As this has been broken
for 4 years, simply guaranty the state flags integrity when doing
qbuf/dqbuf.
See https://patchwork.linuxtv.org/patch/23641/
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
783417ee9f
v4l2transform: Implement open/close
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
23e273acb2
v4l2transform: Ensure output pool is configured
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
026f79b5bd
v4l2transform: Check if caps have changes before asserting
...
In set_caps, now checks if caps actually changed and succeed if they didn't
change.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
a89986ebd5
v4l2videodec: Ensure pool is configured
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
83f053e980
v4l2object: Always set a size when deciding allocation
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
acebdd86da
v4l2object: Improved decide allocation
...
Improve decide allocation so it properly configure both local and downstream
buffer pools. Also read back the pool config if it was changed to to driver
limitations.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
cf6c7e9846
v4l2bufferpool: Do not pre-configure the pool
...
Pre-configuring the pool is error prone, since it may hide a configuration failure and
endup with a pool that is not configured the way it should (e.g. no video meta, wrong
queue size, etc.)
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
fa6cd1d25a
v4l2bufferpool: Preserve downstream minimum even in RW
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
7b8bb7188b
v4l2bufferpool: Turn cropmeta into a custom option
...
Turn crop meta into a custom option and make sure it's there is needed.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
db3d2f35f0
v4l2bufferpool: Early catch short allocation
...
Catch short allocation after saving the format. This is not a catch all, but should catch
most of the miss-behaving drivers when doing S_FMT/G_FMT and avoid potential crash.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
2b0ac06ade
v4l2bufferpool: Port to use GstV4l2Allocator
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
fd13e9e96d
Implement V4l2 Allocator
...
This goal of this allocator is mainly to allow tracking the memory.
Currently, when a buffer memory has been modified, the buffer and it's
memory is disposed and lost until the stream is restarted.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
1b4561cf35
v4l2object: Don't advertise crop meta
...
Currently we advertise crop meta, but not element handle support this meta.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
a721e54922
v4l2object: Setup pool already send element error
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
409cccb477
v4l2object: Workaround decoder that set num_planes to 0 in the format
...
Some well known decoder wrongly set num_planes to 0 in their format instead of
one. In this case we would endup with no size when deciding buffer allocation.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
46ffef798c
v4l2object: Ensure size before configuring the pool
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
5a61fb7f25
v4l2object: Set minimum buffers to 2
...
All the element requires at least two buffers. This is not used for RW mode.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
3393083497
v4l2object: Remove unused MAX_BUFFERS define
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
8f6bd0dbc0
v4l2object: Don't hardcode min/max use default instead
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
f6d425bf0f
v4l2transform: Install PROP_CAPTURE_IO_MODE with right ID
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
1635697f7e
v4l2transform: decide_allocation returns a boolean
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
cf788c9ec7
v4l2videodec: Install PROP_CAPTURE_IO_MODE with right ID
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
527df8b888
v4l2transform: Add propose_allocation
...
This should remove 1 copy between the decoder and the transform.
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
0488984f82
v4l2: Move propose allocation to v4l2object
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
f810196b3e
v4l2transform: Fixup caps query
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
d4c24cc52f
v4l2transform: Setup cropping if needed
2014-05-08 15:56:36 -04:00
Nicolas Dufresne
2676ac9075
v4l2transform: Expose BGRA and ARGB formats
2014-05-08 15:56:35 -04:00
Nicolas Dufresne
10b67e9913
v4l2transform: Ensure output pool is activated
...
That pool may be different then the internal pool.
2014-05-08 15:56:35 -04:00
Nicolas Dufresne
91efa79ed9
v4l2transform: Ensure internal buffer pools actication
2014-05-08 15:56:35 -04:00
Nicolas Dufresne
7a4b076099
v4l2transform: Move subinstance subclass init near other init
2014-05-08 15:56:35 -04:00