Skip to content

Interstitials improvements and fixes #7425

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

Merged
merged 10 commits into from
Aug 4, 2025

Conversation

robwalch
Copy link
Collaborator

@robwalch robwalch commented Jul 24, 2025

This PR will...

  • Fix DateRange start sliding in Live (use frag.setStart over frag.start = to update DateRange.tagAnchor ref)
  • Skip gaps between interstitial assets
  • Make MEDIA_ATTACHED async on transferMedia (this.media undefined in id3-track-controller onMediaAttached otherwise)
  • Add metadata cue timing to assets for better asset event timing
  • Removed unnecessary conditionals in changed files (added looser typing in cases where object[index] result may be undefined)
  • Defer asset playlist loading until buffered to asset (assets are loaded in order to allow for shifts in playlist duration)
  • Consider event asset-list loading when advancing the schedule buffering item
  • Handle append-in-line interstitials with shorter that playout-limit fill
  • Advance asset player buffering on asset error prior to starting interstitial b1f996b
  • Handle seeking into unplayable ranges caused by truncated interstitials

Why is this Pull Request needed?

Fixes Interstitial timing issues in Live. Improves handling of HLS Interstitials with asset lists with inaccurate durations.

Are there any points in the code the reviewer needs to double check?

Resolves issues:

Fixes #7426

Checklist

  • changes have been done against master branch, and PR does not conflict
  • new unit / functional tests have been added (whenever applicable)
  • API or design changes are documented in API.md

@robwalch robwalch added this to the 1.6.8 milestone Jul 24, 2025
@robwalch robwalch marked this pull request as ready for review July 24, 2025 18:12
@robwalch robwalch force-pushed the bugfix/interstitials-time-mapping branch from 7249e99 to 0521fb5 Compare July 24, 2025 22:47
@martmol
Copy link
Collaborator

martmol commented Jul 29, 2025

Tested the PR but playback is (still) stalling for me when total asset length is shorter than playout.

