platform/upstream/gst-plugins-good.git
9 years agosouphttpclientsink: Fix lifetime of stream headers and queued buffers
Nirbheek Chauhan [Thu, 2 Oct 2014 08:56:08 +0000 (14:26 +0530)]
souphttpclientsink: Fix lifetime of stream headers and queued buffers

Stream headers are updated whenever ::set_caps is called, so we can't assume
they'll be valid before the message body is written out. We *can* assume that
for queued buffers, but SOUP_MEMORY_STATIC is still wrong for those.

Also, add some debug logging for stream header interactions.

https://bugzilla.gnome.org/show_bug.cgi?id=737771

9 years agoaacparse: fix memory leak when prepending ADTS headers
Matej Knopp [Thu, 2 Oct 2014 01:26:22 +0000 (03:26 +0200)]
aacparse: fix memory leak when prepending ADTS headers

https://bugzilla.gnome.org/show_bug.cgi?id=737761

9 years agointerleave: interleave samples following the Default Channel Ordering
Antonio Ospite [Tue, 23 Sep 2014 08:48:09 +0000 (10:48 +0200)]
interleave: interleave samples following the Default Channel Ordering

In order to have a full mapping between channel positions in the audio
stream and loudspeaker positions, the channel-mask alone is not enough:
the channels must be interleaved following some Default Channel Ordering
as mentioned in the WAVEFORMATEXTENSIBLE[1] specification.

As a Default Channel Ordering use the one implied by
GstAudioChannelPosition which follows the ordering defined in SMPTE
2036-2-2008[2].

NOTE that the relative order in the Top Layer is not exactly the same as
the one from the WAVEFORMATEXTENSIBLE[1] specification; let's hope users
using so may channels are already aware of such discrepancies.

[1] http://msdn.microsoft.com/en-us/library/windows/hardware/dn653308%28v=vs.85%29.aspx
[2] http://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BS.2159-2-2011-PDF-E.pdf

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=737127

9 years agowavenc: Send CAPS event after the pad was activated
Sebastian Dröge [Thu, 2 Oct 2014 07:10:11 +0000 (10:10 +0300)]
wavenc: Send CAPS event after the pad was activated

Otherwise the CAPS event will be dropped and we never configure any caps at
all, leading to weird behaviour in many situations. Especially header
rewriting is not going to work if a capsfilter is after wavenc.

https://bugzilla.gnome.org/show_bug.cgi?id=737735

9 years agosouphttpclientsink: Add some more useful debug logging
Nirbheek Chauhan [Wed, 1 Oct 2014 17:42:30 +0000 (23:12 +0530)]
souphttpclientsink: Add some more useful debug logging

9 years agosouphttpclientsink: Free queued buffers in ::reset
Nirbheek Chauhan [Wed, 1 Oct 2014 17:35:03 +0000 (23:05 +0530)]
souphttpclientsink: Free queued buffers in ::reset

::render sets a new callback for writing out new buffers only if there aren't
already buffers queued for writing with a previously-scheduled callback.
However, if the previously-scheduled callback is interrupted by a state change
(either manually or due to an error) and there are still buffers in the queue,
restarting the pipeline will result in buffers being queued forever, and no
callbacks will ever be scheduled, and no buffers will be written out.

https://bugzilla.gnome.org/show_bug.cgi?id=737739

9 years agovideomixer: Actually use the correct GstVideoInfo for conversion
Sebastian Dröge [Wed, 1 Oct 2014 14:29:29 +0000 (17:29 +0300)]
videomixer: Actually use the correct GstVideoInfo for conversion

9 years agovideomixer: Revert the last commit and handle resolutions differences properly
Sebastian Dröge [Wed, 1 Oct 2014 14:24:59 +0000 (17:24 +0300)]
videomixer: Revert the last commit and handle resolutions differences properly

This is about converting the format, not about converting any widths and
heights. Subclasses are expected to handler different resolutions themselves,
like the videomixers already do properly.

9 years agovideomixer: GstVideoConverter currently can't rescale and will assert
Sebastian Dröge [Wed, 1 Oct 2014 14:12:59 +0000 (17:12 +0300)]
videomixer: GstVideoConverter currently can't rescale and will assert

Leads to ugly assertions instead of properly erroring out:
CRITICAL **: gst_video_converter_new: assertion 'in_info->width == out_info->width' failed

9 years agovp8enc/vp9enc: Protect the encoder with a mutex in all situations
Sebastian Dröge [Tue, 30 Sep 2014 08:35:12 +0000 (11:35 +0300)]
vp8enc/vp9enc: Protect the encoder with a mutex in all situations

9 years agovp9enc: Allow caps renegotiation
Sebastian Dröge [Tue, 30 Sep 2014 08:31:43 +0000 (11:31 +0300)]
vp9enc: Allow caps renegotiation

https://bugzilla.gnome.org/show_bug.cgi?id=726329

