summaryrefslogtreecommitdiffstats
path: root/ext/cairo
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2005-11-29 15:42:01 +0000
committerTim-Philipp Müller <tim@centricular.net>2005-11-29 15:42:01 +0000
commit624d4cbda11fbddde3ee88b9b809e88871ea3dab (patch)
tree7ab4737c3e283b3c7ff0ec453513ee94d643a11d /ext/cairo
parentd84becd86b0e0c2907887ef1f13d180804f6ec78 (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')
-rw-r--r--ext/cairo/gsttextoverlay.c25
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;