Commit graph

19181 commits

Author SHA1 Message Date
Sebastian Dröge d05d52e0ad gl: Make sure that GST_GLSL_PROFILE_ANY gets the correct value in introspection
Currently in Python it would become a signed 64 bit value but should
actually be an unsigned 32 bit value with all bits set.

This is the same problem as with GST_MESSAGE_TYPE_ANY.

See https://bugzilla.gnome.org/show_bug.cgi?id=732633
2018-11-12 05:30:38 +00:00
Sjoerd Simons 989f53383b glupload: dmabuf: be explicit about gl formats used
Rather then letting gst_gl_memory_setup_buffer guess the GL format used
for an eglimage after importing a dmabuf be explicit about it. This
fixes issues where dmabuf import may have used another format then
gst_gl_format_from_video_info would guess on the basis of the available
GL extensions.

In particular on etnaviv the gst_gl_format_from_video_info would
assuming a luminance + alpha GL format is used for YUY2, but the dmabuf
import will always use RG88. Which causes images to end up somewhat pink when
displayed on the screen.
2018-11-11 16:15:59 -05:00
Sjoerd Simons 99ac4e6600 gl/egl: Determine correct format on dmabuf import
When importing an egl image from dmabuf gst_gl_format_from_video_info
was used to work what the result GL format will be. Unfortunately that
will only work if the conventional format and the choosen DRM fourcc for
the format match up.

On etnaviv platforms there is no support for GL_EXT_texture_rg, so the
GL format chosen for YUY2 ends up being GST_GL_LUMINANCE_ALPHA. However
DRM does not do luminance + alpha as it's a legacy GL thing, so the
dmabuf import ends up using DRM_FORMAT_GR88.

To fix this, tie the DRM_FORMAT and the GL format together so they
always match up.
2018-11-11 16:15:54 -05:00
Edward Hervey 23d1440a60 urisourcebin: Avoid potential unitialized/wrong bitrate value
Only calculate and set the bitrate if all conditions are met.
2018-11-09 12:22:31 +01:00
Edward Hervey 18942d7875 urisourcebin: Fix previous commit
rebase wasn't correct :)
2018-11-07 16:28:28 +01:00
Matthew Waters 5a53e89c1a tests/urisourcebin: add get/set watermark test
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters af166b5b22 urisourcebin: add a statistics property for queueing
It contains the minimum/maximum/average byte and time levels of the
queues inside this urisourcebin

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters 81e00791bf uisourcebin: update forwarded properties on change
Allows changing queueing properties at runtime

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters 784e621b54 urisourcebin: add low/high-watermark properties
These are forwarded to the contained queues.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters 8b69b689c0 urisourcebin: limit the byte size of the queue based on the buffer-size
Use the bitrate advertised by queue2 to determine the limits to
set across possibly multiple queue2/downloadbuffer elements.  e.g.
with two queue2's and a max-bytes based on the ratio of the
bitrate/cumulative_bitrate multiplied by the buffer_size set on urisourcebin.

This allows finer grained control over the buffer used by all the queue
elements inside urisourcebin.  Instead of a maximum of
n_streams*buffer_size being used, only buffer_size will be used however
we will fallback to n_streams*buffer_size if one of the queue2's does
not have bitrate information.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters a8e2f76731 urisourcebin: remove unused instance variable streams 2018-11-07 15:10:05 +00:00
Edward Hervey 8367d7e6f4 examples: Fix libgstvideo linking
Use the local libgstvideo (and not the system wide one)
2018-11-05 12:00:55 +01:00
Sebastian Dröge d3a35870a2 audio: const gpointer is not the same as gconstpointer/const void *
See https://bugzilla.gnome.org/show_bug.cgi?id=664491
2018-11-05 08:16:16 +00:00
Matthew Waters e466226d46 Update common submodule location without /git/ directory 2018-11-05 05:35:12 +00:00
Haihao Xiang 7a96f3a9b5 Clone the code from gitlab
This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/503
2018-11-05 12:39:03 +08:00
Sebastian Dröge a1c14959d6 video-anc: Add unit tests for VBI parsing
https://bugzilla.gnome.org/show_bug.cgi?id=797363
2018-11-01 19:30:41 +02:00
Sebastian Dröge 4666444955 video-anc: Fix bounds checks when parsing VBI data
We were reading more bytes than we allocated.

https://bugzilla.gnome.org/show_bug.cgi?id=797363
2018-11-01 19:30:41 +02:00
Nicolas Dufresne e074eff5ef glupload: Only renegotiate if the caps are incompatible
There is new code that ensures that we renegotiate after an
uploader transition if the negotiated caps have changed.