9 years agovp8enc: finish() and drain() should return a GstFlowReturn
Sebastian Dröge [Tue, 30 Sep 2014 08:28:39 +0000 (11:28 +0300)]
vp8enc: finish() and drain() should return a GstFlowReturn

9 years agovp8enc: Allow caps renegotiation
Jose Antonio Santos Cadenas [Fri, 14 Mar 2014 11:59:02 +0000 (12:59 +0100)]
vp8enc: Allow caps renegotiation

https://bugzilla.gnome.org/show_bug.cgi?id=726329

9 years agov4l2object: set colorspace for output devices
Aurélien Zanelli [Mon, 29 Sep 2014 09:49:45 +0000 (11:49 +0200)]
v4l2object: set colorspace for output devices

When the v4l2 device is an output device, the application shall set the
colorspace. So map GStreamer colorimetry info to V4L2 colorspace and set
on set_format. In case we have no colorimetry information, we try to
guess it according to pixel format and video size.

https://bugzilla.gnome.org/show_bug.cgi?id=737579

9 years agopulse: Add some documentation about threading and synchronisation
Arun Raghavan [Mon, 29 Sep 2014 17:18:16 +0000 (22:48 +0530)]
pulse: Add some documentation about threading and synchronisation

This gives a quick introduction to how the pulsesink/pulsesrc code
interacts with the pa_threaded_mainloop that we start up to communicate
with the server.

9 years agopulsesink: Make emitting stream status messages synchronous
Arun Raghavan [Mon, 29 Sep 2014 14:48:08 +0000 (20:18 +0530)]
pulsesink: Make emitting stream status messages synchronous

The stream status messages are emitted in the PA mainloop thread, which
means the mainloop lock is taken, followed by the Gst object lock (by
gst_element_post_message()). In all other locations, the order of
locking is reversed (this is unavoidable in a bunch of cases where the
object lock is taken by GstBaseSink or GstAudioBaseSink, and then we get
control to take the mainloop lock).

The only way to guarantee that the defer callback for stream status
messages doesn't deadlock is to either stop posting those messages, or
make sure that the message emission is completed before we proceed to
any point that might take the object lock before the mainloop lock
(which is what we do after this patch).

https://bugzilla.gnome.org/show_bug.cgi?id=736071

9 years agowavenc: print channel masks in hexadecimal
Antonio Ospite [Tue, 16 Sep 2014 10:12:49 +0000 (12:12 +0200)]
wavenc: print channel masks in hexadecimal

9 years agov4l2: remove redundant struct declaration
Tim-Philipp Müller [Sat, 27 Sep 2014 15:01:21 +0000 (16:01 +0100)]
v4l2: remove redundant struct declaration

9 years agortspsrc: Fix compiler warnings
Sebastian Dröge [Fri, 26 Sep 2014 10:46:16 +0000 (13:46 +0300)]
rtspsrc: Fix compiler warnings

gstrtspsrc.c:7939:11: error: implicit conversion from enumeration type 'GstSDPResult' to different enumeration type
      'GstRTSPResult' [-Werror,-Wenum-conversion]
    res = gst_sdp_message_new (&sdp);
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
gstrtspsrc.c:7944:11: error: implicit conversion from enumeration type 'GstSDPResult' to different enumeration type
      'GstRTSPResult' [-Werror,-Wenum-conversion]
    res = gst_sdp_message_parse_uri (uri, sdp);
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

9 years agomatroskademux: make demuxer reusable
Jonas Holmberg [Thu, 25 Sep 2014 13:01:14 +0000 (15:01 +0200)]
matroskademux: make demuxer reusable

Remove pads from flow combiner and reset last
flow return to FLOW_OK by resetting the flow combiner.
This prevents FLOW_FLUSHING when trying to re-use the
demuxer after setting it back to NULL/READY state.

https://bugzilla.gnome.org/show_bug.cgi?id=737359

9 years agovideomixer: use video library code instead of copy
Wim Taymans [Wed, 24 Sep 2014 14:46:36 +0000 (16:46 +0200)]
videomixer: use video library code instead of copy

9 years agoaudioparsers: Added index check before using the index
Sanjay NM [Thu, 18 Sep 2014 11:09:19 +0000 (16:39 +0530)]
audioparsers: Added index check before using the index

https://bugzilla.gnome.org/show_bug.cgi?id=736878

9 years agoqtmux: Do not infer DTS on buffers from sparse streams.
Matej Knopp [Tue, 23 Sep 2014 21:33:37 +0000 (23:33 +0200)]
qtmux: Do not infer DTS on buffers from sparse streams.

DTS delta is used to calculate sample duration. If buffer has missing DTS, we take either segment start or previous buffer end time, whichever is later.
This must only be done for non sparse streams, sparse streams can have gaps between buffers (which is handled later by adding extra empty buffer with duration that fills the gap)

https://bugzilla.gnome.org/show_bug.cgi?id=737095

9 years agogoom: Clarified precedence between % and ?
Sanjay NM [Thu, 18 Sep 2014 11:38:37 +0000 (17:08 +0530)]
goom: Clarified precedence between % and ?

