inputstream.adaptive icon indicating copy to clipboard operation
inputstream.adaptive copied to clipboard

[DASH] Partials manifest updates not supported, broken playback

Open dapharsyde opened this issue 2 years ago • 3 comments
trafficstars

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Playback of Hulu LiveTV content with IA results in playback jumping backwards when advertisements begin playing.

Expected Behavior

Here is a clear and concise description of what was expected to happen:

Playback should continue smoothly - or just skip the ads/play a blank screen ;)

Actual Behavior

Playback jumps backwards and forwards, eventually the video playback ends. Issue occurs when manifest files begin including presentationTimeOffset.

Possible Fix

Implement support for presentationTimeOffset

To Reproduce

Steps to reproduce the behavior:

  1. Begin Live TV on Hulu channel that marks advertisements
  2. Wait for advertisement to begin playing

Debuglog

The debuglog can be found here:

kodi.log

MPD/M3U8s/ISM

An example or copy of a manifest (or manifests for HLS - master and variants) can be found here:

manifests.zip

Screenshots

Here are some links or screenshots to help explain the problem:

Additional context or screenshots (if appropriate)

Here is some additional context or explanation that might help:

Your Environment

Used Operating system:

  • [ ] Android

  • [ ] iOS

  • [ ] tvOS

  • [ ] Linux

  • [ ] OSX

  • [X] Windows

  • [ ] Windows UWP

  • Operating system version/name: Windows 10

  • Kodi version: 21.0

  • inputstream.adaptive version: Omega nightly build

note: Once the issue is made we require you to update it with new information should that be required. Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

dapharsyde avatar Jul 06 '23 09:07 dapharsyde

code removed by PR #564 need more investigation

CastagnaIT avatar Jul 23 '23 18:07 CastagnaIT

Here are some patches that at least get the value of PresentationTimeOffset parsed out of the SegmentTemplate, but I don't know how to incorporate it into the clock timing. I'm hoping it's just a matter of some adding/subtracting some time values but this is all over my head. @matthuisman - can you explain why this was removed in #564 and what it would take to add it back in? Would it break streams from other providers?

DASHTree.cpp.patch SegTemplate.cpp.patch SegTemplate.h.patch

dapharsyde avatar Sep 02 '23 05:09 dapharsyde

I looked again at this problem i see that this provider send "partials" manifest updates if you look at subsequent manifests they "lack" of many data like representation tags this is the cause of following warnings

2023-07-06 01:36:32.228 T:4304  warning <general>: AddOnLog: inputstream.adaptive: adaptive::CDashTree::ParseTagAdaptationSet: Skipped AdaptationSet with id: "4289974598", has no representations.
2023-07-06 01:36:32.228 T:4304  warning <general>: AddOnLog: inputstream.adaptive: adaptive::CDashTree::ParseTagAdaptationSet: Skipped AdaptationSet with id: "2008774996", has no representations.
2023-07-06 01:36:32.228 T:4304  warning <general>: AddOnLog: inputstream.adaptive: adaptive::CDashTree::ParseTagAdaptationSet: Skipped AdaptationSet with id: "901119627", has no representations.
2023-07-06 01:36:32.228 T:4304  warning <general>: AddOnLog: inputstream.adaptive: No periods in the manifest

atm "partials" manifest updates are not supported on ISA and so must be implemented from scratch

since you have already provided the manifests will be easier for the future do the implementation and so presentationTimeOffset should not be a problem

this issue is similar to #1426

CastagnaIT avatar Mar 28 '24 07:03 CastagnaIT