Commit graph

55 commits

Author SHA1 Message Date
François Laignel
ec5b267249 Use gst_element_request_pad_simple...
Instead of the deprecated gst_element_get_request_pad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/240>
2021-05-05 06:16:53 +00:00
Thibault Saunier
8c622b18f6 pipeline: Restrict the presence only if the user didn't explicitly provided one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
6f7d4ac525 ges: Fix smart rendering
Smart rendering has been broken since, mostly forever, but some code
was there pretending it was supported... let's try to stop pretending.

We now keep track of the smart rendering state in the timeline, track
and sources to be able to:

 * tell decodebin to stop plugging more (decoding elements) as soon as
   downstream supports the format.

 * avoid plugging converters after the source element when smart
   rendering.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Henry Wilkes
c2532a48c2 pipeline: stop setting the track caps
Stop setting the track 'caps' property. The previous code could
overwrite a users own setting of the caps for video and audio caps.
Moreover, the 'caps' property is listed as construct only, and users
will likely expect it to stay the same after a track has been added to a
timeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
09a6900d55 pipeline: Do not name urisink as urisink as it is useless
And actually harmful in case you are debugging several pipelines.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
cc490854b5 pipeline: Remove urisink from timeline instead of unrefing it
Doing what was suggested in the FIXME and avoiding to unref
something it while we do not actually own it ourself.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
0b05bb6587 pipeline: Discard encoding profiles that don't match any track
Otherwise we get a 'not linked' error and we should just help
the user as we can here.

If the user adds a new track, he should set a new encoding profile
anyway.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
ba6c842831 pipeline: doc: Add a note about trying to render before setting rendering settings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/189>
2020-06-16 15:49:41 -04:00
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