https://bugzilla.gnome.org/show_bug.cgi?id=736887

9 years agortsp: clarify expression so operator precedence is clear
Sanjay NM [Thu, 18 Sep 2014 12:29:31 +0000 (17:59 +0530)]
rtsp: clarify expression so operator precedence is clear

https://bugzilla.gnome.org/show_bug.cgi?id=736903

9 years agoMiscellaneous minor cleanups
Sanjay NM [Thu, 18 Sep 2014 10:34:03 +0000 (16:04 +0530)]
Miscellaneous minor cleanups

Fix redundant variables and assignments,
and unreachable breaks.

https://bugzilla.gnome.org/show_bug.cgi?id=736875
https://bugzilla.gnome.org/show_bug.cgi?id=736876
https://bugzilla.gnome.org/show_bug.cgi?id=736879
https://bugzilla.gnome.org/show_bug.cgi?id=736880
https://bugzilla.gnome.org/show_bug.cgi?id=736881
https://bugzilla.gnome.org/show_bug.cgi?id=736888
https://bugzilla.gnome.org/show_bug.cgi?id=736890
https://bugzilla.gnome.org/show_bug.cgi?id=736892
https://bugzilla.gnome.org/show_bug.cgi?id=736893
https://bugzilla.gnome.org/show_bug.cgi?id=736894

9 years agovideobox: remove duplicate assignments
Tim-Philipp Müller [Tue, 23 Sep 2014 23:12:14 +0000 (00:12 +0100)]
videobox: remove duplicate assignments

https://bugzilla.gnome.org/show_bug.cgi?id=736897

9 years agoflacparse: Only calculate with durations != -1
Sebastian Dröge [Tue, 23 Sep 2014 19:55:48 +0000 (22:55 +0300)]
flacparse: Only calculate with durations != -1

9 years agoqtmux: collect pad for sparse stream should be created with lock set to false
Matej Knopp [Tue, 23 Sep 2014 17:08:48 +0000 (19:08 +0200)]
qtmux: collect pad for sparse stream should be created with lock set to false

Avoids waiting for buffers from sparse streams

https://bugzilla.gnome.org/show_bug.cgi?id=737095

9 years agoqtmux: fix subtitle buffer duration and strip null termination
Matej Knopp [Tue, 23 Sep 2014 17:07:25 +0000 (19:07 +0200)]
qtmux: fix subtitle buffer duration and strip null termination

Strip the \0 off the subtitle as we already know the size and also remember
to set the duration as buffer copying doesn't do it.

https://bugzilla.gnome.org/show_bug.cgi?id=737095

9 years agoqtmux: move subtitle layer above video and set alternate group
Matej Knopp [Tue, 23 Sep 2014 17:06:18 +0000 (19:06 +0200)]
qtmux: move subtitle layer above video and set alternate group

layer -1 is above video, that is 0
And having all subtitles in alternate group 2 means that only one
should be selected at a time.

https://bugzilla.gnome.org/show_bug.cgi?id=737095

9 years agocheck/soup: Temporarily disable G_ENABLE_DIAGNOSTIC
Edward Hervey [Tue, 23 Sep 2014 07:47:31 +0000 (09:47 +0200)]
check/soup: Temporarily disable G_ENABLE_DIAGNOSTIC

The SOUP_SERVER_PORT property has been deprecated in recent libsoup
versions.

9 years agocheck/soup: Define minimum version required
Edward Hervey [Tue, 23 Sep 2014 07:43:05 +0000 (09:43 +0200)]
check/soup: Define minimum version required

To avoid deprecation warnings

9 years agoqtdemux: Handle mp4a without ESDS atom
Matej Knopp [Fri, 19 Sep 2014 17:14:28 +0000 (19:14 +0200)]
qtdemux: Handle mp4a without ESDS atom

https://bugzilla.gnome.org/show_bug.cgi?id=736986

9 years agoximagesrc: Fix build problem without XFIXES
Linus Svensson [Mon, 22 Sep 2014 14:15:27 +0000 (16:15 +0200)]
ximagesrc: Fix build problem without XFIXES

9 years agodtmf: Removed unused structure members
Sanjay NM [Fri, 19 Sep 2014 09:04:13 +0000 (14:34 +0530)]
dtmf: Removed unused structure members

https://bugzilla.gnome.org/show_bug.cgi?id=736883

9 years agoisomp4: fix wrong DAR calculation for PAR <= 1
Reynaldo H. Verdejo Pinochet [Thu, 11 Sep 2014 16:48:44 +0000 (13:48 -0300)]
isomp4: fix wrong DAR calculation for PAR <= 1

CID #1226452

https://bugzilla.gnome.org/show_bug.cgi?id=736396

9 years agoflv: Removed unreachable break statements
Sanjay NM [Thu, 18 Sep 2014 11:29:52 +0000 (16:59 +0530)]
flv: Removed unreachable break statements

https://bugzilla.gnome.org/show_bug.cgi?id=736884