The problem is that the raw uploader will not really try and
fixate the input caps, but instead of return a subset with the
only the supported target texture.

This had two effect, raw uploads was always done renegotiated
once and the raw upload unit test was now failing as it didn't
expect a renegotiation.

As it's a valid check, simply relax the gst_caps_is_equal() check
and use a gst_caps_is_subset() instead.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-11-01 06:22:28 -04:00
Nicolas Dufresne c8c7672ffb glupload: Do prepend the preferred caps
The direct dmabuf upload does color conversion, so when it transforms
the caps, it replaces the format with all formats found through the
format query. When this uploader can't be used, it makes the upstream
source pick a unsupported format.

To fix this, we only append the caps with a list of format. So the
source will only pick one of these formats if the downstream preferred
format is not supported. A negotiation failure after this would be
normal.

This fixes pipelines without a glcolorconvert element.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-11-01 06:22:28 -04:00
Nicolas Dufresne c2ec68f0c7 glupload-test: Don't use gboolean to store enums
The unit test makes mixed usage of ret value. Sometimes its does
stores an enum and at other moment a boolean. Also fix test
using boolean instead of the correct enum value.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-11-01 06:22:28 -04:00
Philippe Normand 07d078e7bc examples/playback-test: New entry for text-offset updates
https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand 610fa16784 playbin3: New text-offset property
This new property controls the synchronisation offset between the text and video
streams. Positive values make the text ahead of the video and negative values
make the text go behind the video.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand dc5006fa25 playbin: New text-offset property
This new property controls the synchronisation offset between the text and video
streams. Positive values make the text ahead of the video and negative values
make the text go behind the video.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand ea3b074ead playsink: Add text-offset property
When the playsink contains a text chain this property controls the
synchronisation of the subtitles and video by controlling the underlying
subtitleoverlay::subtitle-ts-offset property.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand 3cd38be94b subtitleoverlay: Add a subtitle-ts-offset property
This property controls the synchronisation offset between text and video in
nanoseconds, by updating the parser src pad offset.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Wangfei cc0bcd5856 video: add Y210 pixel format.
This pixel format is packed format with 4:2:2 sample and 10
available bits of each channel.

https://bugzilla.gnome.org/show_bug.cgi?id=797267
2018-10-31 15:01:34 +00:00
Philipp Zabel 3c8ac7de80 glupload: dmabuf-direct: report driver limitations to debug log
Report in the DEBUG log if the driver does not support importing a given
format with linear modifiers non-externally.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Philipp Zabel eb20293a02 glupload: dmabuf-direct: query formats before modifiers
The EXT_image_dma_buf_import_modifiers extension [1] states regarding
eglQueryDmaBufModifiersEXT:

    The format must be one of those returned by the
    eglQueryDmaBufFormatsEXT command.

To comply with this requirement eglQueryDmaBufFormatsEXT must be called
before eglQueryDmaBufModifiersEXT.

[1] https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Philipp Zabel c4edd80c8c glupload: debug output from dmabuf and dmabuf_direct upload transform_caps
https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Philipp Zabel 58399b20bd glupload: calculate DRM fourcc once for direct dmabuf upload
Calculate DRM fourcc and report to the DEBUG log about it only once
instead of three times in gst_egl_image_from_dmabuf_direct().

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Michael Olbrich 507e31dfc0 glupload: Implement direct dmabuf uploader
The idea is that some GPUs (like the Vivante series) can actually
perform the YUV->RGB conversion internally, so no custom conversion
shaders are needed. To make use of this feature, we need an additional
uploader that can import DMABUF FDs and also directly pass the pixel
format, relying on the GPU to do the conversion.

Based on patches from Nicolas Dufresne <nicolas.dufresne@collabora.com> and
Carlos Rafael Giani <dv@pseudoterminal.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Michael Olbrich b006ef97fc gluploadelement: try to avoid dropping buffers
Without this, a buffer is dropped if glupload indicates that it is
necessary to reconfigure.
Avoid this by explicitly reconfiguring immediately and uploading the buffer
again.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Michael Olbrich f349cdccf5 glupload: handle upload methods with different caps
If a upload method is selected then use it exclusively in transform_caps().
Also, reconfigure if the current caps don't match the current upload
method.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Michael Olbrich f3292dc156 glupload: allow system memory for dmabuf in transform_caps
This should not be necessary, but currently not all plugins that provide
dmabuf memory announce this with caps features, e.g. v4l2.
The static caps already contain the system memory. It didn't break before
because other upload methods provide the necessary transformation.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Michael Olbrich 4d9abc6bed glupload: try to use the last method after reconfigure
Reconfigure will trigger a set_caps which clears the upload method.
Remember the method in this case and start with it.
Wrap around once to try all methods if necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:07 +01:00
Michael Olbrich 5d0e191710 gl/egl: Add gst_egl_image_from_dmabuf_direct() function
The colorspace conversion happens during the upload so the necessary hints
must be provided to ensure that the conversion works correctly.

