text/plain + text/x-pango-markup -> text/x-raw

This commit is contained in:
Tim-Philipp Müller 2012-09-02 02:41:34 +01:00
parent a99a1042b9
commit 7c2e7b1a4f
13 changed files with 64 additions and 47 deletions

View file

@ -1575,7 +1575,8 @@ setup_ogmtext_mapper (GstOggStream * pad, ogg_packet * packet)
if (pad->granulerate_d <= 0) if (pad->granulerate_d <= 0)
return FALSE; return FALSE;
pad->caps = gst_caps_new_empty_simple ("text/plain"); pad->caps = gst_caps_new_simple ("text/x-raw", "format", G_TYPE_STRING,
"utf8", NULL);
pad->n_header_packets = 1; pad->n_header_packets = 1;
pad->is_ogm = TRUE; pad->is_ogm = TRUE;

View file

@ -312,7 +312,8 @@ static void
gst_ogm_text_parse_base_init (GstOgmParseClass * klass) gst_ogm_text_parse_base_init (GstOgmParseClass * klass)
{ {
GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstCaps *caps = gst_caps_new_simple ("text/plain", NULL, NULL); GstCaps *caps = gst_caps_new_simple ("text/x-raw", "format", G_TYPE_STRING,
"utf8", NULL);
gst_element_class_set_static_metadata (element_class, gst_element_class_set_static_metadata (element_class,
"OGM text stream parser", "Codec/Decoder/Subtitle", "OGM text stream parser", "Codec/Decoder/Subtitle",
@ -604,7 +605,8 @@ gst_ogm_parse_stream_header (GstOgmParse * ogm, const guint8 * data, guint size)
GST_LOG_OBJECT (ogm, "Type: %s, s/u: %" G_GINT64_FORMAT GST_LOG_OBJECT (ogm, "Type: %s, s/u: %" G_GINT64_FORMAT
", timeunit=%" G_GINT64_FORMAT, ", timeunit=%" G_GINT64_FORMAT,
ogm->hdr.streamtype, ogm->hdr.samples_per_unit, ogm->hdr.time_unit); ogm->hdr.streamtype, ogm->hdr.samples_per_unit, ogm->hdr.time_unit);
caps = gst_caps_new_empty_simple ("text/plain"); caps = gst_caps_new_simple ("text/x-raw", "format", G_TYPE_STRING,
"utf8", NULL);
break; break;
} }
default: default:

View file

@ -744,10 +744,11 @@ static gboolean
gst_base_text_overlay_setcaps_txt (GstBaseTextOverlay * overlay, GstCaps * caps) gst_base_text_overlay_setcaps_txt (GstBaseTextOverlay * overlay, GstCaps * caps)
{ {
GstStructure *structure; GstStructure *structure;
const gchar *format;
structure = gst_caps_get_structure (caps, 0); structure = gst_caps_get_structure (caps, 0);
overlay->have_pango_markup = format = gst_structure_get_string (structure, "format");
gst_structure_has_name (structure, "text/x-pango-markup"); overlay->have_pango_markup = (strcmp (format, "pango-markup") == 0);
return TRUE; return TRUE;
} }

View file

@ -68,7 +68,7 @@
* ]| * ]|
* One can also feed arbitrary live text into the element: * One can also feed arbitrary live text into the element:
* |[ * |[
* gst-launch fdsrc fd=0 ! text/plain ! txt. videotestsrc ! \ * gst-launch fdsrc fd=0 ! text/x-raw,format=utf8 ! txt. videotestsrc ! \
* textoverlay name=txt shaded-background=yes font-desc="Serif 40" wait-text=false ! \ * textoverlay name=txt shaded-background=yes font-desc="Serif 40" wait-text=false ! \
* xvimagesink * xvimagesink
* ]| This shows new text as entered on the terminal (stdin). This is not suited * ]| This shows new text as entered on the terminal (stdin). This is not suited
@ -86,10 +86,10 @@
#include <gsttextoverlay.h> #include <gsttextoverlay.h>
static GstStaticPadTemplate text_sink_template_factory = static GstStaticPadTemplate text_sink_template_factory =
GST_STATIC_PAD_TEMPLATE ("text_sink", GST_STATIC_PAD_TEMPLATE ("text_sink",
GST_PAD_SINK, GST_PAD_SINK,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/x-pango-markup; text/plain") GST_STATIC_CAPS ("text/x-raw, format = { pango-markup, utf8 }")
); );
G_DEFINE_TYPE (GstTextOverlay, gst_text_overlay, GST_TYPE_BASE_TEXT_OVERLAY); G_DEFINE_TYPE (GstTextOverlay, gst_text_overlay, GST_TYPE_BASE_TEXT_OVERLAY);

