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

ExoPlayer doesn't apply presentationTimeOffset of the DASH EventStream #10460

Closed
1 task done
vkoehler opened this issue Jul 21, 2022 · 3 comments
Closed
1 task done
Assignees
Labels

Comments

@vkoehler
Copy link

ExoPlayer Version

2.18.0

Devices that reproduce the issue

device independent

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

  1. Play the attached media in the demo apply
  2. Seek to the position shortly before the end of the media
  3. Wait until the end of the media

Expected result

Player changes the playback state to Player.STATE_ENDED at the end of the media

Actual result

Player stays in the playback state Player.STATE_READY

This happens because MetadataRenderer gets stuck right after the start of the playback and can't output pending metadata with pendingMetadataTimestampUs=1657987406382857. This timestamp corresponds to the presentationTime of the Event in the EventStream in the mpd.

When removing EventStream from the mpd or setting presentationTime of the Event to presentationTime - presentationTimeOffset in the mpd, issue disappears.

Media

by email

Bug Report

@ojw28
Copy link
Contributor

ojw28 commented Jul 21, 2022

The DASH specification doesn't define presentationTimeOffset on EventStream [*], so I think it's correct that the player is ignoring it. The Event elements should just have the correct timestamps specified on them directly. You indicate that if you change the manifest to make this the case then the issue goes away, so I think this is a content problem.

As a related note, when an Event has a timestamp that's (incorrectly) past the end of the period duration, we would ideally drop it rather than delaying the transition to STATE_ENDED. Fixing this is tracked by #9969.

Closing this both as "bad media" and as a duplicate of #9969.

[*] I looked at ISO/IEC 23009-1:2019(E) to reach this conclusion. If there's a newer revision that does include presentationTimeOffset attribute on EventStream, then please let us know!

@vkoehler
Copy link
Author

@ojw28 There are two editions of ISO/IEC 23009-1:2019(E)
3rd edition 2019-08
4th edition 2019-12
presentationTimeOffset on EventStream has been introduced in the 4th edition. Would you check it again please? https://standards.iso.org/ittf/PubliclyAvailableStandards/c079329_ISO_IEC_23009-1_2019(E).zip

@ojw28 ojw28 reopened this Jul 25, 2022
@ojw28
Copy link
Contributor

ojw28 commented Jul 25, 2022

Thanks for the pointer. We will update DashManifestParser to parse and apply EventStream@presentationTimeOffset .

ojw28 added a commit that referenced this issue Jul 25, 2022
Issue: #10460
#minor-release
PiperOrigin-RevId: 463163839
@ojw28 ojw28 closed this as completed Jul 25, 2022
tonihei pushed a commit to androidx/media that referenced this issue Aug 8, 2022
Issue: google/ExoPlayer#10460
#minor-release
PiperOrigin-RevId: 463163839
@google google locked and limited conversation to collaborators Sep 24, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants