GST_LOG ("QTtext (time based) format detected");
return GST_SUB_PARSE_FORMAT_QTTEXT;
}
+ /* We assume the LRC file starts immediately */
+ if (match_str[0] == '[') {
+ gboolean all_lines_good = TRUE;
+ gchar **split;
+ gchar **ptr;
+
+ ptr = split = g_strsplit (match_str, "\n", -1);
+ while (*ptr && *(ptr + 1)) {
+ gchar *str = *ptr;
+ gint len = strlen (str);
+
+ if (sscanf (str, "[%u:%02u.%02u]", &n1, &n2, &n3) == 3 ||
+ sscanf (str, "[%u:%02u.%03u]", &n1, &n2, &n3) == 3) {
+ all_lines_good = TRUE;
+ } else if (str[len - 1] == ']' && strchr (str, ':') != NULL) {
+ all_lines_good = TRUE;
+ } else {
+ all_lines_good = FALSE;
+ break;
+ }
+
+ ptr++;
+ }
+ g_strfreev (split);
+
+ if (all_lines_good)
+ return GST_SUB_PARSE_FORMAT_LRC;
+ }
GST_DEBUG ("no subtitle format detected");
return GST_SUB_PARSE_FORMAT_UNKNOWN;
GST_STATIC_CAPS ("application/x-subtitle-qttext");
#define QTTEXT_CAPS (gst_static_caps_get (&qttext_caps))
+static GstStaticCaps lrc_caps = GST_STATIC_CAPS ("application/x-subtitle-lrc");
+#define LRC_CAPS (gst_static_caps_get (&lrc_caps))
+
static void
gst_subparse_type_find (GstTypeFind * tf, gpointer private)
{
GST_DEBUG ("QTtext format detected");
caps = QTTEXT_CAPS;
break;
+ case GST_SUB_PARSE_FORMAT_LRC:
+ GST_DEBUG ("LRC format detected");
+ caps = LRC_CAPS;
+ break;
default:
case GST_SUB_PARSE_FORMAT_UNKNOWN:
GST_DEBUG ("no subtitle format detected");
GST_SUB_PARSE_FORMAT_MPL2 = 6,
GST_SUB_PARSE_FORMAT_SUBVIEWER = 7,
GST_SUB_PARSE_FORMAT_DKS = 8,
- GST_SUB_PARSE_FORMAT_QTTEXT = 9
+ GST_SUB_PARSE_FORMAT_QTTEXT = 9,
+ GST_SUB_PARSE_FORMAT_LRC = 10
} GstSubParseFormat;
typedef struct {