What's Changed
- Improvements to webhooks endpoints by @j616 in #142
- Adds additional endpoints for improved management of webhooks. Adds additional status/error reporting to webhooks metadata.
- ADR0040: Discuss making framerate mandatory for video, allowing VFR flag by @samdbmg in #143
- Variable frame rate video is now signalled explicitely via the
vfrparameter. Ifvfrisfalseor unset,frame_rateMUST be set.
- Variable frame rate video is now signalled explicitely via the
- Make
labelmandatory when registering uncontrolled Object Instances by @j616 in #155labelis now mandatory when registering uncontrolled Object Instances (i.e.get_urlsthat aren't controlled by the TAMS Service Instance)
- Improve usability of tags by @samdbmg in #153
- Adds support for arrays as a tag value type. Adds tags to webhooks.
- adr0036: Handle partial segment usage better by @samdbmg in #147
- Adds a
timerangeto Objects and deprecatedsample_countandsample_offset. Improves documentation on partial-object use
- Adds a
- Add Object Instance management endpoints by @j616 in #144
- Adds Object Instance management endpoints. Expands Object Instance metadata and filtering options. Promotes AppNote 0009 formatted Instance label metadata to core spec.
- Proposal to remove pre-actions from storage endpoint by @j616 in #148
- Removed pre-actions and
put_cors_urlfrom/flows/<id>/storageresponse. These properties pre-date the open-sourcing of TAMS and we are unaware of any real world use or use cases.
- Removed pre-actions and
- Allow
ts_offsetto be a negative offset by @samdbmg in #140- Only changes the description which was erroneously strict
- Clarify behaviour on conflicting Flow/Source metadata by @j616 in #146
- Clarifies that store implementations should verify that Flow metadata is compatible with the associated Source
- Better explain how to work out which parts of a media object to use by @samdbmg in #141
- Adds further explanatory documentation on how to work out which part of an object a segment uses
- Audit and update TAMS documentation and specification by @j616 in #149
- Generally improved the consistency and clarity of documentation.
- examples: Add option to supply Flow metadata by @samdbmg in #145
- Allows custom Flow metadata to be provided to HLS ingest example
- examples: Tweak the outgest script for presigned by @samdbmg in #151
- Outgest example script modified such that it requests pre-signed URLs
- appnote: Fix error in deleting object instances by @samdbmg in #152
- Fixes an error in the above Object Instance management PR
Implementation considerations
This section calls out changes implementations may need/want to make. It also calls out behaviour which has been clarified where developers should verify their implementations.
Service Considerations
- New Object Instance management endpoints
- Add new Object Instance management endpoints/functionality
- Note: Ensure that clients cannot delete the last Instance of an Object via these endpoints
- Add/migrate metadata from Flows to Objects as required
- Populate managed Object Instance metadata from Storage Backend metadata as required
- Add new Object filtering options to Objects and Segments endpoints
- With the deprecation of AppNote 0009 formatted labels, consider using labels for more descriptive Storage Backend naming
- Add new Object Instance management endpoints/functionality
- Mandatory labels on uncontrolled Object Instances
- Services should reject requests that register uncontrolled Object Instances that don’t have
labelset - Verify that there are no duplicate
labelsin requests to register instances - Services should choose a sensible default
labelfor existing uncontrolled Object Instances which don’t have one
- Services should reject requests that register uncontrolled Object Instances that don’t have
- Webhooks improvements
- Add the new webhooks management endpoints
- Ensure that it is possible to register multiple webhooks with different configurations that target the same endpoint
- Ensure that removing all events from a webhook configuration does not result in the deletion of the webhooks
- Tag improvements
- Add support for lists as a supported type for tag values
- Add tags to webhooks
- Adds support for list tag values to tag filters
- Mandatory frame rate, and new variable frame rate flag
- Add separate
vfrparameter to video Flows - Validate the combinations of
vfrvalue andframe_ratepresence
- Add separate
- Changes to better support partial segment re-use
- Add
timerangeproperty to Objects- Note that this parameter is called
object_timerangewhen referred to in contexts other than the Objects endpoints - Implementations should consider the best way to populate this field for existing content
- If implementations can be certain Flow Segments only use full Objects, this may be set to the
timerangeoffset byts_offsetof the segment(s) using the Object - If implementations can be certain at least one Flow Segment uses the full Object, this may be set to the
timerangeoffset byts_offsetof the segment using the Object with the largesttimerangeduration - If implementations cannot be certain of the above, they may have to inspect the timing of the Object using a tool such as ffprobe
- Note that
sample_countandsample_offsetshould not be relied upon as they capture the unused samples in the Object before the Segment(s), but not unused samples after the Segment(s). They also do not take into account the effect of missing samples on the time range.
- If implementations can be certain Flow Segments only use full Objects, this may be set to the
- Note that this parameter is called
- Add the query parameters that enable the inclusion of Object
timerangeon the Objects and Segments endpoints - Add logic to set the Object
timerangeto the Segmenttimerangeoffset byts_offsetwhen not explicitly provided by the client - Reject the registration of Segments who’s
timerangeoffset byts_offsetfall outside of the relevant Object’stimerange
- Add
- Correction to
ts_offsetdescription- Verify negative
ts_offsetis supported
- Verify negative
- Clarification on conflicting Source/Flow metadata
- Verify that Flow creation/modification requests are rejected when incompatible with their Source’s metadata
- Removal of pre-actions and
put_cors_urlfrom Storage endpoint- Services should no longer return pre-actions or
put_cors_urlwithput_urls
- Services should no longer return pre-actions or
Client Considerations
- Changes to better support partial segment re-use
- Writing clients should set the
object_timerangeproperty on the Segment where and Object is first registered if the complete Object isn’t used - Consuming clients should move to using
object_timerange, Segmenttimerange, and Segmentts_offsetfor operations in place of the now deprecatedsample_countandsample_offsetparameters
- Writing clients should set the
- Tag improvements
- Add support for list tag value types as required, particularly where tags are presented to users
- Webhooks improvements
- Where clients support the management of existing webhooks, update to use the new management mechanisms
- Creation of webhooks is backwards compatible
- New Object Instance management endpoints
- Clients should ensure that
key_frame_countis set to the number of key frames in the Object, not the Segment - Add support for Object Instance management as required
- Add support for new Object Instance filter options as required
- Add support for new Object Instance parameters on the the Objects and Flow Segments endpoints as required, particularly when registering unmanaged Instances
- Clients should ensure that
- Mandatory frame rate, and new variable frame rate flag
- Writing clients which support variable frame rates should set the
vfrflag as required - Writing clients MUST always set
frame_ratewhenvfris False or unset - Reading clients should still be able to identify VFR content based on the presence of
frame_rate, but should prefer using the value ofvfrfor this purpose
- Writing clients which support variable frame rates should set the
- Clarification on conflicting Source/Flow metadata
- Verify that Flow creation/modifications are compatible with related Source
- Removal of pre-actions and
put_cors_urlfrom Storage endpoint- Clients no longer need to handle pre-actions or
put_cors_url
- Clients no longer need to handle pre-actions or
- Mandatory labels on uncontrolled Object Instances
- Clients registering uncontrolled Object Instances MUST set
labelon the Instances - Client implementors should verify that their code won’t attempt to register duplicate
labels
- Clients registering uncontrolled Object Instances MUST set
Full Changelog: 7.0...8.0