[1753768070_812347709-5-3052885090] [log] > [subtitle-stream-controller]: Reset loading state
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1753768070_812347709-6-2051998053" 4223.10-4253.18] 9c03634d-a003-485e-9e2a-a851f461cc2a append-in-place from HlsAssetPlayer: ["1753768070_812347709-5-3052885090" 4192.77-4223.10] b2181525-6a23-469e-9eba-bdc6b4bc51b3 append-in-place
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > attachMedia
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [buffer-controller]: transferred media source: MediaSource
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":true}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":true}}}
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [buffer-controller]: SourceBuffers created. Running queue: 
video: (none) 
audio: (SourceBuffer) 
audiovideo: (none) }
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-5-3052885090] [log] > [stream-controller]: IDLE->ENDED
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: Advancing buffer past end of asset 1753768070_812347709-6-2051998053 ["1753768070_812347709" 4079.02-4258.99] at 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: buffered to end of asset HlsAssetPlayer: ["1753768070_812347709-6-2051998053" 4223.10-4253.18] 9c03634d-a003-485e-9e2a-a851f461cc2a append-in-place
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_BUFFERED_TO_BOUNDARY [primary: 4258.99-4677.08] (0.05 remaining)
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-1-1042659948] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-2-4270424841] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-3-1824327718] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-4-3867305859] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-5-3052885090] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > pause buffering
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [buffer-controller]: media source transferring
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [stream-controller]: Reset loading state
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [stream-controller]: ENDED->IDLE
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [audio-stream-controller]: Reset loading state
chunk-UUVTRCXK.js?v=06f02fb6:6257 [1753768070_812347709-6-2051998053] [log] > [subtitle-stream-controller]: Reset loading state
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: transfering MediaSource to Primary from HlsAssetPlayer: ["1753768070_812347709-6-2051998053" 4223.10-4253.18] 9c03634d-a003-485e-9e2a-a851f461cc2a append-in-place
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > attachMedia
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: transferred media source: MediaSource
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 276.0533333187671-18284.074666667355.
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: SourceBuffers created. Running queue: 
video: (none) 
audio: (SourceBuffer) 
audiovideo: (none) }
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > startLoad(4258.986666657794, <skip seek to start>)
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 6645 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: IDLE->STOPPED
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: STOPPED->IDLE
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [subtitle-stream-controller]: IDLE->STOPPED
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [subtitle-stream-controller]: STOPPED->IDLE
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: Loading level index 3 age 9.9 https://live-akc-prod-device.streaming.siriusxm.com/v1/763a312c70733a322c70653a342c616c673a312c657870736c3a312c73657373696f6e69643a63656633383130382d333866322d346431312d623863352d3662633662316438343064652c70726f66696c6569643a38396539316339302d343332342d346262352d386638372d3639626262313661653930372c646576696365706c6174666f726d3a7765622d6465736b746f702c6964656e7469747949643a35313833613766312d303163622d346565642d396430642d643533656430316161323738_1753868113-1753868413_780ef3d8eedaeb9ed5c61b55f268afbbf3a74614/tpac_iad_iad/espnradio/433/enc/256k/256k_slide_long.m3u8
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: live playlist 3 REFRESHED 41020--1
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 9830 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: Level 3 loaded [39165,41020][part-41020--1], cc [0, 0] duration:18008.021333347588
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_UPDATED (20): ["1753764248_3443158288" 285.87-465.79],["1753765068_1309663294" 1076.78-1196.76],["1753766304_3390534039" 2312.28-2402.65],["1753766880_51263454" 2889.05-3008.73],["1753768070_812347709" 4079.02-4258.99],["1753768668_1883003718" 4677.08-4797.06],["1753769904_2108306568" 5912.49-6004.35],["1753770480_1516480929" 6488.87-6612.95],["1753771669_792177346" 7678.17-7858.18],["1753772268_836097658" 8276.86-8396.80],["1753773504_4040344751" 9512.32-9602.65],["1753774080_2045491385" 10088.92-10211.37],["1753775270_481887991" 11278.98-11458.94],["1753775868_71802377" 11876.91-11996.84],["1753777104_1610061690" 13112.32-13202.52],["1753777681_2122627458" 13689.26-13809.19],["1753778870_3993893928" 14878.85-15058.90],["1753779468_4133381219" 15476.95-15596.93],["1753780704_4238788425" 16712.62-16804.35],["1753781280_1335118579" 17289.05-17410.69]
Schedule: [primary: 0.00-285.87],["1753764248_3443158288": 285.87-465.79],[primary: 465.79-1076.78],["1753765068_1309663294": 1076.78-1196.76],[primary: 1196.76-2312.28],["1753766304_3390534039": 2312.28-2402.65],[primary: 2402.65-2889.05],["1753766880_51263454": 2889.05-3008.73],[primary: 3008.73-4079.02],["1753768070_812347709": 4079.02-4253.18],[primary: 4258.99-4677.08],["1753768668_1883003718": 4677.08-4797.06],[primary: 4797.06-5912.49],["1753769904_2108306568": 5912.49-6004.35],[primary: 6004.35-6488.87],["1753770480_1516480929": 6488.87-6612.95],[primary: 6612.95-7678.17],["1753771669_792177346": 7678.17-7858.18],[primary: 7858.18-8276.86],["1753772268_836097658": 8276.86-8396.80],[primary: 8396.80-9512.32],["1753773504_4040344751": 9512.32-9602.64],[primary: 9602.65-10088.92],["1753774080_2045491385": 10088.92-10211.37],[primary: 10211.37-11278.98],["1753775270_481887991": 11278.98-11458.94],[primary: 11458.94-11876.91],["1753775868_71802377": 11876.91-11996.84],[primary: 11996.84-13112.32],["1753777104_1610061690": 13112.32-13202.52],[primary: 13202.52-13689.26],["1753777681_2122627458": 13689.26-13809.19],[primary: 13809.19-14878.85],["1753778870_3993893928": 14878.85-15058.90],[primary: 15058.90-15476.95],["1753779468_4133381219": 15476.95-15596.93],[primary: 15596.93-16712.62],["1753780704_4238788425": 16712.62-16804.35],[primary: 16804.35-17289.05],["1753781280_1335118579": 17289.05-17410.69],[primary: 17410.69-Infinity] pos: 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 285.8666666527671-18293.888000000356.
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: Loading level index 3 age 9.9 https://live-akc-prod-device.streaming.siriusxm.com/v1/763a312c70733a322c70653a342c616c673a312c657870736c3a312c73657373696f6e69643a63656633383130382d333866322d346431312d623863352d3662633662316438343064652c70726f66696c6569643a38396539316339302d343332342d346262352d386638372d3639626262313661653930372c646576696365706c6174666f726d3a7765622d6465736b746f702c6964656e7469747949643a35313833613766312d303163622d346565642d396430642d643533656430316161323738_1753868113-1753868413_780ef3d8eedaeb9ed5c61b55f268afbbf3a74614/tpac_iad_iad/espnradio/433/enc/256k/256k_slide_long.m3u8
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: live playlist 3 REFRESHED 41021--1
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 9841 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: Level 3 loaded [39166,41021][part-41021--1], cc [0, 0] duration:18008.021333347588
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_UPDATED (20): ["1753764248_3443158288" 295.68-475.61],["1753765068_1309663294" 1076.78-1196.76],["1753766304_3390534039" 2312.28-2402.65],["1753766880_51263454" 2889.05-3008.73],["1753768070_812347709" 4079.02-4258.99],["1753768668_1883003718" 4677.08-4797.06],["1753769904_2108306568" 5912.49-6004.35],["1753770480_1516480929" 6488.87-6612.95],["1753771669_792177346" 7678.17-7858.18],["1753772268_836097658" 8276.86-8396.80],["1753773504_4040344751" 9512.32-9602.65],["1753774080_2045491385" 10088.92-10211.37],["1753775270_481887991" 11278.98-11458.94],["1753775868_71802377" 11876.91-11996.84],["1753777104_1610061690" 13112.32-13202.52],["1753777681_2122627458" 13689.26-13809.19],["1753778870_3993893928" 14878.85-15058.90],["1753779468_4133381219" 15476.95-15596.93],["1753780704_4238788425" 16712.62-16804.35],["1753781280_1335118579" 17289.05-17410.69]
Schedule: [primary: 0.00-295.68],["1753764248_3443158288": 295.68-475.60],[primary: 475.61-1076.78],["1753765068_1309663294": 1076.78-1196.76],[primary: 1196.76-2312.28],["1753766304_3390534039": 2312.28-2402.65],[primary: 2402.65-2889.05],["1753766880_51263454": 2889.05-3008.73],[primary: 3008.73-4079.02],["1753768070_812347709": 4079.02-4253.18],[primary: 4258.99-4677.08],["1753768668_1883003718": 4677.08-4797.06],[primary: 4797.06-5912.49],["1753769904_2108306568": 5912.49-6004.35],[primary: 6004.35-6488.87],["1753770480_1516480929": 6488.87-6612.95],[primary: 6612.95-7678.17],["1753771669_792177346": 7678.17-7858.18],[primary: 7858.18-8276.86],["1753772268_836097658": 8276.86-8396.80],[primary: 8396.80-9512.32],["1753773504_4040344751": 9512.32-9602.64],[primary: 9602.65-10088.92],["1753774080_2045491385": 10088.92-10211.37],[primary: 10211.37-11278.98],["1753775270_481887991": 11278.98-11458.94],[primary: 11458.94-11876.91],["1753775868_71802377": 11876.91-11996.84],[primary: 11996.84-13112.32],["1753777104_1610061690": 13112.32-13202.52],[primary: 13202.52-13689.26],["1753777681_2122627458": 13689.26-13809.19],[primary: 13809.19-14878.85],["1753778870_3993893928": 14878.85-15058.90],[primary: 15058.90-15476.95],["1753779468_4133381219": 15476.95-15596.93],[primary: 15596.93-16712.62],["1753780704_4238788425": 16712.62-16804.35],[primary: 16804.35-17289.05],["1753781280_1335118579": 17289.05-17410.69],[primary: 17410.69-Infinity] pos: 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 295.6799999857671-18303.701333333356.
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: Loading level index 3 age 9.9 https://live-akc-prod-device.streaming.siriusxm.com/v1/763a312c70733a322c70653a342c616c673a312c657870736c3a312c73657373696f6e69643a63656633383130382d333866322d346431312d623863352d3662633662316438343064652c70726f66696c6569643a38396539316339302d343332342d346262352d386638372d3639626262313661653930372c646576696365706c6174666f726d3a7765622d6465736b746f702c6964656e7469747949643a35313833613766312d303163622d346565642d396430642d643533656430316161323738_1753868113-1753868413_780ef3d8eedaeb9ed5c61b55f268afbbf3a74614/tpac_iad_iad/espnradio/433/enc/256k/256k_slide_long.m3u8
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: live playlist 3 REFRESHED 41022--1
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 9841 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: Level 3 loaded [39167,41022][part-41022--1], cc [0, 0] duration:18008.02133334859
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_UPDATED (20): ["1753764248_3443158288" 305.49-485.42],["1753765068_1309663294" 1076.78-1196.76],["1753766304_3390534039" 2312.28-2402.65],["1753766880_51263454" 2889.05-3008.73],["1753768070_812347709" 4079.02-4258.99],["1753768668_1883003718" 4677.08-4797.06],["1753769904_2108306568" 5912.49-6004.35],["1753770480_1516480929" 6488.87-6612.95],["1753771669_792177346" 7678.17-7858.18],["1753772268_836097658" 8276.86-8396.80],["1753773504_4040344751" 9512.32-9602.65],["1753774080_2045491385" 10088.92-10211.37],["1753775270_481887991" 11278.98-11458.94],["1753775868_71802377" 11876.91-11996.84],["1753777104_1610061690" 13112.32-13202.52],["1753777681_2122627458" 13689.26-13809.19],["1753778870_3993893928" 14878.85-15058.90],["1753779468_4133381219" 15476.95-15596.93],["1753780704_4238788425" 16712.62-16804.35],["1753781280_1335118579" 17289.05-17410.69]
Schedule: [primary: 0.00-305.49],["1753764248_3443158288": 305.49-485.42],[primary: 485.42-1076.78],["1753765068_1309663294": 1076.78-1196.76],[primary: 1196.76-2312.28],["1753766304_3390534039": 2312.28-2402.65],[primary: 2402.65-2889.05],["1753766880_51263454": 2889.05-3008.73],[primary: 3008.73-4079.02],["1753768070_812347709": 4079.02-4253.18],[primary: 4258.99-4677.08],["1753768668_1883003718": 4677.08-4797.06],[primary: 4797.06-5912.49],["1753769904_2108306568": 5912.49-6004.35],[primary: 6004.35-6488.87],["1753770480_1516480929": 6488.87-6612.95],[primary: 6612.95-7678.17],["1753771669_792177346": 7678.17-7858.18],[primary: 7858.18-8276.86],["1753772268_836097658": 8276.86-8396.80],[primary: 8396.80-9512.32],["1753773504_4040344751": 9512.32-9602.64],[primary: 9602.65-10088.92],["1753774080_2045491385": 10088.92-10211.37],[primary: 10211.37-11278.98],["1753775270_481887991": 11278.98-11458.94],[primary: 11458.94-11876.91],["1753775868_71802377": 11876.91-11996.84],[primary: 11996.84-13112.32],["1753777104_1610061690": 13112.32-13202.52],[primary: 13202.52-13689.26],["1753777681_2122627458": 13689.26-13809.19],[primary: 13809.19-14878.85],["1753778870_3993893928": 14878.85-15058.90],[primary: 15058.90-15476.95],["1753779468_4133381219": 15476.95-15596.93],[primary: 15596.93-16712.62],["1753780704_4238788425": 16712.62-16804.35],[primary: 16804.35-17289.05],["1753781280_1335118579": 17289.05-17410.69],[primary: 17410.69-Infinity] pos: 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 305.4933333187671-18313.514666667357.
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: Loading level index 3 age 9.9 https://live-akc-prod-device.streaming.siriusxm.com/v1/763a312c70733a322c70653a342c616c673a312c657870736c3a312c73657373696f6e69643a63656633383130382d333866322d346431312d623863352d3662633662316438343064652c70726f66696c6569643a38396539316339302d343332342d346262352d386638372d3639626262313661653930372c646576696365706c6174666f726d3a7765622d6465736b746f702c6964656e7469747949643a35313833613766312d303163622d346565642d396430642d643533656430316161323738_1753868113-1753868413_780ef3d8eedaeb9ed5c61b55f268afbbf3a74614/tpac_iad_iad/espnradio/433/enc/256k/256k_slide_long.m3u8
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: live playlist 3 REFRESHED 41023--1
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 9816 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: Level 3 loaded [39168,41023][part-41023--1], cc [0, 0] duration:18008.02133334759
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_UPDATED (20): ["1753764248_3443158288" 315.31-495.23],["1753765068_1309663294" 1076.78-1196.76],["1753766304_3390534039" 2312.28-2402.65],["1753766880_51263454" 2889.05-3008.73],["1753768070_812347709" 4079.02-4258.99],["1753768668_1883003718" 4677.08-4797.06],["1753769904_2108306568" 5912.49-6004.35],["1753770480_1516480929" 6488.87-6612.95],["1753771669_792177346" 7678.17-7858.18],["1753772268_836097658" 8276.86-8396.80],["1753773504_4040344751" 9512.32-9602.65],["1753774080_2045491385" 10088.92-10211.37],["1753775270_481887991" 11278.98-11458.94],["1753775868_71802377" 11876.91-11996.84],["1753777104_1610061690" 13112.32-13202.52],["1753777681_2122627458" 13689.26-13809.19],["1753778870_3993893928" 14878.85-15058.90],["1753779468_4133381219" 15476.95-15596.93],["1753780704_4238788425" 16712.62-16804.35],["1753781280_1335118579" 17289.05-17410.69]
Schedule: [primary: 0.00-315.31],["1753764248_3443158288": 315.31-495.23],[primary: 495.23-1076.78],["1753765068_1309663294": 1076.78-1196.76],[primary: 1196.76-2312.28],["1753766304_3390534039": 2312.28-2402.65],[primary: 2402.65-2889.05],["1753766880_51263454": 2889.05-3008.73],[primary: 3008.73-4079.02],["1753768070_812347709": 4079.02-4253.18],[primary: 4258.99-4677.08],["1753768668_1883003718": 4677.08-4797.06],[primary: 4797.06-5912.49],["1753769904_2108306568": 5912.49-6004.35],[primary: 6004.35-6488.87],["1753770480_1516480929": 6488.87-6612.95],[primary: 6612.95-7678.17],["1753771669_792177346": 7678.17-7858.18],[primary: 7858.18-8276.86],["1753772268_836097658": 8276.86-8396.80],[primary: 8396.80-9512.32],["1753773504_4040344751": 9512.32-9602.64],[primary: 9602.65-10088.92],["1753774080_2045491385": 10088.92-10211.37],[primary: 10211.37-11278.98],["1753775270_481887991": 11278.98-11458.94],[primary: 11458.94-11876.91],["1753775868_71802377": 11876.91-11996.84],[primary: 11996.84-13112.32],["1753777104_1610061690": 13112.32-13202.52],[primary: 13202.52-13689.26],["1753777681_2122627458": 13689.26-13809.19],[primary: 13809.19-14878.85],["1753778870_3993893928": 14878.85-15058.90],[primary: 15058.90-15476.95],["1753779468_4133381219": 15476.95-15596.93],[primary: 15596.93-16712.62],["1753780704_4238788425": 16712.62-16804.35],[primary: 16804.35-17289.05],["1753781280_1335118579": 17289.05-17410.69],[primary: 17410.69-Infinity] pos: 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 315.3066666527671-18323.328000000358.
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: Loading level index 3 age 9.9 https://live-akc-prod-device.streaming.siriusxm.com/v1/763a312c70733a322c70653a342c616c673a312c657870736c3a312c73657373696f6e69643a63656633383130382d333866322d346431312d623863352d3662633662316438343064652c70726f66696c6569643a38396539316339302d343332342d346262352d386638372d3639626262313661653930372c646576696365706c6174666f726d3a7765622d6465736b746f702c6964656e7469747949643a35313833613766312d303163622d346565642d396430642d643533656430316161323738_1753868113-1753868413_780ef3d8eedaeb9ed5c61b55f268afbbf3a74614/tpac_iad_iad/espnradio/433/enc/256k/256k_slide_long.m3u8
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: live playlist 3 REFRESHED 41024--1
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [level-controller]: reload live playlist 256000bps in 9820 ms
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [stream-controller]: Level 3 loaded [39169,41024][part-41024--1], cc [0, 0] duration:18008.02133334759
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [interstitials]: INTERSTITIALS_UPDATED (20): ["1753764248_3443158288" 325.12-505.05],["1753765068_1309663294" 1076.78-1196.76],["1753766304_3390534039" 2312.28-2402.65],["1753766880_51263454" 2889.05-3008.73],["1753768070_812347709" 4079.02-4258.99],["1753768668_1883003718" 4677.08-4797.06],["1753769904_2108306568" 5912.49-6004.35],["1753770480_1516480929" 6488.87-6612.95],["1753771669_792177346" 7678.17-7858.18],["1753772268_836097658" 8276.86-8396.80],["1753773504_4040344751" 9512.32-9602.65],["1753774080_2045491385" 10088.92-10211.37],["1753775270_481887991" 11278.98-11458.94],["1753775868_71802377" 11876.91-11996.84],["1753777104_1610061690" 13112.32-13202.52],["1753777681_2122627458" 13689.26-13809.19],["1753778870_3993893928" 14878.85-15058.90],["1753779468_4133381219" 15476.95-15596.93],["1753780704_4238788425" 16712.62-16804.35],["1753781280_1335118579" 17289.05-17410.69]
Schedule: [primary: 0.00-325.12],["1753764248_3443158288": 325.12-505.04],[primary: 505.05-1076.78],["1753765068_1309663294": 1076.78-1196.76],[primary: 1196.76-2312.28],["1753766304_3390534039": 2312.28-2402.65],[primary: 2402.65-2889.05],["1753766880_51263454": 2889.05-3008.73],[primary: 3008.73-4079.02],["1753768070_812347709": 4079.02-4253.18],[primary: 4258.99-4677.08],["1753768668_1883003718": 4677.08-4797.06],[primary: 4797.06-5912.49],["1753769904_2108306568": 5912.49-6004.35],[primary: 6004.35-6488.87],["1753770480_1516480929": 6488.87-6612.95],[primary: 6612.95-7678.17],["1753771669_792177346": 7678.17-7858.18],[primary: 7858.18-8276.86],["1753772268_836097658": 8276.86-8396.80],[primary: 8396.80-9512.32],["1753773504_4040344751": 9512.32-9602.64],[primary: 9602.65-10088.92],["1753774080_2045491385": 10088.92-10211.37],[primary: 10211.37-11278.98],["1753775270_481887991": 11278.98-11458.94],[primary: 11458.94-11876.91],["1753775868_71802377": 11876.91-11996.84],[primary: 11996.84-13112.32],["1753777104_1610061690": 13112.32-13202.52],[primary: 13202.52-13689.26],["1753777681_2122627458": 13689.26-13809.19],[primary: 13809.19-14878.85],["1753778870_3993893928": 14878.85-15058.90],[primary: 15058.90-15476.95],["1753779468_4133381219": 15476.95-15596.93],[primary: 15596.93-16712.62],["1753780704_4238788425": 16712.62-16804.35],[primary: 16804.35-17289.05],["1753781280_1335118579": 17289.05-17410.69],[primary: 17410.69-Infinity] pos: 4253.131379
chunk-UUVTRCXK.js?v=06f02fb6:6257 [log] > [buffer-controller]: MediaSource duration is set to Infinity. Setting seekable range to 325.1199999857671-18333.14133333336.

