Nicolas Dufresne
a4b5811d22
v4l2: Split flush in start/stop_streaming
...
This allow calling start streaming later for capture device. Currently it breaks
in dmabuf-import because downstream is holding a buffer that will only be
released after stream-start.
https://bugzilla.gnome.org/show_bug.cgi?id=730207
2014-05-15 12:21:44 -04:00
Nicolas Dufresne
c1792de95e
v4l2transform: Flush buffer pools on flush stop
...
https://bugzilla.gnome.org/show_bug.cgi?id=730207
2014-05-15 12:21:40 -04:00
Nicolas Dufresne
7986c55dcb
v4l2allocator: Fix use of atomic active marker
...
https://bugzilla.gnome.org/show_bug.cgi?id=730207
2014-05-15 12:21:35 -04:00
Nicolas Dufresne
19608ac85b
v4l2bufferpool: Don't deactivate otherpool
...
We should not stop the otherpool unless we also stop our own
pool, otherwise it will never get restarted.
https://bugzilla.gnome.org/show_bug.cgi?id=730207
2014-05-15 12:21:31 -04:00
Nicolas Dufresne
4b2808c310
v4l2bufferpool: Also update num_buffers for import cases
...
https://bugzilla.gnome.org/show_bug.cgi?id=730207
2014-05-15 12:21:12 -04:00
Nicolas Dufresne
cff050884c
v4l2object: Fix regression in offset extrapolation
...
When extrapolating the offset, we need to use the extrapolate
stride rather then the base stride. This should fix support for format
with more then two planes (I420, Y42B, etc).
2014-05-13 13:44:20 -04:00
Nicolas Dufresne
de7e5e481d
v4l2bufferpool: Use default VideoInfo for frame operation
...
When doing frame operation, we need to use the default VideoInfo
and let the frame API read the video meta in order to get the stride
and offset right. Currently we where using the specialized VideoInfo
which reflects what the HW is setup to.
2014-05-12 18:08:19 -04:00
Tim-Philipp Müller
2e5daf15e7
v4l2src: minor GValue handling optimisation in probing code
2014-05-12 17:23:19 +01:00
Tim-Philipp Müller
f63bdd0483
v4l2src: avoid lists with one single framerate in probed caps
...
Simplify framerate field if possible, so we don't end up with
e.g. framerate = (fraction) { 30/1 }. Maybe the helper function
should be moved to core, but we can do this later.
2014-05-12 17:21:43 +01:00
Nicolas Dufresne
a270dc79d9
v4l2transform: Fix NULL check copy paste error
...
CID 1212129
2014-05-09 12:14:23 -04:00
Nicolas Dufresne
bf1918481d
v4l2transform: Fix potential deadlock due to missing break
...
CID 1212131
2014-05-09 12:12:12 -04:00
Nicolas Dufresne
e45b1fd9e6
v4l2object: Don't leak config structure
...
this fixes a leak of the config structure and take care of making sure
caps can't reach ref 0 before we are done doing our check.
CID 1212144
2014-05-09 12:10:04 -04:00
Nicolas Dufresne
5284aca559
v4l2object: Remove uneeded cast for code clarity
2014-05-09 12:08:11 -04:00
Nicolas Dufresne
16f0c253a3
v4l2pool: Fix leak of config structure in error case
...
CIDs 1212167 and 1212167
2014-05-09 11:56:52 -04:00
Nicolas Dufresne
68953d8026
v4l2object: Fix use of unitilized pool pointer
...
CID #1212173
2014-05-09 11:52:11 -04:00
Nicolas Dufresne
ab465bd162
v4l2object: Readback pool config if used within the baseclass
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
82a806e63b
v4l2: Replace miss-use of crop meta in favour of proper offset
...
This moves away from copying information and store everything inside
the GstVideoInfo structure. The alignement exposed by v4l2 api
is now handled using proper offset.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
3e4ed47956
v4l2object: Style fix
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
dfdd1ba9d9
v4l2allocator: Reset imported buffer size with expected size
...
This ensure that the buffer pool won't always discard buffer with these
memory when they are released.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
1304c74c6a
v4l2allocator: Reset flushed group
...
This ensure that a flushed group memory are the same size as when they
where originally allocated / imported.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
f3ecbeb577
v4l2bufferpool: Get number of allocated buffers from allocator
...
The value of num_allocated buffer would get confused when
buffer are being discarded.
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
7aed4a9806
v4l2allocator: Add a method to read number of allocated group
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
972cf80957
v4l2bufferpool: Improve debugging
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
c7d735a596
v4l2bufferpool: Ensure we don't re-enqueue buffer during flush
2014-05-08 15:56:37 -04:00
Nicolas Dufresne
01feadc2e7
v4l2transform: Initilialize debug category
2014-05-08 15:56:37 -04:00
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