Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Limit playback to selected time segment in structured navigation #778

Open
5 tasks
elynema opened this issue Feb 24, 2025 · 2 comments
Open
5 tasks

Limit playback to selected time segment in structured navigation #778

elynema opened this issue Feb 24, 2025 · 2 comments
Assignees
Labels
investigation Related research work

Comments

@elynema
Copy link

elynema commented Feb 24, 2025

Description

With the migration of EVIADA content into MCO, Avalon has a use case for having playback based on the structured navigation terminate after the time segment completes playback.

In this case, if the user clicked on a heading in the structured navigation, playback should stop once that time segment completes playing. If the user clicked on a heading that has children, playback should continue through the children time segments and then stop once the parent time segment is completed.

Done Looks Like

  • Is this possible within IIIF?
  • Model what this manifest would like like
  • If we support this, does it break Ramp for other IIIF use cases?
  • Would Ramp default to auto-play?
  • Would it be strange for Ramp to work this way for EVIADA materials but different for other collections?
@elynema elynema added the investigation Related research work label Feb 24, 2025
@joncameron
Copy link
Contributor

joncameron commented Feb 26, 2025

The IIIF behavior property on ranges might be the way to implement this. Attributes on ranges would indicate to the viewer that only a specific portion of the full media should be presented to the user. There are probably a lot of tricky edge cases involved here.

Putting in options to remove default autoadvance etc. for collection managers could be a motivation to have SME handle IIIF ranges and structures more ably. SME creates structure data from manifests, and then uses that structure to update the manifest. In terms of evolution of SME, having the ability to create more flexible structures (like allowing for arbitrary nesting, as is common in IIIF).

We could model some IIIF structure in advance, and then build the desired UX around that.

Would be a good swarm topic: discussing IIIF structures and what they'd look like.

@Dananji Dananji self-assigned this Mar 11, 2025
@Dananji
Copy link
Collaborator

Dananji commented Mar 11, 2025

Is this possible within IIIF?

IIIF Presentation 3.0 spec has a behavior property, which can be used within Range resources. And it allows auto-advance and no-auto-advance as temporal behavioral values, which can be used for this use-case. Read more about behavior property here, https://iiif.io/api/presentation/3.0/#behavior

These 2 values are allowed to be used for behavior property within a Range type resource. See the table for behavior values at the end of the section, https://iiif.io/api/presentation/3.0/#a-summary-of-property-requirements.

Model what this manifest would like like

Example Manifest with nested timespans adapted from avalon-dev: https://gist.github.com/Dananji/6575bff0213ca42af36009650fa986de

Usage of example Manifest in Ramp: https://ramp.avalonmediasystem.org/?iiif-content=https://gist.githubusercontent.com/Dananji/6575bff0213ca42af36009650fa986de/raw/57010fcc91ca0e75d63f1c484b1709c175be39de/nested-timespans.json

If we support this, does it break Ramp for other IIIF use cases?

This shouldn't break Ramp code or UI for other use cases as it mimics the nested format of a given structure within a Manifest. Although there will be some smaller tweaks to work out with active timespan highlighting and related actions.

Additional work related to this implementation would be to parse the behavior property into the structure JSON object Ramp builds from the structure in Manifest. Since these are JSON objects adding a new property doesn't break the existing code.

However the default behavior of playback associated with structured navigation would change. See the next section.

Would Ramp default to auto-play?

In the temporal behavior context, the default value for behavior property is defined to be no-auto-advance in the IIIF Presentation 3.0 spec.

Since behavior is not regarded in the current implementation, Ramp keeps playing through the structure items in a Canvas (which I realized not IIIF compliant). But when we enable reading and parsing behavior property for Range resource types, we need to set the default value to no-auto-advance. This would work well for Eviada manifests, as this is the behavior we want for them.

And this would change the default behavior of playback with structured navigation.
Therefore, we will need to specifically set behavior: ["auto-advance"] in other Avalon manifests to keep the current behavior.

Would it be strange for Ramp to work this way for EVIADA materials but different for other collections?

From a user experience perspective, we might need to implement some changes into the structured navigation UI for this behavior. Otherwise, I think it would be a little bit confusing for a normal Avalon / IIIF manifest user.

Notes:

We will need to specifically set behavior: ["auto-advance"] in other Avalon manifests to keep the current default behavior.
When we implemented auto-advance for Ramp, we specifically set behavior: ["auto-advance"] for Avalon media-object manifests to turn on auto play through sections to mimic the default behavior in the previous implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
investigation Related research work
Projects
None yet
Development

No branches or pull requests

3 participants