Guillaume Desmottes
62254f93a3
video: sort formats by quality
...
Will ensure that we pick the "best" format when negotiating caps.
Fix #649
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/689 >
2020-06-09 08:09:58 +00:00
Guillaume Desmottes
e2f6b85fd9
audio: sort formats by quality
...
Will ensure that we pick the "best" format when negotiating caps.
Fix #649
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/689 >
2020-06-09 08:09:58 +00:00
Guillaume Desmottes
1b4ab9f033
tests: enforce I420 format
...
Tests are assuming video is I420 but are not actually enforcing it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/689 >
2020-06-09 08:09:58 +00:00
Thibault Saunier
7edbc3fd7d
uridecodebin3: Let decodebin do its stream selection if no one answers
...
If no one answers our `select-stream` signal, uridecodebin3 should
behave the same way as `decodebin3` and let decodebin do its own stream
selection.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/666 >
2020-06-08 12:54:05 -04:00
Thibault Saunier
b41b87522f
decodebin3: Avoid overriding explicit user selection
...
In case the user set a list of streams to select or answer explicitly
to all 'select-stream' event, we should respect his choice and not
try to add a stream per type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/666 >
2020-06-08 12:54:05 -04:00
Edward Hervey
78444fc622
tests: Avoid hang with decodebin test
...
When adding elements dynamically to a pipeline one should never guess what the
curren/target state is, and instead use `gst_element_sync_state_with_parent()`.
Fixes racy hang when running within valgrind
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/692 >
2020-06-08 08:11:00 +02:00
Seungha Yang
9c3cff287e
playbin: Fix wrong AV element pair selection when rank is very large value
...
If user set very high rank to an element (e.g., integer max),
integer overflow can happen while multiplication operation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/690 >
2020-06-06 20:22:28 +09:00
Mathieu Duponchelle
cc516695b0
plugins: uddate gst_type_mark_as_plugin_api() calls
2020-06-06 00:41:17 +02:00
Sebastian Dröge
954a314ca8
videoencoder: Add test for min-force-key-unit-interval property
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
76364ebfe7
videoencoder: Also don't request a new key-unit if we already got one after the requested running time
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
19fecabdf7
videoencoder: Don't request another keyunit if another one is pending or we requested one for a future time already
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
c5b081edc2
videoencoder: Add min-force-key-unit-interval property
...
This allows configuring the minimum interval between subsequent
force-key-unit requests and prevents a big bitrate increase if a lot of
key-units are requested.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
931b5ad996
videoencoder: Add test for correct force-keyunit event handling
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
01eecc69bd
videoencoder: Fix force-keyunit handling in test
...
This now behaves according to the videoencoder API instead of some other
signalling.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
6260c4be7e
videoencoder: When pushing headers as part of a keyframe mark the first header as keyframe
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
401d56a6a7
videoencoder: Handle all matching force-keyunit events at once
...
Previously we only handled one event at a time, which could lead to the
following two suboptimal situations:
- frame 0 at 20ms, frame 1 at 40ms and two force-keyunit events at 10ms
and 15ms. We would create a new keyframe for both of the frames.
- 100 force-keyunit events with running-time NONE would cause all
following 100 frames to be made into a keyframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Sebastian Dröge
9b1f1f431a
videoencoder: Sort force-keyunit-events by their running time
...
That way we can more easily work with the whole list without iterating
over all of the elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/684 >
2020-06-05 10:04:43 +00:00
Edward Hervey
b087415757
uridecodebin: Dont link random pads
...
When linking source pads to decodebin, make sure we use the *specified* new
source pad and not some random one.
This avoids ending up with source pads being unlinked.
Main cause of random timeouts with rtsp change_state_intensive validate tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/687 >
2020-06-05 09:06:05 +00:00
Stéphane Cerveau
42dcbcd61f
video-hdr: fix memset warning
...
Fix warning on fedora arm64 target
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/685 >
2020-06-05 08:13:32 +00:00
Nicolas Dufresne
8e3c4a5d5a
video: Fix NV12_64Z32 number of component
...
This format has 3 components, just like NV12.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/686 >
2020-06-04 20:12:59 +00:00
Thibault Saunier
c2610d7f41
doc: Add a minimal GstVideoMultiviewFlagsSet documentation
2020-06-03 22:44:24 -04:00
Thibault Saunier
7495006efa
doc: Require hotdoc >= 0.11.0
2020-06-03 22:44:23 -04:00
Sebastian Dröge
b952fc5516
docs: Update gst_plugins_cache.json
2020-06-03 22:44:23 -04:00
Mathieu Duponchelle
e666c9ec04
plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types
2020-06-03 22:44:23 -04:00
Sebastian Dröge
fb7ab33e03
videoencoder: Simplify header buffer metadata updating
...
Instead of doing a shallow copy of the list just to call make_writable()
on each buffer, do that inline in the same loop and modify the list
contents.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/683 >
2020-06-03 16:21:41 +03:00
Sebastian Dröge
caaa5ac864
video: Use GQueue instead of plain GList in a few places
...
Also not optimal but at least simplifies the code a bit and doesn't
require g_list_length() and g_list_append() in a few places.
For 2.0 there are some more candidates to change but unfortunately
they're currently part of the API.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/683 >
2020-06-03 16:21:41 +03:00
Sebastian Dröge
4fcc1121e6
video-format: RGB16/15 are not 16 bit per component but only 5.333 and 5
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/682 >
2020-06-02 14:38:55 +00:00
Guillaume Desmottes
02fd2f12f9
audio: add gst_audio_make_raw_caps()
...
More binding friendly version of GST_AUDIO_CAPS_MAKE().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/676 >
2020-06-02 11:57:42 +00:00
Guillaume Desmottes
58a6303a5f
audio-format: remove empty space prefix from GST_AUDIO_FORMATS_ALL
...
This space prevent deserialization using gst_value_deserialize().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/676 >
2020-06-02 11:57:42 +00:00
Guillaume Desmottes
75411ce1e7
audio-format: add gst_audio_formats_raw()
...
The existing GST_AUDIO_FORMATS_ALL macro is not binding friendly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/676 >
2020-06-02 11:57:42 +00:00
Guillaume Desmottes
84e0689d58
video: add gst_video_make_raw_caps()
...
More binding friendly version of GST_VIDEO_CAPS_MAKE().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/676 >
2020-06-02 11:57:42 +00:00
Guillaume Desmottes
f42e67c639
video-format: add gst_video_formats_raw()
...
The existing GST_VIDEO_FORMATS_ALL macro is not binding friendly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/676 >
2020-06-02 11:57:42 +00:00
Matthew Waters
51b057ea26
glcontext/eagl: handle sending one message during shutdown
...
gst_gl_window_quit() will attempt to send a message but will be called
from GstGLContext's finalize handler and so the weak ref that backs
gst_gl_window_get_context will return NULL as it has already been
cleared. We need that context in send_message_async to decide whether
to run the provided callback immediately or queue in GCD
This is the equivalent commit for iOS as:
7f59cefafb
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/618
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/681 >
2020-06-02 14:32:03 +10:00
Matthew Waters
c506adc950
gl/eagl: don't access UIkit objects on the main thread
...
This means we cannot access [view layer] or view.bounds from the OpenGL
thread. This also means that we need to call the main thread when
setting the window handle. However, we cannot perform that
synchronously as that may deadlock with the application performing the
set_window_handle() call.
We need to defer the actual update and run it asynchronously and wait
for the window handle update internally at each point it is needed.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/372
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/681 >
2020-06-02 14:32:03 +10:00
Matthew Waters
a57380d718
gl/ios: fix typo GS_GL -> GST_GL
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/681 >
2020-06-02 14:32:03 +10:00
Thibault Saunier
0c75ea0858
videorate: Update QoS events taking into account our rate
...
Otherwise there is a mismatch between the QoS values and what upstream
would expect, leading to too much buffer dropping in video decoders in
case rate < 1.0 or not enough buffer dropping in case rate > 1.0
Adding validate tests with and without decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/679 >
2020-06-01 07:07:31 +00:00
Thibault Saunier
6499e2afa5
videorate: Fix changing rate
property during playback
...
We need to take into account the base_ts to compute next_ts and it needs
to be updated on rate change.
This introduces `pending_rate` so that change rate is properly handled
in the streaming thread in a safe way.
Added tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/679 >
2020-06-01 07:07:31 +00:00
Thibault Saunier
d846a1ac1c
tests:validate: Run all test using a simple fakesink
...
`fakevideosink` is in -bad and thus not available here.
Update the expectation files as video metas are not negotiated anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/677 >
2020-05-29 19:21:43 +00:00
Víctor Manuel Jáquez Leal
165f801bb0
libs: gl: silence gir compiler
...
There were a couple complains of the gir compiler on these gstgl
files.
* Added namespace to public macros, even if they are helpers.
* Removed a misused private tag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/678 >
2020-05-29 13:35:56 +02:00
Michael Gruner
9a94b4cbc1
videoscale: reorder code to avoid indent missmatches
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/548 >
2020-05-29 00:44:07 +00:00
Michael Gruner
c0ca12a3fb
videoscale: transform size sensitive metas
...
Currently, videoscale just drops all metas that have other tags
besides video. However videoscale wont change the colorspace or
the orientation of the video so metas tagged as such may be
copied safely. Additionaly, given that videoscale will change
the frame size, we invoke the meta transform implementation
to give it the opportunity to scale accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/548 >
2020-05-29 00:44:07 +00:00
Seungha Yang
7d7108f35d
tests: audiosink: Test class extension struct
...
Test a vfunc which belongs to GstAudioSinkExtension struct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/547 >
2020-05-28 19:14:29 +09:00
Seungha Yang
4a774e878f
audiosink: Keep baseclass extensible
...
Add a structure for future extension.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/716
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/547 >
2020-05-28 19:14:29 +09:00
uno20001
e945b3706c
decodebin: only emit 'drained' signal when top chain is drained
...
Without this, decodebin emits 'drained' multiple times which then
causes (uri)playbin to emit 'about-to-finish' multiple times for
for file types.
Fixes #751
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/673 >
2020-05-27 18:51:31 +00:00
Sebastian Dröge
8966083178
audioresample: Add new test that checks for downstream renegotiation
...
This test always consumes 48kHz and outputs different sample rates based
on downstream renegotiation. Previously this would produce completely
wrong timestamps and not output all samples.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/670 >
2020-05-27 17:06:08 +00:00
Sebastian Dröge
71c937b565
audioresample: Fix up test_live_switch
...
Actually check that we get back all samples, which we didn't before
because no draining was happening. Also remove commented out 0.10 code
and related comments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/670 >
2020-05-27 17:06:08 +00:00
Sebastian Dröge
44cd1c7a65
audioresample: Drain resampler on discontinuities
...
Otherwise we would lose the last few samples when resetting the
resampler.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/670 >
2020-05-27 17:06:08 +00:00
Sebastian Dröge
bf0cffc474
audioresample: Drain resampler and reset timestamp tracking on stream-start event too
...
And also reset timestamp tracking on EOS events as more data might come
afterwards with a new stream-start event. This keeps the code the same.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/670 >
2020-05-27 17:06:08 +00:00
Sebastian Dröge
6d423cbba2
audioresample: Drain the resampler and reset timestamp tracking on caps changes
...
Especially when changing the sample rate our timestamp tracking will be
completely off, but even otherwise we would usually lose the last few
samples if we don't drain here as the resampler gets reset if anything
but the sample rate changes.
This is usually not a problem as the first buffer after a caps event
usually has the discont flag set, but can cause problems if
- the caps event is followed by a segment event, which then causes
draining according to the new sample rate
- the caps were changed because of rengotiation due to a reconfigure
event and there is not discontinuity from upstream
In both cases we would output buffers with completely wrong timestamps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/670 >
2020-05-27 17:06:08 +00:00
Stéphane Cerveau
c7a956aede
video-anc: init type before g_once_init_enter
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/675 >
2020-05-27 17:13:35 +02:00