ExoPlayer doesn't apply presentationTimeOffset of the DASH EventStream #10460
Copy link
Copy link
Closed
Labels
Description
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
- Play the attached media in the demo apply
- Seek to the position shortly before the end of the media
- 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
- You will email the zip file produced by
adb bugreportto dev.exoplayer@gmail.com after filing this issue.
Reactions are currently unavailable
Activity
ojw28 commentedon Jul 21, 2022
The DASH specification doesn't define
presentationTimeOffsetonEventStream[*], so I think it's correct that the player is ignoring it. TheEventelements 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
Eventhas a timestamp that's (incorrectly) past the end of the period duration, we would ideally drop it rather than delaying the transition toSTATE_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 includepresentationTimeOffsetattribute onEventStream, then please let us know!vkoehler commentedon Jul 22, 2022
@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 commentedon Jul 25, 2022
Thanks for the pointer. We will update
DashManifestParserto parse and applyEventStream@presentationTimeOffset.DASH: Parse and use EventStream.presentationTimeOffset
DASH: Parse and use EventStream.presentationTimeOffset