gobject_class->set_property = gst_text_render_set_property;
gobject_class->get_property = gst_text_render_get_property;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_template_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "Text renderer",
+ "Filter/Editor/Video",
+ "Renders a text string to an image bitmap",
+ "David Schleef <ds@schleef.org>, "
+ "GStreamer maintainers <gstreamer-devel@lists.sourceforge.net>");
+
fontmap = pango_cairo_font_map_get_default ();
klass->pango_context =
- pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
+ pango_font_map_create_context (PANGO_FONT_MAP (fontmap));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FONT_DESC,
g_param_spec_string ("font-desc", "font description",
"Pango font description of font "
{
guint bitrate = 0;
gchar *encoder = NULL;
- GstTagList *list, *old_list;
+ GstTagList *list;
- GstBuffer *buf;
+ guint8 *data;
+ gsize size;
GST_DEBUG_OBJECT (vd, "parsing comment packet");
- buf = gst_buffer_new ();
- GST_BUFFER_DATA (buf) = gst_ogg_packet_data (packet);
- GST_BUFFER_SIZE (buf) = gst_ogg_packet_size (packet);
+ data = gst_ogg_packet_data (packet);
+ size = gst_ogg_packet_size (packet);
list =
- gst_tag_list_from_vorbiscomment_buffer (buf, (guint8 *) "\003vorbis", 7,
+ gst_tag_list_from_vorbiscomment (data, size, (guint8 *) "\003vorbis", 7,
&encoder);
- old_list = vd->taglist;
- vd->taglist = gst_tag_list_merge (vd->taglist, list, GST_TAG_MERGE_REPLACE);
-
- if (old_list)
- gst_tag_list_free (old_list);
- gst_tag_list_free (list);
-
- if (!vd->taglist) {
+ if (!list) {
GST_ERROR_OBJECT (vd, "couldn't decode comments");
- vd->taglist = gst_tag_list_new_empty ();
+ list = gst_tag_list_new ();
}
- gst_buffer_unref (buf);
-
+
if (encoder) {
if (encoder[0])
- gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE,
+ gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
GST_TAG_ENCODER, encoder, NULL);
g_free (encoder);
}
#endif
gboolean initialized;
- guint width;
+ GstAudioInfo info;
- GstTagList *taglist;
-
CopySampleFunc copy_samples;
};
GST_DEBUG_OBJECT (playsink, "Got prepare-xwindow-id message");
- if (playsink->xoverlay_handle_set)
- gst_x_overlay_set_window_handle (playsink->xoverlay_element,
- playsink->xoverlay_handle);
- if (playsink->xoverlay_handle_events_set)
- gst_x_overlay_handle_events (playsink->xoverlay_element,
- playsink->xoverlay_handle_events);
- if (playsink->xoverlay_render_rectangle_set)
- gst_x_overlay_set_render_rectangle (playsink->xoverlay_element,
- playsink->xoverlay_x, playsink->xoverlay_y,
- playsink->xoverlay_width, playsink->xoverlay_height);
-
- gst_object_unref (xoverlay);
+ if (playsink->overlay_handle_set)
+ gst_video_overlay_set_window_handle (playsink->overlay_element,
+ playsink->overlay_handle);
+ if (playsink->overlay_handle_events_set)
+ gst_video_overlay_handle_events (playsink->overlay_element,
+ playsink->overlay_handle_events);
+ if (playsink->overlay_render_rectangle_set)
+ gst_video_overlay_set_render_rectangle (playsink->overlay_element,
+ playsink->overlay_x, playsink->overlay_y,
+ playsink->overlay_width, playsink->overlay_height);
+
+ gst_object_unref (overlay);
gst_message_unref (message);
- gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (playsink));
+ gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (playsink));
+ } else {
+ GST_BIN_CLASS (gst_play_sink_parent_class)->handle_message (bin,
+ message);
}
break;
}
#include "gst/glib-compat-private.h"
+ /* for XkbKeycodeToKeysym */
+ #include <X11/XKBlib.h>
+
GST_DEBUG_CATEGORY_EXTERN (gst_debug_ximagesink);
+GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
#define GST_CAT_DEFAULT gst_debug_ximagesink
typedef struct
#include "gst/glib-compat-private.h"
-GST_DEBUG_CATEGORY_STATIC (gst_debug_xvimagesink);
+ /* for XkbKeycodeToKeysym */
+ #include <X11/XKBlib.h>
+
+GST_DEBUG_CATEGORY_EXTERN (gst_debug_xvimagesink);
+GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
#define GST_CAT_DEFAULT gst_debug_xvimagesink
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_PERFORMANCE);
typedef struct
{
case KeyRelease:
/* Key pressed/released over our window. We send upstream
events for interactivity/navigation */
- GST_DEBUG ("xvimagesink key %d pressed over window at %d,%d",
- e.xkey.keycode, e.xkey.x, e.xkey.y);
g_mutex_lock (xvimagesink->x_lock);
- keysym = XKeycodeToKeysym (xvimagesink->xcontext->disp,
- e.xkey.keycode, 0);
- g_mutex_unlock (xvimagesink->x_lock);
+ keysym = XkbKeycodeToKeysym (xvimagesink->xcontext->disp,
+ e.xkey.keycode, 0, 0);
if (keysym != NoSymbol) {
- char *key_str = NULL;
-
- g_mutex_lock (xvimagesink->x_lock);
key_str = XKeysymToString (keysym);
- g_mutex_unlock (xvimagesink->x_lock);
- gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink),
- e.type == KeyPress ? "key-press" : "key-release", key_str);
} else {
- gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink),
- e.type == KeyPress ? "key-press" : "key-release", "unknown");
+ key_str = "unknown";
}
+ g_mutex_unlock (xvimagesink->x_lock);
+ GST_DEBUG_OBJECT (xvimagesink,
+ "key %d pressed over window at %d,%d (%s)",
+ e.xkey.keycode, e.xkey.x, e.xkey.y, key_str);
+ gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink),
+ e.type == KeyPress ? "key-press" : "key-release", key_str);
break;
default:
- GST_DEBUG ("xvimagesink unhandled X event (%d)", e.type);
+ GST_DEBUG_OBJECT (xvimagesink, "xvimagesink unhandled X event (%d)",
+ e.type);
}
g_mutex_lock (xvimagesink->flow_lock);
g_mutex_lock (xvimagesink->x_lock);