diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2005-11-29 15:42:01 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2005-11-29 15:42:01 +0000 |
commit | 624d4cbda11fbddde3ee88b9b809e88871ea3dab (patch) | |
tree | 7ab4737c3e283b3c7ff0ec453513ee94d643a11d /ext/cairo/gsttextoverlay.c | |
parent | d84becd86b0e0c2907887ef1f13d180804f6ec78 (diff) |
ext/cairo/gsttextoverlay.c: Actually render the text from the text pad.
Original commit message from CVS:
* ext/cairo/gsttextoverlay.c: (gst_text_overlay_render_text),
(gst_text_overlay_collected):
Actually render the text from the text pad.
Diffstat (limited to 'ext/cairo/gsttextoverlay.c')
-rw-r--r-- | ext/cairo/gsttextoverlay.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/ext/cairo/gsttextoverlay.c b/ext/cairo/gsttextoverlay.c index f6747060..2fd8dc85 100644 --- a/ext/cairo/gsttextoverlay.c +++ b/ext/cairo/gsttextoverlay.c @@ -369,8 +369,8 @@ gst_text_overlay_set_property (GObject * object, guint prop_id, } static void -gst_text_overlay_render_text (GstCairoTextOverlay * overlay, gchar * text, - gint textlen) +gst_text_overlay_render_text (GstCairoTextOverlay * overlay, + const gchar * text, gint textlen) { cairo_text_extents_t extents; cairo_surface_t *surface; @@ -759,6 +759,8 @@ gst_text_overlay_collected (GstCollectPads * pads, gpointer data) GstClockTime now, txt_end, frame_end; GstBuffer *video_frame = NULL; GstBuffer *text_buf = NULL; + gchar *text; + gint text_len; overlay = GST_CAIRO_TEXT_OVERLAY (data); @@ -861,10 +863,23 @@ gst_text_overlay_collected (GstCollectPads * pads, gpointer data) } /* text duration overlaps video frame duration */ - GST_DEBUG ("Rendering '%*s'", - GST_BUFFER_SIZE (text_buf), GST_BUFFER_DATA (text_buf)); + text = g_strndup ((gchar *) GST_BUFFER_DATA (text_buf), + GST_BUFFER_SIZE (text_buf)); + g_strdelimit (text, "\n\r\t", ' '); + text_len = strlen (text); + + if (text_len > 0) { + GST_DEBUG ("Rendering text '%*s'", text_len, text);; + gst_text_overlay_render_text (overlay, text, text_len); + } else { + GST_DEBUG ("No text to render (empty buffer)"); + gst_text_overlay_render_text (overlay, " ", 1); + } + + g_free (text); + gst_text_overlay_pop_video (overlay); - ret = gst_pad_push (overlay->srcpad, video_frame); + ret = gst_text_overlay_push_frame (overlay, video_frame); video_frame = NULL; goto done; |