summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-09-23Release 1.19.2HEAD1.19.2masterdiscontinued-for-monorepoTim-Philipp Müller5-13/+1110
2021-09-21pbutils: codec-utils: fix g-ir-scanner warningTim-Philipp Müller1-1/+1
Warning: GstPbutils: gst_codec_utils_h264_get_profile_flags_level: unknown parameter 'codec_data' in documentation comment, should be 'codecs_data Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1279>
2021-09-20alsasink: Allow stop() function to happen during failing writesNicolas Dufresne1-1/+7
In ALSA, there is possible temporary failures that may require a retry, though in certain situation, this may leak to the write() function holding on a lock forever preventing the pipeline from going to pause or stop. Fix this by shortly dropping the lock between retries. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1261>
2021-09-20alsasink: Improve logging in write() functionNicolas Dufresne1-2/+2
This moves the "written X frames" lower so that we don't trace confusing negative values on errors and add the error code in the "Write error" log. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1261>
2021-09-20videodecoder: Add properties to automatically request sync points and vfunc ↵Sebastian Dröge3-72/+215
to allow subclasses to handle packet loss / missing data Subclasses could use the new vfunc to activate packet loss concealment, for example. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1274>
2021-09-16videodecoder: Fix min-force-key-unit-interval logic and loggingHavard Graff1-5/+5
The new keyframe is needed when the deadline of the buffer has exeeded the waiting time, not while it is within it. Also, since we look at the deadline of the frame, log that instead of PTS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1278>
2021-09-15rtphdrext: Make write function return a signed valueOlivier Crête5-7/+8
Since the return value is documented to possibly be smaller than 0, then it needs to be signed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1258>
2021-09-15videorate: Add unit test for closing a segment and opening a separate oneOlivier Crête1-0/+142
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
2021-09-15videorate: Drop incoming buffers that are outside of the segmentOlivier Crête1-0/+11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
2021-09-15videorate: Only "close" the segment if it is discontinousOlivier Crête2-40/+60
Otherwise, it will drop valid buffers on a simple segment update Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
2021-09-15videorate: Add test for segment updateOlivier Crête1-0/+93
Continue as-is on segment update. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
2021-09-15videorate: Update the base time on segment updatesOlivier Crête1-3/+9
Dropping it to 0 makes videorate push buffers from timestamp 0 again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
2021-09-12discoverer: Prevent stream tags from leaking in global tagsPhilippe Normand1-1/+18
The PrivateStream should keep track of stream tags only. Likewise, the GstDiscovererInfo should keep track of global tags only. This patch fixes the issue where the discoverer would report duplicated tag titles, especially for Matroska media files. The Matroska demuxer emits correctly-scoped tags, but downstream was making no distinction of them. Fixes #598, #836, https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/827 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1275>
2021-09-09gl/buffer_storage: re-enable GL_ARB_buffer_storageMatthew Waters1-1/+1
The extension version doesn't have the ARB suffix. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1273>
2021-09-09rtspconnection: Only reset timeout when socket is unusedTobias Ronge1-16/+90
After sending or retrieving data, gstrtspconnection resets the socket's timeout to 0 (infinite). This could cause problems if sending and receiving at the same time. For example, if RTCP data is sent from the streaming thread while gstrtspsrc is already retrieving data. With this patch, timeout is only reset to 0 if there is no other thread using the socket. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1260>
2021-09-07pbutils: Add mjpg to MIME codecsLudvig Rappe2-0/+11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1270>
2021-09-03decodebin3: fix unblocking on input gap eventsMathieu Duponchelle1-1/+6
Initial gap events should not be discarded on the input streams, but instead cause unblocking just as buffers do. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1239>
2021-09-02parsebin: Guess subtitle/ caps as text streamsPhilippe Normand1-0/+1
The subtitles in ogg/kate are identified using subtitle/ caps names. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1213>
2021-08-31rtp: add some additional rtcp sdes valuesMatthew Waters3-10/+128
Matches the current list at https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5 as of 2021-September. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1267>
2021-08-30pbutils: Add function to convert caps to MIME codecLudvig Rappe3-0/+299
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1265>
2021-08-30pbutils: Add function for parsing H.264 extradataLudvig Rappe3-0/+101
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1265>
2021-08-25eglimage: fix redefinition of EGLuint64KHROlivier Blin1-4/+0
It is already defined in gst/gl/egl/gstegl.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1262>
2021-08-24video-converter: Add support for A420 to RGB fast pathSeungha Yang4-4/+1228
Add fast path for A420 -> RGB format conversion Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1245>
2021-08-21compositor: Fix crash while drawing background and/or blending for ↵Seungha Yang1-10/+10
subsampled YUV Fix crash caused by out-of-bounds memory accesses when drawing background and/or blending. This fix is conceptually identical to the approach as the commit of 8ff5079e5eef37b9bd5b212350f0cefbd9546b1b Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1229>
2021-08-20encoding-profile: ignore more encoding private fieldsMathieu Duponchelle1-15/+4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1249>
2021-08-20smartencoder: Respect user `stream-format` when specifiedThibault Saunier2-8/+16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1249>
2021-08-20smartencoder: clean up and extend accepted formatsMathieu Duponchelle3-70/+151
* Add support for H265 * Don't overwrite original codec_data / streamheader in the output caps, but instead allow them to change and send them to the combiner at the right moment: encoder caps, reencoded GOP, original caps, original GOP(s), and potentially encoder caps and rencoded last GOP. * For H264 / H265, force usage of a format with inband SPS / PPS (avc3 / hev1), this is cleaner than misadvertising avc1, hvc1 and some muxers like mp4mux will actually advertise both differently. Unfortunately, while mp4 supports updating the codec_data and using avc1 with no in-band SPS / PPS updates, it turns out some decoders (eg chrome / firefox) don't handle this particularly well and stop decoding after the reencoded GOP. We could expose a switch to force usage of avc1 / hvc1 nevertheless, but for now stick to requiring that the parser output SPS / PPS in-band with config-interval=-1 (that has not changed) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1249>
2021-08-20compositor: Add "max-threads" propertySeungha Yang3-1/+46
Adding new property for user to be able to set expected the maximum number of blend task threads. This can be useful in case that user wants to restrict the number of parallel task runners for system resource management or debugging/development purpose. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1242>
2021-08-18pbutils: Expose functions for getting a file extension for caps and flags ↵Sebastian Dröge2-0/+101
for describing the format of the caps This information was available internally already but not available from the outside. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1221>
2021-08-18playbin/uridecodebin: Emit source-setup signal early before doing the ↵Sebastian Dröge2-20/+34
scheduling query Some elements will require the source to be set up properly before the scheduling query returns useful results, e.g. appsrc and giostreamsrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1241>
2021-08-17ext: alsa: Fix fallback paths for setting buffer and period timesDevarsh Thakkar2-135/+125
Below fallback paths were introduced in https://github.com/GStreamer/gst-plugins-base/commit/9759810d8206b5f1aa199f98599caec3630a1813 if setting period time after buffer time failed : 1) Set period time and then buffer time if it doesn't work 2) Set only buffer time 3) Set only period time These all were not functioning properly since they were using old copy of snd_pcm_hw_params_t which already had some fields set as per previous try and this was causing issues as driver was referring to that old value while trying to set them again in fallback paths. So now we always use the initial copy of snd_pcm_hw_params_t for every fallback and same is also being done at https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/557c4295107dc7374c850b0bd5331dd35e8fdd0f Also we change the sequence to set period time earlier than buffer time since period bytes being the smaller unit, most of the times if underlying alsa device has a dependency then it is of period bytes to be a multiple of some value (as per underlying DMA constraint) and rest of the parameters like buffer bytes need to be adjusted as per period bytes. The same sequence is also followed in alsa-utils at https://github.com/alsa-project/alsa-utils/commit/9b621eeac4d55c4e881f093be5b163ca07d01b63 Fix 2) and 3) scenarios by returning success if the exclusive setting is passed and not doing any further setting for buffer time or period time. Add new fallback path of not setting any buffer time and period time if all above fallback paths fail. The same is also being followed at aforementioned pulseaudio commit. In case of alsasink, remove the retry goto label, since it is not required anymore as fallback paths take care of setting default values if driver is not accepting any of the fallback paths. Use separate label for exit to free params structs and return err code. This also fixes leak in no_rate goto path in alsasink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1212>
2021-08-17videoencoder: pass upstream HDR information through codec stateJakub Adam2-24/+107
Don't copy HDR metadata from sink pad, because its caps may not have been set yet if GstVideoEncoder::negotiate is called from GstVideoEncoder::set_format, as e.g. vpx encoder does. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1175>
2021-08-17videoutils: add HDR metadata fields to GstVideoCodecStateJakub Adam2-1/+27
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1175>
2021-08-16video-overlay-composition: Allow empty overlay compositionsSebastian Dröge1-12/+9
Allowing to pass NULL to the constructor removes the need to special-case the first rectangle in calling code and generally simplifies application code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1256>
2021-08-16gstrtspconnection: Add support to ignore x-server header replyPer Förlin2-1/+48
When connecting to an RTSP server in tunnled mode (HTTP) the server usually replies with a x-server header. This contains the address of the intended streaming server. However some servers return an "invalid" address. Here follows two examples when it might happen. 1. A server use Apache combined with a separate RTSP process to handle Https request on port 443. In this case Apache handle TLS and connects to the local RTSP server, which results in a local address 127.0.0.1 or ::1 in the x-server reply. This address is returned to the actual RTSP client in the x-server header. The client will receive this address and try to connect to it and fail. 2. The client use a ipv6 link local address with a specified scope id fe80::aaaa:bbbb:cccc:dddd%eth0 and connects via Http on port 80. The RTSP server receives the connection and returns the address in the x-server header. The client will receive this address and try to connect to it "as is" without the scope id and fail. In the case of streaming data from RTSP servers like 1. and 2. it's useful to have the option to simply ignore the x-server header reply and continue using the original address. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1192>
2021-08-13sdp: Avoid using g_memdup() since it is deprecatedNirbheek Chauhan1-3/+1
g_memdup() is deprecated since GLib 2.68 and we want to avoid deprecation warnings with recent versions of GLib. Instead of using g_memdup2(), we can simply use the new gst_buffer_new_memdup() added in 1.19.x Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1254>
2021-08-10glbuffer: support persistent buffer mappingsMatthew Waters6-18/+177
Requires OpenGL 4.4 or EXT_buffer_storage Current mesa exposes GL_ARB_buffer_storage when retrieving the relevant functions returns no-ops and causes failures. Improves throughput of uploads by roughly 30%-60% and download throughput by roughly 10-30% across depending on the exact scenario and hardware. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1191>
2021-08-02examples: win32-videooverlay: Add support for testing ↵Seungha Yang1-1/+208
gst_video_overlay_set_render_rectangle Add keyboard handler to test gst_video_overlay_set_render_rectangle() API for Windows video elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1235>
2021-07-30examples: win32-videooverlay: Use d3d11videosink by defaultSeungha Yang1-1/+1
d3d11videosink was promoted to have primary rank and it's recommended videosink element on Windows Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1235>
2021-07-30tests: appsink: Add reverse stepping test caseSeungha Yang1-0/+84
To demonstrate reverse stepping issue of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/848 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1223>
2021-07-30examples: win32-videooverlay: Add test option for threading scenarioSeungha Yang1-52/+97
Add an option to test the case where window thread and pipeline handling thread are different. Mainly to test the HWND leak fixed by https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2302 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1188>
2021-07-28rtpbasedepayload: remove object locking an extensionMatthew Waters1-3/+0
Doing that is fraught with danger of deadlocks and is not conceptually part of the API contract. The object lock is generally intended for internal-object-use only. If another lock is needed, that should be added separately. This lock was erronously added as part of: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1118 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1233>
2021-07-27gldownload: use the GstGLSyncMeta in all casesMatthew Waters1-8/+8
fixes qmlglsrc ! gldownload ! videoconvert in some cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1232>
2021-07-23glcontext: egl: Stop comparing native surface pointerNicolas Dufresne2-14/+26
This was noticed with wayland, sometimes the newly create native handle can have the same pointer (even though its new). This lead to unwanted errors or crash. Fixes #927 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1231>
2021-07-23glwindow: Add "window-handle-changed" signalNicolas Dufresne1-0/+23
This allow other objects to clear any wrapper object that depends on the previous handle, and properly re-create the new wrappers without having to resort into doing pointer comparison. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1231>
2021-07-23Revert "glwindow: wayland: Skip redoing surfaces if window haven't changed"Nicolas Dufresne1-5/+2
This reverts commit aba6bd7822f4c0f572765bfaada76f454a594317. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1231>
2021-07-22appsrc: serialize custom events with buffers flowGuillaume Desmottes2-23/+137
Application may want to inject events to the pipeline and keep them synchronized with the buffers flow. Fix #247 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1046>
2021-07-22appsink: add API to catch eventsGuillaume Desmottes4-15/+445
There is currently no way for users to receive incoming events from appsink while keeping them properly serialized with the buffers flow. This can be especially useful when application is injecting custom downstream events into the pipeline and needs to know when they reached appsink. Solving this by adding a new signal notifying about new incoming events and a set of action signals and method to pull those events. The API is actually pulling the samples and events all together as they are actually fetched from the same queue. Having a specific API to pull only events would have the side effect of discarding samples (and pulling samples would discard events) making this API not convenient for users. Partially fix #247 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1046>
2021-07-22appsink: factor out dequeue_object()Guillaume Desmottes1-30/+44
No semantic change, will be used to implement new event API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1046>
2021-07-21glwindow: wayland: Skip redoing surfaces if window haven't changedNicolas Dufresne1-2/+5
The problem is that EGLNativeWindowSurface and wl_egl_surface are the same object underneath, so we must recreate both together. As an optimization, the EGLNativeWindowSurface wrapper is only re-created if the window_handle changed. On Mesa, this would cause crash, which will be fixed by: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11979 And will lead to proper errors in the future or on other GL stack. This issue was encounter using a permanent GstGLDisplay after cycling one of multiple independent pipelines through NULL state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1230>