9 years agortpbin: do not leak encsink pad in error case
Ognyan Tonchev [Wed, 17 Sep 2014 14:37:11 +0000 (16:37 +0200)]
rtpbin: do not leak encsink pad in error case

https://bugzilla.gnome.org/show_bug.cgi?id=736807

9 years agomultipartdemux: do not leak new stream event
Ognyan Tonchev [Wed, 17 Sep 2014 14:23:21 +0000 (16:23 +0200)]
multipartdemux: do not leak new stream event

https://bugzilla.gnome.org/show_bug.cgi?id=736805

9 years agoy4menc: port y4menc to use GstVideoEncoder base class
Ravi Kiran K N [Mon, 15 Sep 2014 03:38:18 +0000 (09:08 +0530)]
y4menc: port y4menc to use GstVideoEncoder base class

https://bugzilla.gnome.org/show_bug.cgi?id=735085

9 years agoosxaudio: OSStatus is not a fourcc, so don't print it as one...
Sebastian Dröge [Wed, 17 Sep 2014 10:55:18 +0000 (13:55 +0300)]
osxaudio: OSStatus is not a fourcc, so don't print it as one...

9 years agoflacparse: do not leak uid after parsing TOC event
Ognyan Tonchev [Tue, 16 Sep 2014 12:26:08 +0000 (14:26 +0200)]
flacparse: do not leak uid after parsing TOC event

https://bugzilla.gnome.org/show_bug.cgi?id=736739

9 years agortpvrawdepay: Declare some more required caps fields in the sink template caps
Sebastian Dröge [Tue, 16 Sep 2014 19:47:13 +0000 (22:47 +0300)]
rtpvrawdepay: Declare some more required caps fields in the sink template caps

Now only missing are width and height, which are expressed as strings
for RTP... so we can't put them into the template caps.

9 years agogdkpixbufdec: modify wrong packetized mode logic
Vineeth T M [Tue, 16 Sep 2014 11:16:07 +0000 (16:46 +0530)]
gdkpixbufdec: modify wrong packetized mode logic

packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.

https://bugzilla.gnome.org/show_bug.cgi?id=736252

9 years agojpegdec: Remove unused variable and use correct decoder variable name
Sebastian Dröge [Tue, 16 Sep 2014 08:26:22 +0000 (11:26 +0300)]
jpegdec: Remove unused variable and use correct decoder variable name

9 years agopngdec: Remove unused variable
Sebastian Dröge [Tue, 16 Sep 2014 08:25:42 +0000 (11:25 +0300)]
pngdec: Remove unused variable

9 years agojpeggdec: modify wrong packetized mode logic
Vineeth T M [Tue, 16 Sep 2014 07:54:15 +0000 (13:24 +0530)]
jpeggdec: modify wrong packetized mode logic

packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.

https://bugzilla.gnome.org/show_bug.cgi?id=736252

9 years agopngdec: modify wrong packetized mode logic
Vineeth T M [Tue, 16 Sep 2014 07:53:16 +0000 (13:23 +0530)]
pngdec: modify wrong packetized mode logic

packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.

https://bugzilla.gnome.org/show_bug.cgi?id=736252

9 years agoximagesrc: Remove unused screen-num property
Antonio Ospite [Mon, 15 Sep 2014 12:39:41 +0000 (14:39 +0200)]
ximagesrc: Remove unused screen-num property

The screen number can be still specified as part of the display-name
property (e.g. for screen 1 of display 0 use display-name=":0.1").

https://bugzilla.gnome.org/show_bug.cgi?id=736122

9 years agoximagesrc: Draw the cursor only when it is active in the capturing region
Antonio Ospite [Thu, 4 Sep 2014 14:10:51 +0000 (16:10 +0200)]
ximagesrc: Draw the cursor only when it is active in the capturing region

Use XQueryPointer to check that the pointer is actually active inside
the capturing region.

This prevents drawing the cursor when the pointer is partially outside
of the captured region but not active inside the region; in particular
this avoids drawing the "window resize" cursor shapes to the captured
image when the mouse pointer crosses a window border.

NOTE that this is not only an optimization, this also happen to fix
a serious problem in multi-screen setups.

Because XFixes gives no information of what screen the pointer is on,
ximagesrc was always drawing the cursor on the captured screen even if
the mouse pointer was on another screen.

For example, when capturing from screen 1 (i.e. display-name=":0.1") the
cursor was drawn in the captured image even when the mouse pointer was
actually on screen 0, which is wrong and visually confusing.

https://bugzilla.gnome.org/show_bug.cgi?id=690646

9 years agoximagesrc: Fix drawing the cursor when it is outside the capturing region
Antonio Ospite [Fri, 5 Sep 2014 09:33:31 +0000 (11:33 +0200)]
ximagesrc: Fix drawing the cursor when it is outside the capturing region

When the cursor is partially or totally out of the capturing region on
the top side or on the left side, it gets drawn fully inside of the
region with its coordinates rounded up to the left or to the top border.

