Commit graph

47 commits

Author SHA1 Message Date
Henry Wilkes 1cc5221d49 pipeline: don't link tracks unnecessarily
Unless the pipeline is in certain modes, we do not want to try and link
every track. The previous debug message implied this, but the method did
not actually end early.
Also, we always end early if we receive a track that is neither video
nor audio.
2020-03-05 17:04:51 -03:00
Henry Wilkes 2f2d57ff2b docs: update GESPipeline 2020-03-05 17:04:51 -03:00
Thibault Saunier eabcaa1a56 pipeline: Ensure that encodebin enforces a single segment sent to encoders 2019-12-05 14:23:04 -03:00
Thibault Saunier 5234885c8a pipeline: Be smarter about how we match encoding profiles and tracks 2019-10-21 10:25:25 +00:00
Thibault Saunier 99cee9218b ges: Deprecate ges_play_sink_convert_frame
It has nothing to do in our namespace/API
2019-05-13 17:00:00 -04:00
Thibault Saunier 45c2d81a4e pipeline: Plug pad leak 2019-04-15 17:11:48 -04:00
Thibault Saunier c596f80c63 nlecomposition: Get overall pipeline position by recursing up
And handle NLEComposition inside NLEComposition

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/39
2019-01-29 00:06:32 +00:00
Seungha Yang 3b0da0611c pipeline: Ensure timeline state to be NULL on dispose
The GESTimeline's state might not be synced with parent
2019-01-09 20:25:24 +09:00
Tim-Philipp Müller a7347ca8f7 WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC
Export GES library API in headers when we're building the
library itself, otherwise import the API from the headers.

This fixes linker warnings on Windows when building with MSVC.

Fix up some missing config.h includes when building the lib which
is needed to get the export api define from config.h

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/42
2018-12-15 00:14:51 +00:00
Thibault Saunier acc294bf5a ges: Check the thread from which our API is used
And add some missing API guards
2018-11-03 08:27:58 -03:00
Thibault Saunier 13b8c8554d Update for g_type_class_add_private() deprecation in recent GLib 2018-09-05 22:57:27 -03:00
Thibault Saunier 3be03c13c1 pipeline: Properly error out when linking fails
In the rendering case we were getting random issues and often the
pipeline was not be able to preroll as some pad were not linked inside
encodebin.

https://bugzilla.gnome.org/show_bug.cgi?id=795422
2018-04-20 19:24:56 -03:00
Thibault Saunier 561fcfb576 pipeline: Update caps only when rendering as comment suggests
We used to update caps for any more because of missing brackets.
2018-04-20 19:24:56 -03:00
Thibault Saunier ce4d2d8102 pipeline: Allow up to 2 seconds queueing in the playsink video queue
In playsink the default video queue max size is 3 buffers, which is
sometimes not enough for our use case.

Allow up to 2 seconds of buffered data, giving us more time to do
the transition between clips, and thus avoiding dropping frames in
the sink when bringing up new clip takes too much time.

Differential Revision: https://phabricator.freedesktop.org/D1854
2017-08-19 23:21:57 -03:00
Thibault Saunier 2efebc8587 pipeline: Make sure tracks are unlinked on NULL->NULL state changes 2017-07-26 19:25:46 -04:00
Thibault Saunier c37fac7c27 Enhance some pad linking issue debug logging. 2017-07-26 19:25:44 -04:00
Corentin Noël 1a4c4d3ac0 Tiny fixes in the documentation
https://bugzilla.gnome.org/show_bug.cgi?id=780854
2017-04-02 21:25:38 -03:00
Thibault Saunier 35256b47ff docs: Port all docstring to gtk-doc markdown 2017-03-08 18:13:48 -03:00
Thibault Saunier e1f6b9fefb validate: Start also testing jpeg encoding 2016-07-29 15:57:05 -04:00
Aurélien Zanelli 813c4b4fb7 ges: add some g-i annotations according to documentation
Mainly (transfer xxx) and (nullable). Also fix some typo.

https://bugzilla.gnome.org/show_bug.cgi?id=766459
2016-05-14 20:36:07 -03:00
Justin Kim 0b900bddc9 pipeline: don't leak GstPad
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-24 09:42:08 +02:00
Thibault Saunier 6a0ac89009 track-element: Add method to remove control binding
API:
  ges_track_element_remove_control_binding
2015-07-03 11:20:54 +02:00
Thibault Saunier 938aaaef24 ges: Do not add a final gap at the end of track while rendering
It is not correct to force a black frame at the end of the rendered
video and it also leads to rendering issue with vpX encoders.

https://bugzilla.gnome.org/show_bug.cgi?id=751510
2015-07-02 10:17:25 +02:00
Thibault Saunier ac49f22530 pipeline: Handle rendering with disabled tracks
Summary:
The user might want to render only some media type of the timeline,
for example he wants to only render the audio part of the timeline.

It was failing as we were not connecting the track but were still trying
to 'render' it.