At least the Mesa Intel driver will create a texture without error but
produces an incorrect result. Use eglQueryDmaBufModifiersEXT() to check if
non-external upload is supported for the given format.

Based on a patch from Carlos Rafael Giani <dv@pseudoterminal.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:02 +01:00
Nicolas Dufresne 0ac646f7f4 glmemory: Fix n_wrapped_pointers usage
gst_gl_memory_setup_buffer() was not properly using the number
of pointers to wrapped. This also fixes the validation, as we
only support 1 wrapper per view, or num_planes * views wrapper.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 10:47:01 +01:00
Johan Bjäreholt f780c718e7 overlaycomposition: Fix implicit use of memset
https://bugzilla.gnome.org/show_bug.cgi?id=797353
2018-10-29 13:12:30 +00:00
Sebastian Dröge 0d030d37a4 overlaycomposition: Add plugin inspect file 2018-10-28 17:41:38 +00:00
Philippe Normand 2e295da3a5 examples: overlaycomposition: Fix Meson build 2018-10-28 17:21:08 +00:00
Sebastian Dröge 088b4c0c52 overlaycomposition: New element that allows applications to draw GstVideoOverlayComposition on a stream
https://bugzilla.gnome.org/show_bug.cgi?id=797234
2018-10-28 17:03:47 +00:00
Sebastian Dröge 596a4ee12f parsebin: Add missing locks/unlocks of the chain mutex
Before freeing pending pads it is required to hold the mutex, that's
what is protecting the list of pending pads in other places.

https://bugzilla.gnome.org/show_bug.cgi?id=796935
2018-10-28 17:03:47 +00:00
Edward Hervey 33e92afd91 tests: Solidify tcp connection check
The previous failure was a timeout which was due to the sending pipeline
pushing test buffer *before* the remote client was accepted. We would
therefore never get the buffer on the other side.

While the client socket would indeed appear as "connected", this doesn't
mean that the remote server side did "accept" it (which is where we then
add it to the list of remote parties to which data will be sent).

The problem isn't with the element implementation, but to the nature of
TCP 3-way handshake.

In order to make the test reliable, wait for the sink to have accepted
the remote client (by checking the number of handles) before sending out
test buffers.
2018-10-27 15:48:13 +02:00
Roland Jon a15baf7976 decodebin3: fix eos event leak
https://bugzilla.gnome.org/show_bug.cgi?id=796860
2018-10-18 13:03:31 +01:00
Sebastian Dröge e0dee7f4c1 oggdemux: Answer POSITION query 2018-10-17 19:44:22 +03:00
Seungha Yang 3499d9ea64 meson: Replace empty configuration_data() with copy keyword
Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0

https://bugzilla.gnome.org/show_bug.cgi?id=797298
2018-10-17 13:48:47 +01:00
Nirbheek Chauhan 76ba8d8759 videometa: Log map errors with GST_ERROR, not DEBUG
Otherwise it's very easy to miss them when gst_video_frame_map() fails
2018-10-15 19:46:48 +05:30
Mathieu Duponchelle aa6daaafc6 rtspconnection: do not duplicate authentication headers
rtsp_connection_send takes care of adding those already,
and some reverse proxies such as nginx will reject the request
altogether if the Authorization header is present twice,
even with the same value.

https://bugzilla.gnome.org/show_bug.cgi?id=797272
2018-10-11 15:35:56 +02:00
Stian Selnes f766b85b96 rtpbasepayload: rtpbasedepayload: Add source-info property
Add a source-info property that will read/write meta to the buffers
about RTP source information. The GstRTPSourceMeta can be used to
transport information about the origin of a buffer, e.g. the sources
that is included in a mixed audio buffer.

A new function gst_rtp_base_payload_allocate_output_buffer() is added
for payloaders to use to allocate the output RTP buffer with the correct
number of CSRCs according to the meta and fill it.

RTPSourceMeta does not make sense on RTP buffers since the information
is in the RTP header. So the payloader will strip the meta from the
output buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=761947
2018-10-10 14:38:01 -04:00
Tim-Philipp Müller 1b9ed134d1 meson: use new 'python' module instead of deprecated
https://github.com/mesonbuild/meson/pull/4169
2018-10-08 01:07:45 +01:00