Skip to content

v1.11.0

Latest

Choose a tag to compare

@tobbee tobbee released this 30 Jun 07:55

Content Steering and Xlink for Multi-Period MPDs

Added

  • DASH Content Steering (ISO/IEC 23009-1 6th ed. §K.3.6, ETSI TS 103 998): the steer_ URL option
    advertises several service locations ("CDNs") that point back to this server and adds a
    <ContentSteering> element; the steering endpoint returns a PATHWAY-PRIORITY manifest with a
    configurable ttl= and mode=trigger (hold until switched) or mode=rotate. Per-session,
    per-CDN segment requests are tracked and switchable via the /api/steering/… API and a live
    /steering/session_status monitor page; client steering messages
    (_DASH_pathway/_DASH_throughput) are verified and off-pathway clients flagged. An optional
    csid_<group> token groups sessions under one shared decision. The /urlgen/ form has a Content
    Steering section and the index page links to the monitor.
  • DASH XLink for multi-period: the xlink_1 URL option activates the replacement of completed past
    periods elements with remote elements using XLink elements with xlink:href="onRequest".
    The XLink urls for each completed period target the same endpoint as the manifest and adding the
    ?period=<period_id> query parameter, which is interpreted by livesim2 to return the corresponding Period element.

Changed

  • URL generator: DRM options now follow the selected asset and are disabled for pre-encrypted assets.
  • The SGAI and Content Steering live monitor pages (/sgai/session_status,
    /steering/session_status) now follow the system light/dark setting (via Pico CSS) like the
    other web pages, with theme-aware status colours for legibility on both backgrounds, while
    staying full-width and compact for their denser tables. Their shared styles and JS helpers
    (esc/fmtTime/setDot) are factored into static/session_status.css and
    static/session_status_common.js.
  • Migrated the HTML web pages (welcome, assets, VoD assets, URL generator, SGAI
    session status) from Go's html/template to type-safe templ
    components (*.templ → generated *_templ.go). The text/template XML subtitle
    templates (stpptime.xml, stpptimecue.xml) are unchanged. Building now runs
    templ generate (see make templ); a make templ-check target and a pre-commit
    hook (triggered by both *.templ and *_templ.go changes) keep the generated code in
    sync, and the generated *_templ.go files are excluded from golangci-lint.
  • Updated github.com/go-chi/chi/v5 from v5.2.2 to v5.2.4.

Fixed

  • cmaf-ingest-receiver tests: replaced fixed time.Sleep waits for the receiver's asynchronous
    writes with polling (EventuallyWithT), fixing intermittent failures on the Windows CI runner.
  • Hardened the esc() helper on the SGAI session-status page (added in v1.10.0) to also escape
    " and ', so values interpolated into double-quoted HTML attributes cannot break out of the
    attribute (attribute XSS); matches the same hardening on the content-steering status page.