summaryrefslogtreecommitdiff
path: root/ext/teletextdec/gstteletextdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/teletextdec/gstteletextdec.c')
-rw-r--r--ext/teletextdec/gstteletextdec.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/ext/teletextdec/gstteletextdec.c b/ext/teletextdec/gstteletextdec.c
index 560406b14..846c243e4 100644
--- a/ext/teletextdec/gstteletextdec.c
+++ b/ext/teletextdec/gstteletextdec.c
@@ -1,6 +1,6 @@
/*
* GStreamer
- * Copyright (C) 2009 Sebastian <sebp@k-d-w.org>
+ * Copyright (C) 2009 Sebastian Pölsterl <sebp@k-d-w.org>
* Copyright (C) 2010 Andoni Morales Alastruey <ylatuya@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -215,32 +215,36 @@ gst_teletextdec_class_init (GstTeletextDecClass * klass)
gobject_class->finalize = gst_teletextdec_finalize;
gstelement_class = GST_ELEMENT_CLASS (klass);
- gstelement_class->change_state = gst_teletextdec_change_state;
+ gstelement_class->change_state =
+ GST_DEBUG_FUNCPTR (gst_teletextdec_change_state);
g_object_class_install_property (gobject_class, PROP_PAGENO,
g_param_spec_int ("page", "Page number",
"Number of page that should displayed",
- 100, 999, 100, G_PARAM_READWRITE));
+ 100, 999, 100, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_SUBNO,
g_param_spec_int ("subpage", "Sub-page number",
"Number of sub-page that should displayed (-1 for all)",
- -1, 0x99, -1, G_PARAM_READWRITE));
+ -1, 0x99, -1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_SUBTITLES_MODE,
g_param_spec_boolean ("subtitles-mode", "Enable subtitles mode",
"Enables subtitles mode for text output stripping the blank lines and "
- "the teletext state lines", FALSE, G_PARAM_READWRITE));
+ "the teletext state lines", FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_SUBS_TEMPLATE,
g_param_spec_string ("subtitles-template", "Subtitles output template",
"Output template used to print each one of the subtitles lines",
- g_strescape ("%s\n", NULL), G_PARAM_READWRITE));
+ g_strescape ("%s\n", NULL),
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_FONT_DESCRIPTION,
g_param_spec_string ("font-description", "Pango font description",
"Font description used for the pango output.",
- DEFAULT_FONT_DESCRIPTION, G_PARAM_READWRITE));
+ DEFAULT_FONT_DESCRIPTION,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
/* initialize the new element
@@ -531,6 +535,7 @@ gst_teletextdec_src_set_caps (GstPad * pad, GstCaps * caps)
GstTeletextDec *teletext;
GstStructure *structure = NULL;
const gchar *mimetype;
+ GstPad *peer;
teletext = GST_TELETEXTDEC (gst_pad_get_parent (pad));
GST_DEBUG_OBJECT (teletext, "Linking teletext source pad");
@@ -542,7 +547,11 @@ gst_teletextdec_src_set_caps (GstPad * pad, GstCaps * caps)
goto refuse_caps;
}
- gst_pad_set_caps (gst_pad_get_peer (pad), caps);
+ peer = gst_pad_get_peer (pad);
+ if (peer) {
+ gst_pad_set_caps (peer, caps);
+ gst_object_unref (peer);
+ }
structure = gst_caps_get_structure (caps, 0);
mimetype = gst_structure_get_name (structure);
@@ -1048,6 +1057,7 @@ gst_teletextdec_push_preroll_buffer (GstTeletextDec * teletext)
goto beach;
}
+ gst_caps_truncate (out_caps);
structure = gst_caps_get_structure (out_caps, 0);
mimetype = gst_structure_get_name (structure);
if (g_strcmp0 (mimetype, "video/x-raw-rgb") == 0) {
@@ -1077,7 +1087,7 @@ static void
gst_teletextdec_lofp_to_line (guint * field, guint * field_line,
guint * frame_line, guint lofp, systems system)
{
- uint line_offset;
+ guint line_offset;
/* field_parity */
*field = !(lofp & (1 << 5));