=== release 1.24.9 === 2024-10-30 20:33:30 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.9 2024-09-20 01:44:53 +0200 Jan Alexander Steffens (heftig) * ges/ges-frame-composition-meta.c: ges: Fix name of GESFrameCompositionMeta API type g-ir-scanner 1.82.0 failed with a fatal error due to the wrong namespace. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3800 Part-of: 2024-09-19 12:12:53 +0200 Tim-Philipp Müller * meson.build: Back to development after 1.24.8 Part-of: === release 1.24.8 === 2024-09-19 12:01:21 +0200 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.8 2024-02-16 12:48:59 -0300 Thibault Saunier * ges/ges-discoverer-manager.c: ges: discoverer-manager: Fix race leading to assertion when stopping Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3757 Part-of: 2024-09-02 14:07:38 +0300 Sebastian Dröge * ges/ges-structured-interface.c: ges-structured-interface: Fix memory leak of invalid fields GList Part-of: 2024-08-21 12:33:28 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.7 === release 1.24.7 === 2024-08-21 12:25:15 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.7 2024-07-26 16:00:11 +0200 Edward Hervey * plugins/nle/nlecomposition.c: nlecomposition: Don't leak QoS events Part-of: 2024-07-29 16:48:02 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.6 === release 1.24.6 === 2024-07-29 16:41:37 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.6 2024-06-29 09:52:42 +0200 Edward Hervey nlecomposition: Don't leak atomic rc box * gst_structure_get => increases ref * query_ancestors_position: There are two refs. Part-of: 2024-06-29 09:52:23 +0200 Edward Hervey * plugins/nle/nlecomposition.c: nlecomposition: Don't leak message Part-of: 2024-06-29 09:51:46 +0200 Edward Hervey * ges/ges-track.c: ges-layer: Don't use invalid layers There's a possibility that there are no layers at that priority Part-of: 2024-06-29 09:51:07 +0200 Edward Hervey * ges/ges-discoverer-manager.c: ges-discoverer-manager: Properly initialize/free GRecMutex Fixes small leak of mutex internals Part-of: 2024-06-20 13:02:19 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.5 === release 1.24.5 === 2024-06-20 12:54:15 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.5 2024-05-29 13:51:27 +0300 Tim-Philipp Müller * meson.build: Back to development after 1.24.4 === release 1.24.4 === 2024-05-29 13:44:50 +0300 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.4 2024-04-17 10:23:29 +0200 Edward Hervey * ges/ges-pipeline.c: ges-pipeline: Configure encodebin before linking Modifying the `avoid-reencoding` property of `encodebin` could potentially cause it to reconfigure itself, in which case the source pad will be removed and then re-added. Therefore set that property *before* attempting to link to that pad. Fixes smart-render Part-of: 2024-04-30 00:36:59 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.3 Part-of: === release 1.24.3 === 2024-04-30 00:15:23 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.3 2024-04-17 13:53:21 +0200 Edward Hervey * tools/ges-launcher.c: ges-launcher: Fix for forcing container profiles If the input profile doesn't have a container, it's fine since we are overriding it. Just add the elementary stream to the target container profile Part-of: 2024-04-10 00:04:02 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.2 === release 1.24.2 === 2024-04-09 21:48:55 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.2 2024-03-26 12:28:50 +0000 Tim-Philipp Müller * tests/check/gescpp.cc: * tests/check/meson.build: ges: add check to make sure headers are C++ compiler clean See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3421 Part-of: 2024-03-26 08:42:26 -0300 Thibault Saunier * ges/ges-frame-composition-meta.h: ges: frame-composition-meta: Stop using keyword 'operator' for field in C++ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3421 Part-of: 2024-03-22 01:38:06 +0100 Tim-Philipp Müller * meson.build: Back to development === release 1.24.1 === 2024-03-21 21:47:53 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.1 2024-03-08 20:56:46 +0900 Seungha Yang * ges/ges-asset.c: ges: Fix critical warning GStreamer-CRITICAL **: 20:44:38.256: gst_debug_log_full_valist: assertion 'category != NULL' failed Make sure debug category initialized. Part-of: 2024-03-05 13:45:27 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.24.0 === 2024-03-04 23:51:42 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.24.0 2024-02-27 14:00:04 -0300 Thibault Saunier * ges/ges-frame-composition-meta.h: * ges/ges-smart-video-mixer.c: * ges/ges-track-element.c: * ges/ges-utils.c: * ges/ges-video-source.c: * ges/gesvideoscale.c: * ges/gstframepositioner.c: * ges/gstframepositioner.h: ges: framepositioner: Expose positioning properties as doubles Making it possible to properly handle compositors that have those properties as doubles and handle antialiasing. Internally we were handling those values as doubles in framepositioner, so expose new properties so user can set values as doubles also. This changes the GESFramePositionMeta API but we are still on time for 1.24 Part-of: 2024-02-26 09:27:40 +0100 Edward Hervey * RELEASE: docs: Use Discourse and Matrix as prefered communication channels Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220 === release 1.23.90 === 2024-02-23 18:20:11 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.23.90 2024-02-21 11:58:08 +0530 Nirbheek Chauhan * meson.build: meson: Use cdata.set_quoted() for configuration data Part-of: 2024-02-21 11:26:30 +0530 Nirbheek Chauhan * ges/ges-formatter.c: * meson.build: ges, gst-python: Fix libpython dlopen on macOS First encountered at https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1171#note_2290789 Part-of: 2024-02-21 09:54:22 +0530 Nirbheek Chauhan * ges/ges-formatter.c: * meson.build: ges, gst-python: Rework libpython loading to be relocatable If we don't specify a path for loading, the runtime linker will search for the library instead, which will use the usual mechanisms: RPATHs, LD_LIBRARY_PATH, PATH (on Windows), etc. Also try harder to load a non-devel libpython using INSTSONAME, if available. Part-of: 2024-02-21 08:29:45 +0530 Nirbheek Chauhan * docs/meson.build: * meson.build: * tests/meson.build: meson: Use host_system for the host_machine system This is a convention everywhere else in gstreamer. Part-of: 2024-02-15 16:38:53 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.23.2 === 2024-02-15 15:37:17 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.23.2 2023-12-18 15:39:07 -0500 Xavier Claessens * ges/ges-command-line-formatter.c: structure: Allow STRICT flag only in _serialize_full() The STRICT flag makes _serialize() nullable which is an API break for bindings. Forbid it and add _serialize_full() that accepts it and is properly annotated. Part-of: 2024-02-06 18:09:02 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.23.1 === 2024-02-06 16:37:19 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-editing-services.doap: * meson.build: Release 1.23.1 2024-01-18 18:18:27 -0300 Thibault Saunier * plugins/nle/nlecomposition.c: nlecomposition: Do not forward QoS event while setting up the new stack Otherwise we might end up dropping buffers even before prerolling the sources Part-of: 2024-01-30 17:59:34 -0300 Thibault Saunier * ges/ges-timeline.c: timeline: forward element messages we do not know Part-of: 2023-08-13 11:50:53 -0400 Thibault Saunier * plugins/nle/nlecomposition.c: nlecomposition: Use a bus message to retrieve pipeline position Instead of recursing up, as this will allow to have nested composition run inside auxiliary pipelines. It is a bit cleaner also. Part-of: 2023-08-12 22:07:29 -0400 Thibault Saunier * plugins/nle/nlecomposition.c: nlecomposition: Use a message to check if we need an initialization seek Subtimeline might be in an auxiliary pipeline which make the current recurse up approach not working. Part-of: 2023-08-04 17:57:35 -0400 Thibault Saunier * ges/ges-timeline.c: * ges/ges-track.c: * ges/ges-uri-asset.c: * plugins/nle/nleobject.c: ges: Keep internal stream selection messages internally Timeline StreamCollection are very specific to inner working of nested timelines and should not interfere with the usual stream selection process and are now handled as element messages. Stream selection inside `nleobject` need to be handled internally by the application or GES itself so we should just drop all those as they would interfere and fail if they are exposed to other elements. Part-of: 2023-08-04 16:03:08 -0400 Thibault Saunier * plugins/ges/gesdemux.c: * plugins/nle/nleobject.c: * plugins/shared/nlegesplugin.h: nle: Use a message based mechanism to detect parent nleobject duration Recursing up is pretty ugly and will fail when we start using ancillary pipelines for sources in nle, using a message/event based mechanism is a common pattern that is much cleaner. Part-of: 2024-01-29 13:52:46 -0300 Thibault Saunier * ges/ges-clip.c: ges: clip: doc: Add a reference for more information about effect index Part-of: 2024-01-28 11:15:01 +0000 Tim-Philipp Müller * meson.build: meson: bump Meson requirement to >= 1.1 for all modules Part-of: 2023-10-03 14:45:35 +0100 Philippe Normand * plugins/ges/gesbasebin.c: gesbasebin: Fix a couple leaks Also clean-up unused queue when we failed to link a track to it. Part-of: 2023-08-21 10:04:57 -0400 Thibault Saunier * ges/ges-effect-asset.c: * ges/ges-track-element.c: ges: track-element: Fix FIXME about handling NULL factories to add properties Part-of: 2023-06-22 22:59:50 -0400 Thibault Saunier * tools/utils.c: ges: launch: Enhance the way we detect explicitly added track When using subtimeline serialized with the command line formatter syntax, we had a false positive when detecting if the user had explicitly specified tracks with the `+track` syntax. Verifying the presence of `+track` explicitly in the `args` array ensure the `+track` is not for a subtimeline. Part-of: 2023-06-22 22:22:45 -0400 Thibault Saunier * ges/ges-pipeline.c: * ges/ges-timeline.c: * ges/gstframepositioner.c: ges: Minor debug enhancements Part-of: 2023-05-25 18:14:59 -0400 Thibault Saunier * ges/ges-clip.c: ges: Minor typo fix Part-of: 2023-08-04 16:05:34 -0400 Thibault Saunier * plugins/nle/nlecomposition.c: nlecomposition: Pass object to debug messages in more places Part-of: 2023-11-22 10:17:43 +0000 Philippe Normand * ges/ges-effect.c: ges: effect: Report asset request errors Part-of: 2023-11-29 12:15:36 +0000 Philippe Normand * ges/ges-asset.c: ges-asset: Fix typo in warning message Part-of: 2023-11-29 12:14:23 +0000 Philippe Normand * ges/ges-asset.c: ges-asset: Log asset ids in ges_asset_request Part-of: 2023-11-29 10:42:27 +0000 Philippe Normand * ges/ges-asset.c: ges-asset: Propagate errors from GInitable Part-of: 2023-11-28 17:33:48 +0000 Philippe Normand * ges/ges-effect-asset.c: ges-effect: Chain-up to parent constructed vfunc Part-of: 2023-11-22 10:42:07 +0000 Philippe Normand * ges/ges-uri-clip.c: ges: uri-clip: Set error on invalid URI's in check_id The _check_id function signature was incomplete and the last GError argument was ignored instead of being properly used. Part-of: 2024-01-08 11:26:10 -0300 Thibault Saunier * tools/ges-launcher.c: ges: launch: Print the timeline after we set its state to READY Part-of: 2024-01-08 11:21:18 -0300 Thibault Saunier * ges/ges-discoverer-manager.c: ges: discoverer-manager: Use a recursive mutex to protect the discoverers So we can have subtimelines specified in `ges-launch` without deadlocking Part-of: 2023-10-23 11:23:14 -0300 Thibault Saunier * tools/ges-launcher.c: ges: launcher: Commit timeline before setting state Ensuring that all operations related to commit are properly performed Part-of: 2023-06-20 16:36:38 -0400 Thibault Saunier * ges/ges-structured-interface.c: ges: launcher: Make +effect stack effects from source to last effect added Until now when doing `+test-clip blue +effect effect1 + effect effect2` leaded to the following pseudo pipeline videotestsrc ! effect2 ! effect1 given the `ges-launch` syntax this is quite unexpected and this needed fixing Part-of: 2023-12-05 09:08:10 -0300 Thibault Saunier * plugins/ges/gesdemux.c: ges: Add scaler in the 'gap filling' clip on too short nested timelines So we can respect user request on source that can scale Part-of: 2023-07-14 09:08:21 -0400 Thibault Saunier * ges/ges-track-element.c: ges: track-element: Set the nleobject as soon as possible Some subclasses might need to have access to it when configuring their element Part-of: 2023-11-28 10:18:37 -0300 Thibault Saunier * ges/ges-frame-composition-meta.h: ges: composition-meta: Enhance documentation Part-of: 2023-06-20 16:01:37 -0400 Thibault Saunier * ges/ges-clip.c: * ges/ges-effect.c: * ges/ges-internal.h: * ges/ges-smart-video-mixer.c: * ges/ges.c: * ges/gesvideoscale.c: * ges/gstframepositioner.c: * ges/meson.build: ges: Implement a `gesvideoscale` bin This allows user to be in control of when scaling happens in the pipeline. It can be plugged as an effect and scaling will be forced to happen in the effect instead of in the compositor. Without this, it would not be possible for users to, for example, crop a video source before scaling to the target source size. Part-of: 2024-01-08 11:24:17 -0300 Thibault Saunier * ges/ges-pipeline.c: ges: pipeline: Port to encodebin2 This way we can use muxing sinks Part-of: 2023-12-21 18:25:07 -0300 Thibault Saunier * plugins/nle/nlecomposition.c: nlecomposition: Simplify the way we ensure stream-start is sent stream-start should always be sent once at the beginning of the stream, so we should make sure it is pushed at the very beginning and after resets (going back to READY). Part-of: 2023-11-08 09:47:30 -0300 Thibault Saunier * ges/ges-audio-source.c: ges: Expose audioconvert mix-matrix property in audio sources Part-of: 2023-12-05 09:28:25 +0100 Guillaume Desmottes * meson.build: meson: update PACKAGE_BUGREPORT Some were still using pre-monorepo links. Part-of: 2023-08-18 10:31:43 -0400 Thibault Saunier * ges/ges-asset.c: ges: asset: Avoid trying to load twice the same asset When requesting an asset from different threads we had no guarantee that during the time we lookup an asset (which didn't exist) and the time we create the asset with the same type/ID another thread could not end up doing the same thing. In turns we could end up with 2 different threads loading the exact same asset and the cache basically forgetting about one of the entries meaning that the user would never get notified about one of those being ready to be used. There was also the case when requesting "sync" where the user was requesting an asset while another thread is creating it so it was still in "ASSET_INITIALIZING" state, meaning that the returned asset would be NULL which would be considered as an error in apps. Since the cache lock is recursive we can just take it during the whole ges_asset_request_async call and have other method still hold it. Part-of: 2023-11-13 16:14:01 +0000 Philippe Normand * docs/sitemap.txt: * ges/ges-frame-composition-meta.c: * ges/ges-frame-composition-meta.h: * ges/ges-smart-video-mixer.c: * ges/ges.h: * ges/gstframepositioner.c: * ges/gstframepositioner.h: * ges/meson.build: ges: Expose FrameCompositionMeta in public API Knowing the positioning and size of each frame in the composition can help applications optimize their rendering pipeline. Part-of: 2023-10-12 12:46:27 -0300 Thibault Saunier * ges/ges.h: ges: Include ges-discoverer-manager.h in ges.h Part-of: 2023-10-24 06:10:53 +0300 Jordan Petridis * meson.build: meson: Workaround python 3.12 warning When we are building againt python 3.12, ignore redundant-decls warning that will come from the python headers. ``` /usr/include/python3.12/longobject.h:10:26: warning: redundant redeclaration of ‘PyLong_Type’ [-Wredundant-decls] 10 | PyAPI_DATA(PyTypeObject) PyLong_Type; | ^~~~~~~~~~~ ``` https://github.com/python/cpython/issues/106560 Part-of: 2023-11-07 19:33:27 -0300 Thibault Saunier * ges/ges-discoverer-manager.c: ges: discoverer-manager: Fix race when freeing unused discoverer When a new discoverer was created for a thread so discovery could recurse we could end up removing the wrong discoverer info from the cache leading to freeing it while it was still discovering URIS, which lead to the following assertion: ``` bt Thread 1 (Thread 0x7fcc2e1a5840 (LWP 1855496)): #0 __pthread_kill_implementation (threadid=, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007fcc2e9d98a3 in __pthread_kill_internal (signo=6, threadid=) at pthread_kill.c:78 #2 0x00007fcc2e9878ee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007fcc2e96f8ff in __GI_abort () at abort.c:79 #4 0x00007fcc2ed80056 in g_assertion_message (domain=domain@entry=0x7fcc2f2c19f9 "GES", file=file@entry=0x7fcc2f2dfd68 "../subprojects/gst-editing-services/ges/ges-discoverer-manager.c", line=line@entry=20, func=func@entry=0x7fcc2f2e0030 <__func__.7> "ges_discoverer_data_free", message=message@entry=0x12dab70 "assertion failed: (data->n_uri == 0)") at ../glib/gtestutils.c:3497 #5 0x00007fcc2ede1d87 in g_assertion_message_expr (domain=domain@entry=0x7fcc2f2c19f9 "GES", file=file@entry=0x7fcc2f2dfd68 "../subprojects/gst-editing-services/ges/ges-discoverer-manager.c", line=line@entry=20, func=func@entry=0x7fcc2f2e0030 <__func__.7> "ges_discoverer_data_free", expr=expr@entry=0x7fcc2f2dfcf1 "data->n_uri == 0") at ../glib/gtestutils.c:3523 #6 0x00007fcc2f2bd5c5 in ges_discoverer_data_free (data=0x160e430) at ../subprojects/gst-editing-services/ges/ges-discoverer-manager.c:20 #7 0x00007fcc2ed8509d in g_atomic_rc_box_release_full (clear_func=0x7fcc2f2bd4f0 , mem_block=0x160e430) at ../glib/garcbox.c:355 #8 g_atomic_rc_box_release_full (mem_block=0x160e430, clear_func=0x7fcc2f2bd4f0 ) at ../glib/garcbox.c:338 #9 0x00007fcc2eda6809 in g_hash_table_remove_internal (notify=1, key=0x10448a0, hash_table=0x12e0be0) at ../glib/ghash.c:1776 #10 g_hash_table_remove (hash_table=0x12e0be0, key=0x10448a0) at ../glib/ghash.c:1804 #11 0x00007fcc2f2bd95f in cleanup_discoverer_cb (discoverer_data=discoverer_data@entry=0x13e7000) at ../subprojects/gst-editing-services/ges/ges-discoverer-manager.c:379 #12 0x00007fcc2edbc759 in g_timeout_dispatch (source=0x15a6060, callback=0x7fcc2f2bd910 , user_data=0x13e7000) at ../glib/gmain.c:5121 #13 0x00007fcc2edbbe1c in g_main_dispatch (context=0x1044700) at ../glib/gmain.c:3476 #14 g_main_context_dispatch_unlocked (context=0x1044700) at ../glib/gmain.c:4284 #15 0x00007fcc2ee16d78 in g_main_context_iterate_unlocked.isra.0 (context=0x1044700, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../glib/gmain.c:4349 #16 0x00007fcc2edbd407 in g_main_loop_run (loop=0x12ccbd0) at ../glib/gmain.c:4551 #17 0x00007fcc2f285791 in ges_uri_clip_asset_request_sync (uri=uri@entry=0x12d7980 "file:///var/home/phil/gstreamer/build/subprojects/gst-integration-testsuites/logs/ges/scenarios/check_seek_on_very_deeply_nested_timeline/nested_timeline_depth6.xges", error=error@entry=0x7fff499015a8) at ../subprojects/gst-editing-services/ges/ges-uri-asset.c:688 #18 0x00007fcc2f28949b in ges_project_create_asset_sync (project=0x12c1c70, id=id@entry=0x12d7980 "file:///var/home/phil/gstreamer/build/subprojects/gst-integration-testsuites/logs/ges/scenarios/check_seek_on_very_deeply_nested_timeline/nested_timeline_depth6.xges", extractable_type=extractable_type@entry=Python Exception : value has been optimized out , error=error@entry=0x7fff499015a8) at ../subprojects/gst-editing-services/ges/ges-project.c:959 #19 0x00007fcc2f2ba484 in _ges_get_asset_from_timeline (timeline=timeline@entry=0x12bdc80, type=type@entry=Python Exception : value has been optimized out , id=id@entry=0x12d7980 "file:///var/home/phil/gstreamer/build/subprojects/gst-integration-testsuites/logs/ges/scenarios/check_seek_on_very_deeply_nested_timeline/nested_timeline_depth6.xges", error=error@entry=0x7fff49901728) at ../subprojects/gst-editing-services/ges/ges-structured-interface.c:540 #20 0x00007fcc2f2ba9b2 in _ges_add_clip_from_struct (timeline=0x12bdc80, structure=0x157f690, error=0x7fff49901728) at ../subprojects/gst-editing-services/ges/ges-structured-interface.c:697 #21 0x00007fcc2f2b6a9d in _validate_action_execute (scenario=0x15f7620, action=0x157f500) at ../subprojects/gst-editing-services/ges/ges-validate.c:922 #22 0x00007fcc2eef5c9c in gst_validate_execute_action (action=0x157f500, action_type=0x13e0500) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2541 #23 gst_validate_execute_action (action_type=0x13e0500, action=0x157f500) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2507 #24 0x00007fcc2eef8ce3 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2782 #25 0x00007fcc2eef9dee in _action_set_done (action=0x157efb0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #26 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157efb0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #27 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157efb0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #28 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #29 0x00007fcc2eef9dee in _action_set_done (action=0x157ea60) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #30 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157ea60, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #31 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157ea60) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #32 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #33 0x00007fcc2eef9dee in _action_set_done (action=0x157e510) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #34 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157e510, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #35 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157e510) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #36 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #37 0x00007fcc2eef9dee in _action_set_done (action=0x157df10) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #38 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157df10, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #39 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157df10) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #40 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #41 0x00007fcc2eef9dee in _action_set_done (action=0x157d9e0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #42 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157d9e0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #43 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157d9e0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #44 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #45 0x00007fcc2eef9dee in _action_set_done (action=0x157d3e0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #46 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157d3e0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #47 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157d3e0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #48 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #49 0x00007fcc2eef9dee in _action_set_done (action=0x157cf70) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #50 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157cf70, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #51 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157cf70) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #52 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #53 0x00007fcc2eef9dee in _action_set_done (action=0x157cb00) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #54 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157cb00, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #55 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157cb00) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #56 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #57 0x00007fcc2eef9dee in _action_set_done (action=0x157c690) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #58 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157c690, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #59 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157c690) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #60 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #61 0x00007fcc2eef9dee in _action_set_done (action=0x157c220) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #62 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x157c220, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #63 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x157c220) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #64 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #65 0x00007fcc2eef9dee in _action_set_done (action=0x15233c0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #66 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x15233c0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #67 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x15233c0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #68 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #69 0x00007fcc2eef9dee in _action_set_done (action=0x1522f80) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #70 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x1522f80, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #71 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x1522f80) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #72 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #73 0x00007fcc2eef9dee in _action_set_done (action=0x1522ae0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #74 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x1522ae0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #75 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x1522ae0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #76 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #77 0x00007fcc2eef9dee in _action_set_done (action=0x1522190) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #78 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x1522190, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #79 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x1522190) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #80 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #81 0x00007fcc2eef9dee in _action_set_done (action=0x1520ea0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6368 #82 0x00007fcc2edbd26d in g_main_context_invoke_full (context=0x1044700, priority=200, function=0x7fcc2eef9ab0 <_action_set_done>, data=0x1520ea0, notify=0x7fcc2eeea5d0 ) at ../glib/gmain.c:6533 #83 0x00007fcc2eef6cf2 in gst_validate_action_set_done (action=0x1520ea0) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:6411 #84 0x00007fcc2eef9018 in execute_next_action_full (scenario=, message=) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2803 #85 0x00007fcc2edbc759 in g_timeout_dispatch (source=0x14b6340, callback=0x7fcc2eef99c0 , user_data=0x15f7620) at ../glib/gmain.c:5121 #86 0x00007fcc2edbbe1c in g_main_dispatch (context=0x1044700) at ../glib/gmain.c:3476 #87 g_main_context_dispatch_unlocked (context=0x1044700) at ../glib/gmain.c:4284 #88 0x00007fcc2ee16d78 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x1044700, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../glib/gmain.c:4349 #89 0x00007fcc2edb9a93 in g_main_context_iteration (context=context@entry=0x1044700, may_block=may_block@entry=1) at ../glib/gmain.c:4414 #90 0x00007fcc2ec14c3d in g_application_run (application=application@entry=0x1042ab0, argc=argc@entry=4, argv=argv@entry=0x7fff499031e8) at ../gio/gapplication.c:2577 #91 0x0000000000405dfd in real_main (argv=0x7fff499031e8, argc=4) at ../subprojects/gst-editing-services/tools/ges-launch.c:38 #92 main (argc=4, argv=0x7fff499031e8) at ../subprojects/gst-editing-services/tools/ges-launch.c:56 ``` Part-of: 2023-11-02 17:52:52 +0000 Philippe Normand * ges/ges-discoverer-manager.c: ges: discoverer-manager: Use appropriate key hash function Part-of: 2023-11-06 09:47:04 +0000 Thibault Saunier * ges/ges-discoverer-manager.c: * ges/ges-internal.h: * ges/ges-utils.c: ges: discoverer-manager: Support for delayed clean-up of discoverers The manager keeps track of one discoverer per thread and in large applications with hundreds of threads this can significantly increase memory pressure. So we need to periodically clean-up the unused discoverers. Part-of: 2023-11-01 15:11:41 +0000 Philippe Normand * ges/ges-timeline.c: ges: timeline: Fix message leaks Part-of: 2023-06-15 17:35:57 -0400 Thibault Saunier * ges/ges-discoverer-manager.c: ges: Expose GESDiscovererManager::source-setup Part-of: 2023-06-22 23:19:05 -0400 Thibault Saunier * ges/ges-discoverer-manager.c: ges: discoverer-manager: Allow recursing discovery When using deeply nested timelines with the `ges:` protocol the formatters ends up trying to do discovery from the same thread current discovery happens, leading to infinite freeze as GstDiscoverer can't run several discoveries at the same time. By ensuring that when calling `gst_discoverer_discover_uri_async` no `GstDiscoverer` is set as "thread discoverer" we know that another discoverer will be created if discovery recurses, effectively removing the freeze. Part-of: 2023-11-02 00:03:28 +0900 Seungha Yang * meson.build: meson: Fix MSVC build with GST_DISABLE_GST_DEBUG MSVC does not understand Wno-unused Part-of: 2023-10-25 14:17:03 +0100 Philippe Normand * ges/ges-uri-asset.c: ges-uri-asset: Fix GESDiscovererManager leaks Part-of: 2022-04-06 12:56:30 +0100 Tim-Philipp Müller * meson.build: meson: Bump GLib requirement to >= 2.64 This includes fixes to make GstBus watches non-racy. Part-of: 2023-10-13 13:53:16 +0100 Tim-Philipp Müller * COPYING: * COPYING.LIB: gst-editing-services: update COPYING to LGPL v2.1 Part-of: 2023-06-22 22:23:48 -0400 Thibault Saunier * ges/ges-internal.h: * ges/ges-project.c: * ges/ges-timeline.c: ges: project: Start making MT safe where needed Formatters might call "loaded" from the `gessrc` streaming thread meaning that the `->formatters` field need to be protected. Several other APIs are called from gesbasedemux, in some radom thread, so we should ensure that this is all MT. safe, and the API makes it simple. Co-authored-by: Philippe Normand Part-of: 2023-09-16 17:21:16 +0200 Michiel Westerbeek * ges/ges-asset.c: ges: decreased log level for missing ->init method Part-of: 2023-09-11 00:41:22 +0100 Tim-Philipp Müller * tools/meson.build: ges: tools: fix msvc compiler warning about G_LOG_DOMAIN redefinition cl: Command line warning D9025: overriding '/DG_LOG_DOMAIN="GES"' with '/UG_LOG_DOMAIN' Part-of: 2023-09-11 00:38:48 +0100 Tim-Philipp Müller * tools/meson.build: ges: tools: fix duplicate ges_tools definition in meson.build Part-of: 2023-09-11 00:24:03 +0100 Tim-Philipp Müller * tools/ges-launcher.c: ges: launcher: fix compiler warning with MSVC 2022 tools/ges-launcher.c(315): warning C4133: 'function': incompatible types - from 'GESTrackType *' to 'guint *' Part-of: 2023-09-06 10:58:17 -0300 Thibault Saunier * ges/ges-structured-interface.c: ges: Fix setting keyframes from ges-launch There is no registered GValue conversion function from string to double (on purpose) so we need to handle that case appropriately. Part-of: 2023-07-05 18:46:25 -0600 Olivier Crête * scripts/gen-changelog.py: gst-omx: Retire the whole package The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it. Part-of: 2023-07-12 09:27:22 +0530 Nirbheek Chauhan * tests/check/meson.build: meson: Always use forward slashes in defines with paths Fixes the following build failure on MSYS2: ``` ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking': ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U 107 | g_object_set (G_OBJECT (src), "location", TESTFILE, NULL); | ^ ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c' ``` Due to: `-DTESTFILE=\"C:\\Users\\Administrator\[...]` https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733 Part-of: 2021-05-01 16:52:22 -0400 Doug Nazar * ges/ges-validate.c: ges: validate: Use correct types when getting structure values From https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/247 Part-of: 2021-05-01 16:50:11 -0400 Doug Nazar * tests/check/ges/layer.c: * tests/check/ges/project.c: * tests/check/ges/test-utils.h: * tests/check/nle/nlecomposition.c: * tests/check/nle/tempochange.c: ges: tests: Use correct variable types when setting properties From https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/247 Part-of: 2023-07-05 14:23:50 -0400 Thibault Saunier * plugins/nle/nlecomposition.c: nle: composition: Avoid running query before being constructed `gst_pad_create_stream_id` runs a URI query on the element which triggers traces for not constructed objects which fails in rust tracers as object should have names in all traces. Part-of: 2023-07-05 14:22:59 -0400 Thibault Saunier * ges/ges-pipeline.c: ges: pipeline: Avoid setting state before being constructed It means setting state which triggers traces for not constructed objects which fails in rust tracers as object should have names in all traces. Part-of: 2023-06-17 07:40:42 -0400 Thibault Saunier * ges/ges-internal.h: * ges/ges-timeline.c: * ges/ges-track.c: * ges/ges-uri-source.c: ges: Add support for gessrc as subtimeline element Until now we have always had `gesdemux` as subtimeline elements, the behavior when subtimelines are sources is different so we need to support that. Part-of: 2023-06-17 07:59:34 -0400 Thibault Saunier * plugins/ges/gesbasebin.c: ges: basebin: Handle removed tracks Cleaning up the pads and elements linked to that track. Part-of: 2023-06-15 17:38:30 -0400 Thibault Saunier * plugins/ges/gessrc.c: gessrc: Remember the URI set by user Part-of: 2023-06-15 17:38:09 -0400 Thibault Saunier * plugins/ges/gesbasebin.c: gessrc: Remove timeline from self when disposing Part-of: 2023-06-26 12:01:01 +0200 Alicia Boya García * tests/check/python/test_assets.py: validate: Fix warning when importing GstPbutils PyGObject triggers warnings when importing modules without an explicit version request. Part-of: 2023-06-23 12:29:04 +0200 Alicia Boya García * ges/ges-timeline-element.c: ges-timeline-element: Fix refcount bug in "timeline" and "parent" properties ges-timeline-element property getter handler was using g_value_take_object() with internal pointers of the element as arguments, instead of g_value_set_object(). g_value_take_object() moves the ownership of the reference; hence, when reading "timeline" the reference ownership of timeline is moved away from the ges-timeline-element and into the GValue. Since GValues are temporaries that are often discarded quickly after, this can easily lead to a double free. This was causing gst-editing-services / pythontests to crash when running TestTrackElements.test_ungroup_regroup() because of an innocent read of `clip2.props.timeline` around the end of the test. Part-of: 2023-06-21 16:30:52 +0200 Alicia Boya García * tests/check/nle/nlesource.c: * tests/check/nle/seek.c: * tests/check/nle/tempochange.c: tests: nle: Call ges_init() only inside test cases Some NLE tests were calling ges_init() from the test suite initialization function. This was causing them to deadlock when running with glib 2.76.3. ges_init() causes a GThreadPool to be initialized. Even if GES at this point doesn't request any thread to be created, since glib 2.63.4+ (see https://gitlab.gnome.org/GNOME/glib/-/commit/8aeca4fa647bfd0f35c4a86b1e6ca6e955519ca5) the first time a GThreadPool is initialized a "pool-spawner" thread is created, which is later used by g_thread_pool_push(). The default behavior of the GStreamer check tests is to fork for every test case. This is not safe if any thread has been created at this point. In this particular case, GThreadPool preserves the state that says a "pool-spawner" thread has been created, and will have access to its mutex and condition variable, but their queues will have different contents as the memory has been forked. In consequence, calls to g_thread_pool_push() will deadlock. The deadlock will not occur if running the tests with CK_FORK=no. This patch modifies the affected tests to only call ges_init() from inside the test cases, fixing the deadlock. Part-of: 2023-06-21 16:24:12 +0200 Alicia Boya García * tests/check/nle/complex.c: * tests/check/nle/nlecomposition.c: * tests/check/nle/nleoperation.c: * tests/check/nle/nlesource.c: * tests/check/nle/seek.c: * tests/check/nle/simple.c: * tests/check/nle/tempochange.c: tests: nle: Set sync=FALSE on sinks A significant portion of the NLE test suite was often timing out due to the tests taking way longer than necessary because the sinks were synchronizing to the clock, which is the default behavior for fakevideosink and fakeaudiosink. Notable was the case of nleoperation.c:test_pyramid_operations, that ran through a 10 second stream twice. As the default timeout is 20 seconds, this made the test flaky. Part-of: 2021-05-05 12:26:16 +0200 Stéphane Cerveau * tools/ges-launcher.c: ges-launcher: add ignore EOS option Part-of: 2023-03-14 11:49:57 +0100 Stéphane Cerveau * tools/meson.build: tools: add bad/ges/omx tools to gst_tools In static mode, these tools must be built after the gstreamer-full library to use the symbol gst_init_static_plugins. Part-of: 2023-03-07 14:05:54 +0100 Stéphane Cerveau * examples/meson.build: * meson.build: * tests/meson.build: gstreamer-full: add full static support Allow a project to use gstreamer-full as a static library and link to create a binary without dependencies. Introduce the option 'gst-full-target-type' to select the build type, dynamic(default) or static. In gstreamer-full/static build configuration gstreamer (gst.c) needs the symbol gst_init_static_plugins which is defined in gstreamer-full. All the tests and examples are linking with gstreamer but the symbol gst_init_static_plugins is only defined in the gstreamer-full library. gstreamer-full can not be built first as it needs to know what plugins will be built. One option would be to build all the examples and tests after gstreamer-full as the tools. Disable tools build in subprojects too as it will be built at the end of build process. Part-of: 2023-04-18 17:19:16 -0400 Thibault Saunier * tests/check/ges/effects.c: ges: tests: Use assert_equals_int where it makes sense Part-of: 2023-04-28 17:55:45 +0200 Thibault Saunier * tools/ges-launcher.c: ges: launcher: Never put sinks in a GstPipeline Part-of: 2023-05-09 09:25:25 +0300 Sebastian Dröge * ges/ges-discoverer-manager.c: ges: discoverer-manager: Don't mark signals as action signals Part-of: 2023-05-09 09:24:40 +0300 Sebastian Dröge * ges/ges-discoverer-manager.c: ges: discoverer-manager: Mark `discovered` signal error parameter as nullable Part-of: 2023-02-08 16:50:15 -0300 Thibault Saunier * tests/check/python/test_assets.py: ges: Add test for the newly added DiscovererManager object Making pep8 happy on the way Part-of: 2023-02-07 17:01:11 -0300 Thibault Saunier * ges/ges-discoverer-manager.c: * ges/ges-discoverer-manager.h: * ges/ges-internal.h: * ges/ges-types.h: * ges/ges-uri-asset.c: * ges/ges-uri-asset.h: * ges/ges-uri-clip.c: * ges/meson.build: ges: Implement a new GESDiscovererManager object Allowing better control over the way discovery happens and allowing us to expose a proper API. This also adds the potential of implementing more multi-threaded discovery in a clean way in the future. This allows us to cleanly expose the new GstDiscoverer::load-serialize-info signal. Part-of: 2023-03-19 15:35:29 -0300 Thibault Saunier * docs/meson.build: doc: Avoid shelling out to hotdoc to generate plugins config files Part-of: 2022-08-31 14:15:16 -0400 Thibault Saunier * ges/meson.build: gir: Checkout all .gir files and check that they are updated on the CI Part-of: 2023-04-18 13:03:00 +0300 Sebastian Dröge * ges/ges-base-xml-formatter.c: ges: base-xml-formatter: Don't pass non-GObject pointers to GST_DEBUG_OBJECT Part-of: 2023-03-15 18:57:46 +0000 Tim-Philipp Müller * ges/ges-pipeline.c: * ges/ges-source.c: * ges/ges-timeline.c: * tests/check/ges/clip.c: * tools/ges-launcher.c: ges: re-indent with GNU indent 2.2.12 Part-of: 2023-02-13 09:05:45 -0300 Thibault Saunier * docs/meson.build: * meson.build: meson: Cleanup and avoid installing python bindings if python is not found Part-of: 2021-09-20 17:20:44 -0300 Thibault Saunier * bindings/python/meson.build: * meson.build: meson: Use python module to install override files Part-of: 2023-02-16 17:27:43 +0100 Mathieu Duponchelle * tools/ges-launcher.c: ges-launcher: slight clean up of _set_rendering_details Single exit point, ges_printerr, never g_error Part-of: 2023-02-16 00:44:04 +0100 Mathieu Duponchelle * tools/ges-launcher.c: * tools/utils.h: ges-launcher: allow overriding container profile When constructing an output profile using --profile-from, it is useful to be able to override the top level container profile. Expose a --container-profile option that applies as an override after other methods for constructing an output profile have run. If no other method was used, this will result in an empty top level container. Part-of: 2023-02-15 22:22:13 -0300 Thibault Saunier * ges/ges-uri-asset.c: uri-asset: Don't create AudioSource asset for unknown track types And just skip them as we can't do anything else with them right now Part-of: 2023-02-15 22:35:23 +0000 Luke McGartland * ges/ges-uri-asset.c: Update subprojects/gst-editing-services/ges/ges-uri-asset.c Part-of: 2023-02-15 15:37:22 +0100 Mathieu Duponchelle * ges/ges-source.c: ges-source: make sure internal decodebin doesn't get seeked too early When uridecodebin exposes pads for its streams, we immediately ghost the relevant (selected) one and let composition send a seek as soon as a buffer is probed. This means that sometimes uridecodebin is still linking elements internally (for non-selected streams) and sees flush events travel down the elements it is still busy trying to link / forward sticky events to. This causes all sorts of nasty issues, which can be avoided by simply blocking all data flow from the source until no-more-pads has been emitted by uridecodebin (or whatever sub_element is wrapped). Part-of: 2023-02-15 15:33:39 +0100 Mathieu Duponchelle * ges/ges-source.c: ges-source: do not emit no-more-pads on child element This most likely never caused any issues as we don't connect to no-more-pads in the first place, and the element isn't directly exposed to the user, but emitting it makes no sense, and we are actually going to connect to no-more-pads in a subsequent commit. The call was added in 86b893e54cadde01e025e5876fa666f5d889f9ea, a patch by me in 2013, I have no idea why but I probably didn't have a firm grasp on what I was doing then. Part-of: 2023-01-24 20:22:28 +0000 Tim-Philipp Müller * ges/ges-asset.c: * ges/ges-base-xml-formatter.c: * ges/ges-container.c: * ges/ges-layer.c: * ges/ges-meta-container.c: * ges/ges-project.c: * ges/ges-smart-adder.c: * ges/ges-timeline-element.c: * ges/ges-track.c: * ges/ges-xml-formatter.c: * tests/check/ges/test-utils.c: ges: drop use of GSlice allocator Part-of: 2023-01-24 20:21:40 +0000 Tim-Philipp Müller * plugins/nle/nlecomposition.c: * plugins/nle/nleghostpad.c: ges: nle: drop use of GSlice allocator Part-of: 2023-01-31 21:38:09 -0700 James Hilliard * meson.build: Fix gstreamer-validate-1.0 dependency name The gst-devtools project generates gstreamer-validate-1.0.pc, this must match the dependency in gst-editing-services for detection to work properly. Fixes: Run-time dependency gst-validate-1.0 found: NO (tried pkgconfig and cmake) Part-of: 2023-01-23 23:04:53 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.22.0 ===