Skip to content

Commit cdc37cb

Browse files
quariumcmassiot
authored andcommitted
upipe-ts: add SCTE-35 time splice descriptor
1 parent 48f84fb commit cdc37cb

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

include/upipe-ts/uref_ts_scte35_desc.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,14 @@ UREF_ATTR_SMALL_UNSIGNED(ts_scte35_desc_seg, sub_expected,
100100
"scte35.desc.seg.sub_expected",
101101
sub segment expected);
102102

103+
/* time splice descriptor */
104+
UREF_ATTR_UNSIGNED(ts_scte35_desc_time, tai_sec, "scte35.desc.time.tai_sec",
105+
seconds part of the TAI);
106+
UREF_ATTR_UNSIGNED(ts_scte35_desc_time, tai_nsec, "scte35.desc.time.tai_nsec",
107+
nanoseconds part of the TAI);
108+
UREF_ATTR_UNSIGNED(ts_scte35_desc_time, utc_off, "scte35.desc.time.utc_off",
109+
offset from UTC in seconds);
110+
103111
#ifdef __cplusplus
104112
}
105113
#endif

lib/upipe-ts/uref_ts_scte35.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,21 @@ struct uref *uref_ts_scte35_extract_desc(struct uref *uref, uint64_t at)
278278
}
279279
break;
280280
}
281+
282+
case SCTE35_SPLICE_DESC_TAG_TIME: {
283+
if (length < SCTE35_TIME_DESC_HEADER_SIZE) {
284+
uref_free(out);
285+
return NULL;
286+
}
287+
288+
uint64_t tai_sec = scte35_time_desc_get_tai_sec(desc);
289+
uint64_t tai_nsec = scte35_time_desc_get_tai_ns(desc);
290+
uint64_t utc_off = scte35_time_desc_get_utc_off(desc);
291+
uref_ts_scte35_desc_time_set_tai_sec(out, tai_sec);
292+
uref_ts_scte35_desc_time_set_tai_nsec(out, tai_nsec);
293+
uref_ts_scte35_desc_time_set_utc_off(out, utc_off);
294+
break;
295+
}
281296
}
282297
return out;
283298
}

0 commit comments

Comments
 (0)