Michael Olbrich [Tue, 28 May 2013 17:14:15 +0000 (19:14 +0200)]
v4l2: rework sink buffer refcounting
This is a followup patch for #700781, which is not quite correct.
The buffer handling is quite complicated here.
The original code intended to the the following:
- gst_v4l2_buffer_pool_process() calls QBUF and adds the buffer to the
local list.
- The sink calls gst_buffer_unref() which returns the buffer to the pool
but not the 'free list'.
- Some time later DQBUF returns the buffer and
gst_v4l2_buffer_pool_release_buffer() puts in on the 'free list'.
If the buffer must be copied then (parent_class)->acquire_buffer() is
called directly to keep the buffer in the pool.
This has two problems:
1. If gst_v4l2_buffer_pool_release_buffer() is called before the buffer is
returned to the pool, then the buffer is put on the 'free list' twice.
This can happen if a reference to the buffer is kept outside the sink,
of if DQBUF returns the buffer, that was just queued with QBUF.
2. If buffers are copied, then all buffers are in the pool at all times. As
a result gst_v4l2_buffer_pool_stop() and gst_v4l2_buffer_pool_dqbuf()
can access pool->buffers at the same time, which can lead to memory
corruption.
The patch for #700781 fixes those problems, but with the side effect that
there are always buffers outside the pool (because they are queued) and
the pool is never stopped.
This patch fixes this by releasing the reference to the buffer after
handling it (to avoid problem 2.) so it can be returned to the pool.
gst_v4l2_buffer_pool_release_buffer() is only called if the buffer is
already in the pool (to avoid problem 1.).
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701375
Thiago Santos [Sun, 2 Jun 2013 18:24:38 +0000 (15:24 -0300)]
qtdemux: make sure taglist is writable before adding tags
Avoids assertions
Thiago Santos [Thu, 30 May 2013 22:24:13 +0000 (19:24 -0300)]
qtdemux: effectively skip tracks that weren't listed on the 1st moov
Without this, stream is NULL and the code will try to access it, leading
to segfaults.
Thiago Santos [Thu, 30 May 2013 22:23:50 +0000 (19:23 -0300)]
qtdemux: skip redundant check
!got_moov is already checked the line above
Stefan Sauer [Sun, 2 Jun 2013 11:03:40 +0000 (13:03 +0200)]
tests: cleanup level tests
Split out a few more tests to avoid checking the same stuff over and over again.
Stefan Sauer [Sat, 1 Jun 2013 19:33:46 +0000 (21:33 +0200)]
level: remove unused variables in instance struct
Stefan Sauer [Fri, 31 May 2013 16:13:02 +0000 (18:13 +0200)]
level: add a test for continous timestamps
A test that checks that msg[n].ts + msg[n].dur == msg[n+1].ts.
Anton Belka [Fri, 12 Apr 2013 13:02:44 +0000 (16:02 +0300)]
wavenc: add tags & toc support
Write tags as LIST INFO chunk. Format the toc as cue + LIST adtl chunk. Remove
old #ifdef'ed code.
Wim Taymans [Fri, 31 May 2013 13:12:08 +0000 (15:12 +0200)]
Revert "rtph264pay: Restructuring to allow for adding optional caps"
This reverts commit
61666898cfe89a1b21d3e6850ab44f5b1633ed79.
This commit changes what the set_sps_pps() function does, not it doesn't
set caps anymore (and should have been renamed). The main problem is that
not all call sites are updated and thus leak the string.
Wim Taymans [Fri, 31 May 2013 13:11:12 +0000 (15:11 +0200)]
Revert "rtph264pay/depay: Add frame dimensions a payloaded caps"
This reverts commit
3dca756a5dba55266256f239e3e12a3d058e185a.
The H264 RTP spec has no attributes for width and height.
Wim Taymans [Fri, 31 May 2013 13:09:51 +0000 (15:09 +0200)]
Revert "rtph264pay/depay: Add optional framerate caps for use in SDP"
This reverts commit
d8825e2a5c0bfb883ff88e2c9da499c800ebca0a.
There is no framerate attribute in the h264 RTP spec.
Wim Taymans [Fri, 31 May 2013 13:08:16 +0000 (15:08 +0200)]
Revert "rtpjpegpay/depay: Replace framesize caps with width/height"
This reverts commit
0075d111b475ca27895ee9476154260b6902940b.
Extra application/x-rtp are SDP fields, which are strings.
Wim Taymans [Fri, 31 May 2013 13:05:51 +0000 (15:05 +0200)]
Revert "rtpjpegpay/depay: Replace framerate caps field with fraction"
This reverts commit
9fd25a810b859e0ec205176578735100d83de4af.
We deal with sdp attributes in application/sdp, which are always strings.
Wim Taymans [Fri, 31 May 2013 10:33:21 +0000 (12:33 +0200)]
rtspsrc: add extra TLS url protocols
We also support TLS protocols now.
Sebastian Dröge [Thu, 30 May 2013 12:48:42 +0000 (14:48 +0200)]
videomixer: Add FIXME comment about the DURATION query from adder
Currently the code just takes with maximum upstream duration, which
is wrong. It should be the maximum upstream duration in running time.
Mathieu Duponchelle [Thu, 30 May 2013 19:20:59 +0000 (21:20 +0200)]
videomixer: Set a reference to mix->current_caps as the QUERY_CAPS result.
Stefan Sauer [Thu, 30 May 2013 15:37:13 +0000 (17:37 +0200)]
level: misc cleanups
Fix some oudated comments. Sort out some confusion of interval_frames and num_frames.
Sebastian Dröge [Wed, 29 May 2013 18:35:41 +0000 (20:35 +0200)]
v4l2: Only conditionally use V4L2_CTRL_TYPE_INTEGER_MENU, it's not available in older versions
Michael Olbrich [Mon, 20 May 2013 14:45:37 +0000 (16:45 +0200)]
v4l2: add a property for arbitrary v4l2 controls
This makes it possible to set any controls that can be set with
VIDIOC_S_CTRL.
The controls are set when the property is set (if the device is open)
and when the device is opened.
https://bugzilla.gnome.org/show_bug.cgi?id=698837
Stefan Sauer [Tue, 28 May 2013 16:31:07 +0000 (18:31 +0200)]
level: fix discontinuities in timestamps
Sebastian Dröge [Tue, 28 May 2013 13:46:43 +0000 (15:46 +0200)]
gdkpixbufdec: Keep serialized events in order, and don't send SEGMENT before CAPS
Wim Taymans [Tue, 28 May 2013 13:45:49 +0000 (15:45 +0200)]
rtspsrc: create and push stream-start in TCP mode
Wim Taymans [Tue, 28 May 2013 13:10:07 +0000 (15:10 +0200)]
rtspsrc: remove some obsolete code
It is not needed to do a state change from the _play() function on
ourselves. The state change function already did that and we don't want to
interfere with that (or use hacks to avoid interference).
Wim Taymans [Tue, 28 May 2013 10:24:37 +0000 (12:24 +0200)]
rtspsrc: set RTCP caps on the RTCP pads
Wim Taymans [Tue, 28 May 2013 10:23:37 +0000 (12:23 +0200)]
rtpsession: send stream-start and segment events
Also send stream-start and segment event on the RTCP pad.
We don't need to send anything on the sync_src pad because we
already forwarded all incomming events.
Wim Taymans [Thu, 25 Apr 2013 13:25:06 +0000 (15:25 +0200)]
rtspsrc: add signal to handle server requests
Add a signal to be notified of a server request. The signal handler can then
construct the response message for the server.
See https://bugzilla.gnome.org/show_bug.cgi?id=632207
Nicolas Dufresne [Tue, 28 May 2013 02:43:25 +0000 (22:43 -0400)]
videomixer: Maintain z-order when new pad are added
https://bugzilla.gnome.org/show_bug.cgi?id=701109
Tom Greenwood [Wed, 6 Mar 2013 13:17:54 +0000 (13:17 +0000)]
vp8enc: Add property to manually specify the timebase of the encoder
https://bugzilla.gnome.org/show_bug.cgi?id=695709
Thibault Saunier [Sat, 25 May 2013 16:17:40 +0000 (12:17 -0400)]
videomixer: Always handle flush_stop_pending atomically
It is not protected with the COLLECT_PADS_STREAM_LOCK anymore
Thibault Saunier [Thu, 23 May 2013 22:14:17 +0000 (18:14 -0400)]
tests: videomixer: Add a testsuite for videomixer
This is mostly copy pasted from -base/tests/check/elements/adder.c
Thibault Saunier [Sat, 25 May 2013 14:57:02 +0000 (10:57 -0400)]
videomixer: Do not take COLLECT_PADS_STREAM_LOCK when unnecessary
Collectpad takes the lock itself when receiving serialized events
and we should not take it for not serialized ones
Sebastian Dröge [Fri, 24 May 2013 17:34:05 +0000 (19:34 +0200)]
flxdec: Properly skip non-frame chunks
Sebastian Dröge [Fri, 24 May 2013 17:31:14 +0000 (19:31 +0200)]
flxdec: Flush data from adapter after reading it
Otherwise we're going in an infinite loop, reading the same data
over and over again.
Andoni Morales Alastruey [Wed, 24 Apr 2013 15:39:54 +0000 (15:39 +0000)]
goom2k1: fix more duplicated symbols
Sebastian Rasmussen [Wed, 22 May 2013 00:40:52 +0000 (02:40 +0200)]
rtpjpegpay/depay: Replace framerate caps field with fraction
The previous implementation had the formatting of SDP attributes happen
in each RTP payloader, now instead the constituent values are propagated
as caps fields. This allows for applications to do SDP offer/answer
based on caps negotiation.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748
Sebastian Rasmussen [Tue, 21 May 2013 23:58:57 +0000 (01:58 +0200)]
rtpjpegpay/depay: Replace framesize caps with width/height
The previous implementation had the formatting of SDP attributes happen
in each RTP payloader, now instead the constituent values are propagated
as caps fields. This allows for applications to do SDP offer/answer
based on caps negotiation.
Keep parsing a-framerate, x-framerate and x-dimensions in rtpjpegdepay
to be backwards compatible with previous payloaders.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748
Sebastian Rasmussen [Wed, 22 May 2013 01:18:07 +0000 (03:18 +0200)]
rtph264pay/depay: Add optional framerate caps for use in SDP
This allows for applications to format SDP attributes and still do SDP
offer/answer based on caps negotiation.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749
Sebastian Rasmussen [Wed, 22 May 2013 01:09:44 +0000 (03:09 +0200)]
rtph264pay/depay: Add frame dimensions a payloaded caps
This allows for applications to format SDP attributes and still do SDP
offer/answer based on caps negotiation.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749
Sebastian Rasmussen [Mon, 20 May 2013 20:14:44 +0000 (22:14 +0200)]
rtph264pay: Restructuring to allow for adding optional caps
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749
Sebastian Dröge [Thu, 23 May 2013 16:42:09 +0000 (18:42 +0200)]
(dyn|multi)udpsink: Add properties to specify the bind address and port
By default we use the any addresses and a random port for binding the socket.
Sebastian Dröge [Thu, 23 May 2013 16:05:07 +0000 (18:05 +0200)]
(dyn|multi)udpsink: Bind socket before using it
https://bugzilla.gnome.org/show_bug.cgi?id=700878
Sebastian Dröge [Thu, 23 May 2013 15:25:29 +0000 (17:25 +0200)]
(multi)udpsink: Add missing getters for socket-v6 and used-socket-v6 properties
Nicolas Dufresne [Thu, 23 May 2013 01:01:48 +0000 (21:01 -0400)]
videomixer: Don't hold stream-lock while pushing non-serialized events
https://bugzilla.gnome.org/show_bug.cgi?id=700868
Nicolas Dufresne [Thu, 23 May 2013 01:00:45 +0000 (21:00 -0400)]
videomixer: Don't hold object lock while sending events
https://bugzilla.gnome.org/show_bug.cgi?id=700868
Sebastian Dröge [Wed, 22 May 2013 15:32:33 +0000 (17:32 +0200)]
deinterlace: The return value of gst_pad_set_caps() is not relevant anymore
Caps can fail to be set because the pad is not linked yet for example.
David Schleef [Wed, 15 May 2013 23:39:36 +0000 (16:39 -0700)]
qtdemux: Add error if file has playready drm
Thibault Saunier [Sat, 18 May 2013 19:06:49 +0000 (15:06 -0400)]
videomixer: Send a reconfigure event upstream if sinkpad caps are not usable
https://bugzilla.gnome.org/show_bug.cgi?id=684237
Michael Olbrich [Tue, 21 May 2013 10:02:51 +0000 (12:02 +0200)]
v4l2: keep a reference to all queued buffers
Without this, a queued buffer may be required, filled and queued before it
is dequeued.
Calling gst_buffer_pool_acquire_buffer() ensures that the buffer is set up
correctly and gst_buffer_unref() calls buffer_release().
https://bugzilla.gnome.org/show_bug.cgi?id=700781
Alexander Schrab [Tue, 21 May 2013 11:33:59 +0000 (13:33 +0200)]
mulawdec: Handle NULL buffers in handle_frame
https://bugzilla.gnome.org/show_bug.cgi?id=698894
Sebastian Rasmussen [Mon, 20 May 2013 19:44:13 +0000 (21:44 +0200)]
rtpjpegpay/depay: Add framesize caps for use in SDP
The format of the value adheres to RFC6064 and it is meant to be parsed
and included in the SDP sent by gst-rtsp-server to its clients.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748
Sebastian Rasmussen [Mon, 20 May 2013 19:34:13 +0000 (21:34 +0200)]
rtpjpegpay: Add optional framerate caps for use in SDP
The format of the value adheres to RFC4566 and it is meant to be parsed
and included in the SDP sent by gst-rtsp-server to its clients.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748
Mathieu Duponchelle [Mon, 20 May 2013 17:59:13 +0000 (19:59 +0200)]
videomixer: When all sinkpads are eos, update output segment stop and forward it
https://bugzilla.gnome.org/show_bug.cgi?id=699793
Mathieu Duponchelle [Mon, 20 May 2013 17:51:07 +0000 (19:51 +0200)]
videomixer: Don't reset the output segment on flush stop
Only init it when getting from READY to PAUSED, and change it on seek events.
https://bugzilla.gnome.org/show_bug.cgi?id=699793
Michael Olbrich [Fri, 17 May 2013 08:16:48 +0000 (10:16 +0200)]
v4l2: Don't stop streaming when set_caps is called with unchanged caps
This can happen if other parts of the pipeline are reconfigured.
Stop streaming even for a short amount of time can be quite visible, so it
should be avoided if possible.
https://bugzilla.gnome.org/show_bug.cgi?id=700503
Thibault Saunier [Sat, 18 May 2013 19:39:36 +0000 (15:39 -0400)]
tests: Re-enable videomixer test
https://bugzilla.gnome.org/show_bug.cgi?id=684237
Thibault Saunier [Sat, 18 May 2013 18:36:39 +0000 (14:36 -0400)]
videomixer: Send caps event from the streaming thread
This way we avoid races in caps negotiation and we make sure
that the caps are sent after stream-start.
https://bugzilla.gnome.org/show_bug.cgi?id=684237
Thibault Saunier [Sun, 5 May 2013 19:25:20 +0000 (20:25 +0100)]
videomixer: Do not send flush_stop when receiving a seek
There is no reason to send a flush-stop when receiving a seek event.
In the case of a flushing seek, we could eventually want to, but in
the code path were we check if the seek is "flushing", we have the
following comment that makes sense:
"we can't send FLUSH_STOP here since upstream could start pushing data
after we unlock mix->collect.
We set flush_stop_pending to TRUE instead and send FLUSH_STOP after
forwarding the seek upstream or from gst_videomixer_collected,
whichever happens first."
https://bugzilla.gnome.org/show_bug.cgi?id=684237
Thibault Saunier [Sun, 5 May 2013 19:24:49 +0000 (20:24 +0100)]
videomixer2: Protect flush_stop_pending with the collectpad stream lock
And make sure to expect a flush-stop after a flush-start
https://bugzilla.gnome.org/show_bug.cgi?id=684237
Michael Olbrich [Fri, 17 May 2013 10:37:59 +0000 (12:37 +0200)]
rtpmp4apay: clear config buffer before using it
This is necessary because parts of the memory are only modified with "|="
https://bugzilla.gnome.org/show_bug.cgi?id=700514
Thiago Santos [Tue, 14 May 2013 20:30:07 +0000 (17:30 -0300)]
qtdemux: Do not expect EOS after a segment event if upstream is mss
In case qtdemux is handling a mss stream, do not mark the stream to wait
for EOS after a segment. Even if it seems to be the last one according to
the current streams information.
MSS handling is different here because there is another demuxer driving
the pipeline
Thiago Santos [Tue, 14 May 2013 19:32:51 +0000 (16:32 -0300)]
qtdemux: only set channels and rate if qtdemux knows it
Setting both of those to 0 is pointless and means that qtdemux
doesn't know the real value. Avoid setting it in this case.
Arnaud Vrac [Tue, 14 May 2013 13:23:08 +0000 (15:23 +0200)]
qtdemux: set alac caps using info from codec buffer
The samplerate field in the STSD atom is not right for some ALAC files
(usually when audio is 96kHz/24bits), so the audio caps must be
extracted from the codec data.
https://bugzilla.gnome.org/show_bug.cgi?id=700382
Arnaud Vrac [Wed, 15 May 2013 09:13:12 +0000 (11:13 +0200)]
avidemux: do not push discont buffers if they aren't discont
https://bugzilla.gnome.org/show_bug.cgi?id=682110
Sebastian Dröge [Wed, 15 May 2013 08:51:38 +0000 (10:51 +0200)]
Automatic update of common submodule
From 5edcd85 to 098c0d7
Joshua M. Doe [Tue, 14 May 2013 14:28:10 +0000 (10:28 -0400)]
videocrop: Add support for GRAY16_LE/GRAY16_BE
https://bugzilla.gnome.org/show_bug.cgi?id=700331
Sebastian Dröge [Tue, 14 May 2013 15:29:58 +0000 (17:29 +0200)]
rgvolume: Send all events through the proxypads instead of just sending to the target
Otherwise the sticky events are missing on the proxypads.
Sebastian Dröge [Tue, 14 May 2013 15:29:18 +0000 (17:29 +0200)]
rgvolume: Fix event handling in the unit test
Sebastian Dröge [Tue, 14 May 2013 14:34:54 +0000 (16:34 +0200)]
rglimiter: Fix event handling in unit tests
Sebastian Dröge [Tue, 14 May 2013 14:31:57 +0000 (16:31 +0200)]
rganalysis: Fix event handling in unit test
Sebastian Dröge [Tue, 14 May 2013 14:08:54 +0000 (16:08 +0200)]
qtmux: Fix event handling in unit test
Sebastian Dröge [Tue, 14 May 2013 14:00:58 +0000 (16:00 +0200)]
multifile: Fix event handling in unit test
Sebastian Dröge [Tue, 14 May 2013 11:58:01 +0000 (13:58 +0200)]
mulaw: Fix event handling in unit test
Sebastian Dröge [Tue, 14 May 2013 11:52:18 +0000 (13:52 +0200)]
matroskaparse: Make sure to send a segment event before dataflow
Michael Olbrich [Tue, 14 May 2013 08:52:19 +0000 (10:52 +0200)]
v4l2: only add interlace-mode to the caps for raw formats
https://bugzilla.gnome.org/show_bug.cgi?id=700280
Michael Olbrich [Tue, 14 May 2013 10:03:03 +0000 (12:03 +0200)]
v4l2: copy and set the actual size of the content
https://bugzilla.gnome.org/show_bug.cgi?id=700282
Sebastian Dröge [Tue, 14 May 2013 08:25:56 +0000 (10:25 +0200)]
interleave: Fix event handling in unit test
Sebastian Dröge [Tue, 14 May 2013 07:45:12 +0000 (09:45 +0200)]
deinterlace: Improve handling of min/max buffer numbers of the buffer pool
Matej Knopp [Tue, 14 May 2013 01:42:59 +0000 (03:42 +0200)]
deinterlace: set caps for buffer pool config
Olivier Crête [Mon, 13 May 2013 17:30:38 +0000 (13:30 -0400)]
multifilesink: Let the base class do get_times
This will make sync=TRUE work, the default is still sync=FALSE
Nicolas Dufresne [Sun, 12 May 2013 03:08:23 +0000 (23:08 -0400)]
interleave: Send stream-start before caps event
Nicolas Dufresne [Sun, 12 May 2013 03:24:36 +0000 (23:24 -0400)]
rtpmux: Send stream-start before caps
Nicolas Dufresne [Sun, 12 May 2013 03:28:12 +0000 (23:28 -0400)]
rtpjitterbuffer-test: Send stream-start before caps followed by segment
Nicolas Dufresne [Sun, 12 May 2013 03:34:36 +0000 (23:34 -0400)]
rtpbin-test: Send missing stream-start and segment events
Sebastian Dröge [Mon, 13 May 2013 13:36:19 +0000 (15:36 +0200)]
tests: Fix some more event handling in tests
Sebastian Dröge [Mon, 13 May 2013 13:19:36 +0000 (15:19 +0200)]
icydemux: Fix event handling in unit test
Sebastian Dröge [Mon, 13 May 2013 13:19:25 +0000 (15:19 +0200)]
icydemux: Fix sticky event handling
Sebastian Dröge [Mon, 13 May 2013 13:06:03 +0000 (15:06 +0200)]
flvmux: Push sticky events in the right order
Sebastian Dröge [Mon, 13 May 2013 12:55:14 +0000 (14:55 +0200)]
deinterleave: Fix event handling in test
Sebastian Dröge [Mon, 13 May 2013 12:07:11 +0000 (14:07 +0200)]
deinterleave: Fix sticky event handling
Sebastian Dröge [Mon, 13 May 2013 11:55:44 +0000 (13:55 +0200)]
deinterleave: Code style fixes
Sebastian Dröge [Mon, 13 May 2013 08:43:32 +0000 (10:43 +0200)]
rtpgstpay: First let baseclass handle events, then put them into the stream
Fixes handling of sticky events.
https://bugzilla.gnome.org/show_bug.cgi?id=700213
Nicolas Dufresne [Fri, 10 May 2013 02:05:24 +0000 (22:05 -0400)]
shapewipe-test: Send inital events
https://bugzilla.gnome.org/show_bug.cgi?id=700033
Nicolas Dufresne [Thu, 9 May 2013 22:32:23 +0000 (18:32 -0400)]
spectrum-test: Send inital events
https://bugzilla.gnome.org/show_bug.cgi?id=700033
Nicolas Dufresne [Thu, 9 May 2013 22:25:17 +0000 (18:25 -0400)]
videofilter-test: Send inital events
https://bugzilla.gnome.org/show_bug.cgi?id=700033
Nicolas Dufresne [Thu, 9 May 2013 22:23:30 +0000 (18:23 -0400)]
wavpackparse-test: Send inital events
https://bugzilla.gnome.org/show_bug.cgi?id=700033
Nicolas Dufresne [Thu, 9 May 2013 22:21:54 +0000 (18:21 -0400)]
y4menc-test: Send inital events
https://bugzilla.gnome.org/show_bug.cgi?id=700033
Tim-Philipp Müller [Fri, 10 May 2013 13:00:33 +0000 (14:00 +0100)]
multipartdemux: fix example pipeline
Need jpegparse.
Sebastian Dröge [Fri, 10 May 2013 11:34:16 +0000 (13:34 +0200)]
tests: Fix some more unit tests
Sebastian Dröge [Fri, 10 May 2013 11:10:29 +0000 (13:10 +0200)]
tests: Fix parser tests
Nicolas Dufresne [Fri, 10 May 2013 02:20:28 +0000 (22:20 -0400)]
shapewipe: Can't map twice the same buffer for writing
I took the opportunity to simplify that code a bit. We now use
gst_buffer_make_writable() to make the buffer writable and map twice the
same buffer, with first map being read/write, and second read only. This
get rid of the critical:
GStreamer-CRITICAL **: gst_structure_set_name: assertion `IS_MUTABLE
https://bugzilla.gnome.org/show_bug.cgi?id=700044