View file

@ -96,10 +96,10 @@ GST_STATIC_PAD_TEMPLATE ("src",
); );
static GstStaticPadTemplate sink_template_factory = static GstStaticPadTemplate sink_template_factory =
GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_SINK,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/x-pango-markup; text/plain") GST_STATIC_CAPS ("text/x-raw, format = { pango-markup, utf8 }")
); );
#define GST_TYPE_TEXT_RENDER_VALIGN (gst_text_render_valign_get_type()) #define GST_TYPE_TEXT_RENDER_VALIGN (gst_text_render_valign_get_type())

View file

@ -498,10 +498,10 @@ _event_probe (GstPad * pad, GstPadProbeInfo * info, PrivateStream * ps)
return GST_PAD_PROBE_OK; return GST_PAD_PROBE_OK;
} }
static GstStaticCaps subtitle_caps = GST_STATIC_CAPS ("text/plain; " static GstStaticCaps subtitle_caps = GST_STATIC_CAPS ("text/x-raw; "
"text/x-pango-markup; subpicture/x-pgs; subpicture/x-dvb; " "subpicture/x-pgs; subpicture/x-dvb; subpicture/x-dvd; "
"application/x-subtitle-unknown; application/x-ssa; application/x-ass; " "application/x-subtitle-unknown; application/x-ssa; application/x-ass; "
"subtitle/x-kate; application/x-kate; subpicture/x-dvd"); "subtitle/x-kate; application/x-kate");
static gboolean static gboolean
is_subtitle_caps (const GstCaps * caps) is_subtitle_caps (const GstCaps * caps)

View file

@ -232,8 +232,7 @@ struct _StreamGroup
#define DEFAULT_RAW_CAPS \ #define DEFAULT_RAW_CAPS \
"video/x-raw; " \ "video/x-raw; " \
"audio/x-raw; " \ "audio/x-raw; " \
"text/plain; " \ "text/x-raw; " \
"text/x-pango-markup; " \
"subpicture/x-dvd; " \ "subpicture/x-dvd; " \
"subpicture/x-pgs" "subpicture/x-pgs"
@ -483,7 +482,7 @@ gst_encode_bin_init (GstEncodeBin * encode_bin)
encode_bin->raw_video_caps = gst_caps_from_string ("video/x-raw"); encode_bin->raw_video_caps = gst_caps_from_string ("video/x-raw");
encode_bin->raw_audio_caps = gst_caps_from_string ("audio/x-raw"); encode_bin->raw_audio_caps = gst_caps_from_string ("audio/x-raw");
/* encode_bin->raw_text_caps = */ /* encode_bin->raw_text_caps = */
/* gst_caps_from_string ("text/plain;text/x-pango-markup"); */ /* gst_caps_from_string ("text/x-raw"); */
encode_bin->queue_buffers_max = DEFAULT_QUEUE_BUFFERS_MAX; encode_bin->queue_buffers_max = DEFAULT_QUEUE_BUFFERS_MAX;
encode_bin->queue_bytes_max = DEFAULT_QUEUE_BYTES_MAX; encode_bin->queue_bytes_max = DEFAULT_QUEUE_BYTES_MAX;

View file