This is immediately noticeable when using the xid property to capture
a specific window.

To fix the issue, allow negative cx and cx coordinates when checking the
boundaries before drawing the cursor.

NOTE that the boundaries checking calculations still allows the cursor
to be drawn when it is only partially outside of the capturing region,
but this makes sense and gives a more pleasing visual behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=690646

9 years agoximagesrc: Fix the destination coordinates of the cursor
Antonio Ospite [Thu, 4 Sep 2014 22:15:30 +0000 (00:15 +0200)]
ximagesrc: Fix the destination coordinates of the cursor

XFixes provides the cursor coordinates relative to the root window, this
is not taken into account when using the xid property to capture
a specific window, the result is that the cursor gets drawn at the wrong
position.

In order to fix this consider the window location when calculating the
cursor position in the destination image.

https://bugzilla.gnome.org/show_bug.cgi?id=690646

9 years agov4l2allocator: O_CLOEXEC needs _GNU_SOURCE
Peter Korsgaard [Mon, 15 Sep 2014 12:51:24 +0000 (14:51 +0200)]
v4l2allocator: O_CLOEXEC needs _GNU_SOURCE

Similar to 94f3d6fc / bz 709423

On some systems (E.G. uClibc and older Glibc versions), O_CLOEXEC is only
defined when _GNU_SOURCE is specified, so do so.

https://bugzilla.gnome.org/show_bug.cgi?id=736670

9 years agocapssetter: update to 1.0 transform_caps sematics
Wim Taymans [Mon, 15 Sep 2014 16:11:37 +0000 (18:11 +0200)]
capssetter: update to 1.0 transform_caps sematics

In 1.0, we pass the complete caps to transform_caps to allow for better
optimizations. Make this function actually work on non-simple caps
instead of just ignoring the configured filter caps.

9 years agowavenc: use WAVE_FORMAT_EXTENSIBLE for more than 2 channels
Peter G. Baum [Mon, 8 Sep 2014 12:06:00 +0000 (14:06 +0200)]
wavenc: use WAVE_FORMAT_EXTENSIBLE for more than 2 channels

https://bugzilla.gnome.org/show_bug.cgi?id=733444

9 years agowavparse: Fix parsing of adtl chunks
Sebastian Dröge [Fri, 12 Sep 2014 12:06:50 +0000 (15:06 +0300)]
wavparse: Fix parsing of adtl chunks

We have to skip 12 bytes of data for the chunk, and the data size
passed to the sub-chunk parsing functions should have 4 bytes less
than the data size.

Also when parsing the sub-chunks, check if we actually have enough
data to read instead of just crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=736266

9 years agoudp: include string.h for memcmp and memset
Sanjay NM [Fri, 12 Sep 2014 05:25:23 +0000 (10:55 +0530)]
udp: include string.h for memcmp and memset

https://bugzilla.gnome.org//show_bug.cgi?id=736528

9 years agomatroskamux: don't bitwise OR the same flag twice
Anuj Jaiswal [Fri, 12 Sep 2014 08:06:18 +0000 (13:36 +0530)]
matroskamux: don't bitwise OR the same flag twice

https://bugzilla.gnome.org//show_bug.cgi?id=736543

9 years agomatroskademux: handle real audio 28_8
Tim-Philipp Müller [Fri, 12 Sep 2014 09:35:36 +0000 (10:35 +0100)]
matroskademux: handle real audio 28_8

Fixes duplicate check for 14_4.

https://bugzilla.gnome.org//show_bug.cgi?id=736543

9 years agomultifilesink: don't OR the same flag twice
Anuj Jaiswal [Thu, 11 Sep 2014 09:16:09 +0000 (14:46 +0530)]
multifilesink: don't OR the same flag twice

https://bugzilla.gnome.org/show_bug.cgi?id=736462

9 years agosouphttpsrc: If the server reports "Accept-Ranges: none" don't try range requests
Sebastian Dröge [Thu, 11 Sep 2014 09:52:11 +0000 (12:52 +0300)]
souphttpsrc: If the server reports "Accept-Ranges: none" don't try range requests

9 years agov4l2sink: Unref pool after usage
Ognyan Tonchev [Wed, 10 Sep 2014 07:50:45 +0000 (09:50 +0200)]
v4l2sink: Unref pool after usage

https://bugzilla.gnome.org/show_bug.cgi?id=736384

9 years agov4l2transform: Don't rank it for now
Nicolas Dufresne [Tue, 9 Sep 2014 23:03:50 +0000 (19:03 -0400)]
v4l2transform: Don't rank it for now

This will prevent the converter to be picked automatically in case
someone implement dynamic converter selection support. I'd like this
to be ranked only for known device, as it's hard to be sure a device is
a converter suited for general purpose. Re-negotiation is also needed
before we can rank it.

https://bugzilla.gnome.org/show_bug.cgi?id=733607

9 years agov4l2: Detect bad drivers timestamps
Nicolas Dufresne [Fri, 5 Sep 2014 12:29:20 +0000 (08:29 -0400)]
v4l2: Detect bad drivers timestamps

