Nicolas Dufresne [Sun, 4 May 2014 23:51:48 +0000 (19:51 -0400)]
v4l2bufferpool: Ensure we don't re-enqueue buffer during flush
Nicolas Dufresne [Sun, 4 May 2014 23:13:37 +0000 (19:13 -0400)]
v4l2transform: Initilialize debug category
Nicolas Dufresne [Sun, 4 May 2014 20:11:09 +0000 (16:11 -0400)]
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.
Nicolas Dufresne [Thu, 1 May 2014 17:04:08 +0000 (13:04 -0400)]
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.
Nicolas Dufresne [Tue, 29 Apr 2014 20:49:52 +0000 (16:49 -0400)]
v4l2bufferpool: Re-enqueue buffer at stream start
Nicolas Dufresne [Tue, 29 Apr 2014 20:06:00 +0000 (16:06 -0400)]
v4l2allocator: There is not group on error
Nicolas Dufresne [Tue, 29 Apr 2014 18:56:31 +0000 (14:56 -0400)]
v4l2transform: Handle FLUSH_STOP event
Nicolas Dufresne [Tue, 29 Apr 2014 17:05:41 +0000 (13:05 -0400)]
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.
Nicolas Dufresne [Tue, 29 Apr 2014 17:00:32 +0000 (13:00 -0400)]
v4l2bufferpool: Remove unreached acquire code
The acquire is done in _prepare now.
Nicolas Dufresne [Tue, 29 Apr 2014 16:57:08 +0000 (12:57 -0400)]
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.
Nicolas Dufresne [Tue, 29 Apr 2014 16:48:04 +0000 (12:48 -0400)]
v4l2transform: Add more traces
Nicolas Dufresne [Mon, 28 Apr 2014 12:48:26 +0000 (08:48 -0400)]
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.
Nicolas Dufresne [Fri, 18 Apr 2014 21:51:07 +0000 (17:51 -0400)]
v4l2transform: Enabled QoS
Nicolas Dufresne [Fri, 18 Apr 2014 21:02:50 +0000 (17:02 -0400)]
v4l2: Fixup USERPTR/DMABUF capture support
Nicolas Dufresne [Fri, 18 Apr 2014 18:45:00 +0000 (14:45 -0400)]
v4l2object: Improve selecton of min/max in decide allocation
Nicolas Dufresne [Fri, 18 Apr 2014 17:09:00 +0000 (13:09 -0400)]
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.
Nicolas Dufresne [Fri, 11 Apr 2014 21:10:11 +0000 (17:10 -0400)]
v4l2: Add DMABUF and USERPTR importation
Nicolas Dufresne [Fri, 18 Apr 2014 01:45:58 +0000 (21:45 -0400)]
v4l2allocator: Valid FD are bigger or equal to zero
Nicolas Dufresne [Wed, 16 Apr 2014 21:04:42 +0000 (17:04 -0400)]
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.
Nicolas Dufresne [Mon, 14 Apr 2014 16:19:39 +0000 (12:19 -0400)]
v4l2: Introduce DMABUF_IMPORT IO mode
Nicolas Dufresne [Thu, 10 Apr 2014 20:26:34 +0000 (16:26 -0400)]
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.
Nicolas Dufresne [Wed, 16 Apr 2014 19:51:03 +0000 (15:51 -0400)]
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/
Nicolas Dufresne [Tue, 15 Apr 2014 21:31:42 +0000 (17:31 -0400)]
v4l2transform: Implement open/close
Nicolas Dufresne [Tue, 15 Apr 2014 20:43:41 +0000 (16:43 -0400)]
v4l2transform: Ensure output pool is configured
Nicolas Dufresne [Tue, 15 Apr 2014 20:43:15 +0000 (16:43 -0400)]
v4l2transform: Check if caps have changes before asserting
In set_caps, now checks if caps actually changed and succeed if they didn't
change.
Nicolas Dufresne [Tue, 15 Apr 2014 20:41:46 +0000 (16:41 -0400)]
v4l2videodec: Ensure pool is configured
Nicolas Dufresne [Tue, 8 Apr 2014 22:54:09 +0000 (18:54 -0400)]
v4l2object: Always set a size when deciding allocation
Nicolas Dufresne [Tue, 8 Apr 2014 22:20:25 +0000 (18:20 -0400)]
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.
Nicolas Dufresne [Tue, 15 Apr 2014 17:30:02 +0000 (13:30 -0400)]
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.)
Nicolas Dufresne [Tue, 15 Apr 2014 17:23:33 +0000 (13:23 -0400)]
v4l2bufferpool: Preserve downstream minimum even in RW
Nicolas Dufresne [Tue, 15 Apr 2014 17:20:12 +0000 (13:20 -0400)]
v4l2bufferpool: Turn cropmeta into a custom option
Turn crop meta into a custom option and make sure it's there is needed.
Nicolas Dufresne [Wed, 9 Apr 2014 16:53:19 +0000 (12:53 -0400)]
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.
Nicolas Dufresne [Sat, 5 Apr 2014 02:46:40 +0000 (22:46 -0400)]
v4l2bufferpool: Port to use GstV4l2Allocator
Nicolas Dufresne [Sat, 5 Apr 2014 02:35:48 +0000 (22:35 -0400)]
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.
Nicolas Dufresne [Wed, 16 Apr 2014 20:35:49 +0000 (16:35 -0400)]
v4l2object: Don't advertise crop meta
Currently we advertise crop meta, but not element handle support this meta.
Nicolas Dufresne [Tue, 8 Apr 2014 22:18:57 +0000 (18:18 -0400)]
v4l2object: Setup pool already send element error
Nicolas Dufresne [Tue, 8 Apr 2014 22:17:31 +0000 (18:17 -0400)]
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.
Nicolas Dufresne [Tue, 8 Apr 2014 21:34:19 +0000 (17:34 -0400)]
v4l2object: Ensure size before configuring the pool
Nicolas Dufresne [Sat, 5 Apr 2014 02:38:05 +0000 (22:38 -0400)]
v4l2object: Set minimum buffers to 2
All the element requires at least two buffers. This is not used for RW mode.
Nicolas Dufresne [Sat, 5 Apr 2014 02:37:14 +0000 (22:37 -0400)]
v4l2object: Remove unused MAX_BUFFERS define
Nicolas Dufresne [Sat, 5 Apr 2014 02:36:37 +0000 (22:36 -0400)]
v4l2object: Don't hardcode min/max use default instead
Nicolas Dufresne [Thu, 10 Apr 2014 21:49:41 +0000 (17:49 -0400)]
v4l2transform: Install PROP_CAPTURE_IO_MODE with right ID
Nicolas Dufresne [Tue, 8 Apr 2014 22:54:50 +0000 (18:54 -0400)]
v4l2transform: decide_allocation returns a boolean
Nicolas Dufresne [Thu, 10 Apr 2014 21:49:29 +0000 (17:49 -0400)]
v4l2videodec: Install PROP_CAPTURE_IO_MODE with right ID
Nicolas Dufresne [Thu, 27 Mar 2014 17:21:25 +0000 (13:21 -0400)]
v4l2transform: Add propose_allocation
This should remove 1 copy between the decoder and the transform.
Nicolas Dufresne [Thu, 27 Mar 2014 17:20:53 +0000 (13:20 -0400)]
v4l2: Move propose allocation to v4l2object
Nicolas Dufresne [Thu, 20 Mar 2014 21:26:05 +0000 (17:26 -0400)]
v4l2transform: Fixup caps query
Nicolas Dufresne [Thu, 20 Mar 2014 19:31:22 +0000 (15:31 -0400)]
v4l2transform: Setup cropping if needed
Nicolas Dufresne [Wed, 19 Mar 2014 21:25:16 +0000 (17:25 -0400)]
v4l2transform: Expose BGRA and ARGB formats
Nicolas Dufresne [Tue, 18 Mar 2014 21:33:38 +0000 (17:33 -0400)]
v4l2transform: Ensure output pool is activated
That pool may be different then the internal pool.
Nicolas Dufresne [Sun, 16 Mar 2014 18:11:16 +0000 (19:11 +0100)]
v4l2transform: Ensure internal buffer pools actication
Nicolas Dufresne [Sun, 16 Mar 2014 10:36:19 +0000 (11:36 +0100)]
v4l2transform: Move subinstance subclass init near other init
Nicolas Dufresne [Sat, 15 Mar 2014 17:56:51 +0000 (18:56 +0100)]
v4l2transform: Stop stream before closing the devices.
Víctor Manuel Jáquez Leal [Sat, 15 Mar 2014 16:53:54 +0000 (16:53 +0000)]
v4l2transform: copy metdata
Nicolas Dufresne [Tue, 4 Mar 2014 23:31:27 +0000 (18:31 -0500)]
Implement GstV4l2Transform
Implement a v4l2 element that wraps HW video converters.
Nicolas Dufresne [Thu, 27 Mar 2014 22:41:07 +0000 (18:41 -0400)]
v4l2: Probe for CREATE_BUFS in order to correctly set pool min/max
In order to correctly set the pool min/max, we need to probe for CREATE_BUFS
ioctl. This can be done as soon as the format has been negotiated using a
count of 0.
Nicolas Dufresne [Tue, 25 Mar 2014 19:21:03 +0000 (15:21 -0400)]
v4l2: Move capture eos handling in _process()
Now that we might be copying out buffer (e.g. downstream don't support video
meta bug we need it) we need to move the EOS handling inside the process
method.
Nicolas Dufresne [Tue, 25 Mar 2014 14:49:39 +0000 (10:49 -0400)]
v4l2object: Fix support for planar format in 1 v4l2 mplane
So far we where only setting saving the first plane stride in the meta. This was
leading to wrong values in GstVideoMeta.
Nicolas Dufresne [Wed, 19 Mar 2014 21:52:08 +0000 (17:52 -0400)]
v4l2videodec: Cleanly fail if set_format is never called
Nicolas Dufresne [Wed, 19 Mar 2014 21:00:56 +0000 (17:00 -0400)]
v4l2: Expose RGB32 formats with and without alpha
As soon a the alpha component can be set, we can expose the RGB32 and BGR32
format as ARGB and BGRA as long we can deterministically set the alpha padding
value.
Nicolas Dufresne [Tue, 18 Mar 2014 19:49:49 +0000 (15:49 -0400)]
v4l2: Correctly check if video meta is needed
Correctly check if video meta is needed. In buffer pool, trust need_video_meta
flag in order to decide if configuration should succeed.
Nicolas Dufresne [Tue, 18 Mar 2014 19:45:18 +0000 (15:45 -0400)]
v4l2object: Fix tiled stride request
Fix stride request for tiled format and improve logging.
Nicolas Dufresne [Tue, 18 Mar 2014 15:53:57 +0000 (11:53 -0400)]
v4l2object: Ensure video and crop meta are enabled if needed
In certain cases we cannot live without video meta and/or crop meta
being enabled in our internal buffer pool. Ensure this is always the case,
regardless of having support for allocation query.
Nicolas Dufresne [Sun, 16 Mar 2014 17:39:32 +0000 (18:39 +0100)]
v4l2videodec: Ensure internal pool are activated
Nicolas Dufresne [Sun, 16 Mar 2014 16:01:10 +0000 (17:01 +0100)]
v4l2videodec: Check that pool where allocated before flushing them
Upon error, the pools might not have been allocated yet, hence we should not
try and flush them (even though we still want to make sure the processing thread
is fully stopped).
Nicolas Dufresne [Sun, 16 Mar 2014 15:55:43 +0000 (16:55 +0100)]
v4l2bufferpool: Enforce activation outside of process
Enforce pool being activate from before calling pool process. This should
help catching basic errors in the usage of buffer pool.
Nicolas Dufresne [Sun, 16 Mar 2014 11:44:14 +0000 (12:44 +0100)]
v4l2object: don't use own pool if downstream don't support video meta
Nicolas Dufresne [Thu, 13 Mar 2014 23:31:32 +0000 (00:31 +0100)]
v4l2bufferpool: Use obj->n_v4l2_planes for correct number of planes
Buffer pool was guessing wrongly the number of planes rather
then reading the value from obj->n_v4l2_planes. This was causing
format YU12 (I420) to fail upon check.
Nicolas Dufresne [Fri, 7 Mar 2014 21:39:29 +0000 (16:39 -0500)]
v4l2object: Fix handling of contiuous vs non-contiguous support
The complex mechanic to try and choose the right thing did not work. Instead,
simply probe the non-contiguous format first and then the contiguous one.
This is in fact very low overhead, as there is a relatively small number of
pixel format supported by each devices.
Nicolas Dufresne [Tue, 15 Apr 2014 19:07:23 +0000 (15:07 -0400)]
v4l2: Add initial support for alignment and cropping
Nicolas Dufresne [Thu, 13 Mar 2014 18:24:51 +0000 (19:24 +0100)]
v4l2object: Rename setup_format() method into acquire_format()
The setup_format() was confusing since it does not set anything, in fact
it reads the setup from the driver and save it.
Nicolas Dufresne [Thu, 13 Mar 2014 17:21:41 +0000 (18:21 +0100)]
v4l2object: Move type declaration to the top
Nicolas Dufresne [Wed, 12 Mar 2014 17:07:38 +0000 (18:07 +0100)]
v4l2videodec: Protect NULL pool while going to READY
When the pipeline fails early, the pool might be unset before the processing
thread has run once. Add protection against that.
Nicolas Dufresne [Wed, 12 Mar 2014 17:01:09 +0000 (18:01 +0100)]
v4l2object: Fail cleanly if pixel format is unkown or not raw video
Certain decoder has been found to not choose a format automatically. Running
v4l2videodec on these would assert. This patch will make it fail cleanly
instead.
Nicolas Dufresne [Wed, 12 Mar 2014 16:56:18 +0000 (17:56 +0100)]
v4l2videodec: Clear the input state pointer after unref
If caps are set again, we have a risk od returning from set_format with a
input_state pointing to dead memory. Clearing the pointer after unref fix
this issue.
Nicolas Dufresne [Wed, 12 Mar 2014 16:11:16 +0000 (17:11 +0100)]
v4l2videodec: handle stop being called without flush
Uppon certain downstream error, stop() is called without a flush(). This mean that
the streaming thread may still be running even though unlock has been called.
Now calling flush to reset the decoder state if we are processing.
Nicolas Dufresne [Thu, 6 Mar 2014 23:13:14 +0000 (18:13 -0500)]
v4l2videodec: Default to template in caps query
Nicolas Dufresne [Tue, 11 Mar 2014 18:23:32 +0000 (14:23 -0400)]
v4l2videodec: Ensure processing thread has stopped when draining
Nicolas Dufresne [Tue, 11 Mar 2014 18:01:27 +0000 (14:01 -0400)]
v4l2videodec: Don't drain if processing thread is inactive
Sebastian Dröge [Thu, 8 May 2014 07:49:24 +0000 (09:49 +0200)]
souphttpsrc: Clean up all pending operations from libsoup before unreffing our context
When we cancel connection attempts and similar things, there are still
some operations pending on our main context from the GCancellables. We
should let them all run before unreffing our context, otherwise we leak
file descriptors.
Unfortunately this requires libsoup 2.47.0 or newer as earlier versions
steal our main context from us and we can't use it for cleanup later
without assertions and funny crashes.
Based on a patch by Dmitry Shatrov <shatrov@gmail.com>.
https://bugzilla.gnome.org/show_bug.cgi?id=663944
Tim-Philipp Müller [Wed, 7 May 2014 14:49:39 +0000 (15:49 +0100)]
tests: fix compilation of souphttpsrc test for libsoup 2.40 for real
https://bugzilla.gnome.org/show_bug.cgi?id=727329
Tim-Philipp Müller [Wed, 7 May 2014 12:23:50 +0000 (13:23 +0100)]
tests: fix compilation of souphttpsrc test for libsoup 2.40
SOUP_CHECK_VERSION was only added in 2.41, but we only
depend on 2.40.
https://bugzilla.gnome.org/show_bug.cgi?id=727329
Tim-Philipp Müller [Tue, 6 May 2014 23:58:15 +0000 (00:58 +0100)]
flacparse: skip PICTURE headers without any image data
Fixes warning if the image length is 0.
Руслан Ижбулатов [Tue, 6 May 2014 09:22:18 +0000 (09:22 +0000)]
configure: use X11 detection macro from common
https://bugzilla.gnome.org/show_bug.cgi?id=729621
Guillaume Desmottes [Wed, 30 Apr 2014 09:13:12 +0000 (11:13 +0200)]
rtp/README: update pipelines to work with 1.0
- Use gst-libav encoders/decoders instead of gst-ffmpeg
- gstrtpjitterbuffer -> rtpjitterbuffer
- gst-launch-0.10 -> gst-launch-1.0
- Add 'videoconvert' element
- xvimagesink -> autovideosink
https://bugzilla.gnome.org/show_bug.cgi?id=729247
Vincent Penquerc'h [Mon, 5 May 2014 13:41:05 +0000 (14:41 +0100)]
matroska: rejig test to avoid undefined shift behavior
Coverity 1195121, 1195120
Vincent Penquerc'h [Mon, 5 May 2014 13:33:38 +0000 (14:33 +0100)]
vp9enc: do not dereference NULL pointer
Coverity 1197703
Vincent Penquerc'h [Mon, 5 May 2014 13:32:06 +0000 (14:32 +0100)]
matroskamux: ensure we don't dereference a NULL pointer
while working out the codec ID.
Coverity 1195148
Tim-Philipp Müller [Mon, 5 May 2014 11:07:25 +0000 (12:07 +0100)]
v4l2: minor fix for closing the fd
The fd returned by open() could theoretically be 0 as well.
Coverity CID 1211823.
Olivier Crête [Mon, 5 May 2014 00:23:29 +0000 (20:23 -0400)]
rtpaux/rtprtx: Make tests non-racy
Fix the raciness by iterating on a condition instead of using the gmainloop.
Don't use the EOS as the target, otherwise the retransmission of the last
packets are lost. Also count the retranmissions requests that are dropped.
Check the condition before blocking on the GCond
https://bugzilla.gnome.org/show_bug.cgi?id=728501
Olivier Crête [Mon, 5 May 2014 02:32:54 +0000 (22:32 -0400)]
rtprtxreceive: Wait until timeout to clear association requests
If two streams request a retranmission for the same SSRC, ignore the second
one if the first oen is less than one second old, otherwise time out the first
one and ignore the second.
Olivier Crête [Sun, 4 May 2014 22:59:33 +0000 (18:59 -0400)]
rtpmux: Always let upstream chose the ssrc if it wishes
Mark Nauwelaerts [Sun, 4 May 2014 11:37:46 +0000 (13:37 +0200)]
rtpjitterbuffer: avoid stall by corrupted seqnum accounting
Olivier Crête [Sun, 4 May 2014 05:14:33 +0000 (01:14 -0400)]
pulsedevicemonitor: Index are per facility, not global
So need to keep the type of device in the device object
Olivier Crête [Sun, 4 May 2014 05:13:24 +0000 (01:13 -0400)]
pulsedevicemonitor: pa_subscription_event_t are enums, not flags
Coverity 1195132
Nicolas Dufresne [Sat, 3 May 2014 02:42:54 +0000 (22:42 -0400)]
v4l2devicemonitor: Port to use GstV4l2Iterator
https://bugzilla.gnome.org/show_bug.cgi?id=727925
Nicolas Dufresne [Sat, 3 May 2014 01:38:30 +0000 (21:38 -0400)]
v4l2: Use single pass iterator for M2M probe
Instead of having each M2M class do their own probing, use the
GstV4l2Iterator and probe all devices in a single pass.
https://bugzilla.gnome.org/show_bug.cgi?id=727925
Nicolas Dufresne [Fri, 2 May 2014 20:55:05 +0000 (16:55 -0400)]
v4l2: Add a common device enumerator
This will allow removing code duplication (hence bugs duplication).
https://bugzilla.gnome.org/show_bug.cgi?id=727925
Nicolas Dufresne [Sun, 16 Mar 2014 10:38:07 +0000 (11:38 +0100)]
v4l2videodec: Simplify sub-instanciation mechanism
Simplify sub-instanciation by defining an absract type and using subtype
class and instance init callback. This also fixes a bug where the template
pads get initialized too late.
https://bugzilla.gnome.org/show_bug.cgi?id=727925
Nicolas Dufresne [Fri, 2 May 2014 22:18:26 +0000 (18:18 -0400)]
v4l2: Cleanup plugin registration
There is no plan to introduce special sources for jpeg, te v4l2src works fine
for this.
https://bugzilla.gnome.org/show_bug.cgi?id=727925