@ -28,8 +28,7 @@ G_BEGIN_DECLS
#define DEFAULT_RAW_CAPS \ #define DEFAULT_RAW_CAPS \
"video/x-raw; " \ "video/x-raw; " \
"audio/x-raw; " \ "audio/x-raw; " \
"text/plain; " \ "text/x-raw; " \
"text/x-pango-markup; " \
"subpicture/x-dvd; " \ "subpicture/x-dvd; " \
"subpicture/x-pgs" "subpicture/x-pgs"

View file

@ -41,7 +41,7 @@ static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/x-pango-markup") GST_STATIC_CAPS ("text/x-raw, format=pango-markup")
); );
#define gst_ssa_parse_parent_class parent_class #define gst_ssa_parse_parent_class parent_class
@ -196,7 +196,9 @@ gst_ssa_parse_setcaps (GstPad * sinkpad, GstCaps * caps)
gst_buffer_unmap (priv, &map); gst_buffer_unmap (priv, &map);
gst_buffer_unref (priv); gst_buffer_unref (priv);
outcaps = gst_caps_new_empty_simple ("text/x-pango-markup"); outcaps = gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
ret = gst_pad_set_caps (parse->srcpad, outcaps); ret = gst_pad_set_caps (parse->srcpad, outcaps);
gst_caps_unref (outcaps); gst_caps_unref (outcaps);

View file

