mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
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
This commit is contained in:
parent
c78714ced3
commit
30222d6080
2 changed files with 19 additions and 1 deletions
|
@ -57,7 +57,8 @@ enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_ENABLE,
|
PROP_ENABLE,
|
||||||
PROP_EMBEDDEDFONTS
|
PROP_EMBEDDEDFONTS,
|
||||||
|
PROP_WAIT_TEXT
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FORMATS "{ RGB, BGR, xRGB, xBGR, RGBx, BGRx, I420 }"
|
#define FORMATS "{ RGB, BGR, xRGB, xBGR, RGBx, BGRx, I420 }"
|
||||||
|
@ -140,11 +141,17 @@ gst_ass_render_class_init (GstAssRenderClass * klass)
|
||||||
g_param_spec_boolean ("enable", "Enable",
|
g_param_spec_boolean ("enable", "Enable",
|
||||||
"Enable rendering of subtitles", TRUE,
|
"Enable rendering of subtitles", TRUE,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class, PROP_EMBEDDEDFONTS,
|
g_object_class_install_property (gobject_class, PROP_EMBEDDEDFONTS,
|
||||||
g_param_spec_boolean ("embeddedfonts", "Embedded Fonts",
|
g_param_spec_boolean ("embeddedfonts", "Embedded Fonts",
|
||||||
"Extract and use fonts embedded in the stream", TRUE,
|
"Extract and use fonts embedded in the stream", TRUE,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class, PROP_WAIT_TEXT,
|
||||||
|
g_param_spec_boolean ("wait-text", "Wait Text",
|
||||||
|
"Whether to wait for subtitles", TRUE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
gstelement_class->change_state =
|
gstelement_class->change_state =
|
||||||
GST_DEBUG_FUNCPTR (gst_ass_render_change_state);
|
GST_DEBUG_FUNCPTR (gst_ass_render_change_state);
|
||||||
|
|
||||||
|
@ -227,6 +234,7 @@ gst_ass_render_init (GstAssRender * render)
|
||||||
render->track_init_ok = FALSE;
|
render->track_init_ok = FALSE;
|
||||||
render->enable = TRUE;
|
render->enable = TRUE;
|
||||||
render->embeddedfonts = TRUE;
|
render->embeddedfonts = TRUE;
|
||||||
|
render->wait_text = FALSE;
|
||||||
|
|
||||||
gst_segment_init (&render->video_segment, GST_FORMAT_TIME);
|
gst_segment_init (&render->video_segment, GST_FORMAT_TIME);
|
||||||
gst_segment_init (&render->subtitle_segment, GST_FORMAT_TIME);
|
gst_segment_init (&render->subtitle_segment, GST_FORMAT_TIME);
|
||||||
|
@ -291,6 +299,9 @@ gst_ass_render_set_property (GObject * object, guint prop_id,
|
||||||
ass_set_extract_fonts (render->ass_library, render->embeddedfonts);
|
ass_set_extract_fonts (render->ass_library, render->embeddedfonts);
|
||||||
g_mutex_unlock (&render->ass_mutex);
|
g_mutex_unlock (&render->ass_mutex);
|
||||||
break;
|
break;
|
||||||
|
case PROP_WAIT_TEXT:
|
||||||
|
render->wait_text = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -312,6 +323,9 @@ gst_ass_render_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_EMBEDDEDFONTS:
|
case PROP_EMBEDDEDFONTS:
|
||||||
g_value_set_boolean (value, render->embeddedfonts);
|
g_value_set_boolean (value, render->embeddedfonts);
|
||||||
break;
|
break;
|
||||||
|
case PROP_WAIT_TEXT:
|
||||||
|
g_value_set_boolean (value, render->wait_text);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -1106,6 +1120,9 @@ wait_for_text_buf:
|
||||||
if (render->subtitle_eos)
|
if (render->subtitle_eos)
|
||||||
wait_for_text_buf = FALSE;
|
wait_for_text_buf = FALSE;
|
||||||
|
|
||||||
|
if (!render->wait_text)
|
||||||
|
wait_for_text_buf = FALSE;
|
||||||
|
|
||||||
/* Text pad linked, but no text buffer available - what now? */
|
/* Text pad linked, but no text buffer available - what now? */
|
||||||
if (render->subtitle_segment.format == GST_FORMAT_TIME) {
|
if (render->subtitle_segment.format == GST_FORMAT_TIME) {
|
||||||
GstClockTime text_start_running_time, text_last_stop_running_time;
|
GstClockTime text_start_running_time, text_last_stop_running_time;
|
||||||
|
|
|
@ -53,6 +53,7 @@ struct _GstAssRender
|
||||||
|
|
||||||
/* properties */
|
/* properties */
|
||||||
gboolean enable, embeddedfonts;
|
gboolean enable, embeddedfonts;
|
||||||
|
gboolean wait_text;
|
||||||
|
|
||||||
/* <private> */
|
/* <private> */
|
||||||
GMutex lock;
|
GMutex lock;
|
||||||
|
|
Loading…
Reference in a new issue