diff options
author | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2009-07-21 00:54:47 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2009-07-21 01:02:06 +0100 |
commit | ced14a1ff7a0a7190be214848d3de5af2ab7b0ad (patch) | |
tree | 3a2a3d19ee4759e54d756a49ec676644e7d3d3cd | |
parent | b04587f4f772fc0a166b8a75314cd31a20a6f964 (diff) | |
download | gst-plugins-bad-ced14a1ff7a0a7190be214848d3de5af2ab7b0ad.tar.gz gst-plugins-bad-ced14a1ff7a0a7190be214848d3de5af2ab7b0ad.tar.bz2 gst-plugins-bad-ced14a1ff7a0a7190be214848d3de5af2ab7b0ad.zip |
katedec: only put primary language tag in GST_TAG_LANGUAGE
Only put primary language into GST_TAG_LANGUAGE, and convert to lower case,
ie. only use "en" of "en_GB". This is per our tag documentation and hence
what apps expect. Also add example to kateenc property description so people
know a language code is wanted here.
-rw-r--r-- | ext/kate/gstkateenc.c | 21 | ||||
-rw-r--r-- | ext/kate/gstkateutil.c | 10 | ||||
-rw-r--r-- | tests/check/elements/kate.c | 2 |
3 files changed, 21 insertions, 12 deletions
diff --git a/ext/kate/gstkateenc.c b/ext/kate/gstkateenc.c index 514a9bd0..80709eb3 100644 --- a/ext/kate/gstkateenc.c +++ b/ext/kate/gstkateenc.c @@ -69,6 +69,8 @@ */ /* FIXME: post appropriate GST_ELEMENT_ERROR when returning FLOW_ERROR */ +/* FIXME: should we automatically pick up the language code from the + * upstream event tags if none was set via the property? */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -176,44 +178,45 @@ gst_kate_enc_class_init (GstKateEncClass * klass) g_object_class_install_property (gobject_class, ARG_LANGUAGE, g_param_spec_string ("language", "Language", - "Set the language of the stream", "", G_PARAM_READWRITE)); + "The language of the stream (e.g. \"fr\" or \"fr_FR\" for French)", + "", G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_CATEGORY, g_param_spec_string ("category", "Category", - "Set the category of the stream", "", G_PARAM_READWRITE)); + "The category of the stream", "", G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_GRANULE_RATE_NUM, g_param_spec_int ("granule-rate-numerator", "Granule rate numerator", - "Set the numerator of the granule rate", + "The numerator of the granule rate", 1, G_MAXINT, 1, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_GRANULE_RATE_DEN, g_param_spec_int ("granule-rate-denominator", "Granule rate denominator", - "Set the denominator of the granule rate", + "The denominator of the granule rate", 1, G_MAXINT, 1000, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_GRANULE_SHIFT, g_param_spec_int ("granule-shift", "Granule shift", - "Set the granule shift", 0, 64, 32, G_PARAM_READWRITE)); + "The granule shift", 0, 64, 32, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_ORIGINAL_CANVAS_WIDTH, g_param_spec_int ("original-canvas-width", "Original canvas width", - "Set the width of the canvas this stream was authored for (0 is unspecified)", + "The width of the canvas this stream was authored for (0 is unspecified)", 0, G_MAXINT, 0, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_ORIGINAL_CANVAS_HEIGHT, g_param_spec_int ("original-canvas-height", "Original canvas height", - "Set the height of the canvas this stream was authored for (0 is unspecified)", + "The height of the canvas this stream was authored for (0 is unspecified)", 0, G_MAXINT, 0, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_KEEPALIVE_MIN_TIME, g_param_spec_float ("keepalive-min-time", "Keepalive mimimum time", - "Set minimum time to emit keepalive packets (0 disables keepalive packets)", + "Minimum time to emit keepalive packets (0 disables keepalive packets)", 0.0f, FLT_MAX, DEFAULT_KEEPALIVE_MIN_TIME, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_DEFAULT_SPU_DURATION, g_param_spec_float ("default-spu-duration", "Default SPU duration", - "Set the assumed max duration (in seconds) of SPUs with no duration specified", + "The assumed max duration (in seconds) of SPUs with no duration specified", 0.0f, FLT_MAX, DEFAULT_DEFAULT_SPU_DURATION, G_PARAM_READWRITE)); gstelement_class->change_state = diff --git a/ext/kate/gstkateutil.c b/ext/kate/gstkateutil.c index b8915d70..3d5d3312 100644 --- a/ext/kate/gstkateutil.c +++ b/ext/kate/gstkateutil.c @@ -187,9 +187,15 @@ gst_kate_util_decoder_base_chain_kate_packet (GstKateDecoderBase * decoder, if (decoder->k.ki->language && *decoder->k.ki->language) { GstTagList *old = decoder->tags, *tags = gst_tag_list_new (); if (tags) { + gchar *lang_code; + + /* en_GB -> en */ + lang_code = g_ascii_strdown (decoder->k.ki->language, -1); + g_strdelimit (lang_code, NULL, '\0'); gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, GST_TAG_LANGUAGE_CODE, - decoder->k.ki->language, NULL); - // TODO: category - where should it go ? + lang_code, NULL); + g_free (lang_code); + /* TODO: category - where should it go ? */ decoder->tags = gst_tag_list_merge (decoder->tags, tags, GST_TAG_MERGE_REPLACE); gst_tag_list_free (tags); diff --git a/tests/check/elements/kate.c b/tests/check/elements/kate.c index 551d72a1..c848cc5c 100644 --- a/tests/check/elements/kate.c +++ b/tests/check/elements/kate.c @@ -356,7 +356,7 @@ GST_START_TEST (test_kate_identification_header) GST_TAG_LANGUAGE_CODE), 1); fail_unless (gst_tag_list_get_string (tag_list, GST_TAG_LANGUAGE_CODE, &language)); - fail_unless_equals_string (language, "en_GB"); + fail_unless_equals_string (language, "en"); g_free (language); fail_unless_equals_int (gst_tag_list_get_tag_size (tag_list, "title"), 1); fail_unless (gst_tag_list_get_string (tag_list, GST_TAG_TITLE, &title)); |