@ -76,7 +76,7 @@ static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/plain; text/x-pango-markup") GST_STATIC_CAPS ("text/x-raw, format= { pango-markup, utf8 }")
); );
@ -1340,36 +1340,45 @@ gst_sub_parse_format_autodetect (GstSubParse * self)
switch (format) { switch (format) {
case GST_SUB_PARSE_FORMAT_MDVDSUB: case GST_SUB_PARSE_FORMAT_MDVDSUB:
self->parse_line = parse_mdvdsub; self->parse_line = parse_mdvdsub;
return gst_caps_new_empty_simple ("text/x-pango-markup"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
case GST_SUB_PARSE_FORMAT_SUBRIP: case GST_SUB_PARSE_FORMAT_SUBRIP:
self->parse_line = parse_subrip; self->parse_line = parse_subrip;
return gst_caps_new_empty_simple ("text/x-pango-markup"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
case GST_SUB_PARSE_FORMAT_MPSUB: case GST_SUB_PARSE_FORMAT_MPSUB:
self->parse_line = parse_mpsub; self->parse_line = parse_mpsub;
return gst_caps_new_empty_simple ("text/plain"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "utf8", NULL);
#ifndef GST_DISABLE_XML #ifndef GST_DISABLE_XML
case GST_SUB_PARSE_FORMAT_SAMI: case GST_SUB_PARSE_FORMAT_SAMI:
self->parse_line = parse_sami; self->parse_line = parse_sami;
sami_context_init (&self->state); sami_context_init (&self->state);
return gst_caps_new_empty_simple ("text/x-pango-markup"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
#endif #endif
case GST_SUB_PARSE_FORMAT_TMPLAYER: case GST_SUB_PARSE_FORMAT_TMPLAYER:
self->parse_line = parse_tmplayer; self->parse_line = parse_tmplayer;
self->state.max_duration = 5 * GST_SECOND; self->state.max_duration = 5 * GST_SECOND;
return gst_caps_new_empty_simple ("text/plain"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "utf8", NULL);
case GST_SUB_PARSE_FORMAT_MPL2: case GST_SUB_PARSE_FORMAT_MPL2:
self->parse_line = parse_mpl2; self->parse_line = parse_mpl2;
return gst_caps_new_empty_simple ("text/x-pango-markup"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
case GST_SUB_PARSE_FORMAT_DKS: case GST_SUB_PARSE_FORMAT_DKS:
self->parse_line = parse_dks; self->parse_line = parse_dks;
return gst_caps_new_empty_simple ("text/plain"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "utf8", NULL);
case GST_SUB_PARSE_FORMAT_SUBVIEWER: case GST_SUB_PARSE_FORMAT_SUBVIEWER:
self->parse_line = parse_subviewer; self->parse_line = parse_subviewer;
return gst_caps_new_empty_simple ("text/plain"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "utf8", NULL);
case GST_SUB_PARSE_FORMAT_QTTEXT: case GST_SUB_PARSE_FORMAT_QTTEXT:
self->parse_line = parse_qttext; self->parse_line = parse_qttext;
qttext_context_init (&self->state); qttext_context_init (&self->state);
return gst_caps_new_empty_simple ("text/x-pango-markup"); return gst_caps_new_simple ("text/x-raw",
"format", G_TYPE_STRING, "pango-markup", NULL);
case GST_SUB_PARSE_FORMAT_UNKNOWN: case GST_SUB_PARSE_FORMAT_UNKNOWN:
default: default:
GST_DEBUG ("no subtitle format detected"); GST_DEBUG ("no subtitle format detected");

View file

@ -28,7 +28,7 @@
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_SINK,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/plain; text/x-pango-markup") GST_STATIC_CAPS ("text/x-raw, format = { pango-markup, utf8 }")
); );
static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,
@ -240,8 +240,9 @@ test_srt_do_test (SubParseInputChunk * input, guint start_idx, guint num)
/* check caps */ /* check caps */
fail_unless (outcaps != NULL); fail_unless (outcaps != NULL);
buffer_caps_struct = gst_caps_get_structure (outcaps, 0); buffer_caps_struct = gst_caps_get_structure (outcaps, 0);
fail_unless_equals_string (gst_structure_get_name (buffer_caps_struct), fail_unless (gst_structure_has_name (buffer_caps_struct, "text/x-raw"));
"text/x-pango-markup"); fail_unless_equals_string (gst_structure_get_string (buffer_caps_struct,
"format"), "pango-markup");
} }
gst_caps_unref (outcaps); gst_caps_unref (outcaps);
@ -277,7 +278,7 @@ GST_START_TEST (test_srt)
GST_END_TEST; GST_END_TEST;
static void static void
do_test (SubParseInputChunk * input, guint num, const gchar * media_type) do_test (SubParseInputChunk * input, guint num, const gchar * format)
{ {
guint n; guint n;
GstCaps *outcaps; GstCaps *outcaps;
@ -333,8 +334,9 @@ do_test (SubParseInputChunk * input, guint num, const gchar * media_type)
/* check caps */ /* check caps */
fail_unless (outcaps != NULL); fail_unless (outcaps != NULL);
buffer_caps_struct = gst_caps_get_structure (outcaps, 0); buffer_caps_struct = gst_caps_get_structure (outcaps, 0);
fail_unless_equals_string (gst_structure_get_name (buffer_caps_struct), fail_unless (gst_structure_has_name (buffer_caps_struct, "text/x-raw"));
media_type); fail_unless_equals_string (gst_structure_get_string (buffer_caps_struct,
"format"), format);
} }
gst_caps_unref (outcaps); gst_caps_unref (outcaps);
@ -344,13 +346,13 @@ do_test (SubParseInputChunk * input, guint num, const gchar * media_type)
static void static void
test_tmplayer_do_test (SubParseInputChunk * input, guint num) test_tmplayer_do_test (SubParseInputChunk * input, guint num)
{ {
do_test (input, num, "text/plain"); do_test (input, num, "utf8");
} }
static void static void
test_microdvd_do_test (SubParseInputChunk * input, guint num) test_microdvd_do_test (SubParseInputChunk * input, guint num)
{ {
do_test (input, num, "text/x-pango-markup"); do_test (input, num, "pango-markup");
} }
GST_START_TEST (test_tmplayer_multiline) GST_START_TEST (test_tmplayer_multiline)
@ -575,7 +577,7 @@ GST_START_TEST (test_mpl2)
"Normal\n<i>Italic</i>"} "Normal\n<i>Italic</i>"}
}; };
do_test (mpl2_input, G_N_ELEMENTS (mpl2_input), "text/x-pango-markup"); do_test (mpl2_input, G_N_ELEMENTS (mpl2_input), "pango-markup");
} }
GST_END_TEST; GST_END_TEST;
@ -606,7 +608,7 @@ GST_START_TEST (test_subviewer)
"The heavens shook as the armies\nof Falis, God of Light..."} "The heavens shook as the armies\nof Falis, God of Light..."}
}; };
do_test (subviewer_input, G_N_ELEMENTS (subviewer_input), "text/plain"); do_test (subviewer_input, G_N_ELEMENTS (subviewer_input), "utf8");
} }
GST_END_TEST; GST_END_TEST;
@ -638,7 +640,7 @@ GST_START_TEST (test_subviewer2)
"AND THE GREAT HERDS RUN FREE.\nSO WHAT?!"} "AND THE GREAT HERDS RUN FREE.\nSO WHAT?!"}
}; };
do_test (subviewer2_input, G_N_ELEMENTS (subviewer2_input), "text/plain"); do_test (subviewer2_input, G_N_ELEMENTS (subviewer2_input), "utf8");
} }
GST_END_TEST; GST_END_TEST;
@ -655,7 +657,7 @@ GST_START_TEST (test_dks)
"AND THE GREAT HERDS RUN FREE.\nSO WHAT?!"} "AND THE GREAT HERDS RUN FREE.\nSO WHAT?!"}
}; };
do_test (dks_input, G_N_ELEMENTS (dks_input), "text/plain"); do_test (dks_input, G_N_ELEMENTS (dks_input), "utf8");
} }
GST_END_TEST; GST_END_TEST;
@ -692,7 +694,7 @@ GST_START_TEST (test_sami)
"This is a third comment.\nThis is a fourth comment."} "This is a third comment.\nThis is a fourth comment."}
}; };
do_test (sami_input, G_N_ELEMENTS (sami_input), "text/x-pango-markup"); do_test (sami_input, G_N_ELEMENTS (sami_input), "pango-markup");
} }
GST_END_TEST; GST_END_TEST;