Even though the UVC driver do a great deal of effort to prevent bad
timestamp to be sent to userspace, there still exist UVC hardware that
are so buggy that the timestamp endup nearly random. This code detect
and ignore timestamp from these drivers, making these camera usable.
This has been tested on both invalid and valid cameras, making sure it
does not trigger for valid cameras.

https://bugzilla.gnome.org/show_bug.cgi?id=732910

9 years agov4l2allocator: Workaround driver that don't support REQBUFS(0)
Nicolas Dufresne [Fri, 29 Aug 2014 21:09:30 +0000 (17:09 -0400)]
v4l2allocator: Workaround driver that don't support REQBUFS(0)

There is still around 18 drivers not yet ported to videobuf2. These driver
don't support freeing buffetrs through REQBUFS(0) hence for these the
memory type probing fails. In order to gain back our previous behaviour in
presence of these, we implement a workaround that assuming MMAP is
supported. Note that an allocator is only created for device with
STREAMING support in the device capabilities. In such case one of MMAP,
USERPTR and DMABUF is required. Though DMABUF came afterward, so is
not an option and in practice none of these drivers will only do USERPTR.

https://bugzilla.gnome.org/show_bug.cgi?id=735660

Also-by: Hans de Goede <hdegoede@redhat.com>
9 years agov4l2: Merge min_buffers_for* variable into one
Nicolas Dufresne [Thu, 4 Sep 2014 19:11:40 +0000 (15:11 -0400)]
v4l2: Merge min_buffers_for* variable into one

Reuse the same min_buffers variable for both capture and output, this
reduce the length of lines and make the code more readable.

https://bugzilla.gnome.org/show_bug.cgi?id=736072

9 years agov4l2: set min_latency for output device according to required minimum number of buffers
Aurélien Zanelli [Thu, 4 Sep 2014 16:35:46 +0000 (18:35 +0200)]
v4l2: set min_latency for output device according to required minimum number of buffers

Since we can get the minimum number of buffers needed by an output
device to work, use it to set min_latency which will determine how many
buffers are queued.

https://bugzilla.gnome.org/show_bug.cgi?id=736072

9 years agotests: udpsrc: add check to make sure multiple memory chunks are used
Tim-Philipp Müller [Tue, 9 Sep 2014 15:10:56 +0000 (16:10 +0100)]
tests: udpsrc: add check to make sure multiple memory chunks are used

9 years agotests: udpsrc: wait for buffers with GCond instead of sleeping
Tim-Philipp Müller [Tue, 9 Sep 2014 14:55:18 +0000 (15:55 +0100)]
tests: udpsrc: wait for buffers with GCond instead of sleeping

Avoids half-second sleep for no reason.

9 years agotests: udpsrc: split out socket setup
Tim-Philipp Müller [Tue, 9 Sep 2014 14:31:32 +0000 (15:31 +0100)]
tests: udpsrc: split out socket setup

9 years agoudpsrc: more efficient memory handling
Tim-Philipp Müller [Tue, 9 Sep 2014 12:46:56 +0000 (13:46 +0100)]
udpsrc: more efficient memory handling

Drop use of g_socket_get_available_bytes() which is
not useful on all systems (where it returns the size
of the entire buffer not that of the next pending
packet), and is yet another syscall and apparently
very inefficient on Windows in the UDP case.

Instead, when reading UDP packets, use the more featureful
g_socket_receive_message() call that allows to read into
scattered memory, and allocate one memory chunk which is
likely to be large enough for a packet, while also providing
a larger allocated memory chunk just in case the packet
is larger than expected. If the received data fits into the
first chunk, we'll just add that to the buffer we return
and re-use the fallback buffer for next time, otherwise we
add both chunks to the buffer.

This reduces memory waste more reliably on systems where
get_available_bytes() doesn't work properly.

In a multimedia streaming scenario, incoming UDP packets
are almost never fragmented and thus almost always smaller
than the MTU size, which is also why we don't try to do
something smarter with more fallback memory chunks of
different sizes. The fallback scenario is just for when
someone built a broken sender pipeline (not using a
payloader or somesuch)

https://bugzilla.gnome.org/show_bug.cgi?id=610364

9 years agoudpsrc: rework memory allocation bits and ensure we always have two chunks of memorie...
Tim-Philipp Müller [Tue, 9 Sep 2014 11:15:43 +0000 (12:15 +0100)]
udpsrc: rework memory allocation bits and ensure we always have two chunks of memories to read into

First chunk is the likely/expected buffer size, second is as
fallback in case the packet is larger in the end.

Next step: actually use these.

9 years agoudpsrc: track max packet size and save allocator negotiated by GstBaseSrc
Tim-Philipp Müller [Tue, 9 Sep 2014 08:42:15 +0000 (09:42 +0100)]
udpsrc: track max packet size and save allocator negotiated by GstBaseSrc