robwalch and others added 7 commits July 31, 2025 18:23
- Fix DateRange mapping in Live with fragment reference sliding (use `frag.setStart` over `frag.start =` to update tagAnchor ref)
- Skip gaps between interstitial assets
- Make MEDIA_ATTACHED async on transferMedia (this.media undefined in id3-track-controller onMediaAttached otherwise)
- Add metadata cue timing to assets for better event timing
- Removed unnecessary conditionals in changed files (added looser typing in cases where object[index] result may be undefined)
Fixes #7426
@robwalch robwalch force-pushed the bugfix/interstitials-time-mapping branch from 9c95a57 to e7621d7 Compare August 1, 2025 01:24
@robwalch
Copy link
Collaborator Author

robwalch commented Aug 1, 2025

Tested the PR but playback is (still) stalling for me when total asset length is shorter than playout.

@martmol,

That should be addressed with the most recent commits.

Keep in mind that you will still get stall events your program produces unplayable regions, meaning you should expect a stall error event right before a seek forward to the next interstitial asset after a gap, or to the primary resumption offset. If you receive stall errors and they are not resolved by a seek, let me know.

@robwalch robwalch merged commit a19f424 into master Aug 4, 2025
16 checks passed
@robwalch robwalch deleted the bugfix/interstitials-time-mapping branch August 4, 2025 22:41
@martmol
Copy link
Collaborator

martmol commented Aug 5, 2025

Tested the PR but playback is (still) stalling for me when total asset length is shorter than playout.

Looks like this is working.

Advance asset player buffering on asset error prior to starting interstitial

This is still stalling playback for me. Single failing asset is enough to stall playback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging this pull request may close these issues.

Playback Stalls Near Live Edge Due to Shifting timelineStart on InterstitialAssetItem After LEVEL_UPDATED
2 participants