Commit graph

24 commits

Author SHA1 Message Date
Stéphane Cerveau
6638dd2ff4 assrender: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
2021-03-23 14:19:16 +00:00
Michael Drake
bba33533ab assrender: fix multiple subtitles on screen simultaneously
This fixes an issue with SSA/ASS subtitles, where subtitles
would fail to appear if there was already a subtitle on screen.

This was because `struct _GstAssRender` had a single
`GstBuffer *subtitle_pending` member.  This meant that
the assrender context could only be aware of one subtitle
at a time.

This patch changes the subtitle_pending member to a
linked list of pending subtitles.

The `gst_ass_render_chain_text` function no longer needs
to care about whether there are already subtitles pending,
it simply appends new subtitles to the list.

The `gst_ass_render_chain_video` function has been modified
to handle the list of pending subtitles.

Finally, the `gst_ass_render_pop_text` function has been
modified to pop the entire list of pending subtitles.

https://bugzilla.gnome.org/show_bug.cgi?id=735944
2018-08-14 23:00:34 +10:00
Arnaud Vrac
ecdc7bb37d assrender: Use the window size from downstream
This allows rendering the overlay at a resolution matching the video
resolution.

https://bugzilla.gnome.org/show_bug.cgi?id=753824
2015-10-02 17:18:33 +03:00
Arnaud Vrac
f021d32bef assrender: Improve negotiation
This is mostly a copy/paste of the negotiation function in
basetextoverlay, which was improved recently to handle many more cases.

This will allow us to negotiate a window size with downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=753824
2015-10-02 17:17:24 +03:00
Matthieu Bouron
4da4dfc4bf assrender: handle video/x-raw(ANY) if downstream supports the GstVideoOverlayCompositionMeta API
https://bugzilla.gnome.org/show_bug.cgi?id=721950
2014-03-05 20:41:20 +01:00
Arnaud Vrac
143c0cbd45 assrender: use overlay composition to blit subtitles on video frames
Re-uses existing blitting code and also means we can support
a lot more video formats out of the box, hence avoid unnecessary
pixel format or colour space conversions.

https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:31 +00:00
Arnaud Vrac
5f91366553 assrender: render overlay composition if supported downstream
This allows rendering ASS subtitles on top of video when
using hardware-accelerated video decoders based on e.g.
VA-API or VDPAU.

https://bugzilla.gnome.org/show_bug.cgi?id=678389
https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:25 +00:00
Arnaud Vrac
30222d6080 assrender: add wait-text property
This is the same property as in the pango element, to allow waiting for
text on the text pad before rendering the video.

https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:20 +00:00
Arnaud Vrac
c78714ced3 assrender: fix some subtitles being ignored
https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:17 +00:00
Tim-Philipp Müller
9e1b75fda3 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Andre Moreira Magalhaes (andrunko)
2213a44214 assrender: Refactoring and make core more similar to textoverlay
Especially the combining of the text and video buffers is now
almost the same as in textoverlay.

We should really get a base class for this.

Conflicts:

	ext/assrender/gstassrender.c
	ext/assrender/gstassrender.h
2012-05-29 11:47:21 +02:00
Wim Taymans
27ee60a27b port to new gthread API 2012-01-19 11:34:26 +01:00
Wim Taymans
67dac04012 assrender: port to 0.11 2011-10-06 10:59:58 +02:00
Sebastian Dröge
0dbe95a97d assrender: Protect libass structures from concurrent access from multiple threads
Fixes bug #608751.
2010-02-23 18:16:48 +01:00
Sebastian Dröge
c3e42004d1 assrender: Add docs and integrate into the docs build system 2009-12-08 14:46:35 +01:00
Sebastian Dröge
d7e58ce0a9 assrender: For synchronizing the text, take the video running time of the next frame
This makes sure that libass already has all text buffers for the next frame
at the time when the next frame is processed. Without this text buffers
might be one frame late or not shown at all if they're only shown for a
single frame.
2009-12-08 14:06:23 +01:00
Sebastian Dröge
d8fc5de450 assrender: Optimize blit function and add support for all other non-alpha RGB formats
Also make sure to not write behind array bounds.
2009-12-07 17:10:34 +01:00
Sebastian Dröge
b502383f18 assrender: Lots of random cleanup and some minor memleak fixes 2009-12-07 14:05:22 +01:00
Sebastian Dröge
8feed39593 assrender: Keep track of the subtitle segments 2009-11-05 17:07:04 +01:00
Sebastian Dröge
4c625bd569 assrender: Return WRONG_STATE from the subtitle chain when flushing 2009-11-04 13:11:44 +01:00
Sebastian Dröge
3b2ab1299c assrender: Synchronize subtitle buffers with the video
Fixes bug #600662.
2009-11-04 12:50:18 +01:00
Sebastian Dröge
55cdea8e7a assrender: Fix compilation with libass >= 0.9.7 and fix aspect ratio setting
Fixes bug #575261.
2009-08-31 09:11:34 +02:00
Sebastian Dröge
4a23c7e912 Random cleanup and smaller bugfixes
Use gst_element_klass_set_details_simple(), install properties
with static strings, create pads directly from the static pad
templates, directly put the segment into the instance struct,
use GST_MSECOND instead of numbers.

The PAR is a GstFraction and not a double, use gst_structure_get_fraction().

Simplify setcaps() functions.
2009-02-05 17:52:38 +01:00
Benjamin Schmitz
0bc20cb186 Add assrender plugin for rendering ASS/SSA subtitles
This element has the advantage over subparse's ASS/SSA
support that more features are supported, like fading,
by using libass. Fixes bug #481075.
2009-02-05 17:52:38 +01:00