9 years agoaudioecho: fix example command line
Tim-Philipp Müller [Mon, 8 Sep 2014 15:15:05 +0000 (16:15 +0100)]
audioecho: fix example command line

9 years agoavidemux: fix crash with certain videos
Tim-Philipp Müller [Sun, 7 Sep 2014 11:46:08 +0000 (12:46 +0100)]
avidemux: fix crash with certain videos

This is a regression from 1.2 caused by the port
to the pad flow combiner.

https://bugzilla.gnome.org/show_bug.cgi?id=736192

9 years agomatroska-demux: Don't handle parse errors at the end of file as an error
Sebastian Dröge [Thu, 4 Sep 2014 13:21:20 +0000 (16:21 +0300)]
matroska-demux: Don't handle parse errors at the end of file as an error

But only if they happen after the Matroska segment.

https://bugzilla.gnome.org/show_bug.cgi?id=735833

9 years agosouphttpsrc: Include redirection target in error messages
Sebastian Dröge [Thu, 4 Sep 2014 09:14:11 +0000 (12:14 +0300)]
souphttpsrc: Include redirection target in error messages

Just giving the original URI can give the false impression that e.g.
that one failed host name resolution, while actually the redirection target
did.

9 years agovideomixer: Fix synchronization if dynamically changing the FPS
Andrei Sarakeev [Tue, 2 Sep 2014 07:13:44 +0000 (11:13 +0400)]
videomixer: Fix synchronization if dynamically changing the FPS

https://bugzilla.gnome.org/show_bug.cgi?id=735859

9 years agosmpte: Check if input caps are the same and create output caps from video info
Ravi Kiran K N [Tue, 2 Sep 2014 08:22:43 +0000 (13:52 +0530)]
smpte: Check if input caps are the same and create output caps from video info

This makes sure that also properties like the pixel-aspect-ratio are the same
between both streams and that the output caps contain all fields necessary for
complete video caps.

https://bugzilla.gnome.org/show_bug.cgi?id=735804

9 years agoimagefreeze: replace with gst_buffer_copy
Vineeth T M [Tue, 2 Sep 2014 11:52:07 +0000 (17:22 +0530)]
imagefreeze: replace with gst_buffer_copy

gst_buffer_ref and gst_buffer_writable is being used to create a writable copy of source buffer.

replacing the same with gst_buffer_copy as the functionality is same.

https://bugzilla.gnome.org/show_bug.cgi?id=735880

9 years agoqtdemux: mark jpeg and png as parsed so avdec_mjpeg can be used too
Tim-Philipp Müller [Wed, 3 Sep 2014 22:06:53 +0000 (23:06 +0100)]
qtdemux: mark jpeg and png as parsed so avdec_mjpeg can be used too

https://bugzilla.gnome.org/show_bug.cgi?id=735971

9 years agogdkpixbufdec: free query after use
Vineeth T M [Wed, 3 Sep 2014 06:16:13 +0000 (11:46 +0530)]
gdkpixbufdec: free query after use

In gst_gdk_pixbuf_dec_setup_pool(), query is being allocated using
gst_query_new_allocation(), but the same is not unreferenced
hence calling gst_query_unref() after usage of query.

https://bugzilla.gnome.org/show_bug.cgi?id=735950

9 years agoqtdemux: Silence some warnings for normal file contents
Jan Schmidt [Wed, 3 Sep 2014 13:46:34 +0000 (23:46 +1000)]
qtdemux: Silence some warnings for normal file contents

9 years agoaacparse: Fix parsing issue when the buffer does not have a complete ADTS/LOAS frame
Nicolas Huet [Mon, 1 Sep 2014 07:56:02 +0000 (09:56 +0200)]
aacparse: Fix parsing issue when the buffer does not have a complete ADTS/LOAS frame

https://bugzilla.gnome.org/show_bug.cgi?id=735520

9 years agovp9dec: Get input width/height from the codec instead of the input caps
Sebastian Dröge [Tue, 2 Sep 2014 06:09:49 +0000 (09:09 +0300)]
vp9dec: Get input width/height from the codec instead of the input caps

They are reported properly by libvpx if the correct struct members are used.
This also fixes handling of resolution changes without input caps changes.

https://bugzilla.gnome.org/show_bug.cgi?id=719359

9 years agovp8dec: Fix for handling resolution changes when decoding VP8
Tom Greenwood [Tue, 22 Oct 2013 17:49:22 +0000 (18:49 +0100)]
vp8dec: Fix for handling resolution changes when decoding VP8

If the resolution changes in the bitstream without the input caps changing we
would previously output corrupted video or crash.

https://bugzilla.gnome.org/show_bug.cgi?id=719359

9 years agovp9dec: Fix segfault when a new caps is received
Thiago Santos [Tue, 2 Sep 2014 03:55:17 +0000 (00:55 -0300)]
vp9dec: Fix segfault when a new caps is received

Remember to unref the output caps when a new caps event is received
as it should generate a new one based on the new caps.

https://bugzilla.gnome.org/show_bug.cgi?id=734266