View file

@ -59,7 +59,7 @@ static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
static GstStaticPadTemplate text_srctemplate = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate text_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("text/plain") GST_STATIC_CAPS ("text/x-raw, format=utf8")
); );
static GstStaticPadTemplate video_srctemplate = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate video_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
@ -510,7 +510,8 @@ GST_START_TEST (test_video_waits_for_text)
GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
"could not set to playing"); "could not set to playing");
caps = gst_caps_new_empty_simple ("text/plain"); caps = gst_caps_new_simple ("text/x-raw", "format", G_TYPE_STRING, "utf8",
NULL);
gst_pad_set_caps (mytextsrcpad, caps); gst_pad_set_caps (mytextsrcpad, caps);
gst_caps_unref (caps); gst_caps_unref (caps);
@ -684,7 +685,8 @@ GST_START_TEST (test_render_continuity)
NULL, FALSE, NULL); NULL, FALSE, NULL);
fail_unless (thread != NULL); fail_unless (thread != NULL);
caps = gst_caps_new_empty_simple ("text/plain"); caps = gst_caps_new_simple ("text/x-raw", "format", G_TYPE_STRING, "utf8",
NULL);
gst_pad_set_caps (mytextsrcpad, caps); gst_pad_set_caps (mytextsrcpad, caps);
gst_caps_unref (caps); gst_caps_unref (caps);

View file

@ -143,7 +143,7 @@ main (int argc, char *argv[])
g_object_set (G_OBJECT (app->textsink), "ts-offset", 0 * GST_SECOND, NULL); g_object_set (G_OBJECT (app->textsink), "ts-offset", 0 * GST_SECOND, NULL);
g_signal_connect (app->textsink, "new-buffer", G_CALLBACK (have_subtitle), g_signal_connect (app->textsink, "new-buffer", G_CALLBACK (have_subtitle),
app); app);
subcaps = gst_caps_from_string ("text/x-pango-markup; text/plain"); subcaps = gst_caps_from_string ("text/x-raw, format={ utf8, pango-markup }");
g_object_set (G_OBJECT (app->textsink), "caps", subcaps, NULL); g_object_set (G_OBJECT (app->textsink), "caps", subcaps, NULL);
gst_caps_unref (subcaps); gst_caps_unref (subcaps);