Index: subreader.c =================================================================== --- subreader.c (revision 29418) +++ subreader.c (working copy) @@ -97,9 +97,11 @@ static subtitle *sub_read_line_sami(stream_t* st, subtitle *current) { static char line[LINE_LEN+1]; - static char *s = NULL, *slacktime_s; + static char *s = NULL, *slacktime_s, *class_s; char text[LINE_LEN+1], *p=NULL, *q; int state; + static char sub_class[10]; + static int class_len = 0; current->lines = current->start = current->end = 0; current->alignment = SUB_ALIGNMENT_BOTTOMCENTER; @@ -140,6 +142,20 @@ continue; case 2: /* find ">" */ + class_s = stristr (s, "Class="); + if (class_s) { + class_s += 6; /* strlen ("Class=") */ + s = class_s; + if (class_len == 0) { + int i; + for (i = 0; i < 9 && *class_s != '>'; i++, class_s++) + sub_class[i] = *class_s; + sub_class[i] = '\0'; + class_len = strlen (sub_class); + printf ("sami subtitle class: %s\n", sub_class); + } + if (strncmp (sub_class, s, class_len)) { state = 0; continue; } + } if ((s = strchr (s, '>'))) { s++; state = 3; p = text; continue; } break;