9 years agotests: vp8dec: add test for caps renegotiation
Thiago Santos [Tue, 2 Sep 2014 03:54:35 +0000 (00:54 -0300)]
tests: vp8dec: add test for caps renegotiation

Check that vp8dec can properly accept a new caps when upstream
changes it

https://bugzilla.gnome.org/show_bug.cgi?id=734266

9 years agovp8dec: Reset output and input states when changing format
Jose Antonio Santos Cadenas [Tue, 5 Aug 2014 08:34:39 +0000 (10:34 +0200)]
vp8dec: Reset output and input states when changing format

https://bugzilla.gnome.org/show_bug.cgi?id=734266

9 years agoimagefreeze: Don't call gst_caps_unref() on template caps when already unreferenced
Vineeth T M [Mon, 1 Sep 2014 11:09:23 +0000 (16:39 +0530)]
imagefreeze: Don't call gst_caps_unref() on template caps when already unreferenced

Adding an extra condition while calling gst_caps_unref (templ)
and replacing gst_caps_make_writable (gst_caps_ref (caps)) with
gst_caps_copy (caps) in line 177, since the functionality is same.

https://bugzilla.gnome.org/show_bug.cgi?id=735795

9 years agov4l2: get_nearest_size: Fix "Unsupported field type" errors
Hans de Goede [Fri, 29 Aug 2014 10:01:27 +0000 (12:01 +0200)]
v4l2: get_nearest_size: Fix "Unsupported field type" errors

Most V4L2 ioctls like try_fmt will adjust input fields to match what the
hardware can do rather then returning -EINVAL. As is docmented here:
http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-g-fmt.html

EINVAL is only returned if the buffer type field is invalid or not supported.

So upon requesting V4L2_FIELD_NONE devices which can only do interlaced
mode will change the field value to e.g. V4L2_FIELD_BOTTOM as only returning
half the lines is the closest they can do to progressive modes.

In essence this means that we've failed to get a (usable) progessive mode
and should fall back to interlaced mode.

This commit adds a check for having gotten a usable field value after the first
try_fmt, to force fallback to interlaced mode even if the try_fmt succeeded,
thereby fixing get_nearest_size failing on these devices.

https://bugzilla.gnome.org/show_bug.cgi?id=735660

9 years agov4l2: get_nearest_size: Always reinit all struct fields on retry
Hans de Goede [Fri, 29 Aug 2014 08:57:20 +0000 (10:57 +0200)]
v4l2: get_nearest_size: Always reinit all struct fields on retry

They may have been modified by the ioctl even if it failed. This also makes
the S_FMT fallback path try progressive first, making it consistent with the
preferred TRY_FMT path.

https://bugzilla.gnome.org/show_bug.cgi?id=735660

9 years agowavparse: Store size of data tag in a 64 bit integer locally too
Sebastian Dröge [Fri, 29 Aug 2014 08:55:26 +0000 (11:55 +0300)]
wavparse: Store size of data tag in a 64 bit integer locally too

Otherwise we will clip the DS64 value of RF64 files to 32 bits again.

9 years agowavparse: Use 64 bit scaling functions now that fact is a 64 bit integer
Sebastian Dröge [Fri, 29 Aug 2014 08:53:23 +0000 (11:53 +0300)]
wavparse: Use 64 bit scaling functions now that fact is a 64 bit integer

9 years agowavparse: support rf64 format
Peter G. Baum [Wed, 27 Aug 2014 16:55:18 +0000 (18:55 +0200)]
wavparse: support rf64 format

https://bugzilla.gnome.org/show_bug.cgi?id=735627

9 years agomultipartdemux: Ensure caps before pad added.
Jason Litzinger [Thu, 28 Aug 2014 19:48:50 +0000 (13:48 -0600)]
multipartdemux: Ensure caps before pad added.

This stores the stream-start, sets caps, and then adds the pad,
which ensures that the caps are set for the "pad-added" callback.

https://bugzilla.gnome.org/show_bug.cgi?id=735626

9 years agoflvmux: Fallback to PTS if DTS is missing
Nicolas Dufresne [Thu, 28 Aug 2014 19:03:50 +0000 (15:03 -0400)]
flvmux: Fallback to PTS if DTS is missing

Fixing a regression introduce when fixing:
https://bugzilla.gnome.org/show_bug.cgi?id=731352

9 years agoimagefreeze: Remove impossible error condition
Vineeth T M [Thu, 28 Aug 2014 10:43:29 +0000 (16:13 +0530)]
imagefreeze: Remove impossible error condition

We return EOS after the first buffer, and GstPad will make sure now that we
won't get any other buffer afterwards until a flush happens. No need to check
for it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=735581

9 years agogdkpixbufdec: EOS and NOT_LINKED are no errors in general
Vineeth T M [Thu, 28 Aug 2014 08:23:23 +0000 (13:53 +0530)]
gdkpixbufdec: EOS and NOT_LINKED are no errors in general

Don't post an error message for them but let upstream handle
anything accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=735564