Depends on D153

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D154
2015-06-10 18:00:58 +02:00
Mathieu Duponchelle 0d3a3eb9d2 pipeline: no reason to disconnect a pad that is NULL anyway.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D62
2015-03-31 15:31:49 +02:00
Thibault Saunier 122dcbc190 pipeline: Expose playsink::video-filter and playsink::audio-filter
That can be used to add filters at the very end of the pipeline,
and one can think of adding a watchdog element in there for
example.
2014-12-06 10:34:17 +01:00
Thibault Saunier 068c20ff60 pipeline: Dot not check for chain->tee twice 2014-12-06 10:34:17 +01:00
Thibault Saunier 6367c96d7d nlecomposition: Add a 'query-position' signal
In order to get the precise position of the pipeline, the only
way is to ask the 'application' to query the pipeline position and
use it.
2014-12-06 10:34:16 +01:00
Thibault Saunier 39a7ce6ca0 pipeline: Disable encoding format renegotiation when rendering 2014-12-06 10:34:14 +01:00
Thibault Saunier e36c4c2bf7 pipeline: Do not relink an already linked track 2014-11-10 16:22:43 +01:00
Mathieu Duponchelle ee2b3f7d24 pipeline: connect tracks when added, not only on state change.
+ ghost track src pad before calling track added so that
  pipeline has a pad to link.
+ Remove silly comment.
2014-11-10 16:22:42 +01:00
Thibault Saunier b3336fe26e Port to the new NLE API
Port the timeline, track and pipeline to the new NLE API where
all objects have static src pads.
2014-10-31 11:58:12 +01:00
Thibault Saunier b3a240126d pipeline: Add support to rendering without container
+ Simplify the support in ges-launch as we should not require the
profile desc to start with : in that case

https://bugzilla.gnome.org/show_bug.cgi?id=731245
2014-06-09 16:10:41 +02:00
Christoph Reiter a66e674649 Include class related section documentation in the gir file.
g-ir-scanner includes section docs as class/interface docs if the section name is equal to the lowercase type name.
Since all the documentation is in section blocks, rename them to match the type names.

https://bugzilla.gnome.org/show_bug.cgi?id=727776
2014-04-07 22:13:25 +02:00
Thibault Saunier 0e9c74bcb1 pipeline: Do not set EncodingProfile.presence when we have no track for the type
That leads to freeze as encodebin will be waiting for a pad and EOS
forever
2014-03-21 10:22:52 +01:00
Thibault Saunier 0a903cdd35 pipeline: Always set the encoding profile presence to 1
We currenty do not support multiple tracks with same type in GESPipeline
and we actually need to set the presence field to avoid a scenario where
we have only video in a video track, and no audio in the audio track. So
audiotestsrc is used and we end up encoding the whole audio stream but
no decoded video frame as reached the decodebin src pad, so the pad
has not been created and thus it will not be linked to the encodebin.
On the audio part, the EOS will be emitted so fast that the resulting stream will
not have any video in it as the muxer will not even have a video pad created.

Setting the presence will ensure that the muxer does have a video pad
(because of how encodebin behaves) and thus will create a pad for it
and wait for its EOS.
2014-03-14 18:48:44 +01:00
Thibault Saunier f921277ac2 Rename TIMELINE_MODE_XXX to GES_PIPELINE_MODE_XXX so it corresponds to reality
First, it was not in any namespace, second the name of the enum is
GESPipelineFlags.
2014-02-17 12:37:57 +01:00
Alexandru Băluț df93acc581 ges-pipeline: Rename add_timeline to set_timeline
API BREAKAGE:
        - ges_pipeline_add_timeline
        + ges_pipeline_set_timeline
2014-02-04 14:17:47 +01:00
Kishore Arepalli 5a5228a25a ges: Fix several memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=710390
2013-10-31 23:11:23 +01:00
Thibault Saunier efb638efe8 pipeline: Let some queuing in encodebin
It is sometimes necessary
2013-09-22 23:06:22 +02:00
Kishore Arepalli 6c993d36ba ges-pipeline: Don't unref buffer obtained from a GstSample
https://bugzilla.gnome.org/show_bug.cgi?id=707914
2013-09-12 09:06:27 +02:00
Thibault Saunier 0daf523dfd pipeline: Create it through a factory
Making it possible to use it with GstValidate LD_PRELOAD feature
2013-09-09 12:51:06 -03:00
Thibault Saunier 0d0fc767ee pipeline: Finnish renaming from GESTimelinePipeline 2013-09-09 12:47:02 -03:00
Mathieu Duponchelle 2e1e88fb22 pipeline: add a get_mode method. 2013-08-21 08:06:59 -04:00
Thibault Saunier 0c87104955 pipeline: Remove the dynamic lock
We actually do not need it has everywhere where we would need it we are
already locked against the timeline.dyn_lock, we need to make sure it is
always the case in the future.

The hierarchy of the mutex was wrong and could possibly lead to
deadlocks
2013-08-19 15:18:06 -04:00
Thibault Saunier 3e88edfebc pipeline: Check that the profile could actually be set on the encodebin
Setting the profile on an encodebin can fail, and if that happens, there
will be no profile set at all, we should return FALSE in GESPipeline
when that happens
2013-07-21 21:42:42 -04:00
Lubosz Sarnecki 9f0b0c26e3 Rename GESTimelinePipeline to GESPipeline
rename ges_timeline_pipeline methods to ges_pipeline
2013-07-21 21:42:42 -04:00
Renamed from ges/ges-timeline-pipeline.c (Browse further)