hmmlib2 2.0.10: Rename annotation to timestamp
This commit is contained in:
parent
b20192e445
commit
65fe93fb57
|
@ -86,7 +86,7 @@ typedef struct {
|
|||
size_t marker_count;
|
||||
|
||||
HMML_Quote quote;
|
||||
} HMML_Annotation;
|
||||
} HMML_Timestamp;
|
||||
|
||||
typedef struct {
|
||||
int line;
|
||||
|
@ -97,8 +97,8 @@ typedef struct {
|
|||
typedef struct {
|
||||
_Bool well_formed;
|
||||
HMML_VideoMetaData metadata;
|
||||
HMML_Annotation* annotations;
|
||||
size_t annotation_count;
|
||||
HMML_Timestamp* timestamps;
|
||||
size_t timestamp_count;
|
||||
HMML_Error error;
|
||||
void* free_list; // implementation detail
|
||||
} HMML_Output;
|
||||
|
@ -467,7 +467,7 @@ next_attr:
|
|||
return ref;
|
||||
}
|
||||
|
||||
static void _hmml_parse_timecode(struct _hmml_parser* p, HMML_Annotation* anno)
|
||||
static void _hmml_parse_timecode(struct _hmml_parser* p, HMML_Timestamp* ts)
|
||||
{
|
||||
unsigned int h = 0, m = 0, s = 0;
|
||||
int offset = 0;
|
||||
|
@ -507,16 +507,16 @@ static void _hmml_parse_timecode(struct _hmml_parser* p, HMML_Annotation* anno)
|
|||
_hmml_err(p, "Minutes cannot exceed 59");
|
||||
}
|
||||
|
||||
anno->h = h;
|
||||
anno->m = m;
|
||||
anno->s = s;
|
||||
ts->h = h;
|
||||
ts->m = m;
|
||||
ts->s = s;
|
||||
}
|
||||
|
||||
static void _hmml_store_marker(struct _hmml_parser* p, HMML_Annotation* anno, char** out, char* text_mem, size_t text_mem_size)
|
||||
static void _hmml_store_marker(struct _hmml_parser* p, HMML_Timestamp* ts, char** out, char* text_mem, size_t text_mem_size)
|
||||
{
|
||||
HMML_Marker m = _hmml_parse_marker(p);
|
||||
m.offset = (*out) - text_mem;
|
||||
_hmml_persist_array(p, &anno->markers, &anno->marker_count, m);
|
||||
_hmml_persist_array(p, &ts->markers, &ts->marker_count, m);
|
||||
|
||||
const char* marker_text = m.parameter
|
||||
? m.parameter
|
||||
|
@ -531,7 +531,7 @@ static void _hmml_store_marker(struct _hmml_parser* p, HMML_Annotation* anno, ch
|
|||
*out += text_len;
|
||||
}
|
||||
|
||||
static size_t _hmml_parse_text(struct _hmml_parser* p, HMML_Annotation* anno)
|
||||
static size_t _hmml_parse_text(struct _hmml_parser* p, HMML_Timestamp* ts)
|
||||
{
|
||||
static char text_mem[4096];
|
||||
char* out = text_mem;
|
||||
|
@ -579,9 +579,9 @@ static size_t _hmml_parse_text(struct _hmml_parser* p, HMML_Annotation* anno)
|
|||
p->cursor += 4;
|
||||
HMML_Reference ref = _hmml_parse_ref(p);
|
||||
ref.offset = out - text_mem;
|
||||
_hmml_persist_array(p, &anno->references, &anno->reference_count, ref);
|
||||
_hmml_persist_array(p, &ts->references, &ts->reference_count, ref);
|
||||
} else {
|
||||
_hmml_store_marker(p, anno, &out, text_mem, sizeof(text_mem));
|
||||
_hmml_store_marker(p, ts, &out, text_mem, sizeof(text_mem));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -593,7 +593,7 @@ static size_t _hmml_parse_text(struct _hmml_parser* p, HMML_Annotation* anno)
|
|||
*out++ = c;
|
||||
++p->cursor;
|
||||
} else {
|
||||
_hmml_store_marker(p, anno, &out, text_mem, sizeof(text_mem));
|
||||
_hmml_store_marker(p, ts, &out, text_mem, sizeof(text_mem));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -609,24 +609,24 @@ static size_t _hmml_parse_text(struct _hmml_parser* p, HMML_Annotation* anno)
|
|||
}
|
||||
|
||||
size_t text_size = out - text_mem;
|
||||
anno->text = _hmml_persist_str(p, (struct _hmml_str){ text_mem, text_size });
|
||||
ts->text = _hmml_persist_str(p, (struct _hmml_str){ text_mem, text_size });
|
||||
|
||||
return text_size;
|
||||
}
|
||||
|
||||
static void _hmml_parse_quote(struct _hmml_parser* p, HMML_Annotation* anno)
|
||||
static void _hmml_parse_quote(struct _hmml_parser* p, HMML_Timestamp* ts)
|
||||
{
|
||||
char member[256];
|
||||
int id;
|
||||
int off = 0;
|
||||
|
||||
if(sscanf(p->cursor, "[quote %255s %d]%n", member, &id, &off) == 2 && off) {
|
||||
anno->quote.present = 1;
|
||||
anno->quote.id = id;
|
||||
anno->quote.author = _hmml_persist_str(p, (struct _hmml_str){ member, strlen(member) });
|
||||
ts->quote.present = 1;
|
||||
ts->quote.id = id;
|
||||
ts->quote.author = _hmml_persist_str(p, (struct _hmml_str){ member, strlen(member) });
|
||||
} else if(sscanf(p->cursor, "[quote %d]%n", &id, &off) == 1 && off) {
|
||||
anno->quote.present = 1;
|
||||
anno->quote.id = id;
|
||||
ts->quote.present = 1;
|
||||
ts->quote.id = id;
|
||||
} else {
|
||||
_hmml_err(p, "Unable to parse quote");
|
||||
}
|
||||
|
@ -634,7 +634,7 @@ static void _hmml_parse_quote(struct _hmml_parser* p, HMML_Annotation* anno)
|
|||
p->cursor += off;
|
||||
}
|
||||
|
||||
static void _hmml_parse_annotations(struct _hmml_parser* p)
|
||||
static void _hmml_parse_timestamps(struct _hmml_parser* p)
|
||||
{
|
||||
for(;;) {
|
||||
_hmml_skip_ws(p);
|
||||
|
@ -647,11 +647,11 @@ static void _hmml_parse_annotations(struct _hmml_parser* p)
|
|||
break;
|
||||
}
|
||||
|
||||
HMML_Annotation anno = {
|
||||
HMML_Timestamp ts = {
|
||||
.line = p->line
|
||||
};
|
||||
|
||||
_hmml_parse_timecode(p, &anno);
|
||||
_hmml_parse_timecode(p, &ts);
|
||||
|
||||
if(*p->cursor != '[') {
|
||||
_hmml_err(p, "Expected '['");
|
||||
|
@ -659,18 +659,18 @@ static void _hmml_parse_annotations(struct _hmml_parser* p)
|
|||
|
||||
if(p->cursor[1] == '@') {
|
||||
HMML_Marker m = _hmml_parse_marker(p);
|
||||
anno.author = m.marker;
|
||||
ts.author = m.marker;
|
||||
}
|
||||
|
||||
++p->cursor;
|
||||
|
||||
int text_len = _hmml_parse_text(p, &anno);
|
||||
int text_len = _hmml_parse_text(p, &ts);
|
||||
|
||||
if(p->cursor[0] == '[' && p->cursor[1] == ':') {
|
||||
++p->cursor;
|
||||
do {
|
||||
HMML_Marker m = _hmml_parse_marker(p);
|
||||
_hmml_persist_array(p, &anno.markers, &anno.marker_count, m);
|
||||
_hmml_persist_array(p, &ts.markers, &ts.marker_count, m);
|
||||
_hmml_skip_ws(p);
|
||||
if(*p->cursor != ':' && *p->cursor != ']') {
|
||||
_hmml_err(p, "Unterminated post-text category node");
|
||||
|
@ -680,12 +680,12 @@ static void _hmml_parse_annotations(struct _hmml_parser* p)
|
|||
}
|
||||
|
||||
if(p->cursor[0] == '[' && p->cursor[1] == 'q') {
|
||||
_hmml_parse_quote(p, &anno);
|
||||
_hmml_parse_quote(p, &ts);
|
||||
}
|
||||
|
||||
// convert all markers to lowercase, fix any out of range offsets
|
||||
for(size_t i = 0; i < anno.marker_count; ++i) {
|
||||
HMML_Marker* m = anno.markers + i;
|
||||
for(size_t i = 0; i < ts.marker_count; ++i) {
|
||||
HMML_Marker* m = ts.markers + i;
|
||||
for(char* c = m->marker; *c; ++c) {
|
||||
if(*c >= 'A' && *c <= 'Z') {
|
||||
*c = (*c - ('A' - 'a'));
|
||||
|
@ -696,7 +696,7 @@ static void _hmml_parse_annotations(struct _hmml_parser* p)
|
|||
}
|
||||
}
|
||||
|
||||
_hmml_persist_array(p, &p->out.annotations, &p->out.annotation_count, anno);
|
||||
_hmml_persist_array(p, &p->out.timestamps, &p->out.timestamp_count, ts);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -736,7 +736,7 @@ next_attr:
|
|||
|
||||
if(*p->cursor == ']') {
|
||||
++p->cursor;
|
||||
_hmml_parse_annotations(p);
|
||||
_hmml_parse_timestamps(p);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -813,7 +813,7 @@ void hmml_free(HMML_Output* out)
|
|||
}
|
||||
|
||||
const struct HMML_Version hmml_version = {
|
||||
2, 0, 9
|
||||
2, 0, 10
|
||||
};
|
||||
|
||||
#undef HSTX
|
||||
|
|
Loading…
Reference in New Issue