-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Meeting minutes before 2024
Participants: Stephan Schreiner, Torbjörn Einarsson, Will Law, Gwendal Simon, Cise Midoglu, Casey Occhialini, Daniel Silhavy
- Released: 28.09.2022
- Features
- Add support for content steering as defined in the IOP specification
- New playback catchup seeking/pausing logic: Adjust the liveDelay when the user seeks/pauses. Then catchup mode is applied with the new live delay as target value.By calling player.seekToLive() the app can jump back to this original live delay
- Allow requests to be modified in an async manner.
- Matcher" for the XML parser; it checks @lang attributes read from MPDs and normalizes them into a BCP-47 compliant format. In addition, normalize language tags provided through dash.js' setInitialMediaSettingsFor()-API as Strings, while using RegExp through this API is maintained.
- Improvements/ Bugfixes
- Fixes the selection of a key system with parameters specified by the application. As an example, the robustnessLevel can be specified individually for audio and video tracks. Before this PR, only one of the provided values was used, either audio or video.
- Lower minPlaybackRateChange for non-Safari browsers depending on the maximum catchup rate. Otherwise the target live delay is not reached for low catchup rates.
- Complete Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.5.0
- Reference Player: https://reference.dashif.org/dash.js/v4.5.0/samples/dash-if-reference-player/index.html
- Samples: https://reference.dashif.org/dash.js/v4.5.0/samples/index.html
- https://github.com/Dash-Industry-Forum/dash.js/milestone/51
- Release date: Tomorrow, 2022-11-11
- Fix a bug that lead to wrong selection of initial WebVTT track
- This PR adds an example which shows how a dash.js player can be connected to a TimingObject.
- https://github.com/Dash-Industry-Forum/dash.js/pull/4064
- See Demuxed Talk
- What happens when player buffers
- Is there a master
- How is the master selected? Always the first one
- Separate settings matcher functions to work on each of the properties provided by the application individualy
- Separate playbackRate into a min and max value. This means the application of rates can be the same between ServiceDescription and dash.js settings.
- Add settings attribute to define manifest request timeout value
- Fix buffer pruning range for buffer ahead: Use continuous buffer to not introduce gaps.
- Fix Typescript typing in MediaPlayer.on() method
- Limit the seek range to the duration of the content
- Add min width to video time of Controlbar to overcome issues when seeking between a time less than one hour and a time larger than one hour
- Fix rounding issue when finding right time to seek over gaps
- Some platforms provide changeType as a function but actually using it causes problems when switching between tracks with different codecs. This PR adds a settings flag to disable the usage of changeType even when it is available on the platform.
- Only run Github actions if we are on the official repository
- Add supplementalProperties to index.d.ts and MediaInfo.js
- Catch errors when applying styles ob WebVTT cue
- Fix an issue that causes an exception when calling extendedFilter an empty string
- Set minimum catchup rate in LL testplayer to -0.1
- Improved XML parsing
- Support for adaptation-set-switching <SupplementalProperty>
- Content Steering
- Optimizations: https://github.com/Dash-Industry-Forum/dash.js/issues/4034
- Compare to next iteration of specification
- Use LiveSim as a steering server?
- Different encodings for the n CDNs
- Different subtitles
- Content Steering Server spec coming from CTA WAVE
- Will to reach out to Zach and discuss with Apple
- Steering Content from Will
- Support for CMSD
- ABR optimizations
- Multiperiod improvements
- Consistent track selection
- CBS doing some stuff
- ARI track
- Parse track information and dispatch them via event
- Discussion in Live TF
- PRFT box parsing
- Additional logic required to use this information
- MSE in webworkers
- Preload functionality
- Prebuffer segments in virtual buffer before appending them via MSE
- Enables ad insertion on HbbTV devices that typically only have one decoder
- Custom rendering of WebVTT instead of native rendering
- Textrack Optimizations?
- See Dan Sparacios talk from Demuxed
- Improve developer documentation
- New reference UI
- New/Improved controlbars
- Export as a module
- React, Vue?
- Student project?
- Mux MediaChrome project, web component based UI can be used with dash.js
- ABR testbed
- Collect test results of open-source players to test against
- Competing clients in same limited network
- Discussing synergies and cooperation in SVTA - Players and Playback Study Group Call
- New documentation based on Github pages
- Current draft: https://github.com/dsilhavy/dashjs-jekyll-documentation
- dash.js awards
- Extend deadline to May or say no submissions achieve the criteria
- Hand out at F2F meeting in May
- Use money for challenge or other related task
- https://2023.acmmmsys.org/participation/challenges/
- No clear solution
- Dashboards and quality assessment tool required
- @Daniel: Create thread on Github
- Extend deadline to May or say no submissions achieve the criteria
- Move to Akamai CDN
- Example:
- Adjust CNAME, @Daniel to send mail to Angela
- Presentations
- Will: DASH Content Steering - https://www.facebook.com/atscaleevents/videos/413100761015390/
- Daniel: Streamlining WebRTC and DASH for Near-Real-Time Media Delivery
- Demuxed
- Recordings to be published
- Will, Ali, Cise, Chris
Participants: Ali Begen, Casey Occhialini, Daniel Silhavy
- Released: 25.07.2022
-
Add support for specifying the start time of the stream as part of the initialize or the attachSource call. A demo can be found here
-
Fix errors when dispatching inline and inband events after manifest refreshes
-
ABR: Fix bugs in abandon request workflow and enable the rule by default
-
Check for keyPairs in clearkeys object before updating the key session
-
Complete Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.4.1
-
DASH-IF Hosted Player: https://reference.dashif.org/dash.js/v4.4.1/samples/dash-if-reference-player/index.html
-
Samples Page: https://reference.dashif.org/dash.js/v4.4.1/samples/index.html
-
Fix: Initialize DRM with robustnessLevel settings
-
Implement new catchup seeking/pausing logic as discussed during the F2F
-
https://github.com/Dash-Industry-Forum/dash.js/pull/4003
-
Adjust live delay when user seeks and pauses the video and then apply catchup mechanism at this new target delay
-
Save the original live delay and allow the app to seek back to this initial value by calling player.seekToLive
-
latencyThreshold has been removed
-
-
Lower minPlaybackRateChange for non Safari browsers depending on the maximum catchup rate
-
Add user agent parser to enable reliable browser name and version parsing
-
Fix stalling when using buffer.fastSwitchEnabled.
-
Pass URL info to modifyRequestHeader
-
Add hashtag mechanism to sample sections
-
Add popup notification to low latency testplayer page
-
Fix wrong call to _abortBeforeAppend
-
Looking into throughput and ABR
-
https://github.com/Dash-Industry-Forum/dash.js/pull/3776
-
Fix for AbandonRequestRule: https://github.com/Dash-Industry-Forum/dash.js/pull/3944
-
Implemented Resource Timing API for XHR
-
Found an issue with current XHR throughput calculation
- Progress event is used, "firstByteDate" is set to timestamp of first progress event. By then already some bytes have been received. The timestamp does not account for those bytes since firstByteDate is used as the starting timestamp. See slides for detailed explanation: https://members.dashif.org/wg/dash_js/document/4682
-
Currently, reworking code structure for throughput calculation and adding new calculation methods
-
Split storing of traces and concrete calculation into ThroughputModel and ThroughputController classes
-
Harmonic mean (new), Arithmetic mean, Exponential Weighted Moving Average
-
Any other method? LSTM (Long short-term memory)?
-
-
Timeout should be relative to segment duration
-
Abandon segment download before running into an empty buffer
-
Related issues
-
Separate project board for related issues: https://github.com/Dash-Industry-Forum/dash.js/projects/3
-
Abandon request rule : https://github.com/Dash-Industry-Forum/dash.js/issues/3840
-
Stability at high bitrates: https://github.com/Dash-Industry-Forum/dash.js/issues/3853
-
CMCD mtp field: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
-
Low latency throughput calculation: https://github.com/Dash-Industry-Forum/dash.js/issues/3538
-
-
-
CMCD Whitelisting
-
Improved track selection
-
Multiperiod improvements
-
Consistent track selection
-
CBS doing some stuff
-
-
ARI track
-
Parse track information and dispatch them via event
-
Discussion in Live TF
-
-
PRFT box parsing
-
Content Steering
-
Server needed, but could easily be added
-
F2F discussion item
-
-
Support for adaptation-set-switching <SupplementalProperty>
-
MSE in webworkers
-
Improve developer documentation
-
New reference UI
-
New/Improved controlbars
-
Export as a module
-
React, Vue?
-
Student project?
-
Mux MediaChrome project, web component based UI can be used with dash.js
-
-
Improved XML parsing
-
Push up in priority
-
Compare the object model
-
Discuss in the F2F
-
Might improve the existing library
-
update
-
remove unused non "_asArray" representation
-
-
-
ABR testbed
-
Collect test results of open-source players to test against
-
Competing clients in same limited network
-
Discussing synergies and cooperation in SVTA - Players and Playback Study Group Call
-
-
New documentation based on Github pages
- Current draft: https://github.com/dsilhavy/dashjs-jekyll-documentation
-
Reference page incident: Company used dash.js in a way that kills our EC2 instances. Linked directly to https://reference.dashif.org/dash.js/v3.2.2/dist/dash.all.debug.js from their production app. Reference client hosted on GoDaddy was not available anymore.
-
Conclusion/Plan: We move the reference client to cdn.dashjs.org/dashjs and use CNAME record to map to this URL.
-
Daniel to upload all the relevant files and then do a check.
-
Participants: Stephan Schreiner, Will Law, Nicolas Weil, Daniel Silhavy
- 20th June : 13:00 - 18:00
- Registration open: https://www.eventbrite.com/e/dashjs-face-to-face-meeting-2022-tickets-311628327717
- Meeting minutes: https://github.com/Dash-Industry-Forum/dash.js/wiki/European-2022-face-to-face-meeting,-June-20th
- Release candidate date: 15.07.2022
- Release date 22.07.2022
- Add support for specifying the start time of the stream as part of the initialize or the attachSource call
- https://github.com/Dash-Industry-Forum/dash.js/pull/3988
- VoD: Start time relative to first period
- Live:
- Option A: Start time relative to AST
- Option B: Start time relative to DVRWindow.start
- Option C: Start time relative to first period
- Option D: Start time: UTC time
- Use this one, aligns with posix attribute from MPD anchor
- See annex C of 23009-1
- JSDoc cleanup
- Dispatch volumechange from the native video element via dedicated MediaPlayerEvent
- Extends the License Request Complete event to include the original server response when DRM errors are reported
- Add example for multi audio tracks with initial track selection
- Do not trigger inline and inband events multiple times after a manifesh refresh.
- Account for events defined in different periods in the EventController.js
- https://github.com/Dash-Industry-Forum/dash.js/pull/3984
- In general: Increasing complexity for event handling
- Inline & Inband events
- Same IDs in different periods
- Version 0 vs. Version 1 events
- onReceive and onStart mode
- Handling after MPD updates
- Update events vs. ignore identical IDs
- Do not dispatch onReceive again
- Would be good to define test content for all the different variants with concrete expectations regarding client behavior.
- Reach out to Rufael, Nicolas
- AWS might have version 0 and version 1 events
- Extend EMSG sample player to allow users to specify own urls
- Reach out to Rufael, Nicolas
- Fix for a rounding error not allowing BUFFERING_COMPLETED to get fired
- Fix _checkPortalSize and initialRatio caluculation for unsorted Representations in an AS
- Fix text track enabling for MSS live streams
- Fix bug in abandon request workflow. Also enable rule by default
- Use lastBitrateCachingInfo.enabled and lastMediaSettingsCachingInfo.enabled
- Check for keyPairs in clearkeys object before updating the key session
- Fix/clearkey from ref UI: Check for initData in protData before overwriting
- Fix SegmentTimeline's segment getter from requested time
- Fix wrong description of PLAYBACK_LOADED_DATA event
- Fix a bug that lead to undefined customParametersModel after calling Mediaplayer.reset()
- Fix d trace httpList metric reporting
- Overwrite manifest mediaPresentationDuration if duration mismatch
- https://github.com/Dash-Industry-Forum/dash.js/pull/3971
- Only applied if enabled via settings and if mediaPresentationDuration is longer than Period durations. Any concerns with this?
- ABR testbed
- Collect test results of open-source players to test against
- Competing clients in same limited network
- Discussing synergies and cooperation in SVA - Players and Playback Study Group Call
- New documentation based on Github pages
- Current draft: https://github.com/dsilhavy/dashjs-jekyll-documentation
- Looking into throughput and ABR
- https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Fix for AbandonRequestRule: https://github.com/Dash-Industry-Forum/dash.js/pull/3944
- Implemented Resource Timing API for XHR
- Found an issue with current XHR throughput calculation
- Progress event is used, "firstByteDate" is set to timestamp of first progress event. By then already some bytes have been received. The timestamp does not account for those bytes since firstByteDate is used as the starting timestamp. See slides for detailed explanation: https://members.dashif.org/wg/dash_js/document/4682
- Currently, reworking code structure for throughput calculation and adding new calculation methods
- Split storing of traces and concrete calculation into ThroughputModel and ThroughputController classes
- Harmonic mean (new), Arithmetic mean, Exponential Weighted Moving Average
- Any other method? LSTM (Long short-term memory)?
- Timeout should be relative to segment duration
- Abandon segment download before running into an empty buffer
- Related issues
- Separate project board for related issues: https://github.com/Dash-Industry-Forum/dash.js/projects/3
- Abandon request rule : https://github.com/Dash-Industry-Forum/dash.js/issues/3840
- Stability at high bitrates: https://github.com/Dash-Industry-Forum/dash.js/issues/3853
- CMCD mtp field: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Low latency throughput calculation: https://github.com/Dash-Industry-Forum/dash.js/issues/3538
- CMCD Whitelisting
- Improved track selection
- Multiperiod improvements
- Consistent track selection
- CBS doing some stuff
- ARI track
- Parse track information and dispatch them via event
- Discussion in Live TF
- PRFT box parsing
- Adjusted catchup logic
- See discussion at f2f
- set the target live delay to the seek target. Catchup mechanism is applied at this “new” live delay. We need to maintain the original live delay if the user wants to seek back to the initial live edge.
- Content Steering
- Server needed, but could easily be added
- Document: https://onedrive.live.com/edit.aspx?resid=D699C028F8104923!42739&ithint=file%2cdocx&authkey=!AGAGj2Ol2gjLgS4
- Support for adaptation-set-switching
- MSE in webworkers
- Improve developer documentation
- New reference UI
- New/Improved controlbars
- Export as a module
- React, Vue?
- Student project?
- Improved XML parsing
- Push up in priority
- Compare the object model
- Discuss in the F2F
- Might improve the existing library
- update
- remove unused non "_asArray" representation
- Content Steering questions
- BaseURLs can have same serviceLocation:
- This attribute specifies a relationship between Base URLs such that BaseURL elements with the same @serviceLocation value are likely to have their URLs resolve to services at a common network location, for example a common Content Delivery Network.
- DASH_pathway might report value of a BaseURL that is currently blacklisted. Is this ok?
- Will to file update to spec: Adjust content steering spec to have unique serviceLocation element. No similar serviceLocation element for multiple BaseURLs
- Nicolas: Different steering for ad and primary content. How to differentiate?
- Might use different ServiceLocations for audio and video. What to report as DASH_pathway?
- How to steer MPD location?
- Location element needs an identifier like @serviceLocation
- Or use full location as the id
- Problems with query strings and token, strip them off in the player?
- What to report as DASH_throughput? Segments might be coming from different BaseURLs/CDNs. Differentiate between audio and video?
- Video preferred, only use audio if audio only manifest
- BaseURLs can have same serviceLocation:
Participants: Stephan Schreiner, Ali Begen, Casey Occialini, Nabajeet, Nicolas Weil, Daniel Silhavy
- 20th June : 13:00 - 18:00
- Registration open: https://www.eventbrite.com/e/dashjs-face-to-face-meeting-2022-tickets-311628327717
- Proposed agenda: https://github.com/Dash-Industry-Forum/dash.js/discussions/3912
- Check remote participation
- Currently 21 registrations
- Stephan might have a discussion topic regarding audio, text processing, accessibility implementation in dash.js
Release date: tbd
- Check for keyPairs in clearkeys object before updating the key session
- Fix/clearkey from ref UI: Check for initData in protData before overwriting
- Fix SegmentTimeline's segment getter from requested time
- Invalid frames using videos at 29.97fps and Smooth Streaming
- ABR testbed
- Collect test results of open-source players to test against
- Competing clients in same limited network
- New documentation based on Github pages
- Current draft: https://github.com/dsilhavy/dashjs-jekyll-documentation
- Looking into throughput and ABR
- https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Fix for AbandonRequestRule: https://github.com/Dash-Industry-Forum/dash.js/pull/3944
- Implemented Resource Timing API for XHR
- Found an issue with current XHR throughput calculation
- Progress event is used, "firstByteDate" is set to timestamp of first progress event. By then already some bytes have been received. The timestamp does not account for those bytes since firstByteDate is used as the starting timestamp. See slides for detailed explanation: https://members.dashif.org/wg/dash_js/document/4682
- Currently, reworking code structure for throughput calculation and adding new calculation methods
- Split storing of traces and concrete calculation into ThroughputModel and ThroughputController classes
- Harmonic mean (new), Arithmetic mean, Exponential Weighted Moving Average
- Any other method? LSTM (Long short-term memory)?
- Timeout should be relative to segment duration
- Abandon segment download before running into an empty buffer
- Related issues
- Separate project board for related issues: https://github.com/Dash-Industry-Forum/dash.js/projects/3
- Abandon request rule : https://github.com/Dash-Industry-Forum/dash.js/issues/3840
- Stability at high bitrates: https://github.com/Dash-Industry-Forum/dash.js/issues/3853
- CMCD mtp field: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Low latency throughput calculation: https://github.com/Dash-Industry-Forum/dash.js/issues/3538
- ARI track
- Parse track information and dispatch them via event
- @Daniel: Ask Thomas about slide deck explaining usage and use cases
- PRFT box parsing
- Content Steering
- Server needed, but could easily be added
- Document: https://onedrive.live.com/edit.aspx?resid=D699C028F8104923!42739&ithint=file%2cdocx&authkey=!AGAGj2Ol2gjLgS4
- F2F discussion item
- Support for adaptation-set-switching
- MSE in webworkers
- Improve developer documentation
- New reference UI
- Improved XML parsing
- Push up in priority
- Compare the object model
- Discuss in the F2F
- Might improve the existing library
- update
- remove unused non "_asArray" representation
- Casey/CBS planning to do some contributions regarding multiperiod
Participants: Ali Begen, Nabajeet Barman, Will Law, Daniel Silhavy
- RC date set to 22nd April to finalize some open PRs
- Extended testing period due to changes in numerous classes
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/48
- Service Description and Catchup logic
- Changed 62 files, extend RC testing period to two weeks: https://github.com/Dash-Industry-Forum/dash.js/pull/3831
- Move catchup logic to a separate
CatchupController
class - Move ServiceDescription logic to a separate class
ServiceDescriptionController
- Remove
minDrift
, always apply catchup logic if enabled. Catchup can explicitly be disabled in Settings.js- Collect options and come back to DASH-IF
- Remove
enableLowLatency
fromSettings.js
. Switch to low latency mode internally based on MPD parametersavailabilityTimeComplete=false
- Update documentation based on new features
- Do not overwrite
Settings.js
parameters when applying the ServiceDescription logic. - Use
MediaPlayerModel
as a proxy between classes and Settings.js if additional logic needs to be applied and the settings can not be used 1:1 - Add new class
CustomParametersModel
to save all callback functions and additional parameters defined by the app - Calculate the live latency at a central place
PlaybackController.computeAndSetLiveDelay
. Add notification to recalculate once settings are changed, see bullet below - Add
DISPATCH_KEY_MAP
toSettings.js
to trigger events once a specific setting is updated - Fix minor bugs when applying catchup mechanism
- Added support for , using "minBitrate", "maxBitrate" and "initialBitrate" of settings objects
- CMCD whitelist
- https://github.com/Dash-Industry-Forum/dash.js/pull/3893
- Whitelist implemented and merged, custom key/value pairs as part of next release
- Trigger event when AS is removed due to unsupported capabilities
- ECP: JSON stringify the license request payload to Clearkey servers
- Fix BOLA rule on track switch - empty audio buffer can lead to switch to lowest video quality
- Remove non-standard t metric from HttpList
- DVB Metrics reporting "withCredentials"
- https://github.com/Dash-Industry-Forum/dash.js/pull/3898
- withCredentials: indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates
- Update manifest url without re-initializing the player
- https://github.com/Dash-Industry-Forum/dash.js/pull/3900
- Background: Refresh CDN token on the manifest URL
- Fix concurrent internal seeks
- Reduce export settings url length
- Playready UTF-8 vs UTF-16 encoded keymessage - Auto detection
- Derive license request headers and license request challenge from key message. Automatically detect if UTF-16 or UTF-8
- https://github.com/Dash-Industry-Forum/dash.js/issues/3899
- Producer Reference Time - Adds calculation of liveDelay described in TS 103 285 Clause 10.20.4
- https://github.com/Dash-Industry-Forum/dash.js/pull/3895
- Discussion on the usage of the PRFT values. agreed on additional change to account for Latency@min values
- Rebase on top of current dev branch
- Bugfixes/Improvements
- Gap jumping on Samsung devices
- Long duration playback on Samsung - Playback stalling
- Fix liniting errors - No consistent indent
- Looking into throughput and ABR
- https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Implemented Resource Timing API for XHR
- https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- Does not work for SegmentBase because no mapping to range, only to url
- Add query parameters to identify the urls, could match the range
- Could be used to tune default algorithm
- Add relevant headers to livesim
- Standard Akamai ll-livestream: https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd
- Found an issue with current XHR throughput calculation
- Progress event is used, "firstByteDate" is set to timestamp of first progress event. By then already some bytes have been received. The timestamp does not account for those bytes since firstByteDate is used as the starting timestamp. See slides for detailed explanation: https://members.dashif.org/wg/dash_js/document/4682
- Might be useful to calculate the values individual for all the parts
- Does XHR gets dispatched at specific time cadence of when buffer is filled
- Related issues
- Abandon request rule : https://github.com/Dash-Industry-Forum/dash.js/issues/3840
- Stability at high bitrates: https://github.com/Dash-Industry-Forum/dash.js/issues/3853
- CMCD mtp field: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Low latency throughput calculation: https://github.com/Dash-Industry-Forum/dash.js/issues/3538
- MWS dash.js face to face
- 20th June : 13:00 - 18:00
- Registration open: https://www.eventbrite.com/e/dashjs-face-to-face-meeting-2022-tickets-311628327717
- Attend remotely?
- Keep it offline
- DASH-IF f2f
- Advanced capabilities of DASH. How to advertise this?
- How to extend the environment/background (always the same people)
- NPM download numbers: Latest version exceeds 3.2.2 and 2.9.3 for the first time --> Majority of the users on latest version
Participants: Will Law, Nabajeet Barman, Ali Begen, Michael Dolan, Stephan Schreiner, Matthew Juggins, KV Pasupuleti, Daniel Silhavy
- Released on 25th February
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/47
- Release: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.3.0
- Add support for multiple system strings for a single key system, e.g "com.microsoft.playready.recommendation" and "com.microsoft.playready" for the Playready DRM
- Add an "export settings" feature to reference UI to share all settings via a generated URL
- Fix live seeking for embedded devices on which we can't set video element time at unavailable range in audio AND video buffers
- Solve situations in which there is a gap at the start of a period in a dynamic MPD with .
- Fix calculation of thumbnail timestamps for SegmentTimeline
- Load the last remaining segment when the user seeks to the very end currentTime = duration
- RC date set to 15th April
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/48
- Service Description and Catchup logic
- See presentation: https://members.dashif.org/wg/dash_js/document/4644
- https://github.com/Dash-Industry-Forum/dash.js/pull/3831
- Catchup logic
- Moved to separate controller class: CatchupController, reduces size of PlaybackController
- Cleaned up the existing code.
- Discussed with DASH-IF
- Decided to remove minDrift
- Catchup mode can be deactivated using the "enableCatchup" setting
- Single point of live delay calculation. Right now two parts where liveDelay is calculated: playbackController and mediaplayerModel
- Discussion items
- When to automatically enable/disable catchup?
- Suggestion: Enable once at playback start for low latency stream. If a user seeks disable it in the application not in the player. The logic when to enable/disable can then be controlled by the application
- Remove threshold parameter from settings
- @Daniel: Collect all the different combinations and make a suggestion
- enableLowLatency flag. Should be enabled automatically and handled internally in the player
- Do we need a flag to disable chunk appending mode for incompatible MSE implementations?
- When to automatically enable/disable catchup?
- Service Description
- Moved to separate controller class: ServiceDescriptionController, reduces size of PlaybackController
- Changed code architecture to easily distinguish between different DASH profiles. For instance, apply different default settings for min/max catchup drift parameters for DVB-DASH vs. other profiles.
- Added support for , using "minBitrate", "maxBitrate" and "initialBitrate" of settings objects
- Lots of great new pull requests
- Producer Reference Time - Adds calculation of liveDelay described in TS 103 285 Clause 10.20.4
- https://github.com/Dash-Industry-Forum/dash.js/pull/3895
- Questions / Comments
- Teststreams available?
- Matt: To check if streams can be make available
- Support for parsing of prft boxes from media segments?
- Matt: Currently not supported
- We can use the PR #3831 from above to apply this for the DVB DASH profile
- Teststreams available?
- CMCD whitelist
- Bugfixes/Improvements
- Fix BOLA rule on track switch - empty audio buffer can lead to switch to lowest video quality
- Remove non-standard t metric from HttpList
- Gap jumping on Samsung devices
- Long duration playback on Samsung - Playback stalling
- DVB Metrics reporting "withCredentials"
- https://github.com/Dash-Industry-Forum/dash.js/pull/3898
- withCredentials: indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates
- Update manifest url without re-initializing the player
- https://github.com/Dash-Industry-Forum/dash.js/pull/3900
- Background: Refresh CDN token on the manifest URL
- Fix concurrent internal seeks
- Producer Reference Time - Adds calculation of liveDelay described in TS 103 285 Clause 10.20.4
- See dash.js roadmap planning
- Finding optimal latency target
- Mike - Problems with specific streams
- IMSC1
- Error in conformance server, can not download MPD
- @Daniel: To check MPD
- IMSC1
- dash.js awards
- @Daniel: Send email to DASH-IF
- MWS dash.js face to face
- 20th June : 13:00 - 18:00
- MHV Video dash.js presentation
- Add link here when recordings available
Participants: Ali Begen, Nabajeet Barman, Will Law, Daniel Silhavy
- RC date set to 11th February
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/47
- Throw new error in case of invalid settings
- Fix live seeking for embedded devices on which we can't set video element time at unavailable range in audio AND video buffers.
- Load the last remaining segment when the user seeks to end
- https://github.com/Dash-Industry-Forum/dash.js/pull/3847 *This PR fixes a memory leak for inline events without id, presentation time and duration.
- https://github.com/Dash-Industry-Forum/dash.js/pull/3851
- Add support for multiple system strings for a single key system
- Additional bugfixes
- Exclude text StreamProcessor when checking buffer level for initial playback
- Set default fragment request timeout to 10 seconds
- Might need to change this to a lower value in case there is no response at all
- https://github.com/Dash-Industry-Forum/dash.js/commit/13a8c23a5ce48f2b07a71191cb4cacebf24a7935
- Improve special character escaping in CMCD string values
- Add types definition for custom initial track selection function
- Fix issue in GapController when reset playback
- Fix issue after a track switch if enableSeekDecorrelationFix is enabled
- Fix VideoModel currentTime and seeking
- Service Description and Catchup logic
- See presentation: https://members.dashif.org/wg/dash_js/document/4644
-
https://github.com/Dash-Industry-Forum/dash.js/pull/3831
- Already changed > 40 files, probably move to next release
- Catchup logic
- Moved to separate controller class: CatchupController, reduces size of PlaybackController
- Cleaned up the existing code.
- Discussed with DASH-IF
- Decided to remove minDrift
- Daniel decided to also remove
- enableLowLatency flag. Should be enabled automatically and handled internally in the player
- catchup mode can be deactivated using the "enableCatchup" setting
- Single point of live delay calculation. Right now two parts where liveDelay is calculated: playbackController and mediaplayerModel
- Discussion items
- When to automatically enable/disable catchup?
- Suggestion: Enable once at playback start for low latency stream. If a user seeks disable it in the application not in the player. The logic when to enable/disable can then be controlled by the application
- Remove threshold parameter from settings
- @Daniel: Collect all the different combinations and make a suggestion
- When to automatically enable/disable catchup?
- Service Description
- Moved to separate controller class: ServiceDescriptionController, reduces size of PlaybackController
- Changed code architecture to easily distinguish between different DASH profiles. For instance, apply different default settings for min/max catchup drift parameters for DVB-DASH vs. other profiles.
- Added support for , using "minBitrate", "maxBitrate" and "initialBitrate" of settings objects
- Skipped OperatingQuality because we do not support @qualityRanking attribute of Representation yet. Should we add this as well? We would be feature complete regarding the ServiceDescription elements defined in Annex K of 23009-1. Requires changes in the ABRController and possible other classes.
- @qualityRanking: specifies a quality ranking of the Representation relative to other Representations in the same Adaptation Set. Lower values represent higher quality content.
- Test vectors required, ignore for now
- Reference UI
- Adding "export settings" function to the current reference UI since new UI is delayed.
- https://github.com/Dash-Industry-Forum/dash.js/pull/3865
- Improved functional tests. Account for timeouts in browserstack by splitting the tests into different jobs.
- See dash.js roadmap planning
- CMSD
- Throughput estimate from server
- Ali + team has some code available
- Open source Nginx implementation
- Unified: Packager/Origin
- Akamai: CDN
- dash.js: Client
- Ali + team has some code available
- Dispatch information to application
- Select starting bitrate
- Throughput estimate from server
- Work on LiveSim might continue, Ali has a student interested in doing some work
- Ali, May
- Throughput calculation problems with 4.2.1?
- dash.js awards
- @Daniel: Send email to DASH-IF
- MWS dash.js face to face
- Pick a time slot
- Maybe start 14:00 - 18:00 or similar
Participants: Ali Begen, Will Law, Daniel Silhavy
- Released on 23.12.2021
- Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.2.1
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/46
- Minor improvements and bugfixes
- Wait for video element ready state to change to HAVE_METADATA before triggering STREAM_INITIALIZED
- New test streams from Axinom
- Fix autoplay parameter provided via url parameter to the reference UI
- Fix seek 0 for cases in which there is no valid segment defined at position 0 (gap)
- Enable gap seek fix by default
- Apply a minor offset when using MPD anchors with #t=0 for dynamic streams when calcFromSegmentTimeline is enabled
- RC date set to 11th February
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/47
- Throw new error in case of invalid settings
- Fix live seeking for embedded devices on which we can't set video element time at unavailable range in audio AND video buffers.
- Load the last remaining segment when the user seeks to end
- This PR fixes a memory leak for inline events without id, presentation time and duration.
- Service Description and Catchup logic
- https://github.com/Dash-Industry-Forum/dash.js/pull/3831
- Catchup logic
- Moved to separate controller class: CatchupController, reduces size of PlaybackController
- Cleaned up the existing code.
- Checking specifications and preparing discussion slides for DASH-IF: https://members.dashif.org/wg/dash_js/document/4644 . Current implementation not optimal.
- Ali: Testing playback rate adoption on different devices
- Best performance on Desktop browsers
- Different behavior on SmartTVs like LG, worse than in Desktop browser
- Ali going to share results
- Service Description
- Moved to separate controller class: ServiceDescriptionController, reduces size of PlaybackController
- Changed code architecture to easily distinguish between different DASH profiles. For instance, apply different default settings for min/max catchup drift parameters for DVB-DASH vs. other profiles.
- Added support for , using "minBitrate", "maxBitrate" and "initialBitrate" of settings objects
- Skipped OperatingQuality because we do not support @qualityRanking attribute of Representation yet. Should we add this as well? We would be feature complete regarding the ServiceDescription elements defined in Annex K of 23009-1. Requires changes in the ABRController and possible other classes.
- @qualityRanking: specifies a quality ranking of the Representation relative to other Representations in the same Adaptation Set. Lower values represent higher quality content.
- Test vectors required, ignore for now
- Reference UI
- Adding "export settings" function to the current reference UI since new UI is delayed.
- PlayReady SL3000 support requires com.microsoft.playready.recommendation key system
- When seeking to position where's a gap - stream freezes
- PlaybackController.getBufferLevel() continually returns 0 due to inactive text track
- What to prioritize despite bugfixes and user issues? See upcoming versions below.
- @Daniel : Distribute a list of suggestions ordered by priority. Let IOP group decide.
- High bitrates cause problems in dash.js
- @Will: Create an issue about high bitrate playback (up to 100 Mbit/s)
- Related to 8k streaming
- Improved XML parsing
- Either new lib: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 or update existing library. We are using an outdates version of x2js: Version 1.20 vs. 3.2.3
- ABR/ Throughput estimation improvements: https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Currently refactoring and cleaning the code to improve structure: HTTPLoader, XHRLoader, FetchLoader, Throughput History
- Next:
- Addition of other W3C APIs https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- Add additional throughput estimation options Harmonic mean, tbd: identify other means
- Switching down / up: Take the buffer into account, extrapolate last throughput compared to buffer level
- Different APIs for the different mean calculation
- Test ABR algorithms with different trajectories and new throughput estimation options
- CMCD enhancements
- mtp field not sent as an aggregated throughput value: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Support for whitelist and custom key/value pairs : https://github.com/Dash-Industry-Forum/dash.js/issues/3761
- MSE in webworkers
- New reference UI
- Link from current UI to the new UI
- Higher priority than webworker
- Low latency improvements
- PRFT support
- Potential new algorithms
- Improved scheduling
- Virtual buffer for HbbTV
- Instead of having a virtual buffer download the segments before the "real" player start
- When player starts, segments are coming from the cache
- Improved settings
- Distinguish between app, MPD and default player settings: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Thumbnail fixes: https://github.com/Dash-Industry-Forum/dash.js/issues/3795
- @Daniel: Send email regarding dash.js award organization
Participants: Will Law, Bertrand Berthelot, Nicolas Weil, Daniel Silhavy
- Released on 30.11.2012
- Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.2.0
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/45
- Shifted priorities based on user requests and issues. Mainly a bugfix release with some new DRM features
- Plan: Small bugfix release before Christmas
- Wait for video element ready state to change to HAVE_METADATA before triggering STREAM_INITIALIZED
- New test streams from Axinom
- Fix autoplay parameter provided via url parameter to the reference UI
- Fix seek 0 for cases in which there is no valid segment defined at position 0 (gap)
- Latency attributes from the MPD shall be used if no specific scheme_id_uri is defined in the ServiceDescriptor element. Currently only applied if set to "urn:dvb:dash:lowlatency:scope:2019"
- Move catchup functionality to separate CatchupController to reduce logic in PlaybackController.
- Improve catchup logic, see slides: https://members.dashif.org/wg/dash_js/document/4644
- Daniel to prepare an overview and check with DASH-IF Live TF
- Will: Always apply catchup mechanism and remove minDrift attribute
- Move ServiceDescription functionality to separate ServiceDescriptionController to reduce logic in PlaybackController
- (Support for ServiceDescriptor types: OperatingQuality and OperatingBandwidth)
- Preserve CDATA on manifest parsing and expose Dash events
- Check segment retry logic for CDN errors
- #t=0 anchor link no longer starts playback of live stream automatically if "calcFromSegmentTimeline" set to true
- Check all reference streams in the list. The non DASH-IF ones
- Improved XML parsing
- Either new lib: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 or update existing library. We are using an outdates version of x2js: Version 1.20 vs. 3.2.3
- ABR/ Throughput estimation improvements: https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Currently refactoring and cleaning the code to improve structure: HTTPLoader, XHRLoader, FetchLoader, Throughput History
- Next:
- Addition of other W3C APIs https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- Add additional throughput estimation options Harmonic mean, tbd: identify other means
- Switching down / up: Take the buffer into account, extrapolate last throughput compared to buffer level
- Different APIs for the different mean calculation
- Test ABR algorithms with different trajectories and new throughput estimation options
- CMCD enhancements
- mtp field not sent as an aggregated throughput value: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Support for whitelist and custom key/value pairs : https://github.com/Dash-Industry-Forum/dash.js/issues/3761
- MSE in webworkers
- New reference UI
- Link from current UI to the new UI
- Higher priority than webworker
- Low latency improvements
- PRFT support
- Potential new algorithms
- Improved scheduling
- Virtual buffer for HbbTV
- Instead of having a virtual buffer download the segments previous to the "real" player start
- When player starts segments are coming from the cache
- Improved settings
- Distinguish between app, MPD and default player settings: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Thumbnail fixes: https://github.com/Dash-Industry-Forum/dash.js/issues/3795
- Other items
Participants: Will Law, David Eisenbacher, Daniel Silhavy
- RC freeze: 19.11.2021
- Might increase version number to 4.2.0 instead of 4.1.1 because not a simple bugfix release
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/45
- Shifted priorities based on user requests and issues. Mainly a bugfix release with some new DRM features
- Closed
- See https://github.com/Dash-Industry-Forum/dash.js/pull/3793 , based on latest DASH-IF IOP V5 Part 6
- Add promises if possible to control async functions. The previous usage of events was messy, made the content hard to maintain and was not required for most of the functions (except for keymessage and needkey).
- Add ignoreEmeEncryptedEvent to ignore pssh from init and media segments, implements PlayReady PSSH/PRO from Manifest instead of MPD #3423
- Implement License server via MPD tags #3801
- Removed call to protectionModel.requestKeySystemAccess in case a new key session is created after the keysystem has already been selected.
- Clear and update mediaInfo in ProtectionController after each MPD update
- Updated https://github.com/Dash-Industry-Forum/dash.js/wiki/Digital-Rights-Management-(DRM)-and-license-acquisition
- Open
- Refactor protection and fix key rotation: https://github.com/Dash-Industry-Forum/dash.js/pull/3805
- Verify ECCP support
- Potential improvement: Failback URL, when original url failed
- Add example for fastswitch: https://github.com/Dash-Industry-Forum/dash.js/commit/2b3976b23a08f868368907f3a28ec4e24d0d8d80
- Disable UTC sync via settings flag: https://github.com/Dash-Industry-Forum/dash.js/pull/3802
- Avoid uncaught exception on SourceBuffer.abort() https://github.com/Dash-Industry-Forum/dash.js/pull/3799
- Add warning to DRM samples in case http is used: https://github.com/Dash-Industry-Forum/dash.js/commit/0d1a4c368cdcfa756be27a8274871c5693455338
- Fix issue in WebVTT tracks: https://github.com/Dash-Industry-Forum/dash.js/pull/3791
- Fix seeking to 0: https://github.com/Dash-Industry-Forum/dash.js/pull/3789
- Avoid creating multiple instances of HTTPLoader: https://github.com/Dash-Industry-Forum/dash.js/pull/3779
- MSS: Do not update manifest if already updating at tracks switching for live streams: https://github.com/Dash-Industry-Forum/dash.js/pull/3780
- Fix exception in GapController: https://github.com/Dash-Industry-Forum/dash.js/commit/a2b96237861154434dcb8bb572d8563c1437a1f4
- Fix error when setting scheduleWhilePaused=false: https://github.com/Dash-Industry-Forum/dash.js/pull/3785
- Fix issue on track selection: https://github.com/Dash-Industry-Forum/dash.js/pull/3783
- Multiperiod HbbTV test suite: https://github.com/Dash-Industry-Forum/dash.js/issues/3800 . Might improve error handling
- When seeking to position where's a gap - stream freeze: https://github.com/Dash-Industry-Forum/dash.js/issues/3808 . Waiting for feedback should work when setting right config flag.
- Improved XML parsing
- Either new lib: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 or update existing library. We are using an outdates version of x2js: Version 1.20 vs. 3.2.3
- ABR/ Throughput estimation improvements: https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Currently refactoring and cleaning the code to improve structure: HTTPLoader, XHRLoader, FetchLoader, Throughput History
- Next:
- Addition of other W3C APIs https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- Add additional throughput estimation options
- Harmonic mean
- tbd: identify other means
- Switching down / up: Take the buffer into account, extrapolate last throughput compared to buffer level
- Different APIs for the different mean calculation
- Test ABR algorithms with different trajectories and new throughput estimation options
- CMCD enhancements
- mtp field not sent as an aggregated throughput value: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Support for whitelist and custom key/value pairs : https://github.com/Dash-Industry-Forum/dash.js/issues/3761
- MSE in webworkers
- WiP
- New reference UI
- Link from current UI to the new UI
- Higher priority than webworker
- CMCD improvements:
- mtp improvements: https://github.com/Dash-Industry-Forum/dash.js/issues/3761
- Custom key/value pairs & Whitelist: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- Low latency improvements
- PRFT support
- Potential new algorithms
- Improved scheduling
- Virtual buffer for HbbTV
- Instead of having a virtual buffer download the segments previous to the "real" player start
- When player starts segments are coming from the cache
- Improved settings
- Distinguish between app, MPD and default player settings: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Thumbnail fixes: https://github.com/Dash-Industry-Forum/dash.js/issues/3795
- codem-isoboxer dependency moved https://github.com/Dash-Industry-Forum/codem-isoboxer
- Thanks to madebyhiro.com and @tieleman, Dean Janssen and Niels Sondervan
- How do we maintain this ideally
- IBC
- DASH-IF Party: At Café de Jaren, Nieuwe Doelenstraat 20-22, 1012 CP Amsterdam, from 18h30 – 21:00 on Sunday Dec 5th. Entry with EventBrite pre-registration only
Participants: Will Law, Bertrand Berthelot, Daniel Silhavy
- Released on 24.9.2021
- Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v4.1.0
- Main changes
- Features & Improvements
- Optimize multiperiod prebuffering by improving logic to decide whether all segments of a period have been loaded
- Improve buffer robustness: Recover from media_decode errors
- Enable low latency mode based on MPD parameters (availabilityTimeComplete=false)
- Initial track selection
- Support for MPD @selectionPriority attribute
- Allow for registering a custom function to select the initial track
- Gaps
- In case of a seek into a gap: Try to find the closest segment to the target time and adjust the seek target accordingly
- Fix seeks right before a gap
- Features & Improvements
- Important bug fixes:
- Fix wrong timing calculation for client/server clock drift
- Fix initialization after reset has been called
- Fix transition from live to static
- Fix live playback on WebOS
- Release date: 12.11.2021
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/45
- Improved XML parsing
- Either new lib: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- or update existing library. We are using an outdates version of x2js: Version 1.20 vs. 3.2.3
- ABR/ Throughput estimation improvements: https://github.com/Dash-Industry-Forum/dash.js/pull/3776
- Currently refactoring and cleaning the code to improve structure: HTTPLoader, XHRLoader, FetchLoader, Throughput History
- Next:
- Addition of other W3C APIs https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- Add additional throughput estimation options
- Harmonic mean
- Weighted arithmetic mean
- tbd: identify other means
- Switching down / up: Take the buffer into account, extrapolate last throughput compared to buffer level
- Different APIs for the different mean calculation
- Test ABR algorithms with different trajectories and new throughput estimation options
- Improved settings
- Distinguish between app, MPD and default player settings: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Additional functional tests
- Buffer cleanup/pruning: https://github.com/Dash-Industry-Forum/dash.js/pull/3729
- Initial quality: https://github.com/Dash-Industry-Forum/dash.js/pull/3700
- Thumbnails: https://github.com/Dash-Industry-Forum/dash.js/pull/3708
- Bugfixes/Improvements
- Avoid creating multiple instances of HTTPLoader: https://github.com/Dash-Industry-Forum/dash.js/pull/3779
- MSS: Do not update manifest if already updating at tracks switching for live streams: https://github.com/Dash-Industry-
Forum/dash.js/pull/3780 - Fix exception in GapController: https://github.com/Dash-Industry-Forum/dash.js/commit/a2b96237861154434dcb8bb572d8563c1437a1f4
- Fix error when setting scheduleWhilePaused=false: https://github.com/Dash-Industry-Forum/dash.js/pull/3785
- Fix issue on track selection: https://github.com/Dash-Industry-Forum/dash.js/pull/3783
- MSE in webworkers
- Potentially give feedback to Chris before TPAC (25th)
- Enable low latency mode based on MPD parameters (availabilityTimeComplete=false)
- Check latency target and then enable accordingly
- New reference UI
- Link from current UI to the new UI
- CMCD improvements:
- mtp improvements: https://github.com/Dash-Industry-Forum/dash.js/issues/3761
- Custom key/value pairs & Whitelist: https://github.com/Dash-Industry-Forum/dash.js/issues/3740
- ECCP support
- Low latency improvements
- PRFT support
- Potential new algorithms
- Improved scheduling
- Virtual buffer for HbbTV
- Instead of having a virtual buffer download the segments previous to the "real" player start
- When player starts segments are coming from the cache
- dash.js awards
- Presented during MMSys in Istanbul
- https://dashif.org/news/dash-js-award-2021/
- codem-isoboxer dependency moved
- https://github.com/Dash-Industry-Forum/codem-isoboxer
- Thanks to madebyhiro.com and @tieleman, Dean Janssen and Niels Sondervan
- IBC
- Who is attending? Meet for a coffee?
Participants: Will Law, Daniel Silhavy
- Prepare RC between 17.9 - 22.9, release before end of September
- Improved period transition logic/ DASHHandler logic: https://github.com/Dash-Industry-Forum/dash.js/pull/3727
- Use information about total number of segments in addition to "simply" checking if the buffer matches the period boundaries.
- Use information about upcoming periods to decide when a period is completely buffered
- Buffer robustness: https://github.com/Dash-Industry-Forum/dash.js/pull/3743
- Catch media decode errors, blacklist the segment that caused the error, reset MSE and Sourcebuffers and resume playback from where we left before the error. The broken segment is skipped (as it is blacklisted) and the resulting gap is handled by the GapController.
- Enable low latency based on MPD parameters: https://github.com/Dash-Industry-Forum/dash.js/pull/3684
- Added a new settings flag "lowLatencyEnabledByManifest" with default value set to "true". If "@availabilityTimeComplete" is set to "false" the player will play in low latency mode.
- One minor problem: When the user does not set a live delay we start with the standard live delay of 4*segmentDuration. We need the liveDelay prior to identifying the right starting period and checking for the @availabilityTimeComplete attribute.
- Add support for "@selectionPriority" attribute: https://github.com/Dash-Industry-Forum/dash.js/pull/3751
- Asked for official test vector: https://github.com/Dash-Industry-Forum/Test-Content/issues/8
- Custom callback function for initial track selection: https://github.com/Dash-Industry-Forum/dash.js/pull/3672
- Register your own function to select initial AdaptationSet
- CMCD fixes
- "nor" value needs to be relative to current segment url and URL encoded: https://github.com/Dash-Industry-Forum/dash.js/pull/3747
- Fix a bug that lead to wrong calculation of start time in case of a client/server clock drift: https://github.com/Dash-Industry-Forum/dash.js/pull/3759
- Fix reinit after reset() has been called: https://github.com/Dash-Industry-Forum/dash.js/pull/3735
- Fix playback start on LG WebOS devices: https://github.com/Dash-Industry-Forum/dash.js/pull/3754
- Seeking only possible to positions which are already buffered
- Workaround can be disabled via settings flag "enableSeekDecorrelationFix" in case side effects are encountered
- Minor bugfixes/improvements
- Trigger remaining events in EventController
- Ignore readystate when resetting the playbackrate
- Fix VTT example
- Improved settings handling: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Distinguish between settings coming from the app and the player/MPD. App settings have a higher priority.
- In general: We should not overwrite settings that the application made in the player.
- Additional functional tests
- Open PRs:
- Fix: handle Emulation Prevention Bytes in CEA-608 parsing.
- Fix seek to positions located in a gap
- Improve Throughput estimation
- ECCP support
- Low latency improvements
- Potential new algorithms
- PRFT support
- Improved scheduling
- New reference UI
- CMCD improvements
- Whitelist
- Custom key/value pairs
- MSE in webworkers
- dash.js awards: Daniel sent out candidates and recommendations
- BBC improved their player, still using dash.js: https://www.bbc.co.uk/blogs/internet/entries/65db5af7-1ec1-4ba5-9f09-4f3c5f632b03
- Align with them on prioritites an check for migration to dash.js 4.x
Participants: Ali Begen, Andy Rosen, Gang Shen, Will Law, Daniel Silhavy
- Released on July 30th
- Various bugfixes and minor improvements for
- NPM package, avoid build errors as in 4.0.0
- Textrack with SegmentBase
- Textrack cues with NaN as timestamps
- Quota exceeded errors
- Multiperiod
- Add DRMToday option to reference client
- Functional DRM tests for edge
- Fix scheduling for download error: Fixed endless retry loop
- Do not clear buffer completely when seeking to position 0
- Fix detecting target stream when skipping gap at the and of period
- Inform npm users about new dash.js version, move away from 2.x
- See https://members.dashif.org/wg/Interoperability/document/4612 for details
- Planing was discussed in DASH-IF meetings and approved
- Focus on
- Evaluating and improving the logic to determine the throughput
- Continuous multiperiod improvements mainly based on user feedback
- Low latency:
- ABR improvements
- Two papers at MMSys on this topic: Might be contributions to the project
- PRFT support
- Improved scheduling logic: @Daniel to check the spec again for changes
- DRM: ECCP support: @Daniel to check the specification again, Testvector might be required
- General
- Improve robustness over MSE and download errors
- Improved period transition logic @Daniel: Issue ticket in the livesim
- New reference UI
- Enable low latency based on MPD parameters
- Improve settings handling to distinguish between settings coming from the app, the MPD and default settings
- Improved period transition logic/ DASHHandler logic: https://github.com/Dash-Industry-Forum/dash.js/pull/3727
- Improved settings handling: https://github.com/Dash-Industry-Forum/dash.js/pull/3688
- Enable low latency based on MPD parameters: https://github.com/Dash-Industry-Forum/dash.js/pull/3684
- Fix reinit after reset() has been called: https://github.com/Dash-Industry-Forum/dash.js/pull/3735
- Minor bugfixes/improvements
- Correct reporting of modified urls (CMCD)
- Trigger remaining events in EventController
- Ignore readystate when resetting the playbackrate
- Fix VTT example
- CMCD bug: Using quotes for the tokens, Akamai opens an issue
- Additional functional tests
- Open PR: Fix: handle Emulation Prevention Bytes in CEA-608 parsing. Not sure how to validate this
- Raise issue on https://github.com/Dash-Industry-Forum/Test-Content for potential missing test content
- dash.js awards: Deadline next week, 25th August. Send email to mailing list and Slack, do not extend
Participants: Andy Rosen, Daniel Silhavy
- Released 25th June
-
Prepare RC next week depending on potential bug reports
-
So far various minor bugfixes for
- NPM package, avoid build errors as in 4.0.0
- Textrack with SegmentBase
- Textrack cues with NaN as timestamps
- Quota exceeded errors
- Multiperiod
- Functional DRM tests for edge
- Fix scheduling for download error: Fixed endless retry loop
- Do not clear buffer completely when seeking to position 0
- Fix detecting target stream when skipping gap at the and of period
-
To check:
See slides of DASH-IF presentation and discussion thread: https://github.com/Dash-Industry-Forum/dash.js/discussions/3710 Please contribute to the discussion to align priorities
Participants: Will Law, Peter Chave, Andy Rosen, Ali Begen, Nicolas Weil, Martin Lasak, Bertrand Berthelot, Daniel Silhavy
- RC this Monday, 14th June
- RC test phase for 10-14 days instead of 7 days
- Based on this PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- See previous meetings for details
- Reworked sample Section and add additional samples: http://reference.dashif.org/dash.js/nightly/samples/
- Reworked dash.js entry page: http://reference.dashif.org/dash.js/
- New samples for ABR and buffer logic: https://reference.dashif.org/dash.js/nightly/samples/
- Placed samples in reference UI: http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
- Todo: @Daniel: Link http://reference.dashif.org/ to http://reference.dashif.org/dash.js/
- Various bug fixes, especially for longterm stability
- Use promises for updating the internal info after an MPD update to avoid race conditions
- Fixed a bug that lead to starting the schedule controller twice when the quality is changed
- Fix ServiceDescription handling for low latency streams
- Fix wrong reference to streamInfo once buffering is completed. This bug caused mediaSource.endOfStream to not being called. Fixed issue in new ad-insertion DASH-IF reference streams
- Check if we can start prebuffering after an MPD update. New periods might have been added. : https://github.com/Dash-Industry-Forum/dash.js/issues/3639
- Memory optimizations
- Collect less metrics
- Delete appended bytes from chunk information before dispatching to BufferController
- Cleanup logs
- Remove outdated mediaInfo objects from StreamProcessor after MPD updates
- Configuration settings to disable/enable
- Media Capabilities API
- Todo: @Daniel: Consider filing a bug with Apple.
- Additional ABR rules: insufficientBufferRule, switchHistoryRule, droppedFramesRule, abandonRequestsRule
- Configurable threshold in GapController.js
- Automatic calculation of the DVR window with the entries from SegmentTimeline as a fallback if no segments can be found in the "standard" DVR window
- Reference UI
- Minor cleanup of the options
- Improved DRM parameter section.
- Working on new reference UI
- Support for IE 11 by polyfilling promises
- New ll throughput estimation: https://github.com/Dash-Industry-Forum/dash.js/pull/3660
- Fixed a bug in the scheduling logic: Buffer target was set to 0.6*livedelay which lead to delayed scheduling.
- DASH-IF discussion on AST: https://members.dashif.org/wg/Interoperability/document/4587?downloadRevision=active
- Add new scheduling logic for low latency streams. Can we add this to 4.0? Main concern is it might influence the well tested new logic as it requires separate handling for low latency compare to "standard" live streaming.High priority for 4.1
- Discussion on fetch AOPI holding chunks in internal buffer: Consider giving a recommendation on chunk size Might raise issue in MSE group
- We also need to consider the protocols. There might be differences between H/1.1, H/2, H3. Framing
- Potentially switch to a different ABR algorithm by default
- Cleanup index.d.ts
- In progress
- Orange: Refactoring of texttrack handling https://github.com/Dash-Industry-Forum/dash.js/pull/3641 Improves API: keep only type "text" for all text tracks (removed 'fragmentedText' and 'embeddedText' types) you can get all text tracks using MediaPlayer.getTracksFor('text') agnostically to the type of text tracks
- Merge ll improvements
- Merge Lol+ improvements
- Move unit tests to Karma in order to run them in browser context instead of node.js context
- Make metric reporting intervals for metrics like buffer level and dropped frames configurable. Lots of dependencies in the internal classes. We need to separate internal classes from DashMetrics.
- CMCD dynamic mode: Error handling in case headers are not supported.
- New reference UI
- All settings should be available
- Export settings via query params
- Updated chart library
- Sort streams by use case and provider
- Up to date Angular version
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- Improve documentation and Tutorials Section
- To be included in 4.1
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- Important comments from Zack, especially regarding MPD patching.
- Orange addresses Zacks comments, Daniel to check
- Daniel to create a list of the items for the upcoming sprints. Would like to discuss this in DASH-IF to align with DASH-IF priorities.
- Anyone encountered problems with Playready on Chromium Edge?
- New DASH-IF workgroup WebRTC + DASH
Participants: Will Law, Nicolas Weil, Zachary Cava, Andy Rosen, Daniel Silhavy
- Code freeze 6th April 21
- Release 13th April
- https://github.com/Dash-Industry-Forum/dash.js/milestone/41
- https://groups.google.com/g/dashjs/c/WNqdgZF879U
- Added header mode. Can be selected in the reference UI
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3554
- Issue: https://github.com/Dash-Industry-Forum/dash.js/issues/3537
- Remaining tasks
- Add a mode dynamic Switch dynamically based on preflight requests
- Automatic testing of smoke vectors after each push to development
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3515
- #3563 Add API to add custom capability filters. Allows applications to filter Representations or complete AdaptationSets
- Multiple fixes for missing Typescript definitions including static check of Typescript index.d.ts
- Various bugfixes
- Automatic staling of issues using Github stale bot
- Alpha version: https://reference.dashif.org/dash.js/v4.0.0-alpha/samples/dash-if-reference-player/index.html
- Set milestone date to 17.5.21. Might be adjusted
- Based on this PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Reworked and simplified scheduling logic
- Less logic in SchedulingController and BufferController. Move more logic to StreamProcessor.
- @Will: Check if we can request the next segment right after the current one has been fetched.
- Vod: Seeking over multiple periods improved
- Live: Enabled seeking within DVR window over multiple periods
- Observed less playback stalls
- Use changeType to support switch between different audio and video AdaptationSets. For instance switch between avc and VP9 or aac and Opus.
- Todo: Check what happens with different DRM keys
- Applied fixes to support multiperiod textswitches.
- Major changes in TextController, TextBuffer and TextTracks. Move to Factory from Singleton.
- Changed handling in Controlbar.js
- Reintroduced promises. Observer pattern not well suited for async calls. Instead use events only to notify/communicate between classes that don't have a direct connection.
- Added MediaCapabilitiesAPI to check for codec support. If not available use existing MSE.isTypeSupported logic.
- For future improvements: Use additional information from MediaCapabilitiesAPI: smooth, power efficient
- @Will: Can be used to check HDR support
- @Zack: Bug in Edge, signals HEVC support although not supported
- Support for "initialBufferTime". Playback will start when buffer level is reached.
- What to do in live cases. We drift of the live edge. Another seek when buffer level is reached?
- @all: Current implementation is fine, live delay might slightly increase because of the time it takes to fill the buffer
- Make ABRController multiperiod compliant.
- Added JSDoc and more comments
- Investigate switch between encrypted and non encrypted periods.
- Switch from encrypted to non encrypted works fine
- Starting with non encrypted and switching to encrypted causes MSE errors. Current workaround: Reinit MSE before first switch between non encrypted to encrypted
- Check if existing encrypted period and use init segment from that period
- @Zack: Work in MSE v2 and WAVE https://www.w3.org/wiki/images/8/8c/Mse-eme-v2-use-cases-reqs-wave.pdf
- Improve/Cleanup Controlbar.js, Mediaplayer.js
- Fix unit tests
- Fix linting errors
- Rebase against current dev branch
- Check potential improvements for Thumbnail management. Thumbnail Controller is created once Stream is activated. Consequently, Thumbnails of inactive periods are not rendered.
- Transpile to ES5, promises are currently not transpiled -> Problems on IE11 and older devices
- Improve documentation after changes are completed. See below gh-pages
- Improved settings handling. Distinguish between user/app settings and settings adjusted by the player (for instance based on MPD parameters)
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- Important comments from Zack in the PR, especially regarding MPD patching.
- Found issues in the bandwidth estimation. Values are too high leading to buffer underruns and playback stalling
- Checking potential fix
- Extracted relevant logic from dash.js to test in a simplified standalone player
- Two new streams from Peter (Akamai)
- Multi Bitrate: https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd
- Multi Bitrate CBR: https://cmafref.akamaized.net/cmaf/live-ull/2003074/akacbr/out.mpd
- @Will: Bitrate visualizer: https://moctodemo.akamaized.net/tools/bitratevisualizer/
- Migration to Webpack: https://github.com/Dash-Industry-Forum/dash.js/pull/3596
- Included in one of the upcoming releases
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- Improve documentation and Tutorials Section
- Do we need preload functionality (load segments before creating MSE) ? What are the use cases? Ad insertion with multiple player instances?
- Add gh-pages and move documentation to a separate website? Similar to what Shaka has: https://shaka-player-demo.appspot.com/docs/api/index.html
- WAVE DPCTF survey on MSE tests. Contact Daniel if you want to participate.
- Test Content
- DRM content with different KIDs within AS and Reps
- @Nicolas: Might be able to provide test content with different KIDs between periods
- @Nicolas: Multi track with different key ids might come a bit liter
- DRM content with different KIDs within AS and Reps
- Should we filter Text/Subtitle AdapatationSets with same language? For now added codec check to areTracksEqual
- Added Github "discussions": https://github.com/Dash-Industry-Forum/dash.js/discussions
- Reference client: Move to a different server? Outages yesterday
- Consider moving to testassets server and add a CNAME
Participants: Bertrand Berthelot, Sander Saares, Will Law, Nicolas Weil, Stefan Pham, Andy Rosen, Daniel Silhavy
- Code freeze 31st March 21
- Relase tbd
- https://github.com/Dash-Industry-Forum/dash.js/milestone/41
- Timing changes lead to large refactor. Might event do a major release 4.0. Probably a 3.2.2 bugfix release and then the major release on top.
- Still missing teststreams. DASH-IF action: @Zack tries to check his LiveSim implementation
- Header implementation: https://github.com/Dash-Industry-Forum/dash.js/pull/3554
- Switch dynamically based on preflight requests? Maybe add a mode dynamic
- Don't do both modes in parallel
- Automatic staling of issues using Github stale bot
- Change stale message
- Increase time until issue is closed
- Improved CI/CD flow
- Added list of smoke vectors which will run after each push to development
- Improved CircleCI config, migrated to version 2.1
- Run unit tests for pull requests
- Run unit tests for pull request against virtually merged development branch
- Fix execution of functional tests when running locally on Mac Chrome
- Run Typescript check as part of the build process: "npx typescript"
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Timing changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Buffering/Stream switch logic
- The current logic to determine whether an AdaptationSet has finished buffering introduces artificial gaps
- Started to rework this logic, see slides for detailed explanation
- Seeking logic
- Prebuffering multiple periods and enabling seek between multiple periods within the DVR window leads to problems with the current seeking and buffer pruning logic. In the worst case playback stalls
- Started to rework this logic and move the coordination to the StreamController as the managing entity
- Still work in progress
- Multiperiod with multiple audio tracks
- Fixed audio track switch for multiperiod content with multiple audio languages
- Main issue was caused by prebuffering multiple periods in advance. If a audio track switch is performed, the prebuffered language in the upcoming periods needs to be discarded.
- Also fixed an issue when changing the language and seeking between periods
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Problems
- Large changes in s single PR caused by the dependency between the changes
- Example: Reworking of the timing model -> Ability to seek between periods in the DVR window -> Seeking problems
- Add API to add custom capability filters. Allows applications to filter Representations or complete AdaptationSets
- Minor improvements when calculating time relative to DVR window.
- Sort DASH events by scheme ID in order to treat events with same id correctly
- @Iraj, @Daniel: Check if InbandEventStream element has a @pto. --> Use SegmentBase PTO
- @Nicolas: Potential pull request on event handling coming up
- Improvement on frame accuracy of the emsg messages
- Configurable polling rate Upcoming releases
- Test low latency algorithms with different network conditions
- @Peter to supply results on Akamai tests
- @Sander tested as well
- @IRT: Shared some results
- @Martin: Started looking into low latency streaming. Verifiy behavior, check for potential dash.js errors
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 -> @Bertrand rebased against current dev, @Daniel check for conflicts with MPD Patching
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- Enhance functional tests with audio switch, subtitle switch
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- How to handle negative eptDelta and pdDelta with availabilityWindow? We cut of IDR frames if periods are shifted out of the period, leads to gaps.
- Potential solution: Multi video element approach not working on some platforms
- @Daniel: Check what is done in MSE v2. Is this supported in the future.
- @Daniel, @Will, @Nicolas: Discuss with DASH-IF to adjust the guidelines.
- @Daniel: Create a testvector and maybe a small test page?
- Should we filter Text/Subtitle AdapatationSets with same language?
- Chromecast v3 support not possible. No custom players allowed. Forced to use internal Shaka player? @Bertrand provided some information that it might be possible to disable platform player and still use dash.js
- Move the minified files to a different server? Romain provided access to conformance server.
- GoDaddy server seems to work fine for now. Postponed this acitivity
- @Daniel is supervising project at TU-Berlin. Students implemented new reference UIs. To be provided for testing when project is over. Serialize settings via URL
- @Nicolas: Any preferences regarding the possible configuration parameters
Participants: Iraj Sodagar, Dan Sparacio, David Evans, Martin Lasak, Phillip Maness, Will Law, Daniel Silhavy
- Code freeze 16th February 21
- Relase 23rd Feb 21
- https://github.com/Dash-Industry-Forum/dash.js/milestone/40
- Zack from Hulu has been working on MPD patching
- https://github.com/technogeek00/dash.js/tree/v3-mpd-patch-updates
- PR is merged
- Still missing teststreams. Asked Zacks contact at Harmonic but did not respond.
- @Daniel: Bring up topic in DASH-IF again.
- @Daniel: Ask Tobbe if he can spend time on this. Consider spending time on this instead of focusing on dash.js for one sprint.
- @Daniel: Ask Zack if he can share his LiveSim integration
- Might add this to the LiveSim, then check if it can be a standalone service.
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3508
- Added CMCD metrics 'nor' and 'nrr'
- Added CMCD object type 'tt' for ISOBMFF timed text tracks
- Added CMCD metrics to license requests
- RTP calculation
- Available as static value and as a configurable rtpSafetyFactor (multiply minimum required bandwidth to keep buffer > 0 by safety factor). Defaults to 5
- @Daniel: What is the default if both is specified?
- Will: Testing with onDemand profile, range request including one option requests. As soon as the url has query parameters the browser makes an options requests -> Options request for each request. What happens if we use the headers?
- @Daniel: Test if this works if the headers change. If this works we can add headers reporting as part of CMCD.
- @Will: Add CMCD headers to Akamai CDN
- Add test for audio track switch
- Add test for text track switch
- Added tests for setting initial audio- and text tracks
- Start single tests from command line
- WiP: Functional testing of smoke vectors after each commit to development. Need to adjust and update the CircleCI config.
- Thanks to DASH-IF for the paid CircleCI account
- Issue: https://github.com/Dash-Industry-Forum/dash.js/issues/3521
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3534
- Documentation: https://github.com/Dash-Industry-Forum/dash.js/wiki/UTCTiming---Clock-synchronization
- Current dash.js behavior
- Initial sync request at the start.
- Additional sync requests after each MPD update. Response is ignored -> unnecessary overhead
- Current calculation does not account for RTT
- Improved behavior
- Account for RTT
- Perform additional confirmation sync requests in the background without increasing startup delay
- Perform background sync when 404 occurs
- Increase/Decrease time between consecutive sync requests based on drift
- Fix wrong Thumbnail url calculation
- Add missing attributes in TypeScript definition
- Sort DASH events by scheme ID in order to treat events with same id correctly
- @Iraj, @Daniel: Check if InbandEventStream element has a @pto
- Fix performance issue problems caused by unnecessary EME calls and increasing array/object sizes
- Filter unsupported AdaptationSets based on codec and EssentialProperty. Added a new class CapabilitiesFilter for that reason
- @Iraj: EssentialProperty on MPD level as well. Filter on this level as well. @Daniel: Check this
- Add highest effiiciency track selection: Based on average bits per pixel
- Fix setting of MediaSource@duration attribute: Account for MSE updating status
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Timing changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Buffering/Stream switch logic
- The current logic to determine whether an AdaptationSet has finished buffering introduces artificial gaps
- Started to rework this logic, see slides for detailed explanation
- Seeking logic
- Prebuffering multiple periods and enabling seek between multiple periods within the DVR window leads to problems with the current seeking and buffer pruning logic. In the worst case playback stalls
- Started to rework this logic and move the coordination to the StreamController as the managing entity
- Still work in progress
- Multiperiod with multiple audio tracks
- Fixed audio track switch for multiperiod content with multiple audio languages
- Main issue was caused by prebuffering multiple periods in advance. If a audio track switch is performed, the prebuffered language in the upcoming periods needs to be discarded.
- Also fixed an issue when changing the language and seeking between periods
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Problems
- Large changes in s single PR caused by the dependency between the changes
- Example: Reworking of the timing model -> Ability to seek between periods in the DVR window -> Seeking problems
- Test low latency algorithms with different network conditions
- @Peter to supply results on Akamai tests
- Included in one of the upcoming releases
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 -> @Bertrand rebased against current dev, @Daniel check for conflicts with MPD Patching
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- Bertrand: The idea would be to add methods (un)registerLicenseRequest/ResponseFilter() in MediaPlayer
- Discussion on preroll element with Iraj, see slides
- Is sequence append mode an option?
- Problem might be transition from non DRM to DRM. Might be necessary to reinit the MSE Sourcebuffers Shaka player creates an encrypted init segment to avoid transition errors between non encrypted to encrypted. @Daniel: Check Shaka PR
Participants: Will Law, Theo Karagkioules, Daniel Silhavy
- Released on 11th December 20
- https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v3.2.0
- Main features
- Two new low latency ABR algorithms LoL+ and L2A
- Low latency documentation : https://github.com/Dash-Industry-Forum/dash.js/wiki/Low-Latency-streaming
- Low Latency testing: https://docs.google.com/spreadsheets/d/1dRt2hhX0RjSDlW2X2hRb9YEnR_PU_08sV-ESF-YSMbo/edit#gid=220322418
- @Daniel: Provide default parameters for testing
- @Theo & Will: Add test results
- @Theo: Send Puppeter framework from Twitch challenge
- Might also get results from Sander
- Support for Event onReceive mode
- Chromecast sender and receiver application
- Major refactoring of the Event Bus
- Update of CMCD implementation based on latest spec
- Code freeze 6th February 21
- https://github.com/Dash-Industry-Forum/dash.js/milestone/40
- Zack from Hulu has been working on MPD patching and is about to open a PR https://github.com/technogeek00/dash.js/tree/v3-mpd-patch-updates @Daniel: Ask Zack for teststreams.
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3508
- Adding CMCD metrics 'nor' and 'nrr'
- Adding CMCD object type 'tt' for ISOBMFF timed text tracks
- Adding CMCD metrics to license requests
- How to calculate RTP? Any recommendations from WAVE?
- Make it a setting as a multiple of the buffer level
- Make it a static value which can be defined via API
- SAFETY_FACTOR should be larger: In the area of 3-5 times. Should be configurable
- What to do with key requests, init segment: Use static value
- Add test for audio track switch
- Add test for text track switch
- Start single tests from command line
- Working on tests for setting initial audio- and text tracks
- Functional testing of smoke vectors after each commit to development
- Fix wrong Thumbnail url calculation
- Add missing attributes in TypeScript definition
- Sort DASH events by scheme ID in order to treat events with same id correctly
- Fix performance issue problems caused by unnecessary EME calls and increasing array/object sizes
- Filter unsupported AdaptationSets based on codec and EssentialProperty. Added a new class CapabilitiesFilter for that reason
- Add highest efficiency track selection: Based on average bits per pixel
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Timing changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Buffering/Stream switch logic
- The current logic to determine whether an AdaptationSet has finished buffering introduces artificial gaps
- Started to rework this logic, see slides for detailed explanation
- Seeking logic
- Prebuffering multiple periods and enabling seek between multiple periods within the DVR window leads to problems with the current seeking and buffer pruning logic. In the worst case playback stalls
- Started to rework this logic and move the coordination to the StreamController as the managing entity
- Still work in progress
- Multiperiod with multiple audio tracks
- Fixed audio track switch for multiperiod content with multiple audio languages
- Main issue was caused by prebuffering multiple periods in advance. If a audio track switch is performed, the prebuffered language in the upcoming periods needs to be discarded.
- Also fixed an issue when changing the language and seeking between periods
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Problems
- Large changes in s single PR caused by the dependency between the changes
- Example: Reworking of the timing model -> Ability to seek between periods in the DVR window -> Seeking problems
- Test low latency algorithms with different network conditions
- Included in one of the upcoming releases
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412 : Increase priority, possibly add to 3.2.1 or 3.3.0
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- Enhance functional tests with audio switch, subtitle switch
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html: @Daniel: Check who can do that on FH side
- Discussion on preroll element with Iraj, see slides
- DASH-IF award
- Move the minified files to a different server? Romain provided access to conformance server.
- @Daniel: Talk to Romain if we can have two certificates. CNAME to conformance issue Management companies are doing the DNS
- We can also do a redirect from reference.dashif.org -> conformance.dashif.org @Daniel: Reach out to Angela to do the changes. Create conformance.dashif.org/dash.js first
- Do we need to upgrade our CircleCI plan? Would this be possible for DASH-IF? 30$ per month : https://app.circleci.com/settings/plan/github/Dash-Industry-Forum/overview @Daniel: Ask Thomas, Will, Iraj -> Email to Angela
Participants: Will Law, Daniel Silhavy
- Code freeze on 4th December
- Release on 11th December
- Detailed release notes: https://groups.google.com/g/dashjs/c/1vCw7agxAao
- Release testing
- L2A-LL Unified Streaming / Theo :
- LoL Algorithm by Ali, Roger and their students
- Sample sites
- Started a documentation on low latency streaming and the new algorithms
- https://github.com/Dash-Industry-Forum/dash.js/wiki/Low-Latency-streaming
- Please also collect any test results you have: https://docs.google.com/spreadsheets/d/1dRt2hhX0RjSDlW2X2hRb9YEnR_PU_08sV-ESF-YSMbo/edit#gid=220322418
- Daniel: Reach out to Torbjörn if smaller segment duration is possible on the Livesim stream
- Will: To check segment duration of single bitrate stream with Peter
- Daniel, all: Check performance with different network conditions
- Daniel: Increase factor for catchup threshold
- Implemented latest changes of the spec: https://github.com/Dash-Industry-Forum/dash.js/pull/3420
- Missing values
- Next request object - nor -> WiP
- Next range request - nnr -> WiP
- PR: https://github.com/fraunhoferfokus/dash.js/tree/feature-cmcd-spec-update
- Merged
- PR by Orange/Bertrand: https://github.com/Dash-Industry-Forum/dash.js/pull/3372
- Add the ability to listen for a specific streamId and/or specific media type
- Avoids unnecessary checks in the event handlers
- Identified small regression: Fixed here: https://github.com/Dash-Industry-Forum/dash.js/pull/3454
- Migration to Intern v4: https://github.com/Dash-Industry-Forum/dash.js/pull/3428
- Add support for Dash events with dispatch type "onRequest": https://github.com/Dash-Industry-Forum/dash.js/pull/3411
- Chromecast sender/receiver sample: https://github.com/Dash-Industry-Forum/dash.js/pull/3264
- Live catchup for non low-latency streams
- Code freeze on 6th February
- Milestone: https://github.com/Dash-Industry-Forum/dash.js/milestone/40
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Timing changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Buffering/Stream switch logic
- The current logic to determine whether an AdaptationSet has finished buffering introduces artificial gaps
- Started to rework this logic, see slides for detailed explanation
- Seeking logic
- Prebuffering multiple periods and enabling seek between multiple periods within the DVR window leads to problems with the current seeking and buffer pruning logic. In the worst case playback stalls
- Started to rework this logic and move the coordination to the StreamController as the managing entity
- Still work in progress
- Multiperiod with multiple audio tracks
- Fixed audio track switch for multiperiod content with multiple audio languages
- Main issue was caused by prebuffering multiple periods in advance. If a audio track switch is performed, the prebuffered language in the upcoming periods needs to be discarded.
- Also fixed an issue when changing the language and seeking between periods
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Problems
- Large changes in s single PR caused by the dependency between the changes
- Example: Reworking of the timing model -> Ability to seek between periods in the DVR window -> Seeking problems
- Zack from Hulu has been working on MPD patching and is about to open a PR https://github.com/technogeek00/dash.js/tree/v3-mpd-patch-updates
- Test low latency algorithms with different network conditions
- Included in one of the upcoming releases
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- Enhance functional tests with audio switch, subtitle switch
- PSSH naming in MPEG DASH version 5
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- New W3C APIs: https://mile-high.video/files/mhv2020/session-7/Session-7-8_Wolenetz.pdf
- Good talk on MPD optimizations by Alex Giladi: https://mile-high.video/files/mhv2020/session-4/Session-4-5_Giladi.pdf
- Cool Demuxed talk on web components in players (also discussing dash.js): Steve Heffernan : It's time to rebuild your player with web components -> Add to sample Section
Participants: Theo Karagkioules, Bertrand Berthelot, Daniel Silhavy
- Code freeze for 3.2.0 between 30.11 - 6.12
- Depending on the stability postpone some features to the next release
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Timing specific changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- Reworked availability time calculation. We are not managing an availability window anymore but instead use UTC times to calculate the AST and AET according to IOP and MPEG specs.
- Fixed an issue with the gap handling in dynamic content: Do not jump the gap instantly, but wait for the duration of the gap before seeking. Otherwise we do not maintain a consistent live edge.
- Buffering/Stream switch logic
- The current logic to determine whether an AdapatationSet has finished buffering introduces artificial gaps
- Started to rework this logic, see slides for detailed explanation
- Seeking logic
- Prebuffering multiple periods and enabling seek between multiple periods within the DVR window leads to problems with the current seeking and buffer pruning logic. In the worst case playback stalls
- Started to rework this logic and move the coordination to the StreamController as the managing entity
- Still work in progress
- Multiperiod with multiple audio tracks
- Fixed audio track switch for multiperiod content with multiple audio languages
- Main issue was caused by prebuffering multiple periods in advance. If an audio track switch is performed, the prebuffered language in the upcoming periods needs to be discarded.
- Also fixed an issue when changing the language and seeking between periods
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Problems
- Large changes in s single PR caused by the dependency between the changes
- Example: Reworking of the timing model -> Ability to seek between periods in the DVR window -> Seeking problems
- Implemented latest changes of the spec: https://github.com/Dash-Industry-Forum/dash.js/pull/3420
- Will Law is testing the implementation, found minor issues to be fixed: https://github.com/Dash-Industry-Forum/dash.js/issues/3402
- L2A-LL Unified Streaming / Theo :
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3424
- PR has been reviewed, applied minor changes
- Theo is checking the current implementation and is doing some tests
- Currently testing different streams and different parameters
- Using predefined traces
- Akamai streams: Playback rate does not change
- WiP Branch: https://github.com/ThAlKa/dash.js
- Paper: https://dl.acm.org/doi/pdf/10.1145/3339825.3397042
- LoL Algorithm by Ali, Roger and his students
- LoL+ : LoL on steroids
- PR : https://github.com/Dash-Industry-Forum/dash.js/pull/3313
- Daniel will start working on this next week.
- Apply changes directly to the PR and then leave some time for testing
- Paper: https://dl.acm.org/doi/pdf/10.1145/3339825.3397043
- PR by Orange/Bertrand: https://github.com/Dash-Industry-Forum/dash.js/pull/3372
- Add the ability to listen for a specific streamId and/or specific media type
- Avoids unnecessary checks in the event handlers
- Identified small regression: Fixed here: https://github.com/Dash-Industry-Forum/dash.js/pull/3454
- Zack from Hulu has been working on MPD patching and is about to open a PR
- https://github.com/technogeek00/dash.js/tree/v3-mpd-patch-updates
- Included in 3.2.0
- Migration to Intern v4: https://github.com/Dash-Industry-Forum/dash.js/pull/3428
- Small issue: https://github.com/Dash-Industry-Forum/dash.js/pull/3453
- Add support for Dash events with dispatch type "onRequest": https://github.com/Dash-Industry-Forum/dash.js/pull/3411
- Chromecast sender/receiver sample: https://github.com/Dash-Industry-Forum/dash.js/pull/3264
- Included in one of the upcoming releases
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- Enhance functional tests with audio switch, subtitle switch
- Usage of MSE in webworkers: https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
- Cool Demuxed talk on web components in players (also discussing dash.js): Steve Heffernan : It's time to rebuild your player with web components
Attendees: Will Law, Theo Karagkioules, Nicolas Weil, Bertrand Berthelot, Daniel Silhavy
- Larger release by mid/end of November, version 3.2.0
- Potential patch release by end of 2020, version 3.2.1
- Ongoing pull request: https://github.com/Dash-Industry-Forum/dash.js/pull/3413
- Main changes
- The DVR window is no longer bound to period boundaries. This enables seeking in between the periods for live multiperiod streams and avoids incorrect seeks when the player checks if the playtime is in the DVR window. The latter happened quite a lot for very short periods.
- Seeking in multiperiod streams leads to a race condition when pruning the buffer and adjusting the fragments in the Fragments model --> needs to be fixed
- The availabilityTimeOffset is now used correctly. We can prebuffer content according to the availabilityTimeOffset.
- The calculation of the AST and AET is fixed and done according to IOP v 4.3
- The buffer level is not limited to period boundaries and takes the maximum allowed gap size into consideration
- It is possible to use the t attributes in SegmentTimeline as anchor for DVRwindow.end. Calculation is done for all periods within the timeshiftbuffer
- Do not limit the starttime to segment boundaries. Instead allow starting in within a segment to be closer to the target live delay
- Reinitialize source buffers when switching from non DRM periods to DRM periods for the first time. Otherwise we encounter buffer errors
- Multiperiod with multiple audio tracks
- Audio track switch is not working properly --> to be fixed
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Implemented latest changes of the spec: https://github.com/Dash-Industry-Forum/dash.js/pull/3420
- Question:
- Buffer starvation and Startup are also media type specific? --> yes
- Should the license requests also be enhanced? Object type cryptographic key, license or certificate does not go to the CDN? --> Also report to license server
- Missing values
- Next request object - nor
- Next range request - nrr
- Check again what would be the effort for this
- Do we know ahead if we are switching up/down? Down might be harder because we can not anticipate.
- L2A-LL Unified Streaming / Theo :
- PR: https://github.com/Dash-Industry-Forum/dash.js/pull/3340
- WiP Branch: https://github.com/ThAlKa/dash.js --> Currently making minor changes
- Paper: https://dl.acm.org/doi/pdf/10.1145/3339825.3397042
- LoL Algorithm by Ali, Roger and his students
- LoL+ : LoL on steroids
- PR : https://github.com/Dash-Industry-Forum/dash.js/pull/3313
- Paper: https://dl.acm.org/doi/pdf/10.1145/3339825.3397043
- Improve XML parsing: https://github.com/Dash-Industry-Forum/dash.js/pull/3412
- Merge Chromecast sender/receiver sample provided by Orange: https://github.com/Dash-Industry-Forum/dash.js/pull/3264
- Add support for Dash events with dispatch type "onRequest": https://github.com/Dash-Industry-Forum/dash.js/pull/3411
- Merge/Check updated node modules: https://github.com/Dash-Industry-Forum/dash.js/pull/3253
- Enhance functional tests with audio switch, subtitle switch
- Refactoring the event bus to improve dispatching of the events: https://github.com/Dash-Industry-Forum/dash.js/pull/3372
- Does anyone have a dash.js version which works with DRM on Samsung 2016 TVs?
- Hosted reference client page very slow sometimes. Will Law to contact hoster.
-
Attendees: Aki Nieminen, Theo Karagkioules, Will Law, Bertrand Berthelot, Daniel Silhavy
-
dash.js 3.1.3
- Released on 08-09-2020
- Release notes: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v3.1.3
- Main changes/features
- Major improvements for multiperiod and gap handling
- Support for Clearkey license acquisition via license server
- Support for version 1 events
- Use the segments in the SegmentTimeline as a reference for the DVR window. This behavior can be adjusted via settings parameter
- Various bugfixes
-
dash.js 3.1.4 and upcoming versions
- Target release date for 3.1.4 : 13-10-2020 https://github.com/Dash-Industry-Forum/dash.js/milestone/39
- Main features
- Low latency algorithms
- L2A-LL Unified Streaming / Theo :
- LoL Algorithm by Ali, Roger and his students
- LoL+ : LoL on steroids
- PR : https://github.com/Dash-Industry-Forum/dash.js/pull/3313
- Paper: https://dl.acm.org/doi/pdf/10.1145/3339825.3397043
- Multiperiod improvements
- Fix calculation of segment availability range / DVR window
- Current timing model in dash.js limits availability range to a single period
- Availability range can overlap multiple periods, especially when short periods are present (ads, ad slates)
- DVRMetric are also affected
- Crucial change to timing model, needs some work
- Possibly wrong implementation of availabilityTimeOffset
- Transition between encrypted and non encrypted periods.
- When is a reinit of the sourcebuffers required?
- Testcontent provided by Elemental and CBS
- Multiperiod with different subtitles
- We use a virtual sourcebuffer for STPP and WVTT. How can we reuse these?
- Testcontent provided by Unified Streaming
- Additional test content
- Work on ad-insertion guidelines will result in new test vectors
- Fix calculation of segment availability range / DVR window
- Low latency algorithms
- CMCD updates
- Update CMCD implementation according to the latest spec
- Will to provide an issue on Github
- Ideally add to the current sprint
- Interesting keys
- Startup flag to indicate rep switch
- Rebuffer flag
- Various other features / improvements
- Merge Chromecast sender/receiver sample provided by Orange
- Add support for Dash events with dispatch type "onRequest"
- Merge/Check updated node modules
- Enhance functional tests with audio switch, subtitle switch
- Orange working on refactoring the event bus to improve dispatching of the events
- Various improvements, see open issues
-
Discussion items
- Sent Clearkey related questions to Sander and Laurent, waiting for feedback
- WebComponent for DASH playback based on dash.js: https://github.com/muxinc/dash-video-element
- Should we move/add this to the dash.js repository
- Will to get back to Steve if we can integrate that in the main repository
- Bertrand:
- Manifest parsing improvements. Computation time on low end devices is very high
- Write an own parser, Orange planning to work on that
- Ideally only parsing the differences between two manifests, kinda similar to MPD Patch
Attendees: Will Law, Ali Begen, Dan Sparacio, Nicolas Weil, Stefan Pham, Daniel Silhavy
- dash.js 3.1.2 released 24th July : https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v3.1.2
- https://github.com/Dash-Industry-Forum/dash.js/milestone/38
- Multiperiod
- Main changes (https://github.com/Dash-Industry-Forum/dash.js/pull/3360)
- dash.js now prebuffers multiple upcoming periods. The problem before was that dash.js was only prebuffering a single period which lead to problems and playback stalling for short periods
- Prebuffering of the new period now starts when audio and video of the previous period are finished buffering
- While prebuffering the new period the Sourcebuffer.timestampOffset was overwritten by the current period. This is fixed now.
- Use appendWindowStart and appendWindowEnd to set buffer ranges according to Period@start and period durations.
- Improve gap handling: Do not wait for playback to stall but instead actively jump over gaps in the timeline prior to reaching them
- Adjusted the InsufficientBufferRule in order to set the same buffer target for audio and video. This enables us to prebuffer multiple periods as we wait for all buffers to be filled before starting the prebuffering.
- Added support for period switch when the upcoming periods can not be prebuffered. In this case stream will stall and the gap handler will jump to the end of the current period, initiating a period switch to the upcoming period.
- Transition will not be as smooth as when the content is prebuffered
- Added gap jump at playback start
- Avoid endless loop if no live edge could be calculated because of a missing DVR window for ad periods.
- Fixed various minor issues for instance related to rounding of values
- Open issues / tests
- Multiperiod with DRM
- Multiperiod with Texttracks
- Metric reporting
- Intelligent prebuffering: prebuffer same audio and text languages.
- Testvectors
- Elemental -> Tested, Niolas to check if we can link the vectors in the ref client? Nicolas Weil to provide DRM protected
- Unified -> Tested, some are open
- Community -> Tested
- DASH-IF Live Sim -> Tested, asked for specific use cases (XLink, Multiperiod Live with texttrack)
- Will / NBC -> Geo restriction problems, Will checks for EU friendly stream
- Dan / CBS -> Geo restriction problems. Daniel to provide detailed information
- Multi Audio, Multi Text
- Hulu Zach: Daniel to send over the nightly branch url.Provide multiperiod test urls?
- Please provide test vectors and/or test existing vectors against the nightly branch: http://reference.dashif.org/dash.js/nightly/samples/
- Main changes (https://github.com/Dash-Industry-Forum/dash.js/pull/3360)
- Clearkey via license server https://github.com/Dash-Industry-Forum/dash.js/issues/3343
- Provide clearkey server in the MPD and fetch the content keys from that server
- PoC implemented and ready for testing with cenc and cbcs content: https://github.com/Dash-Industry-Forum/dash.js/tree/feature-clearkeyByServer
- Will to provide a formal document for the IOP group
- Will question: Check if the player validates the range for byte range requests after segment has been loaded. Akamai might be able to provide a sample for static content with byte range requests.
- Decided to include this feature in 3.1.3
- Relevant links with further description
- Low Latency algorithms
- L2A-LL Unified Streaming / Theo :
- LoL Algorithm by Ali and his students
- Next steps
- Check both papers and the PRs
- Will: Bitrate oscillation for multi bitrate, might be solved by these algorithms
- Common Media Client Data
- Spec is finalized
- Adjust implementation in 3.1.4
- Will to provide copy of spec and summarize required changes
- Discusstion items
- Clearkey questions
- https://github.com/Dash-Industry-Forum/ClearKey-Content-Protection/issues/2
- https://github.com/Dash-Industry-Forum/ClearKey-Content-Protection/issues/1
- Email to Security group: Sander, Laurent
- Clearkey questions
- Multiperiod Slack discussion
- Check with Thomas on IOP wording
- Problem: From my understanding it is not possible to simply replace upcoming periods in the MPD. So for example in a multiperiod ad insertion scenario the content provider can not announce a future content period and simply replace this period with an ad period before its presentation starts.
I found this in the IOP guidelines: In addition, updates in the MPD only extend the timeline. This means that information provided in a previous version of the MPD shall not be invalidated in an updated MPD. Reason is, i saw a manifest for which a future period was replaced with an ad period. This lead to problems in the timing model of dash.js. In this case dash.js had 2 periods for the same timespan Possible solution: After each MPD update filter existing periods in the internal variable of the player. All periods which are not in the MPD anymore and have a start time greater than Date.now() are removed/replaced.
Attendees: Theo Karagkioules, Will Law, Bertrand Berthelot, Sander Saares, Andy Rosen, Ali Begen, Cooper Pope, Nicolas Weil, Dan Sparacio, Daniel Silhavy
- https://github.com/Dash-Industry-Forum/dash.js/milestones
- 4 open issues, 66 closed issues, 94% complete
- Release 24th July, Release candidate 17th July
- Closed Issues
- Major refactor, remove circular dependencies
- Add NPVR support: Transition from dynamic to static manifest
- Simplify API usage for fragmented text
- Use local storage to save selected text tracks (similar to audio language)
- Thumbnail selection in Akamai toolbar
- Calculate DVR window for SegmentTimeline manifests based on segments in the MPD if TSBD is missing.
- Define a threshold which controls catchup mechanism for low latency streams
- Fix/Improve startup logic using #t parameter in url, see C.4 MPD anchors
- Fix pssh parsing, remove whitespaces and newlines
- Fix live seeking on non browser devices (buffer required before native seek on videoelement)
- Further live delay optimization: Calculate fragment length based on @maxSegmentDuration or choose maximum segment duration (audio,video,text)
- Fix race condition in reference client (latency attributes were overwritten)
- Restructured and cleaned list of reference streams in reference client
- Remove profiles from mimeType Attribute ('video/mp4 profiles="cmfc,cfhd“‘)
- Add JSDoc for DashAdapter and DashMetrics
- Fix reset of quality in InsufficientBuffer rule
- Fix SegmentTimeline seek within DVR window and seek back to live
- Add framerate to monitoring example
- Open issues
- Further debugging of multiperiod streams → Small improvements, still ongoing
- Update of node modules and external dependencies -> Move to 3.1.3
- Review Chromecast support -> Move to 3.1.3
- Low latency optimization / debugging -> Ongoing
- Planned release: 21st-28th August
- Main issues
- Multiperiod (Elemental and CBS content)
- Low latency algorithms
- LoL: https://github.com/Dash-Industry-Forum/dash.js/pull/3313
- L2A-LL: https://github.com/Dash-Industry-Forum/dash.js/issues/3231
- Decided to integrate both algorithms and choose the best one as default
- Finalize update of all dependencies
- Clearkey without keys being specified in the protData. License server url specified in dashif:laurlhttps://drm-clearkey-testvectors.axtest.net/AcquireLicense</dashif:laurl>
- Support for DASH events version 1 (different timing than version 0)
- Chromecast receiver/sender
- (Student project: Xlink onRequest)
- Description: How does the player handle situations in which no UTC timing source is provided?
- Current behavior:
- Use Akamai UTC server as fallback: http://time.akamai.com/?iso&ms
- Check for Date Header when requesting the manifest
- Decision
- Use Akamai default UTC timing server, but signal a warning
- Consider adding more warnings when not being compliant to the specification
- See https://github.com/Dash-Industry-Forum/dash.js/issues/3300
- Decision: Daniel and Will to bring this up in IOP. Might be worth to add this to the Service Descriptor element https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/399
- Related/similar to HLS AES-128
- Receive keys from clearkey server using predefined request format
- More information / examples
- Will to collect information and open up an issue on Github
Attendees: Will Law, Bertrand Berthelot, Rufael Mekuria, Theo Karagkioules, Boy van Dijk, Daniel Silhavy
- https://github.com/Dash-Industry-Forum/dash.js/milestones/37
- Deadline extended to July 24, 2020 due to vacation and number of open issues
- 24 open issues, 35 closed issues, 59% complete
- Closed Issues
- Major refactor, remove circular dependencies
- Add NPVR support: Transition from dynamic to static manifest
- Simplify API usage for fragmented text
- Further live delay optimization
- Calculate fragment length based on @maxSegmentDuration or choose maximum segment duration (audio,video,text)
- Fix pssh parsing, remove whitespaces and newlines
- Thumbnail selection in Akamai toolbar
- Improvements and bugfixes
- Prepared set of smoke test vectors
- https://docs.google.com/spreadsheets/d/1iH3fRtqoKz-kBQ3po4ZUf9dkEwPNzoE7PrRwZgg7s0E/edit#gid=0
- Unified and Akamai are able to provide additional livestreams to include
- Open issues
- Further debugging of multiperiod streams → Gaps between periods
- Update of node modules and external dependencies
- SegmentTimeline seek within DVR window and seek back to live causes crash
- Review Chromecast support
- Restructure reference streams
- Low latency optimization / debugging
- First dash.js award goes to Nicolas Angot 🥳 🎉🏆
- Sketchboard available:
- MMSys presentations and paper:
- Low latency Twitch challenge
- Unified will check if it is possible to contribute their LL algorithm back to dash.js
- Participants: Thomas Stockhammer, Ece Öztürk, Rufael Mekuria
- Working on multiperiod test cases and corresponding test vectors
- Discussing low latency test cases and corresponding test vectors
- ProducerReferenceTime
- Resync Representations
- Align IOP5 specification APIs and dash.js APIs
- Discuss list of smoke vectors
-
https://github.com/Dash-Industry-Forum/dash.js/issues/3263
- Description: How does dash.js calculate the DVR window if timeshiftBufferDepth is not defined?
- Specification
- If timeshiftBufferDepth is not set it is defined as „Infinite“
- Problem
- Some manifests use SegmentTimeline $number or $time, no timeshiftBufferDepth and have an availabilityStartTime of 01-01-1970.
- In a concrete example: An increasing TSBD was used which lead to problems on multiple players.
- Proposed solution
- Use the available segments in the SegmentTimeline in order to define the DVR window.
- AST should be set according to the start time, a fixed TSBD can be used then.
- DVRWindow.start = Max(Now-TSBD , AST(Period@start))
- Question
- What to do with SegmentTemplate manifests? --> Invalid content
- Is this described behavior standard conform? --> Yes
- Result
- Agreed to work with approach a) and use the segments in the manifest to calculate the DRV window
-
https://github.com/Dash-Industry-Forum/dash.js/issues/3259
- No reset of specific low latency parameters found so far
- Problem does not occur for video only, further investigate why audio only causes waiting events although enough data is available in the MSE
Attendees: Thomas Stockhammer, Bertrand Berthelot, Theo Karagkioules, Babak Taraghi, Martin Lasak, Daniel Silhavy
- dash.js v 3.1.1 RC on May 15th Link
- Live Edge calculation improvements: If no valid segment was found at the target live edge do not start from the beginning of the DVR window. Rather play as closely to the target live edge as possible.
- Restructured Readme
- Fixed DASH event handling
- Timing of inline events was implemented wrong.
- Events at period boundaries were not started
- XLink bugfix, resolution was not working due to missing dependency
- Code refactoring, remove circular dependencies
- WiP: Building/Linting Link
- Update of node dependencies/remove outdated dependencies
- Move to Webpack
- Run Git linting hooks only for Git push, not on each commit
- Fix functional tests in Edge
- Minor bug fixes and optimizations
- Reload of static manifests
- IOP Test Asset coordination call
- Provide list of used MPD parameters in dash.js
- Upcoming: Update list of smoke vectors
- Asked for WebM SegmentBase teststream
- Milestone 3.1.2 Link
- Further debugging of multiperiod streams → Gaps between periods
- Further improvements of live edge calculation
- Live delay as a multiple of fragment duration
- Low latency live delay calculation should not be treated separately → see MediaPlayerModel
- Improved caption interface in the MediaPlayer API: Link
- Further refactoring/code simplification
- Fix race condition with signal end of stream and late addition of a new period to the MPD
- Remove circular dependencies
- Feature: Version 1 events
- Bugfixes
- Smoke vector testing after each commit
- Chromecast receiver/sender?
- How to structure the reference streams? By provider or use case? --> FOKUS to come up with a proposal
- Low Latency algorithm
- Ali send LL algorithm, PR against latest version upcoming
- Unified Streaming LL algorithm
- General
- Prepare dash.js award recommendations after release of 3.1.1
- Paid tools
- Browserstack
- Sketchboard
- Two papers on dash.js at MMSys 20
- TU Berlin Student projects
Attendees: Ali Begen, William Frantz, Martin Lasak, Vinay Rosenberg, Daniel Silhavy
- dash.js v 3.1.0 release on April 14th, RC published on April 7th
- Offline playback
- Multiperiod & Live improvements
- Startup logic: Calculate start period to avoid seek in the beginning, MSE reinitialization, and unneccessary download of init segments
- Improve live edge calculation
- Improve/fix functional tests
- Sync with Thomas and Ece regarding dash.js and test vector activities
- Feedback for LL spec, IOP v5 and additional documents
- Minimal set of test vectors for smoke testing
- Milestone 3.1.1
- Spend this sprint on small bugfixes/features and refactoring
- We need to reduce the complexity of the player, especially these parts:
- Multi Period transition, see problems described here: https://github.com/Dash-Industry-Forum/dash.js/issues/2946
- Segment requesting and scheduling
- Remove Grunt and move to Webpack, reduce building complexity
- Improve Wiki and Github landing page
- Low Latency algorithm
- Ali implemented new low latency algorithm. He will provide source code.
- General
- No F2F this year, no DASH-IF F2F in Europe. Will be a virtual meeting
- Paid tools
- Browserstack
- Sketchboard
- Set up a Kanban aligned with Github.
- Two papers on dash.js at MMSys 20
- Dash.js Award – Formal procedure
Attendees: Will Law, Betrand Berthelot, Ali Begen, Daniel Silhavy
- dash.js v 3.0.3 released on 12th March
- Changes & Features: https://github.com/Dash-Industry-Forum/dash.js/releases
- Regarding sequential requests in dash.js and the "nor" attribute of CMCD spec: Put decision logic for next request in separate function which can be called regardless whether an actual request is made or not.
- Sync with Thomas and Ece regarding dash.js and test vector activities
- Aligned labeling for both projects
- Working on defining multiperiod testcases to be tested against dash.js. Thomas aligns with IOP spec.
- Milestone 3.1.0
- Url: https://github.com/Dash-Industry-Forum/dash.js/milestone/35
- Scope: https://github.com/Dash-Industry-Forum/dash.js/wiki/milestones
- Gantt chart: Hard to keep up to date in Google Groups, better ideas for a tool? --> Skip this for now, scope in Wiki is sufficient.
- Testing: Looking into Selenium tests, Browserstack paid account might be required. We will check after setting up the tests on local machines.
- Align with all activities: Jesus working on Gap management and Multiperiod
- Orange: Chromecast support (sample sender and receiver application) planned for April or May
- Make sample page more prominent on Readme.md and Wiki
- General
- Orange merged small changes directly
- Deadline for pull requests for the dash.js award ends on May 1st.
- Setup a Doodle poll for potential F2F in Istanbul since MWS was canceled this year. Leave users the option to comment, as we all have new travel policies at the moment.
Attendees: Betrand Berthelot, Martin Lasak, Daniel Silhavy
- dash.js v 3.0.2 has been released on 5th Feb
- Sync with Thomas Stockhammer and Ece Öztürk regarding dash.js and test vector activities
- Align labeling for both projects.
- Spend some to identify multiperiod use cases/scenarios in order to provide the appropriate test vectors.
- Upcoming Milestone
- Functional Tests
- Need to work again and should be extended in the future. This will save us a lot of time for manual testing and prevents regression
- Promotion
- Promote 500$ competition on Github and ?
- Add companies which use the player to landing page on Github. Check for legal problems.
- Features
- Orange is working on Chromecast support. They will provide a sender and a receiver sample application.
- General
- Orange to merge their pull requests directly which does not require a code review.
Attendees: Dan, Tobbe, Nico, J. Oliva
- J. Oliva. Dash.js v2.9.1 freeze applied. Official version will be released on October 1st.
- J. Oliva. New version coming with multi-period, drm, timing fixes, and lot of refactoring. New error management system in place (thanks @nicosang for it) that unify error codes and information.
- Dan to check caption fixes provided by Nico to see if it solve the problem he was experiencing in dash.js v2.9.0.
- Dan. CBS is using dash.js for all-access streams in Canadian market with DRM enabled. Started to use dash.js in more of their clients.
- Tobbe. Would like to have more information about multiperiod smooth transition when using SegmentTimeline based streams. J. Oliva will get back with more information about this. Tobbe open to provide a sample stream.
- Nico. Ask for feedback regarding PR #2779. We will wait for more feedback from DASHIF before merging PR.
- Nico will send a new PR to fix an issue in the new error management system.
- Thanks to everyone that participated in today call! It was a pleasure having again a crowded dash.js meeting.
Attendees: Will Law, Tobbe, J. Oliva
- J. Oliva. Working on Ultra Low Latency Mode. Code freeze to be applied this week so new release will arrive before end of April.
- Tobbe. Tobbe will add a topic to the list of topics for f2f meeting regarding dash.js and start-over in live channels.
- J. Oliva. Retaking the issue related with "don't tear down MediaBuffers in period transitions". There was a good progress there and Epic Labs expects to have it ready, including prefetch of next period, soon.
Attendees: Will Law, Tobbe, J. Oliva
- Tobbe. Fixed issues in livesim related with video/audio sync.
- J. Oliva. Working on Ultra Low Latency Mode with the goal of having it ready for dash.js v2.6.8.
- Will Law. Will will send a first email asking the community for dash.js f2f registration.
- J. Oliva to take lead of dash.js f2f organization in which is related to its agenda and topics. J. Oliva will set up a Google Doc in which any assistant will be able to suggest the topics to cover.
Attendees: Digital primates, J. Oliva
- J. Oliva. Release v2.6.7 to be published on Wednesday (March 14th)
- J. Oliva. Worked on adding support for Multi Key DRM.
- Miriam, from Epic Labs, and J. Oliva working in ultra low latency feature.
- Still need to do some progress on ABR algorithm
- Some issues detected with the time-requests calculation that J. Oliva is fixing
- Calculate delay using availabilityTimeOffset
Attendees: Will, Tobbe, J. Oliva
- Tobbe - working on livesim fixes (audio/video sync issues).
- J. Oliva - Dash.js v2.6.6 released. So far, so good. No issue up to date, some dash.js users reporting noticeable stability improvements.
- J. Oliva - Epic Labs team working on ultra low latency mode. We have a version based on the one develop by Tobbe's team that have shared with the community as an early PR to enable further testing. Still we are working on some parts of this feature:
- ABR algorithm for low latency mode
- Review chunk append process to avoid the need of parsing FMP4 boxes (apparently, appending incomplete mdat boxes could cause decoding issues in the browser: to be confirmed, and J. Oliva to look for alternatives in case of confirmation).
- Will - Provided a POC that implements low latency without the need of parsing boxes. Epic Labs will take a look and will analyze the best way of adding chunks with minimum performance impact.
- Will - Provided ideas about throughput estimations when working in low latency mode. J. Oliva to further investigate into this and to come with a first implementation into dash.js.
Attendees: Rob, Tobbe, J. Oliva
- Tobbe - Timestamp alignment issue detected for audio tracks and segmenttimeline streams generated with livesim. A fix is expected for next week.
- J. Oliva - Finishing implementation of new buffer management algorithm
- J. Oliva - Code freeze scheduled for Feb 7th, release on Feb 14th
Attendees: Will, Tobbe, J. Oliva
- Tobbe - Prepared a live stream with thumbnails demo
- J. Oliva - Fixed thumbnails support for live streams
- J. Oliva - To take a look to thumbnails timing accuracy
- J. Oliva - Working on buffer management changes for 2.6.6. Code freeze will applied once this is done.
- Will Law Dash.js face to face meeting scheduled for May 14th (Berlin)
Attendees: Dan, Tobbe, J. Oliva
- Dash.js version 2.6.5 to be released tomorrow (January 10th)
- Tobbe. Working on adding support for Thumbnail representations (and thumbnails generation) to live-source-simulator
- J. Oliva. Working together with @nicosang on PR #2342 that adds improvements on buffer management. It fixes seeking back issues, makes dash.js more friendly with devices with memory limitations and sets the base to implement fast track switching (ex: fast audio track switch). Should be ready this week
- Once we have buffer management fully stable we will think on ways to increase its efficiency
- Idea: Use cache API of the browser (Service Workers) to cache segments far for current playback position instead of relying on MediaSource buffer and browser memory allocation/deallocation mechanisms
- J. Oliva will start working on #1474 (tear down media sources) and #1708 (low latency) as soon as work on #2342 is finished (by the next week)
Attendees: Will, Rob, Bertrand, Tobbe, J. Oliva
- Dash.js version 2.6.4 code freeze starting on November 29th
- J. Oliva. First version of thumbnails support ready for review (PR #2305)
- J. Oliva to prepare a thumbnails demo for Dash.js face to face meeting (San Diego)
- J.Oliva. Continuous deployment (CD) has been setup for development branch
- Will suggests to add a label to reference player of development branch (CD) with a reference to latest commit/version. J. Oliva will take care of this point
- Added basic ClearKey support. Still lack of support for ClearKey license servers
- Bertrand. Working on automating functional testing. In contact with travis support team to solve a doubt related with travis matrixes and test stage
- Tobbe has been working on CMAF support. He will send the corresponding PR and sample streams
- Will. Dash.js European face to face meeting to be organized. Possible locations (to be decided): London, Paris, Germany, Madrid
Attendees: Sander, Dave, J. Oliva
- Dash.js version 2.6.3 released
- Agree on putting a note in contribution guidelines about policy to follow with non-IOP-Conforming content -> For commonly used features which are forbidden by IOP, raise a browser warning indicating what's wrong
- siropeich (Epic Labs) to take a look to issue #2280
- J.Oliva. Regarding stabilization, main priorities are:
- Buffer management simplification and fixes
- Multiperiod management
- DRM management (related with point 3)
Attendees: Will, Dan, J. Oliva
- Dash.js coordination call moved at 16:00-17:00 CET (biweekly on Tuesday).
- Dan is working on a fix for #2256.
- J. Oliva finishing first set of fixes related with buffer/requests management. It will be ready this week for review.
- J. Oliva will send a PR this week implementing CI for development branch (nightly version) integrated with travis.
- Code freeze for version 2.6.3 starting tomorrow
Attendees: Will, Dan, Tobbe, J. Oliva
- J. Oliva to reschedule dash.js coordination call to be at Europe friendly time. Doodle will be created and link sent to dash.js mail group and Slack so people can vote their time/date preferences.
- J. Oliva to prioritize issues related with stability:
- #2184: No segment found at index: XXX. Wait for next loop - issue with live streams using dashjs 2.6.0
- #2187: Video stop when seeking backwards.
- J. Oliva to research issue #2230 (Presence of audio representation can disproportionately increase rebuffering).
- Ok with moving Contribution guidelines to CONTRIBUTING.md.
- Continue managing CLA as we are doing today. In the mid-term we will think the best way to automatize CLA management.
- Continuous deployment. J. Oliva to review integration with surge.sh.
- Functional testing. Define basic functional tests that will be launched after compilation to ensure there is nothing broken in new commits/PRs. Effort led by Nico.
Attendees: Bob, J. Oliva
- Nico and J. Oliva (Epic Labs) are looking at some issues that could be related with buffer management and pruning logic.
- J. Oliva sets code freeze on October 4th. Release scheduled for October 11th.
- J. Oliva. Pulled in PRs that fix issues in requests management and captions layout.
- Bob is looking at an issue related with playback get stalled after 25 minutes playing a specific live stream.
- Bob, J. Oliva. OK to pull in PR #2154: Update Module Management.
- Everyone - Test RC1! :)
Attendees: Dan, Bob
- BBC is using 2.6 in production no issues so far.
- Bob may be able to check 2.6 against 2.5 regarding ABR improvements. Looking good so far.
- Bob is looking at Safari bug
- Bob is looking at getting Dash.js to work without video element attached.
- Dan is working with epiclabsDASH as needed.
- Dan Wants to work on release cadence - make it much quicker now we have epic lab onboard (DASH-IF sponsored developer).
- Everyone else is at IBC enjoying the Dash IF party ;)
Attendees: Will, Dan, Tobbe
- Dan - pulled in > 30 PRs in last two weeks. Code freeze was last Friday for 2.6. Will pull some additional unit tests as they will not affect major functions. Test .
- Send out email with RC1 later today for testing.
- Intro Epic Labs to Dan - @Dan to propose some time slots that work. @Will to ask for github user names.
- DASH IF picked thumb-nail implementation to be first issue to be addressed by Epic.
- Tobbe - live segmentTimeline switching audio languages track is broken - looking in to it. #1928
- Test RC1 everyone!
Attendees: Will, Dan, Kevin,
- Kevin - 3 PRs on ABR logic. #2083 , merging between BOLA and throughput rule, maintains bitrate between handover. BBC also said would run some test to verify. @Kevin - ping them to remind. Add API to block Bola if required?
- Kevin #2094 - throughput history improvement. Shifting to exponential moving average. Also updated abandonRequest rule.
- Have 28 PRs now. @Dan to organize an admin meeting to merge in PRs around August 22nd . Invite EpicLabs. Outside of this call at Euro friendly time. Also will pull in some PRs at back of list.
- FOMS conference happening in San Francisco Oct 3/4 followed by DEMUXED conference. Silvia has travel scholarships available for FOMS.
- Next f2f - suggestion to hold it in Feb in Denver, hosted by Comcast?
- 2.6 release updates - shifting right due to European holidays - new Code freeze August 18th, release August 25th. @Dan to send email today.
Attendees: Will, Dan, Kevin, Tobbe,
- Tobbe - CEA608/708 - changes with Chuck Wilson, Dan merged PR. SegmentTimeline PR still open. @Dan will follow up. Student working on chunk transfer encoding with cmaf chuncks, has 6s segments with 2s delay with 1s chunks. Fetch api is working. Not checked in yet. Missing availabilityTimeOffset support in player, will need to add that too.
- livesim - code for cmaf low latency in private branch. Will be pushed to livesim in later summer.
- Dan - pulled in 8 PRs.
- Kevin - working on ABR improvements. Current plan to abstract throughput utilities out of throughput rule in to class about throughput history. Followed by plan to migrate from BOLA to throughput and back dynamicaly and get best of both worlds for switching.
- Code climate - signing in is a problem. Only allows single admin. @Dan will remove.
- Axinom has bunch of on CPIX. Akamai implementing for transcoding.
- Will has moved reference player hosting to reference.dashif.org, to allow for loading under http and https. Necessary for EME testing and development. Also reworking test vector URLs to use https where available.
- Reminder to discuss installing jenkins on reference.dashif.org and use it as a build machine.
- Live source sim, gets overloaded. Looking at monitoring. Lot of streaming, average is 4Mbps. Will boost to more powerful EC2 instance.
Attendees: Will, Dan, Kevin, Rik,
- Rik - issues with buffer size on xbox 1. Made code changes in bufferController, to prune before and after playback head. Seems to be working well in his testing. Also changes to nextFragmentRule, doesn't take in to account size of fragment about to append, gets in loop when it appends over trim limit. 2.Dan counseled to examine the buffer controll APIs on mediaplayer (stable and top-bitrate) and set them appropriately for memory constrained devices like SmartTVs. Defaults are 12s and 30s for VOD.
- Dan pushed in PR around CodeClimate, restricting to source folder, trying to get all admin's access
- CLA git system, Will asked where clicks are stored. @Dan to investigate.
- @Dan to pull in open PRs.
- 2.6 Sprint dates - Code freeze July 5th, release July 14th.
Attendees: Will, Dan, Tobbe,
- 2.5 Release went out last Friday. https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v2.5.0 . Thanks to the many contributors and to Dan for packaging the release. No obvious point release issues. Not getting much response on testing. Are people testing and not finding issues?. Will add release process and testing procedures for f2f. Reactive rather than proactive.
- Tobbe - bug in Edge browser. Redirect not happening. Workaround is possible but is it the right thing to do per spec? @Tobbe to raise at f2f.
- Errors found in CEA608/609 - nice - Tobbe to review.
- IMSC1 support - Pierre is asking for update. Code is in separate branch currently for safety. Will make 2.6 release target for IMSC1 text support. Priority due to CMAF and ATSC support.
- Tobbe found bug with segmentTimeline. Video content was two hours behind but it played. Audio switch however caused audio to jump two hours forward. Will file issue.
- Thumbnail support - no community input received on proposal. Will push for standardization at DASH IF f2f.
- Face-to-face meeting, Berlin - May 16th, 2016. Currently sold out. All participants to please add requested agenda items to the wiki page at https://github.com/Dash-Industry-Forum/dash.js/wiki/European-2017-face-to-face-meeting---Berlin,-May-16th.
Attendees: Dan, Garret, Tobbe, Rik.
- Please submit any open PR by end of day PDT April 5th. Looking to test for two weeks and release by Wednesday April 19th!
- Dan - Will create a new list for refactoring standards when changing ES5 code.
- Dan Merged 6 PRS this morning and is still reviewing for 2.5. release.
- Dan will create change list for release.
- Rick would like to work on adding logic to clear forward buffer as well as past.
- Discussed if action can happen sync or async. Options including queues or loops with lists etc.
- Recommended Rik to look at MediaController and BufferController regarding Multiple Audio Track switching as we do some forward pruning for this as well. We should merge this logic solve this as eloquently as possible.
- Tobbe has an intern look at ULL for live sim - couple months of work.
- Looking at Large PR for Text Track to help code review. Dan really appreciates this!
- Dan Will review as well.
Attendees: Will, Dan, Garret,
- Thumbnail issue opened - https://github.com/Dash-Industry-Forum/dash.js/issues/1834
- Dan - working on getting started guide https://github.com/Dash-Industry-Forum/dash.js/wiki/Developer-Getting-Started-Guide. Goal is break out main areas and give details about how they work. Will send out to group once ready. Also add to wiki links and readme. Release on Fri 24th.
- PR integration by Code Climate - needs to be limited to just src folder.
- Readme should link to wiki, since many do not know it is there.
- ITV question about requestMediaKeySystemAccess and http vs https. Dan will open isue. May not be able to avoid requiring https page load for using ClearKey.
- Dan - goal is to merge all PRs except last three this week.
- Berlin face-to-face meeting - Tues May 16th. Registration opened today with Fraunhofer. Will to create Wiki page for collecting agenda items and also send out email about event.
Attendees: Dan, Tobbe, Dimitri, Rik, Garrett
- Rik/Vudu has upgraded from 1.6 to 2.3
- Dan will merge 1802 after call. Ask Rik to make sure it works with smoke test vectors.
- Discussed PR #1783 , Rk, mentioned possible seek at start bug. Wondering if 1783 may fix
- Vudu is seeing a wasted frag when using seek at start with #s
- Asked Rik to investigate if time allows.
- Vudu is seeing a wasted frag when using seek at start with #s
- Tobbe small fix for new Iso-boxer lib.
- Looking at IMSC PR again to see what is left
- Risk due to missing TTML aspects
- Tobbe will create the issue for Image parsing Thumbs.
- Rik would like to review design.
- Dimitri. - Dan promised to get him a couple entry level bugs to get started
- Dimitri - May work on Thumbnail implementation
- Dan needs to get Getting Start Doc for Devs put together in the next two weeks to have for next bi-weekly.
- Garrett PR merge for the setMinAllowedBitrate. Thanks for the work!
- We decided to merge metrics limiter PR.
- Not optimal but better than current.
- Code climate pr integration is complete but not seeing it turned on yet. Dan will follow up on this
- Dan - Want to set up the code coverage next.
- New projects Tabs in Github.
- We should use it to plan sprints instead of milestones.
Attendees: Will, Dan, Dimitri, Garret, Nicolas, Bertrand, Tobbe,
- Dimitri - what is process for contributing? No more extending the player. Fork the repository, CLA agreement to sign if not DASH IF member, should make task as to onboard as first time contributor, do you work in the fork, submit as PR, will be reviewed. Solve some bugs, work on items.
- Bertrand, Nicolas - at Munich f2f, worked on submission for Smooth streaming integration. Static streams only. Dan has not reviewed code lines, but has downloaded and built, building Akamai support player using that. Abstraction looks good. Not many changes in DASH layer or core streaming, adding MMS package. Updated ISOBOXER parsing library (16kB->20kB), to provide writing functions. Need to generate init segments and process media segments on the fly. Tobbe - thinking that updating ISOBOXER might break captioning? Consensus to go ahead and merge this PR. Reference player will be updated to have some Smooth samples. Will also create a separate sample app showing minimal implementation for Smooth.
- Dan - announce to group , pulling back from developer, staying as manager and admin. More time to document, flow charts, PR review.
- Garret - quality selection API beyond setMaxBitrateAllowed. Select any different combinations not required. Will add in setMinBitrateAllowed - will go ahead and submit PR. Open issue first, then create PR.
- Tobbe - look a bit in to, looking in to low delay, support chunked transfer mode. Implement fetch() on . Also look at subtitle PR.
- Heads up face-to-face May 16th Tuesday. @Will to put out save the date.
- Dan integrated CodeClimates PR review tool last week.
- 2.5 freeze on March 15th, release March 31st.
- 2.6 tentative for code freeze May 15th, release May 25th.
Attendees: Will, Dan, Garret, Tobbe,
- 2.4.1 was released on Feb 2nd - https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v2.4.1. Thanks to everyone who submitted CRs for this point release.
- Dan - status - reviewing some of the large PRs. Update for seek bug PR #1783 - concept of common earliest time. Differs from what is advertised in mpd. After appending, check available buffer. Delay seeking for live until buffered range is known. Next is Smooth streaming addition - abstracted nature, can be loaded separately. MSS package is implemented as optional inclusion. Tobbe - should we have a separate player? Build another index page for Smooth - different logo, DASH includes and pull-down samples.
- Dan - looking at DRM tools inside support player
- Tobbe - some issues for subtitling - will address. Look at integrating imsc1 library. Also, thumbnail proposal is out and Will created working sample of thumbnail proposal: http://dash.edgesuite.net/akamai/bbb_30fps/bbb_with_tiled_thumbnails.mpd
- issue #1955 - manifest freezing on repeated seek. Garret to reply. Cannot replicate under Mac OS. Suggest update to newest Chrome 56.
- Issue #1780 - Dan to investigate
- #1770 - mpd chaining. Feature request. First implementation can be brute force restart. May just be parsing manifest and then setting new source on complete. Dan may look at it.
- Improves charts to show incoming caption data. Also add text tab. Add to issue for player.
- 2.5 freeze on March 15th, release March 31st.
- 2.6 tentative for code freeze May 15th, release May 25th.
Attendees: Will, Kevin, Dan, Garret, Tobbe,
- Dan - regression in 2.3 to 2.4 for segmentTimeline, goal is fix for 2.4.1 to release next Wednesday. May be related to DVR changes that came in with 2.4. Should we perform time sync for segmentTimeline? Should not need it as it is clock-independent.
- Dan - improved charting and UI for reference player. Can now choose which metric you want to chart. Can limit to 5 items to stop . Will add data to plot points that will display on hover-over.
- Merged in ABR logic from BBC - should be resolved for point release.
- Torbjorn - posted thumbnail proposal available at https://github.com/Dash-Industry-Forum/DASH-IF-IOP/blob/master/thumbnails/README.md. Please provide comments in the issue thread https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/119. @Will to create working sample file. @Dan to modify controlBar contrib.
- Kevin - no updates on ABR logic. Working on merging throughput with Bola.
- Sprint planning on target - provisional point release 2.4.1 - code freeze on Jan 25th, release Feb 1st, then v2.5 code freeze on March 15th, release March 31st.
Attendees: Will, Kevin, Dan, Garret,
- Sample files hosted on dashif.org missing components https://github.com/Dash-Industry-Forum/dash.js/issues/1733. Issue is that http://vm2.dashif.org is an old site that should not be referenced for sample players. All samples players should be accessed at http://dashif.org/reference/players/javascript/v2.4.0/samples/....
- videojs features - would like documentation of mpd feature support , as well as manual representation selection, for contiguous and non-contiguous ranges. Contiguous can be accomplished by new minAllowedBitrate parameter.
- https://github.com/Dash-Industry-Forum/dash.js/issues/1722 - quickstart not working under 2.4. Dave has fix #1722. Will probably put in point release in next few weeks.
- Dan - will improve charting in default player on next release.
- Dan - working on retry logic, as discussed at f2f, for 2.5
- Dan - working on thumbnail support for 2.5. Torbjorn was working on proposal for DASH IF. @Will to then shop to JW/Shaka/Bitmovin. Brightcove would help work on this.
- New time for call for easier European participation
- Kevin - BOLA, merging with throughput rule. Switch up will have heavier bias towards throughput, as will startup, end of stream and Low latency. Related - #1641 merged yesterday, for ABR improvements, brings dropped frames rule, switch history.
- Sprint planning - provisional point release 2.4.1 - code freeze on Jan 25th, release Feb 1st, then v2.5 code freeze on March 15th, release March 31st.
- @Will - to ask European contributors what call time they would like.
- Calls for 2017 to be bi-weekly from Jan 10th.
Attendees: Will, Dan, Tobbe, Garret (BC), Lloyd,
- lmsg value in STYP box - signals that it is the last segment. Reload manifest, if it does not have additional periods or returns a 404, then execute EOS. Standard says last segment in representation. USP use lmsg in VOD , if audio ends up longer. If static, find lmsg, then end the period. Can cause problem if playing stream back form live point. @Dan to create issue.
- EMSG, signal to reload the manifest. Today we parse form segments but do not interpret. If value is 1, payload is pubnlish time, if manifest is older then you should reload manifest. @Dan - Need to create issue to track. BBC will reload manifests every minute. Will signal EMSG 2 minutes before end. Manifest will come back with media presentation duration.
- Retry logic - live profile for static streams. Currently retry 3 times and die. On static stream without baseURL, retry once after half segment duration. The try same segment in lower representations, walking one by one. The increment segment index by one and try at original index. If baseURL is present, skip retry, try alternate base URLS. If all fail, un-blacklist, then proceed as if for non-baseURl use-case.
- Tobbe issued PR for IMSC-1 image support.
- @Dan - some PRs from Orange, will review.
- F2f is now sold out. If anyone wants to attend, contact Will directly.
Attendees: Garrett, Joe, Matt, Tobbe , Will, Dan
- Garrett, Matt and Joe (From Brightcove) joined the call today and are looking to get involved in the project and contribute. Currently Video.js is utilizing Dash.js.
- Dan merge PR for Dynamic multiperiod with other refactoring.
- Dan added new PR to solve for issue #869
- Dan working on Spec in google docs that will be shared soon and will set up a review call before implementing anything.
- Dan offered to help the folks from Brightcove get started with the code base, just reach out.
- Tobbe found bug possibly related to 50% deviation logic in DashHandler that should not be used for SegmentTimeline (Have a current issue for media chunks failing in the same way). This results in a Text fragment not being found and the entire text track does not render due to the one missing segment.
- Tobbe is looking at IMSC1 - Image Profile vs Text profile and what is more future proof. Has had requests to implement Image profile.
- Will mentioned that IMSC1-text profile may be the more future proof profile to implement.
- IMSC1-text was recently confirmed as the only required caption format for CMAF. Hence, it is something the project needs to support.
Attendees: Will, Dan, Lloyd, Kevin
- Lloyd - did some ABR improvements, 2 engineers working on it. Open PRs - Jonty, #1628 approved by Dan. SetSchduledWhilePaused to false without autoplay in div would produce failed start. #1616 - suggest holding off on merging as more fixes are coming. If seek while buffering, playback rate can stall. Safari10 on Sierra get by default, as well as any user without Flash, Dec 1st Chrome change will make default. BBC uses DVB-dash segment template only with AVC3, don't test other styles.
- Optimization for multi-period, examine init string (codec+mimetype) and don't tear down source buffers in between.
- Dan - VOD multiperiod, buffer drains to zero at end of each period, >LIVE is not behaving same way. Does schedule in to the next period. StreamObject (sourceBuffers) for very period. Working on multi-period now, dealing with intermittent stop.
- Lloyd - someone in slack channel , Edge has port for vp9. Edge has not updated the API for discovering if a codec is supported. Should try newer API first.
- Dan - debugging unit tests, success with IronNode, Mocha and Chrome debugger.
- Kevin - working on getting one unified ABR (BOLA + throughput) for best performance. Need to look at recent changes from BBC.
- Demuxed conference in SF - Spoke with Chrome and Firefox MSE/EME teams. Chrome interested in looking at doing away with string inits for SBs, and rely only on init segments which are appended. Also came up with notion of annotating/decorating each append with arbitrary information. Players can use to store media info (width, height, codec, bitrate) as well as advertising, application specific data and debugging data (such as IP of server that delivered segment).
- **Looking for release date for 2.4: Code freeze Wed 30th Nov, release on Dec 9th. **
Attendees: Will, Tobbe,
- @Will - create issue for people to add logo to reference player. Edgeware has added.
- Live sim - Dan out on vacation - @Dobri looking for info.
- Tobbe - found overflow bug. 54bits needed with segment timeline. Suggestion that big.js may be a solution for 64bit machines. https://github.com/Dash-Industry-Forum/dash.js/issues/1619.
- Solution for fast-start with large segments - either do range requests , or try to implement Fetch API. Not sure if it is reliable across browsers yet. There was talk of chaining output directly to sourceBuffers. http://caniuse.com/#search=fetch shows support on 61% iof browsers. There is a polyfill for unsupported browsers - https://github.com/github/fetch.
- Face-to-face meeting - San Francisco Dec 14th, hosted by Dolby. Registration is now open at http://dashjs-2016-san-francisco.eventbrite.com. The wiki page to add agenda items is at https://github.com/Dash-Industry-Forum/dash.js/wiki/Agenda-for-the-2016-San-Francisco-face-to-face-meeting-Dec-14th.
Attendees: Will, Nate, Dan, Torbjorn, Kevin, Lloyd, Bob,
- Live multi-period - @Dan working on http://vm2.dashif.org/livesim/periods_60/testpic_2s/Manifest.mpd support. Starts with last period. When it comes time for new period, can't find new period.
- @Nate- what is multi-period support state? @Will - find new mp samples for DASH IF Test vectors. @Dan - VOD should be working in all browsers. Some browser sensivity to. @Dan - working on dynamic multiperiod with @Tobbe. Currently create new sourceBuffers for each period. Phase I - 1s transition always tear source buffers. Phase II - don't tear down if code/init string matches. Prefer to stay away from dual surface, due to fullscreen problem.
- @Lloyd - @Bob - non bola ABR rules. Looking at throughput measuring dropped frames, discounting those qualities , shift history. Feedback from 2.3 ABR rules positive compared to 2.2. Also suggested to look at magic number for cache detection.
- @Tobbe - live sim work. External SIDX file allowed in amend 1 of 2nd edition. For IMSC1, not doing much work, have image subtitle support since 2.3. Styling for FF still missing.
- @Kevin - PR for BOLA, improving work with fast switching. Thinking of blending throughput rule data with BOLA.
- @Dan - low latency , live edge rule, "hodge-podge of complexity" :) Work needs to be done around live edge determination. TimelineConvertor needs to be reworked. Can display UTC in controlbar now. For DVB dash, 404s result in manifest refresh.
- @Dan - PRs #1613, . xml2json improvements? Suggest to pull-in. #1602 - Sander asked questions.
- Face-to-face meeting - Dec 14th, San Francisco.
Attendees: Dan, Kevin.
- Kevin and Dan discussed next steps for BOLA
- Needs to work with Fast Switch.
- Should incorporate the throughput and abandon rules logic instead of replicating it in a separate file. This will mean some abstraction needs to be done.
- Talked about the one production test success. BOLA has been tested by an Akamai customer in production with great success. Proven by Media Analytics evaluations. Comparing throughput with BOLA. Note This comparison was done previous to the v2.3 changes in Throughput and Abandonment Rule.
- Some new controlbar bugs were found and resolved so we want to upload the code to public player ASAP.
- Dan is working on various internal issues this week and will start major sprint work for Dash.js next week
- Focusing on Extensive Retry logic and missing segment recovery as well as Multiperiod refactor!
Attendees: Will, Dan, Lloyd, Tobbe,
- Dan - working on revision of ref player. Will release with 2.3. Much better responsive layout and scaling.
- Lloyd - live stream issues still. Issue #1561. Need to resolve prior to 2.3 release.
- Dan - lot of events need to move to mediaplayer events from core events. Track with central issue. All events aggregated in to events.js, should not reference mediaplayer directly when dispatching events.
- Tobbe - not compliant with IMSC1. Prohibited embedded TTML subtitles.
- Box parser - https://github.com/Dash-Industry-Forum/dash.js/issues/1267#issuecomment-242906850 -
- ATSC using dash.js as reference player for IMSC1 captions.
- Lloyd - integrate 2.3 in to player, generally lot nicer. Increased start-up times? Will look at ABR in 2.4. Has written new segmentHandler.
- IE issue was resolved - credit to Bernhard!
- DRM - need plan to work on features. @Dan has trouble making content, but has interest in the implementation. Create an issue around
- Ad insertion - @Will wouldm like to discuss revisiting dual-videoELement solution for multi-period. Issues with moble devices which require user-interaction. Dicuss at next face-to-face.
- Release for 31st - suggest move to Fri 2nd September and release rc3 in meanwhile.
Attendees: Will, Dan, Tobbe,
- Dan - new label if you do not want your PRs merged. Looking at throughout rule - oscillates and has problems with cache. Resolving cache issues. Do not allow . If retrieved in less than 100ms. Can have different tolerance for audio and video. Suggested to use throughout threshold instead of time threshold.
- Tobbe - image subtitles, with png encoded in base64 inside TTML. New PR with this functionality. IMSC1 has prohibited embedded, only allows URL reference. Relative URL needs reference back to segment. Dan will help and send examples.
- Kevin submitted BOLA update - will not turn on by default, but would like people to test. Production usage with Molotov produced really good improvements in stream average bitrate and stability.
- Where on Dynamic multi-period? Not addressed head-on yet. May have been resolved. Dan will look at it.
- Will to ask Elemental if they know anyone doing dynamic stream ad insertion. SCTE35 emsg.
- HLS conversion for playback - changes m3u8 in to segmentList manifest. Akamai will have working at IBC at booth.
- Issue https://github.com/Dash-Industry-Forum/dash.js/issues/1542 - live delay seems too high. Create some regression.
- Release dates - code freeze 22nd , release 2.3 on 31st.
Attendees: Will, Dan, Kevin, Aaron, Kilroy,
- Dan - large PR , fixes a number of issues. Started by removing Virtual buffer since it was memory heavy and complicated. Multi-track then had to be fixed. Can hold fragment models over period switches and track switches. Event priority by integer number - how to make it clear and clean. Max.int highest priority, based on event type. 0 will be lowest priority.
- Kilroy - question on bitstream switching = true. Have an open PR on this. Missing test vector. With avc3, you can select highest init segment, load that and then treat it like bitstream switching = true.
- Dynamic multiperiod in pipeline - Dan suggests getting working with single source option first, before we consider multiple videoElements. Kilroy suggests specifying constraints on content that allow source buffer re-usage. If cannot be seamless, then execute tear-down.
- Kevin - BOLA advances, testing with live streaming. Simplified abandonment logic. Exploring different buffer targets, down to 12s. Share report next week with dash.js
- Aaron - lurking on github.
- Streams not playing on IE/Edge (#1526) - put some event messaging in error code. If can isolate repro, send to Kilroy.
- Release dates - code freeze 17th , release 2.3 on 31st.
Attendees: Will, Dan, Lloyd, Dave, Kilroy,
- 2.2 review - intermittent race condition, append media before init segment. Add issue to 2.3 and fix
- Lloyd - indexHandler revisions - for 2.3 2. Make segment handler parts testable. 2. For VOD create static list once per manifest update 2. For live , availability live offset, used for ads inside live streams,Live-sim 2. What about Smooth support? @Dan - DASHAdapter handles difference.
- @Dave - Playready bug, no protection data set. @Shane reported. 2.2 added chnage to filter out key systems without protection data, but breaks playready playback which is using pssh inside segments. If have protection data set, then filter, otherwise don't. Point release possible if needed before 2.3.
- @Dan - working on ABR testing suite, fixed multiple events , qualityChange event, refactored to get rid of confusion. Always get start and complete for each segment that is rendered. Now have qualityChanged event and then qualityRendered event. Will get dangling change events that are not followed by a rendered event. @Danb - notify people about event names changing. @Dan - will put out PR.
- @Kevin - test harness to compare ABR rules. BOLA oscillates too much under most conditions. Also saw problems with existing ABR rules.
- Location of next Euro meeting - Amsterdam or Berlin.
- Pick a time for discussion - Monday 25th AT 11:00 PT.
Attendees: Will, Dan , Kilroy,
- LLoyd - has some WIP thoughts on indexhanlder refactor. Dan will comment. Open new issue.
- Low latency streaming capabilities using and partial segments #1474 - should look at ability of
- SegmentTimeline signalling segment durations which are twice as long s other segments, causes player to sit in a request loop - dan to respond.
- Dave - nightly build machine has fallen behind. Dan to investigate. Last build from June 24th.
- Dave - W3C comments have not been made 5. https://github.com/w3c/media-source/issues/101 - Need event to signal when decoder underflow has occurred - add to other object. 5. https://github.com/w3c/media-source/issues/88 - Clarify/remove 'stalled' and 'progress' events for MediaSource - dash.js does not use stalled events.
- Kilroy - sees problem happening with clearkey, common pssh box used to signal keyid with uuid. Dan says we handle this case right now. Common pssh box should only be taken as indication of CENC. Manifest should carry key ID.
- Kevin - received sufficient profiles. Test set-up is active. Getting browsermob to throttle.
- BBC are comfortable with release of RC4 2.2 . Will release Wednesday July 6th. Dan to put out draft of release today.
Attendees: Will, Dan, Kevin, LLoyd
- Dave - I've updated Dan with my thoughts around #1461, which is a showstopper I think. Other than that, everything is is looking pretty good.
- Dave - I've been talking to "MetaG8" with regards #1422. https://github.com/Dash-Industry-Forum/dash.js/issues/1422 I don't think this is a dash.js issue, but I'll update the ticket once we've worked out what's going on.
- Lloyd - #1461, before we would declare that half a segment was available, but in practice only when entire segment is available can it be used.
- Need a DVRwindow event rather than a metric. Also need to constrain the DVR window so that the live edge is no closer to the true live than the original delay-from-live.
- For 2.3, we should consider a clean re-write of IndexHandler. Remove all the binary search behavior and make a much cleaner workflow.
- Make new issue for log lines about why switches are being made. Can we disable log lines by default for non-debug levels? have logging at VERBOSE, STANDARD, ERROR
- Release Thursday 23rd postpone. - > July 6th.
Attendees: Will, Dan, Kevin, LLoyd,
- Dan - Fastswitch tested, logic to handle low buffer situations, replace 1.5x segment duration out from playhead. Introduced bug with default quality of -1, will fix easily. Quality switch at load, with overlapping switch requests.
- Lloyd - Dave's PRs , device pixel ratio fix.
- Lloyd - use for phantomJS in testing environment?
- WebM update - fix from IRT, nice to see two lines of code, changes in stream.js. Provided test vector - can we add to ref player. We need a webM test example in contrib file.
- Kevin - doing ABR BOLA testing using browserstack/browsermob. Using Media Analytics to capture data. Question about how to alert? Can send automated emails - Lloyd to make change.
- Open PRs - #1440, pull in. #1438 - TTML fix, ask Tobbe to review. #1436 - hold until Dan fixes -1 index issue, #1030 - merge. #849 - ask Bernhard if can close.
- Open issues - supporting anchors, for 2.3.
- Dates for 2.2 - currently freeze June 9th, Release June 23rd. Dan still wants to see if dynamic multi-period live can be fixed simply.
Attendees: Will, Dan, Tobbe, Lloyd,
- Face-to-face meeting held in Munich May 19th. Minutes from the meeting are available here: https://github.com/Dash-Industry-Forum/dash.js/wiki/2016-Munich-Face-to-face-meeting
- Tobbe - new issue to support ISMC-1 thread, need test content. We have TTML in
, which is non-standard. Parallel implementation to EBU-TT-D. Throw error or log if timing in right place. Plan to discontinue what we have now around smpte-tt. #1402 start to adapt content to play in our player. Released April 21 so fine to proceed with it. Support for both iso containers and side-car.
- Tobbe - made some test content #920, working on that.
- Dan - worked on issues with replacing buffer. Meeting with Kevin on ABR algorithms. Package up fast switching for 2.2.
- Lloyd - commits around PR for issue template. Dave's PR's, refactoring DASH Metrics by Dave. Refactoring DASHParser. Last week about Browsermob and browserstack, can manipulate. Can use node.js browsermob proxy as service, gives proxy port for test run. Fluctuations high-speed/high-latency, high time to first byte. Download result to HAR. @Dan - @Kevin can help with setting up tests. Email thread or quick meeting. @lloyd to implement single example. Next will look at visibility of errors, binding to error events and surface. Red and yellow.
- Summaries minutes, Axel issues, Create parent issue to simplify tracking. @Will create and issue. For parsing models, can run two in parallel. JSON and then ironed to object. Can ES6 help with XML? Why do we iron? Can we populate the VOs directly when we parse? @Dan is interested in looking at it post 2.2 and make a presentation (jetlagged). Other people using DOM parser.
- F2f - what can we improve for next one. Liked developer attendance, higher than in US. @Wyle - suggested 2nd day for hacking day. Implement for next.
- Adoption for Smooth still an issue. Orange/Ericsson . @Bertrand to manage.
- Audio switching between ACC and EC3, when switching adaption sets, do we tear down source buffer? No says Dan. Codec string + sample rate does not change then reuse. Dan says catch error instead of trying to predict.
- Lloyd - can provide 5 and 2 channels.
- Parallel playback of audio. MSE can add as many source buffers as you want? @Dan - Investigate!! Lloyd can pass audio element as source node for web audio. #1389 comment on what is going to do for audio.
Attendees: Will, Dan, Lloyd,
- Dan - buffer grows to 12s and we append at end of buffer. Can we speed this up? Yes. Beyond buffer pruning, do not serve lower quality cached content. Small amount of code, in validate loop, if 12 buffer, will replace segment one ahead of playhead. Will allow us to have larger stable buffer targets without sacrificing switch time to better quality. If you seek back, will replace going forward. New switch start and switch_complete events.
- Lloyd - want seek to be quick. Consider what happens if loading a replacement fragment fails. Need to check abandonment logic.
- LLoyd - reminder of segments not being returned. Set global timeout on requests - media requests by type. Submitted PR for dealing for DVR Window to report available segments. Fast connection with high latency will abandon prematurely.
- MMSys papers gave two new options for ABR algorithms - would like Kevin to evaluate with respect to BOLA.
- Face-to-face meeting next week in Munich.
Attendees: Will, Dan, Tobbe, Lloyd,
- 2.1.1 patch released - thanks Lloyd for patch. Need improved testing to avoid RC errors making it to release.
- Dave - experimenting with Google closure compiler. Stricter so issued PR to accommodate that. Found a looping dependency - good for code cleanup.
- Lloyd - looking at live streams 24x7 with 3hr rewind window, #1355 DVR play metrics.
- @Will - add Lloyd and Dave to project admin.
- Quality assurance projects - why not use real mediasource? Not part of DOM in test environment. @Dan to investigate during next sprint.
- New template for issue reporting - in place, will discuss text changes during f2f.
- Buffer pruning timer does not stop reliably - we added to validate. Perhaps improve log lines around buffer pruning?
- Timer at 50ms: new issue raised by Lloyd. Artifact from the past and can be removed and replaced with a more sensible interval for metrics generation.
- Extensiblity - how much effort to put in?
- For next sprint, Dan wants to look at removing virtual buffer, plus fast quality switching.
- Sprint planning for 2.2: let interested parties add issues to 2.2 milestone by Fri. Code Freeze 9th, Release 23rd.
- F2F - sold out. Book your hotels. See you in Munich!
Attendees: Will, Dan,
- Stability - number of bugs fixed this week around live seeking and startup. Multi-period support has improved. Track selection regressed and will be fixed for 2.1
- PR for baseURL support. Waqar is sending over live-sim and VOD baseURL content to test against.
- Dan has IE11/Edge Windows test system established. Edge is pretty solid - most issues are seen in IE11.
- Face-to-face meeting - currently 22 registrations out of 30. Link is http://dashjs-munich-2016.eventbrite.com/. @Will to send out a reminder and also establish a agenda page for topics to be covered. One topic from this week is debate on the live edge boundaries- time target, segment target, how close to DVRwindow edges? Also, pick time for call that is more Euro centric.
- Issue - https://github.com/Dash-Industry-Forum/dash.js/issues/1205 - also #1206 - Dan trying to repro.
- IRT and ARD reference streams - retest under 2.1 nightly. @Will to notify IRT for re-evaluation.
- @Will is working on a new controllable UI implementation that includes a buffer bar.
- SetLiveDelay (in seconds) coming in as new API
- 2.1 release - code freeze and RC1 on Wed 6th April on release April 15th.
Attendees: Will, Dan, Lloyd, Kilroy,
- Dan - summary - re-establishing nightly build of /dev on EC2. Last week focusing on seeking. Seek close to end, may not append last fragment. Noticed other issues with seeking. Committed CR with changes. Time is now only modified in a single location. Fixed #s starting attribute. Segment Timeline fix in too. Multi-period playback - Chrome - working in stable build. IN FF/IE/Edge, seeks in to periods, does not linearly play because end event is not firing.
- LLoyd - working on 2.0 in to player that have. Reset should be functional. When resetting while playback still hapenning. Using attachSource while prior content is playing. Helping Dave with baseURL implementation as per DVB-DASH.
- Question from Kilroy - is it re-initialized on a bit stream switch? Dan - yes. If bitstream switching set true in AdaptionSet. not necessary. Suggest to take advantage of it as may cause problems. Use case for live. @Will to open issue. Bitstream switching 1) VOD content 2) AVC3 every IDR has parameter set, bitstream switching flag set to true, then do not need to re-initialize. Expect to see more of this is because AVC3 is easy conversion from MpegTS.
- Kilroy - EME spec is fluid - W3C is trying lock down for publication in June. Kilroy trying to simplify player requirements. Shift to in-band licenses. Today, decoder will pass pssh up to player, player pass back to CDM. Removes burden of player having to parse pssh boxes.
- Regarding "https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/74#issuecomment-196891746" - How does the player know the @ContentType when it is not added to the AdaptationSet? Selection algorithm, select groups based on contentType, possible for . Group selection is not yet implemented. Not required for playback.
- BBC Browserstack tests failing - playback does not seem to start. FF seems happy, other browsers seem to fail.
- Face-to-face meeting - 21 registrations so far.
- Dan - feedback on BOLA from LLoyd, reasonably good. #1204 issue.
Attendees: Will, Kilroy, Gaylin,
- Summarized last call for attendees.
- Kilroy working on trying to simplify EME licensing handling. Work for key rotation use case. Trying to find combination of coding constraints, signal licenses only in manifest. Make it more simple for dash.js.
- Clear-key DASH - what is it? With envelope encryption, decrypted by player. With sample encyrption, intended for content protection, samples entrusted to secure media pipeline.
Attendees: Will, Dan, Aaron, Kevin, Torbjorn, Lloyd, Kilroy, Bart,
- Dan - 2.0 released on Friday. https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v2.0.0 Multi-period known issue. Thanks to Dan for all the organization behind this release and to the 16 people who contributed.
- Virtual buffer - were scheduling ahead many segments. Would like to remove for 2.1 as we only load one segment at a time and this may simplify mulit-period support.
- TTML rendering div issue - EBU live sim stream and CEA broken in 2.0 due to fix which enabled captioning for other caption types.
- Browserstack available - if you would like access to a login in order to set-up some tests, please ask Dan. BBC have tests already written which we are welcome to copy.
- Kevin - new code fixes oscillations in startup, also buffer growing. Getting equivalent perf to throughput rule. Issue with DASHHandler. Will submit PR.
- #1173 - Consider changing main file / publishing to NPM. Some will want compiled source, some raw source. @Aaron to look and reply to thread.
- #1170, #1168, #1164 - issues around subtitling.
- #1174 - Hangs in Edge. Dan tested via Browserstack - seems to work. Will oook more. @Kilroy offered to have any issues with Edge followed up.
- 2.1 release will look at these features and bugs:
- Fix subtitling - Segmented WebVTT, CEA and EBUT-TT rendering.
- Common loader class = abstract all XHR request.
- Multiple BaseURL support
- Fix Multi-period support
- Remove Virtual Buffer for multi-period.
- BOLA improvements.
- Next sprint - 6 week release - 4 weeks dev, 2 weeks testing. Code Freeze April 4th. Release Fri April 15th. Todo - set date on github repository.
- F2f May 19th - Munich.
Attendees: Will, Kevin, Dan, Tobbe, Bart,
- Dan status - 2.0 - fixed bugs. # main bugs remaining for 2.0 - #1033 - multiperiod. also #1088 around live stream playback. Documentation will be prepared once RC1 is out.
- Some PRs - ATSC - Waqar has tested and prepared #1100
- Tobbe - timedtext PR, has made implementation for WebVTT for 2.1, updated isoboxer.
- BOLA update - Kevin - new algorithm for buffering based on buffer occupancy. Will add an API for its use. Add it on by default? Suggest off for default for 2.0 and then true for 2.1 ? Startup issue, played long time in low quality, new heuristic, uses throughput for start-up. Working on 2.0 code, downloading fragment out of order. Also live edge work. End of week should be working well. Need to add to DASH IF ref player .
- Browserstack - Dan - testing. Subscription service, free for opensource, will have access for testing and automation. Full access. Will allow to test across browsers. Dan only done manual testing, Lloyd has automation.
- CI on builds. Dan has box under desk. Stand both up - vm2 and akamai nightly reference.
- Ben - new version of reference player http://seasidesyndication.com/dash/samples/dash-if-reference-player/index.html
- Planning for NAB? - Bart. 6 week intervals, 4 weeks dev, 2 weeks, testing. Looks like 2.1 should be ready
- Timeline for 2.0 - RC1 Feb 4th late at night, Feb 12th for release . @Will to publish. All due by 8pm Thur 4th. No new features.
- Face-to-face meeting will be May 19th in Europe, either Munich or Amsterdam. Co-located with DASH IF f2f meeting on 17/18th. The Fraunhofer MWS was cancelled for 2016 so we are shifting venues.
Attendees: Will, Aaron, Dave, Dan, Kilroy, Tobbe,
- Dan - issue list growing - tracking problems. Multi-period bugs - Aaron got grunt working with maps. Working on API for settable properties for mediaPlayer. Bufferpruning, retryattempts, min bufferTime etc.
- dashjs.MediaPlayer - to avoid global namespace collisions. As we externalize more content, more chance for problems. @Dan @Aaron to address offline.
- Dave - LLyod working through 1.6.0 - Dave working for reporting. Report pack should be plugged in. How do we know if code has been loaded? Separate calls about plugins?
- CEA 608 - made PR , added ability to add library dynamically. How detect if scripts are loaded?
- Bug scrub for 2.0? - @Dan will do today.
- https://github.com/Dash-Industry-Forum/dash.js/issues/1028 - quality switching not loading higher qualities. Should be set to default.
- https://github.com/Dash-Industry-Forum/dash.js/issues/976 - firefox playback - 3 different issues #1 has been reported to Envivio and confirmed by Kilroy. #2 is not valid #3 need to be looked at more.
- https://github.com/Dash-Industry-Forum/dash.js/issues/1018 - seeking while paused. BBC has one-liner fix. LLoyd list of things to do. Turn on by default.
- Dan - Live sim capabilities - @Will to create list of test vectors for QA.
- Code freeze by 29th - testing and voting Feb 12th.
Attendees: Will, Dan, Aaron, Torbjorn, Lloyd, Kilroy,
- Dan - 2.0 - #980 #970 bugs, enhancing extension points to give parity with dijon.
- Codestyle choices - jscs - formatter - added to grunt. Want task that just builds debug.js -
- Naming of minified files for distribution.
- dash.all.min.js -> all code and external libraries
- dash.externals.min.js -> only the external libraries
- dash.mediaplayer.min.js -> the core mediaplayer including caption support
- dash.protection.min.js -> the protection code (DRM for EME)
- dash.all.debug.js -> debug version of the above
- dash.externals.debug.js -> debug version of the above
- dash.mediaplayer.debug.js -> debug version of the above
- dash.protection.debug.js -> debug version of the above
- LLoyd - issues around improving startup performance with element.currentTime (#998) - if have set currentTime and start playback. LLoyd to issue PR.
- Aaron - sourcemaps - eliminated concat step - browserfy builds core modules, uglify from there. Name problem Factory - matching breaks after minification.
- Ben - reference player redesign - preview here http://seasidesyndication.com/dash/samples/dash-if-reference-player/index.html
- Adaptive algorithm - Kevin, working on two last small issues, push everything by 16th. @Dan - will add API for using new BOLA or traditional. Default will be BOLA.
- Continuous integration - Amazon limited on node version, also ran out of memory. @Dan has a build system, can push to Amazon VI.
- Torbjorn - PR about ES6 - CEA support and parsing.
- Kilroy - what is costing so much code in content protection module? 30kB - 3 versions of spec, interface to unify three models, then separate key systems, 20 files. @greg - knows best.
- Time of call - proposal to move to 08h00 PST to accommodate European attendees more easily. @Will to issue Doodle.
Attendees: Will, Dan, Ben, Torbjorn, Jeff.
- 1.6.0 released Dec 21st. Some support issues around multi-period - suggest known-issue list. Not merged in to master, separate side file, did push minified to CDN storage, Reason is that would cause problems when v.20 arrives from /dev.
- 2.0 to /dev - pushed yesterday. Find features from 1.6.0 to go in.
- vm2.dashif.org not building correctly - missing minified files? Requires instructions on new build process. @Torbjorn to watch - http://vm2.dashif.org/dash.js/samples/dash-if-reference-player/index.html
- New readme is necessary for /dev.
- Documentation - some older pages no longer relevant. Will need to flip on release of 2.0 to master.
- Ben - support player - release new UI for reference . Set up meeting on Monday. UI layout of reference player.
- Parallel-fetching and use of FETCH api - Akamai will start work in Feb. Loader condensing is for 2.1.
- CEA-608 code - can extract 608 captions from media segments in US TV signal, manifest signals that it is present. JS library to parse and interpret these captions. Made in to VTT cues. Made new project under DASHIF on github. Target is 2.0. 708 is more advanced captioning. Current code will not parse this. Not on road-map.
- BOLA update - ready to be added to 2.0. Can have current algorithms that can be invoked via API.
- 1.6.0 has 20 new files. DVB error and reporting pack. Candidate for modularization?
- Next call for Jan 6th cancelled due to vacations and CES. Next regular call Jan 19th 2016.
Attendees: Will, Dimitry, Lloyd, Torbjorn,
- Status 1.5.2 - new issue around fragmented text, fix for #917 - issue. Eurosport change in #918, outstanding. RC1, merge #924, #925 minor fixes, then RC2, then quickly vote and release. Target is Fri 11th.
- v2.0 - changes, issue with multiple instances solved. Unit tests - moved to Mocha, rewrite tests in progress.
- Modules - we can preconfigure a bunch of minified versions, including options such as content protection, captions etc. Each must be distributed in 3 flavors - all, min and debug. proposal that the only one we need to distribute and put on CDN is the version with everything - everyone else will be a developer and can compile out the combination of features that they want.
- Email items around false MEDIASOURCE _ERROR when source set to "" on certain browsers. BBC resolved by not setting the source - raises question as to whether we need this on other browsers or we could just avoid setting the src across the board?
- Face-to-face meeting tomorrow - 9am start. Request to set up a phone for Dimitry. @Will to do.
- Timing of f2f in Europe - June 15/16 - Berlin? Good time and location ?
Attendees: Will, Dan, Dimitry, Lloyd, Jim, Jeff, Torbjorn,
- Lloyd, Jim - 1.5.1 found seeking issues, especially after complete, plays better, significantly better now. Change in ABR rules, more reliable, only tested against internal content. Procedure - Lloyd will submit another PR tomorrow, Dan, will pull in and open voting on 1.5.2.
- Dan - pulled out Dijon entirely. New issue - singletons getting shared across multiple instances of mediaplayer. Jeff- Nathan and Christian could help next week.
- Intro Dimitry - joined last week, replacement for Michael, working for Microsoft.
- Torbjorn - atob polyfill, will resolve.
- Frame-accurate seeking - underlying videoElement doesn't support frame-by-frame. Lloyd and Will to respond.
- Picture for seek while paused. - use scheduleWhilePaused, default is off,
- Will to distribute Shaka v2 design doc to list as a comparison with what they are doing.
- Dan - unit tests for v2, jasmine not working well with ES6, mocha working better, looking at changing to mocha.
- Face-to-face meeting only 4 spots left. Please register now if you plan on attending https://dashjs-santaclara-2015.eventbrite.com
Attendees: Will, Dan, Greg, Torbjorn,
- Jim - sent email - would like to fix issues with 1.5.1 to make a 1.5.2 release before 2.0. @Dan - will respond. Also noted that reduction of playbackcontroller interval has impact on buffer pruning.
- Dan - expect to have 2.0 ready to accept new features around Dec 1st. Middle of everything - Michael leaving project - Nov 13th his last day at current contractor. New notify event structure established. Replacing Dijon with own DI framework. All public API at top, along with constants, cleaner structure, now an ES6 module. /ES6-refactor/branch on github - send feedback to Dan. ABRController is a good example of the new architecture.
- Dan - ABR rules 1.5.1 are broken, due to trying to merge in new features. Communication is clear here. Group can help by letting people know.
- Torbjorn - implement embedded captioning in 608/708. Will be signaled in manifest. From Dan, think about new code base.
- Greg - checked out 2.0 branch. Will then step in advice/changes for protection system.
- New wiki page from Ben.
- Reminder - register for f2f - https://dashjs-santaclara-2015.eventbrite.com
- Greg - ATSC support - implementation for non-connected devices. EME supports pre-caching of a license, but not complete offline playback.
Attendees: Will, Michael, Dan, Kilroy, Dave, Torbjorn,
- Karishma - sent status update
- I bumped into exceptions in Live streams in the customer streams I have. Those don’t have segments aligned across representations. I have discussed this with Michael and will continue looking into some fix around this.
- I am late on trick play but most probably I will start working around it next week. So if we have plans for 1.5.2 or something we can merge it there. Else I can have it in my branch and open a PR once we are done with 1.6. @karishma - what type of trick play are looking a supporting? Can you provide some clarification?
- Michael - helping Dan with refactor branch, plus fixed issues for /dev. Put a quick fix in for live streams from Azure.
- Dan - 1.5.1 - release candidate r3 put out yesterday. TTML fixes, bug fixes, https delivery, update on livesim. and BaseURL. Vote up and release. Vote it up. Release tomorrow. C@Dan to do release and @Will to mount. Live strteams will work in FF42 in Nov and we will wait for that versus implementing some type of polyfill.
- Torbjorn - changing value of timer from 1000ms to 50ms. Is this safe? Speed up start-up of live streams. No objections heard.
- Dan - look at refactor branch, will merge in after 1.5.1 goes out. Please test to make sure features are maintained. Github under /scheduleBufferRelease.
- Samples page from Ben: where to mount? Both options, update wiki, Automate SFTP to site. Add it to documentation. /Docs/root. index.html. /dev. Does not have to be part of repo. DASH IF repository. Not tied to version of player software. @Dave - have in independent repo?
- Thursday architecture. 2.0 - ? If you are not on call, let Will know. Dan - not necessary that 2.0 has no features. Can encapsulate features as much as possible. Modularization of code should allow features to be added to 2.0.
- Google - summary. Had an outreach last week to see if they were interested in combining the dash.js and Shaka projects, to create a single MSE code base. Google is focused on making Shaka a common player for DASH/HLS/Smooth. They offered that a new videoSource plug-in architecture would be available and that dash.js might want to interface in that regard. Feeling was that this would not be flexible enough for what we need. Shaka also supports a subset of DASH (no emsg support, no multi-period). We will review their new architecture when it comes out but current trajectory is to proceed as planned with new refactor and remain and independent project.
- Face-to-face Dec9th - Santa Clara, CA, USA. Eventbrite - @Will to send out.
- Kilroy - coordination between dash-if and DRM specs, instigated by non-prefixed EME APIs and ATSC use, player expected to inspect all the license info and make decisions about whether to put in EME or not. Problem for key rotation. How does player inspect XMl pssh or pssh boxes in segments and decide when equivalent. People doing binary compares, lots of overhead, on spec side should make easy by exposing keyID. Some DRMs will handle in-band segments. @Will - intro to Kilroy. Greg@Cablelabs. @Ask author of parsing library to extract pssh.
Attendees: Will, Bart, Dan, JWplayer, Ben, Tobjorn, Kilroy,
- Michael - status: Bugfixing and some feature additions: 2. fixed issues with displaying control bar in full screen mode in IE11/Edge; 3. fixed DVR window calculations 4. fixed playback startup when #s=x is used to set initial playback time. 5. Added API to display subtitles over the other html elements. 6. Added dash.js version and manifest fetch time to logging. 7. Added a default period id value to avoid using null.
- Dan - not completed 1.5.1 items, worked on 1.5.1 code to optimized refactor branch (scheduling and buffer controller, make synchronous, simpler workflow), needs help with some issues, by 6th have 1.5.1 PRs in, and then merge to /dev on oct 15th.
- Torbjorn - remove this innerHTML, unsafe contructor, PR was included. Filtered out unallowed characters, replaced innerHTML with Text Rendering, for subtitles and control bar. Also made some fixes to caption rendering, turning on for IE11/Edge, improved scaling. #804 - turn off captions, not cleaned properly.
- Ben - documentation - @Will to contact. Bower registration,
- Reminder - face-to-face Dec 9th - Bay Area.
- 1.5.1 Milestone - assign. Assigned.
- Azure live streams - stop playback after 15s. Push fix for 1.5.1. Start-up time from live simulator - 5s - too long.
Attendees: Michael, Will, Dave, Nicolas, Jeff, Nathan, Christian, Waqar, Iraj, Dan, Torbjorn, Greg, Ben,
- Sprint planning meeting. At a high level we are planning two releases before the end of year
- 1.5.1 release - short term features and bugs fixes that cannot wait until Dec 20th to be released. Code freeze on OCt 6th and release on Oct 13th
- 1.6 - a larger release scheduling and buffering optimization, development in separate branch, merge to /dev on Oct 15th, release on Dec 15th.
- Suggestion that in 2016, switch to a fixed cadence of a bi-monthly release.
- 1.5.1 - will include 6. Torbjorn - fix for text track subtitles, #787 7. Torbjorn - look at #787 and add filter for innerHTML use 7. Dan - https protocol matching issues #777 7. Waqar - PR#773 1.5.1 Time comparison, floating point error. Different means of addressing,
- 1.6.0 - will include 7. Scheduling & Buffering Optimization - a simplification and rewrite of all the scheduling logic 8. A refactor looking at modularization - common.js, ES6, which direction to go in. Refactor should allow unit text level testing by defining a bunch of micro-libraries. 10. Dependency management - do we need it? Can it be removed? Dependenices should be passed in to functions, instead of having functions reach out. 9. Support for bower and npm 10. Removal of abstraction layer for DASH and making player focused on playing DASH rather than providing a generic segmented streaming project. 11. Retry logic around 12. Refactor the Dash event handling process (EventController). 13. Improved adaption logic
- On OCt 15th we plan a 4hr architectural meeting to dicuss 1.6. Will include Christian, Nathan, Michael, Dan, Ben, representatives from VideoJS and JWPlayer, as well as anyone else from the project who is interested. Will to organize.
Attendees: Michael, Will, Jeff, Torbjorn, Ben, Donato, Greg.
- Michael - fixing issue to live streaming,
- Torbjorn - minor things with reference player, clearing subtitles, Content menu, multi-period, seeking across the boundary.
- Request for multi-track test content on live simulator. Ideally would have at least two adaption sets for video, audio and captions. JW players have a multiple audio for Elephants dream that we could use. @Will to put out a call on thread asking for content that can be used publicly.
- Ben - took look at bower, found instructions. Using Wowza - wants suggestions for how to inject emsg events in to a live stream. Greg playing around with emsg, used binary editor and built his own boxes ;) . Also suggested on posting to GPAC forums to ask about mp4box. Second question - how figure live latency. Will suggested looking at Torbjorn's live simulator which shows UTC time in video window.
- Will to post sample of live streams for bug filed about delay being excessive.
- Greg - some issues azure/playready boxes due to open questions in EME spec. Once we undertstand correct implementation from spec we can get it in.
- Can now have https://cdn.dashjs.org/ with valid cert. Open issue around whether time check to time.akamai.com is handled. Decision that time source protocl should match manifest protocol (not page). @Greg will check code.
- Sugegsiton to standup our demosunder https to flag issues earlier around protocls.
- Save the date Dec 9th for face-to-face.
- Torbjorn - change versioning of reference player. How do we get string to say /dev/ ?. @Dan on next call. Should play latest commit date - branch/ commit-date. Also decided to remove Remove build files from /dev/ branch but this has not been done??. Release script would do builds.
- Plan sprint 1.6 - Will@ to put out meeting for tuessday 22nd 10Am pacific.
Attendees: Michael, Tobbe, Greg, Ben, Donato, Dan
- Michael - Multiple Adaptation support improvements based on feedback and some critical bug fixes.
- Dan - Added control bar to project and is working issues reported. Text Tracks working in IE… finally.
- Dan will create a RC at today after we have merged PR 633, 732, 740.
- Tobbe - Will test IE HTML Rendering and would like to add the HTML div to the Ref player.
- Tobbe - Discussion on Min file - Conclusion: No min file checked in to dev branch ever. Must build to use samples.
- I mentioned to change samples to use absolute path of nightly build min file - not sure if this was OK.
- Tobbe - Minor/point releases should be considered going forward.
- Greg - Feel good about DRM changes and is ready for 1.5 RC.
- Disagrees with PR 728 for UTF8, closing . Decided we are not going to pull this PR into 1.5 at this time.
- There is a complex issue for Azure media DRM PlayReady that will not be fixed for 1.5
- Ben - How to use Emsg in Dash.js. He will work on this and report back in two weeks.
- Open talk about the refactor
- Once 1.5 is bagged and tagged Dan will push up the refactored buffer/schedule changes and we can start from there.
- We need to decide on framework and code style.
- We need to decide if we should remove the abstraction layer between streaming and dash folders.
- Donato and Ben have experience with:
Attendees: Will, Dan, Kevin, Michael, Torbjorn, Ben (on24), David, Greg, JWPlayer,
- Dan - multiple text tracks, bug with IE11, bug is being addressed but we need to support IE11 in the interim. Older method adds residual tracks. Add support specific for IE then remove when bug is addressed. Another push today, made sameTimeRule not stop playback if text segment is working.
- Torbjorn - EBU-TT-D - Solene has done work, demo'd in Berlin, does rendering, but Torbjorn is reworking to move in to textcues and use existing xml parser (updated to maintain order of nodes). MPD parsing was stalling at ironing, integrated with Dan's multitrack support. Some issues rendering with Chrome, shows empty subtitle element with narrow black line. Getting mature, supporting resizing, works in full-screen. Ready for PR. Add API to add DIV for captions. Add sample for VOD and LIVE.
- David - source buffer PR, avoid Safari. Trying to get multi-browser support. BASEURL perhaps in the future. Firefox 42 is nightly, everything works, 3 months away, whitelist removed, Safari does not support avc3 content, (filed bugs against). Michael to ask inside Microsoft about IE11 future vs Edge.
- Michael - fix some issues. Sample for playback, otherwise ready.
- JWplayer - framework for bundling - need to see Dijon replaced by -> ES6 or common.js.
- 1.5 go/no-go Box Parser – support for mp4 box parsing and event extraction - sidx, emsg, moov, trun, traf, tfdt – used ISOBOXER Multiple Adaptation Support API Multiple Audio Track Multiple Lang Support Multiple text track EBU-TT support - help on injection of DIV from outside. Start thread. BaseURL support – most likely at highest level first (not adaption or representation). In next sprint. TrickPlay/modes - additional track with iframes. Fast-forward scrubbing only - Kirshna, Multiperiod DRM/EME Protection – improvements - greg - EME clean-ups in sprint. Android support - Chrome on Android. Chromecast. xlink onRequest - Daniel Fraunhofer. Lastcall by August 25th, RC candiate out for testing, release on 1st Sept.
- 1.6 needs to be a refactor - target release would be Mid Dec.
- Reference player - adding UI for text tracks. Difficult for Dan angular.js, select audio tracks. Dan/Michael. I'll look at it. Akamai will contribute simple UI scrub-bar to support live streams and DVR.
Attendees: Karishma, Will, Jeff, Greg, Dan, Kevin, Dave, Michael(email)
- Greg submitted a fix for bug regarding license server, moved code in protection ext for loading license.
- Greg found Chrome bug with video only media (no audio) causes an issue with DRM.
- This bug is impeding work for persistent key sessions.
- Karishma is working an getting dahs.js working well on Android chrome 43 and firefox
- Karishma is working on Trick mode and may need some changes to Michael's Multi Adaptation work.
- Dan has implemented Multi Text Support over Michael's work and will merge with dev this week.
- Dan wants to know how to mark a specific adaptation for Text as the default Lang.... Already using Role attribute as method to set caption KIND.... subtitles, captions etc....
- Dan will create a simple sample on how to read available tracks and create a UI.. Need to add UI to ref player index.html as well.
- Dan has branched dev and did a refactor of the scheduling and buffer logic to simplify. (Parallel request are not implemented in this new refactor) Will create a new flow chart to show this work and share.
- Dan will start to look at EBU-TT
- Dave Submitted some changes for Firefox and safari issues.
- Dave Looking at BaseURL support but most likely will not be able to commit to 1.5
- Will Noted that HTTPS support is "almost" complete. He is resolving the HTTPS time.akamai cert issue and the Min files cert.
- Michael completed the work on multiple audio/video adaptation support. Sent PR. Already addressed some comments and add the others to todo list (will be addressed as soon as Michael is back).
- Michael addressed a couple issues related to Safari and live streams.
- Michael, together with Karishma, investigated Android + Chrome 43 live playback issue.
- Release Tentative for mid-late August. Review the release on the next call.
Attendees: Dan, Kevin, Greg, Jeff, Michael(email)
- Michael continue working on multiple audio/video adaptation support. Progress is approximately 70%-75%. 2, Michael implemented functionality to track the data appended to the SourceBuffer (exact segment duration, position etc.)
- Michael also partially renamed "track" into "representation" to avoid confusing with audio and video track naming convention.
- Michael is Working on buffer handling during the switch.
- Greg - Big changes to DRM teardown playing multiple streams without reload of page.
- Greg - Updates to EME index.html to make it more clear which content is playing
- Greg - Move protection controller over to use eventBus.
- Greg - JSDoc for all protection system dependent on newer version so update to package.json.
- Dan - Fixed bugs reported in last meeting and pushed to dev.
- Dan - Fully implemented multiple text tracks for external captions.
- Dan - Partial support for fragmented text but dependent on Michael’s work to change the current adaptation.
- Dan - will rebase and work on top of Michael's work to finish the implementation.
- Dan - Going to start looking at EBU-TT.
- Kevin - has working buffer occupancy rule in player outside of dash.js. Rejected fragments in current scheduling causes undesired jumps in buffer level when a fragment is rejected. Making it difficult to create heuristics in dash.js based on buffer occupancy vs throughput.
Attendees: Will, Michael, Dan, Kevin, Karishma, Greg, Gaylan, Jeff, Kilroy,
- Live stream with SegmentTimeline stops playing - safest edge detection is to use latest listed and ignore all time sync. Dan will investigate and create issues so we can track.
- Use segment duration to extend timeline forward and request next segment. Fetch mpd for seek. @Michael can look at extending after multi-track switching work is done. Torbjorn's live stream does embed manifest update events and can be used as a test case. @Will asked if this mode needs to be signalled @Will will look in to that. Comment by Torbjörn: The live simulator does not embed manifest update events at present, but relies solely on client pulling.
- Dan - time server request happening on on non-dynamic streams where it is not needed.
- Buffer pruning on Chrome - will reopen old issue #240
- Greg confirmed that current EME implementation does not use user agent string.
- Issues with /latest/ branch of players.edgesuite.net. Will sent out email notifying that the /latest/ branch only got updated to 1.4 release on Jul7 at 00:10 PDT. We need a transition strategy to get people off the old minified hosting domain and on to the new one at cdn.dashjs.org.
- Michael - box parsing isoboxer implemented. No new logic for parsing, just replaced old ones. need to add new logic for example, getting duration for segment timeline. Working now on public API for mediaplayer to set new tracks, also set attributes. Implementing switch mode. Storing preferences for re-use.
- Dan - looking at multi-text adaption, pre-meeting call populate with all text tracks if supported. Manually load XML, parse it and create text tracks. To get working natively must supply all text tracks that are availbale to trigger player UI behavior.
- Karishma - implemnted API to set playbackrate. Wrapper on the underlying video element method. Something to set rate. Pick up iframe for trick play once Michael's multitrack work is complete. Kilroy noted that segment durations will be different in trick play adaption set. 60 frames in two seconds, 60 frames in 2 minutes. Will to create issue for seek preview while paused.
- Greg - multiperiod protected content for 1.5 - was attaching protection data at stream level. Not working on IE11. Send EOS signal to source buffer, it destroys media keys. Will dig in to IE behavior. May be intentional according to Kilroy. Period continuity can be signaled. Greg will think about it.
- Greg question - is it legal to have event boxes in init segments? Can be in a segment only? Kilroy says in DASH event boxes only intended for media segments.
Attendees: Will, Michael, Jeff, JWplayer (Donato/John), Gaylin,
-
V1.4 was released on schedule on June 12th. The release data can be found here: https://github.com/Dash-Industry-Forum/dash.js/releases/tag/v1.4. Thanks to Dan for managing release process.
-
Sprint planning for 1.5 took place.
- BaseURL (Dan / David ) - how many retries? First failure, switch. API for number of retries to make? David replied. Donato/Joh to comment.
- Box Parser - (Michael) - most work done.Implementing unified parser via abstraction layer. Events are parsed. Manifest refresh event. Public listeners should be enabled.
- Multiple Adaptation Support API - multi-audio. API to start with particular.
- Multiple Audio Track (Michael / Dan)
- Multiple Lang Support (Dan)
- TrickPlay/modes (Karishma / Dan) - additional track with iframes. Fast-forward scrubbing.
- Multiperiod DRM/EME Protection (Greg) - My main work item is to be able to create multi-period, encrypted content. I have done this and have found several problems with the DRM system in the player. However, I am now stuck because the player will not transition to playing the next period. I’ll need some help from Michael and Dan, but I haven’t had time to work on this. Hopefully, later this week. @Michael to help.
- xlink onrequest (Daniel) -
- Safari Support (Dan) - Michael/Karishma - 3 issues found - 2 for Safari, one for dash.js.
- Firefox - not production ready. All live streams currently fail. File issue Firefox.
-
Update on https of minified - still being processed.
-
Jeff - where is 1.4 release notes.
-
Donato - github issues, using dijon, global scope, talking to Sebastion from Babel. ES6 => ES2015. Rather than making it a common.js or amd, . Donato will reply to thread about ES6.
Attendees: Michael, Dan, Karishma, Greg, Gaylin
- Set v1.4 release date for EOD Friday June 12th 2015 (PDT)
- Dan to create official changelist for v1.4
- Dan will create a step by step release procedure document.
- Michael has two branches for box parsing isoboxer and mp4box - Please review now so we can prep for 1.5 merge into dev.
- codem-isoboxer version: https://github.com/MSOpenTech/dash.js/tree/box-parsing-codem-isoboxer
- mp4box version https://github.com/MSOpenTech/dash.js/tree/box-parsing-mp4box
- Karisma want to test AAC content in chrome. Greg mentioned he has content and will point Her in that direction.
Attendees: Will, Dan, Michael, Jeff, Gaylin, Greg, John, Kilroy, Iraj, Kirk.
- Face-to-face - held in Berlin on May 20th. 28 attendees. Great event and a pleasure to meet everyone in person. Had 7 hours of discussions/demos/debates on various issues. Minutes are available in this page immediately beneath this entry.
- Start-up optimization, simply scheduling algorithm. Single segment at a time. Bandwidth estimation most accurate over single segment load. Abandonment - scheduling in advance leads to need to abandon. Decided that honoring mpd@suggestedPresentationDelay will be off by default and new API will be added to mediaPlayer to enable it for those applications who wish to use it for synchronization purposes (which was its oroginal intent when added to the standard). A new APi will be added which tells the player how many segments behind live edge it should join a live stream. Default will be 4 which we consider a stable offset. Documentation will suggest that 2 segments is the minimum for low latency mode. Look at this demo for how latency varies with segment duration http://vm2.dashif.org/livedelaydemo/.
- Michael - box parsing, 3 classes abstraction layer, two libraries and mp4box(100kb) and isoboxer (9KB), isoboxer has smaller size, waiting for feedback - will place in 1.5 release.
- DASH IF IOP group - produce list of vectors, GITHUB wiki and bug trackers. Requirement to use IOP features. Cucumber scenarios for testing. Cucumber.io is source.
- ES6 and Dijon discussion - start moving ASAP, earlier easier than later. Start with high level changes. JW is pro, Micahel and Kirk are pro - Type-safe environment , have things get better now. If we extract ES6 exports, observer/event bus + modules would be a replacement for Dijon. ES7 observables.
- Removing DASH abstraction - Adobe/Orange did object for Smooth/HLS respectively, but all others so far prefer an optimized DASH player.
- Use 1.5 for core features still missing - namely multi-track audio, multitrack-video, baseURL, events, multitrack captions, X-Link (have onload but need onRequest).
- 1.4 release planning - June 1st for RC - June 9th for public release following call.
- Kirk/Michael/Daniel to manage 1.4 RC and 1.4 release.
Attendees: Andreas, Axel, Bernhard, Bertrand, Charlie, Cyril, Dan, Daniel, Gerd, Greg, Haakon, Hermann, Huw, Iraj, Karishma, Kris, Lloyd, Loke, Shane, Solene, Stefan, Tulay, Torbjorn, Will, Wyell
- Live start up logic and finding the edge - new features demo from Dan. New logic - players first honors any UTCTiming info in the manifest. If non available, uses a default external time reference. API's exist to turn off use of default source and use Date header on the manifest and also to turn off both default timing source and Date header usage, which will result in the current search algorithm being activated. New APi added to allow number of parallel segment requests to be specified - with a default of 1. IN default mode, segment abandonment is now available. This monitors progress of the segment download and will abandon the download if continuing to wait for completion will result in a buffer empty. Debate about how far back from live edge to start a stream. Consensus around the 2 segment mark for low latency and 4 segments for stability.
- EBU/IRT presentation and discussion around EBU-TT-D support for captioning.Solene presented a slide deck.
- StreamRoot demoed WebRTC/p2p media delivery integration with dash.js and also discuss changes/enhancements to dash.js to better facilitate p2p integration.
- Current Xlink implementation is OnLoad only. This needs to be extended to OnRequest. Also, Fraunhofer pointed out that current multi-period test vectors return elements wrapped in a element. Iraj commented that response from xlink should be text and not an xml object. The text should simply be inserted before the manifest text is parsed.
- EME support - Greg demoed his latest set of improvements for EME and ran demo from https://github.com/Dash-Industry-Forum/dash.js/blob/development/samples/dash-if-reference-player/eme.html. Debate about whether to drop support for the 01b version of the EME APIs as these are fully depreacted now.
- Complexity - where does it lie - how to reduce - ideas:
- Core flow clearer - there needs to be clear flow-chart on data flow within the player and sequence of decisions that are made.
- Pending queues could be removed, along with all the scheduling complecxity associated with that and replaced by a simple just-in-time scheduler which only loads one segment at a time.
- Drop 01b EME support.
- Merge protection extensions with protection controller.
- Feature based logging - the logging is an all-or-nothing firehose right now. Can use filters in a UI to restrict it, but would be nice to be able to enable logging for a certain class only.
- Dijon - encapsulation, hard to read. This project is also not active. There for dependency injection but it was felt that a move to ES6 with the correct design patterns in place would obviate the need for Dijon.
- Extending the player documentation on the wiki is different, broken from what is in the repository. Needs to be updated.
- xml2json - why do we need? Ask Kirk - is json faster or easier to manipulate?
- Removing the abstraction layer between DASH and other formats that code base currently supports. Noted that Adobe use for HLS and Orange use for Smooth. Remainder of members would prefer to see dash.js hardcoded to only play back DASH content. This would simplify project and reduce minified file size.
- CDN hosting of minified files - master builds are now available from a CDN (Akamai) at http://cdn.dashjs.org/latest/dash.all.js. uses gzip by default which reduces load to 55kB for 1.3 version
- Documentation - what is needed, who will create it, who will maintain it. JSDocs is in place now and all PR's that add MediaPlayer APIs will need to document them. Readme has been modified to show different workflows for users versus developers of the project.
- Competition - Shaka player discussed. Less features but smaller and great documentation and also good performance. need to ensure that our performance always matches or exceeds theirs. Discussion around tension between reference player versus practical real-world player. Shaka does not carry the burden of being a reference player. Suggestion to enable strict DASH-AVC/264, DVB-DASH, HbbTV compliance via flags on MediaPlayer.
- Error reporting / handling - request for feature and class based logging. Current logging is so verbose it is difficult to use.
- (Webex join from San Francisco by Brightcove/video.js) Proposal to rewrite dash.js in ES6 for clarity and extensibility (compiling out using babel to ES5 compliant code until all browsers support ES6 robustly). Brightcove presented benefits. ES6 is the forward-facing next release of Javascript . Brings a number of benefitsof a first-class language. Proposal is to do a high level migration over to ES6 and then gradually convert the project over. The minified files would be "transpiled" to ES5 using Babel so the code would continue to run on current browsers. One advantage of being dependent on MSE is that we are already limited to the most modern browsersand don't have much legacy support to worry about. Brightcove have submitted a PR for review https://github.com/Dash-Industry-Forum/dash.js/pull/554. This is an example of some proposed changes to take the project towards a more ES6 direction. The build system has been overhauled to use babel and browserify to compile ES6 with imports down to ES5 that can run on all browsers. Uglify is used to create the minimized versions. The build directory has been gutted with the build process moved to the root directory and tests moved to their own sub-directory. This more closely follows common conventions in the node community. Installation is now just a git clone followed by npm i and grunt to build the files into the dist directory. Every file is now a proper ES6 module that imports it's dependencies - there is no longer any dependency on the global scope. Additional resources: Javscript at 20:ES6, template strings, block scope, classes, modules, babel demo, ES6 video.js button, ES6 video.js tests.
- Should we remove Dijon as a framework and use another? There was clear support for this move as Dijon was thought to reduce readability (especially for those unfamiliar with its constructs). Discussion moved towards replacing Dijon/ES5 with a ES6 implementation with clear design patterns.
- Open sessions from attendees and overflow from prior agenda items.
17. Opera made a request for Multiple audio and video issues to be picked up. This is a prerequisite for their support.
16. Thomas from DASH IF Interop group made a slide presentation on the need to synchronize features with DASH requirements and also to test and document them. Features are things like event messages,
$time$ addressing, multi-track captions etc as shown in the image below. Will requested that IOP group provides a source for list of features each with a) title b) expected behavior c) test vectors(s). DASH.js will then document support for these with each release and also create a test environment (Cucumber.io was suggested).
Attendees: Dan, Kilroy, John
-
Dan will add Segment Abandonment PR after meeting
-
Dan added new live edge detection to dev.
-
We spoke about the reoccurring topic of code complexity/docs. More people are looking at Google’s Shaka player.
- One common theme is that dash.js has more functionality but Shaka player is easier to read and use. This brings up the point that we may be able to freeze feature dev for a code refactor and still stay competitive with features in the long run.
-
Greg - Email Status Update:
- I was asked to prepare some test content for the DASH-IF Content Protection task force. We all agreed that it would be better to have 2 “real” DRMs (not ClearKey) used in the content with Common Encryption. In order to support this, I have integrated support for CastLabs DRMToday (www.drmtoday.com) license servers into my content creation tools. We also must integrate support for this new licensing system into dash.js. DRMToday returns a very different package for the license message that must be passed to the CDM than our existing code can handle.
- In order to make the player more extensible in this area, I am moving the license request operations out of the KeySystem classes and into ProtectionExtensions.js and moving all of our previous license request code to new classes that be switched in/out using the Context. Along with these, I am creating an additional class that will support making license requests to DRMToday. I expect that someone who develops a commercial client based on our player will override ProtectionExtensions and our license request code to work with their own license servers (unless of course their server is compatible with any of our existing license request code). Content that uses the DRMToday license server will be identified by a new field in the ProtectionData specified in sources.json (along with some custom HTTP headers that are required for DRMToday). Pull request should be coming in the next day or so.
-
Michael - Email Status Update:
- Completed fixing multi-period and live streaming issues (still tracking if new ones come up).
- Started working on box parsing. Trying composing a complete list of the necessary box types (thanks Will for help). Still waiting for a response from Kilroy about this.
- Also I reviewed mp4box lib again, since they added new features like SIDX support. Seems like it now has what we need.
- Started implementing an abstraction level for box parsing - SegmentParser class that encapsulates parsing logic to allow painlessly replace any parsing lib.
Attendees: Will, Michael, Greg, Dan, Bart, Jeff, Karishma, Kilroy, Kirk,
- Michael - fixing issues related to multi-period and livestreaming.
- Greg - host version of player available at https://html5.cablelabs.com/dashjs/samples/dash-if-reference-player/eme.html , major work for testing environment . EME demo player, located with dashif reference player called eme.html. IN industry, EME APIs stablizing between browsers. Debate about http vs https. Chrome up to date. Firefox behind. DRM still tied to browsers. Safari Mac - netflix only. CDMi from MS use by Opera. RDK want to support more than one brand of DRM
- Dan - working on segment abandonment rule, trying to measure accurately measure bandwidth across multiple downloads, have idea that may make throughput rule more accurate. Also add logic around whether abandoning and reloading. New API for setting starting buffer. Question on whether push/promise will modify bandwidth estimates.
- Karishma - bug fixes.
- Issue about scheduling - a way to turn off parallel requests (not possible at the moment).
- Segment parsing - segment parsing needed for event support.
- Release date: live edge calculation to be added. Check Date header for start. Add to scope of work for 1.4. Dan to investigate.
- Greg - how handle multiple adaption sets? Today implementation is naive - takes first video and audio adaption sets that it finds. Greg to create issue to 1) Handle multiple audio and multiple video and 2) Default selection logic for player 3) API for MediaPLayer to set selection logic around size, bitrate, codec, language etc.
Attendees: Michael, Dan, Karishma, Galan, Jeff, Greg, Kirk
- Michael - multi-period refactor work reviewed and merged.
- New issue(s) found with dynamic stream. Michael is working this out.
- Dan - Segment Abandonment work in progress. Meeting after the bi-weekly call to discuss the design.
- Karishna found issue with seeking into new period after multi-period code was merged, stream is not resuming. Believes the seek offset is incorrect. She will file an issue with the exact reproduction steps. Michael will follow up.
- Question from Karishna - Can there be different codec types within adaptation set? What does the spec say about this?
- Greg Submitted PR and review request for
- DRM Demo page
- EME objects usable outside or player.
- What is the best way to get dijon objects externally? (Greg asked for input from the group)
- Can we get the demo page showcased?
- How to share assets used by the reference player instead of pure duplication?
- Are we on schedule with the release - Most feel comfortable but revisit on next call.
Attendees: Will, David, Dan, Jeff, Rashmi (Adobe), Gaylin, Kirk, Iraj, Kilroy,
- Dan - worked with Michael, initial bitrate APIs, starts at representation closest to 1000kbps, new DOM storage for caching of info in client. Now holds last known good bitrate played. Max bitrate capping API - can apply dynamically, will probably add in bitrate cap too.
- Dan - new feature will be segment abandonment. Will present a design to group. Perhaps add as new ABR switching rule. Kirk suggests two rules - one to abandon, another to schedule. Lots of dicussions here. Suggested that Dan release design and then we can talk over that in detail.
- Kirk - switching support not in place yet. Do you switch to a lower bitrate on the same source, or switch sources? .
- Mikhail, has produced multi-period refactor. Dan will review. Others please review too.
- Daniel Silhavy - Added Xlink support for “actuate=onLoad” in Periods, AdaptationSets and Eventstreams Added a sample site including test vectors for multiple scenarios (http://se-mashup.fokus.fraunhofer.de:8080/tests/dsi/feature-xlink/samples/ad-insertion/xlink.html). Issues: a) The Xlink response e.g http://se-mashup.fokus.fraunhofer.de:8080/xlink/period_sommerevent_lakecomo contains a surrounding Tag. This is because multiple Period elements are returned and need to be placed inside a parent element. For the purpose of consistency the Tag is also present for single elements. Is there any specification regarding the surrounding tag for multiple remote elements? Kilroy/Iraj suggest node being replaced is highest level. b) The sample site works in Chrome and IE right now. It looks like Safari has some general problems with the playback of dash content in the current dev branch. Can anyone confirm that? Dan has tested, will reply. c) There is currently no function implemented to check whether the remote element is valid or not. This is still to be done. OK.
- European face-to-face meeting - Berlin May 20th - 19 people signed up. Limit of 25 so register quickly if you would like to attend. https://dashjs-f2f-europe-2015.eventbrite.com/.
- Rashmi - multiperiod, seen performance issues? Currently always tear down. If period-continuity signalled, would not need to. Will asked Rashmi to reivew the multi-period work by Michael and give any feedback now.
- Kilroy - progress on box parsing? Kirk - working on multi-period first. Michael to pick up. CableLabs have locked down SCTE-35 definitions. DASH IF v3 spec should be released soon.
- Dan - filed a bug for test vectors page. Will - has been fixed for new website. Has a varibale-based launcher which is easier to update.
Attendees: Michael, Will, John, Jeroen, Jeff, Greg, Kirk, Dan
- Michael is working on Multi-Period Design. Focus on using one video element and reattaching source buffer.
- Kirk brought up the React library/Virtual DOM for handling Multi-Period as a possibility and it may offer some other benefits.
- Greg is interested in Multi-Period regarding the topic of DRM and would like to work on it after Michael is completed his tasks.
- Will gave DASH-IF f2f update.
- Task to identify what boxes need to be parsed to support inband messages etc.
- John and Jeroen are working on Documentation. Wiki Docs for getting started.
- Will asked for clarity and separation of docs for Users VS Developers
- Dan is working on Startup Optimizations and scheduling logic at startup.
- Greg has cleared all the bugs related to DRM assigned to 1.4 (Great Job!). Also working on compartmentalize some Key retrieval logic so it can be used as a utility (Did I get that correct Greg).
- Dan to add AUTHORS.md file to root of project based on the current contributors list.
- (Required) Git Name, (Optional) Real Name, (Optional) Company Name
Attendees: Dan, Michael, Greg, Galan, John, Kirk, Kilroy, Iraj, Loke
-
Milestone 1.4 Planning:
- Performance
- Optimize starting bit rate selection.
- Startup and post seek buffer, fast start vs stable. settable properties.
- Live edge detection optimizations?
- Scheduling Simplifications? (If possible and mutually agreeable)
- EME-DRM
- Bug Fixes.
- Design and implementation that extends on what we currently support.
- Multiperiod
- Design and implementation that extends on what we currently support.
- See if video.js wants to work on custom UI for multiperiod?
- API & Documentation
- MediaPlayer and Child Object Public API (ie video model etc.).
- Events.
- Metrics API.
- Value Object Properties.
- Header License Consistency and Wiki Docs.
- Project Structure
- Node compliance (package.json at root).
- Distribution Solution for Min file and JSDocs.
- General Bug Fixes.
- Performance
Label Info:
- Backlog labels have been applied to "nice to have items" but are not obligated to make 1.4 release.
- Bug, Enhancement, and Documentation labels will have a Priority Label as well to rank them.
Please make sure to assign yourself to the issue if you are working on it!
Attendees: Will, Dan, Michael, Cablelabs (Greg, Eric), Steve, Galan, Jeroen, Kevin (Adobe), Kirk,
- Survey results: 10 questions, 40 results. http://mediapm.edgesuite.net/will/temp/Reports_Dash.js_Project_Priorities_Survey.pdf. Each result was reviwed. Decision to bias 1.4 sprint to address highest priority items defined by this survey.
- Subject of whether dash.js framework should accommodate other adaptive formats. In survey 85% said no, but 15% said that those other formats need to be supported somewhewre. Asked the various player providers how they intended to support HLS/Smooth: Video.js - handle HLS elsewhere already; JWplayer - have framework for HLS, use cases are different enough. Hard to be good everywhere. Many decisions tied to format; Adobe - have own framework already, want a core piece smart about DASH.
- Codebase size - ~250KB, agreed by all as too large. Asked MS how much do we gain by removing format abstration - only 10% was estimated. Also suggested to remove all external libraries - dijon, xml2json, long.js. Michael also suggested much of code could be re-written to make it smaller and more compact.
- Plans for next sprint - 1) create issues to mirror survey results 2) assign to 1.4 milestone 3) have bug scrub call (@Dan to organise) 4) have milestone call @Dan to organize. Then publicize issues on list and encourage developers to pick them up.
- @Will asked for a flowchart on current rule logic - @Michale @Dan to provide. 3 types of users identified for switching rules 1) just want to consume default rules 2) would like to make some high level swettings at media Player level (like starting buffer) 3) Would like to replace rule sets entirely.
- Adobe - introduced themselves, been in DASH IF for a while, looking at dash.js for MSE/EME support as part of their PrimeTime opffering. Adobe are focused on their own switching logic, advertising support (server and client side). They have some bug fixes to submit now. @kevin to introduce their developer
- Logo - submit your best designs - https://github.com/Dash-Industry-Forum/dash.js/issues/408
- European face-to-face meeting confirmed for May 20th in Berlin. @Will to organize and send out save the date.
Attendees: Will, Dan, Galan, Greg, John, Jeroen, Kirk, Kilroy,
- 1.3 released - thanks to all the contributors! Tagged as 1.3 in /master branch. Continue to use /dev for all development work.
- Documentation - @Dan - add doc link to wiki. @John - tutorial on using it. Guide for web developers. Getting started. Readme limited to project development, if you are a web developer, redirect to website. @Will to email out to @John about website that we get with github.
- QA process - Akamai has internal resource, can do some work for 1.4. Needs defined tasks for milestones. Simple RTC (recommended test case) - test URLs. @Jeroen suggested preparding web pages that hold player + urls, test instructions for each test.
- 1.4 Polling to gather community interest. @Will @Jeroen to make public poll using https://survey.zoho.com by Frtiday. Open for comment for one week, then organize call to pick priorities for 1.4 sprint.
- Contrib - Akamai Media Analytics. , Google analytics, - make sure APIs support measurement solutions.
- MediaPlayer API - Jeroen getting baseline on API with Kaltura, Videojs, Akamai requirements.
- dash.js for MPEG-DASH playback. originally authored for any adaptive streaming format but we would like to focus on DASH. Code benefits - reduction in complexity, abstraction and size. @Will to email group and se if there are any opposers to this position.
- Iraj - talked to lawyers. No simple way to manage few line contributions - so a CLA is always required. License to display in jsdocs and add authors. @Will to send to @Iraj proposal for simplified license.
- Firefox, bug for dash.js - promote.
- Greg - player does not do prefetching for DMR , not proactive for encrypted, download. He is working on new pull request. Desire among group to have dash.js be excellent at implementing EME.
Attendees: Will, Dan, Jeff, Steve, Kirk, Iraj, Kilroy
- 1.3 release - put out release candidate 1.3. #303, #314, de-minimus contribution from Eric Larsen, single line change. Push change now and ask Eric for CLA.
- PR#355 - simplified embed will go in as it is additive and does not effect core performance.
- Legal question - how to maintain license headers with multiple authors.Single copyright, or multiple? Iraj and Will to find out.
- Root license will point at DASH IF.
- New folder structure - Dan will push today. Issue reports 1.30 , explicitly 1.3 milestone. Stick on target for Friday.
- VideoJS - strategy, example workflow, like small core player.
- Componentization - list of features that could be dropped out? Start thread for 1.4.
- VideoJS uses comment counts. Github way is comment counts. New issue after voting.
- Jerome grouping feature requests by company - roadmapping. Make spreadsheet available to video.js and Digital primates.
- Dan - dash.min.js - need to remove Objectiron, Dijon etc. Intent was it to be the code written by dash.js project and include no third party libraries. So dash.min.js - only dash.js code, dash.all.js - everything you need to run dash.js player, dash.debug.js - the non-uglified version of dash.all.js.
Attendees: Will, Kirk, Dan,
- Happy New Year everyone.
- Dan - merged new ABR rules. New folder structure. Jasmine build was tricky. New samples folder will reference dash code that is two levels up, so you must mount any web server at that higher point.
- Date of 1.3 release - Final pull date - 9th, release candidate by 17th, release by 23rd Jan. Will to check check with Kirk and Michael if this is good for them. Kirk to check with Mikhail and get back to Will before pushing dates to list.
- License header text - should we have an author section? Will to ask lawyer. Kirk to ask Mikhail about code he wrote that still carries Digital primates headers. Dan to send samples to Will.
- JWPlayer have committed to participate "How can we increase our involvement in the project? I’m willing to dedicate two days a week of my time to help with product management and other tasks. Both John Luther and our player Devs are interested in contributing too, e.g. with code, tests, specs and exposure.". Meeting on Thursday Jan 8th at 10am PST. If you would like to join please contact Will who will get you added to the invite. Will ask JW to include Kirk in call.
- Tim Napoloean helping with management but can't get write access. Kirk fixed by linking dash.js repo to collaborators team.
- MOT - Highest priority is adoption post 1.3
- Problem with Chrome and seeking back in to a previously buffered range. Decided to fix in 1.4 as none of the proposed solutions are clean enough for 1.3.
Attendees: Will, Dan, Steve,
- Dan - re-org of folder structure, as per layout agreed at f2f. Clean structure with folders and readme. Debug player does not use minified files. Welcome page with derived players. Pushing to restructure branch. Merge may be difficult.
- Dan - released version, new rules . Open for testing. http://mediapm.edgesuite.net/flash-client-dev-builds/nightly/dash/v1.3/dash-support-player/index.html?playlist=akamai/media/test-sources.json . New tasks - fragment abandonment highest priority.
- Steve - looking for way to encapsulate MSE work. Abstraction layer around different versions of media source, all recent versions use non-webkit. Suggest removing webkit prefix support. Question around Android - check version. Will look at PR over break.
- Had a good call with Greg from CableLabs - proposed abstraction layer for EME. He is currently preparing a PR.
- BBC released new H2 server for public testing
- Date of 1.3 release - Final pull date - 9th, release candidate by 17th, release by 23rd Jan. Will to check check with Kirk and Michael if this is good for them.
Attendees: Dan, Kirk, Steve. Iraj
- 1.3 Release is scheduled for mid January 2015. Need to pick a release date and a final submit date for all pull request so there is time to review and merge into release if applicable.
- Should we allow for dependency injection into custom rules so that rule can have access to all metrics as needed OR should all of this be part of the RuleContext? Since all other rules use Dijon’s injection the consensus is to stay consistent. Simple one line fix to inject custom rule into system so DI works in rule.
- Dash IF Face 2 Face last week in Denver. List of features discussed. Coordinate features between Dash.js and Dash IF.
- Request Modifier Ext added and TokenAuthentication removed from core. Header info now stored in HTTPRequest VO
- Can we read the buffer i.e. to extract the current bit rate at any given time to know if we should flush buffer for higher quality. Answer is no, so can we pursue getting and API like this added to the MSE spec. Alternate solution would be to track this info in metric as we append. Then on a seek, reference the stored info to make a flush decision?
- Widevine pull request call scheduled for Wednesday Dec 10th at 9 am PST.
Attendees: Will, Dan, Steve, Iraj,
- Face-to-face meeting held in San Francisco on Nov 21st. 20 attendees. 7hrs of great discussions. Thanks to all who made it. The notes are public and are archived at https://github.com/Dash-Industry-Forum/dash.js/wiki/Face-to-face-meeting-Nov-21-2015-San-Francisco
- Widevine support - need new meeting. Suggest get Loke, Daniel, Greg, Kirk, Michael, Dan,Tobias. Dan to organize.
- Digital Primates, looking to modulearize MSE components, using CommonJS, using dependency management. More community acceptable codebase. Easier to include external dependencies.
- Dan looking at long.js (23KB)and if we can reduce its size.
- Dan debugging live switching rules. Low latency on live.
- European meeting doodlew: http://doodle.com/yq2s6qqcdswzdx8h64qr253z/ . Primarily developers. Iraj suggests separate meeting during Media Web Symposium with a how-to session.
- Dan runs next call on Tue 9th December.
Attendees: Will, Dan, Bart, Iraj, kilroy, Kirk,
- Kirk - responding to issues around multi-period, live . Discussion about start time, currently at middle. Kilroy suggests video segment start with an overlapping audio segment. If not possible, then start with video and muted audio.
- Current agenda items for f2f meeting: https://github.com/Dash-Industry-Forum/dash.js/wiki/Face-to-face-meeting-Nov-21-2015-San-Francisco
- Ipfw script, or local http server running via node/grunt. Connect package in node. Automated way. Repeatable. Microsoft has a reference live stream.
- Dan - stripped down rules, fixed bugs around buffer limit switch, buffering rules.
- Question around why we have two notification/event systems? Will discuss at f2f.
Attendees: Will, Jeff, Kirk, Dan, Iraj,
- Kirk - Mikhail closing several bugs, highest priority is stabilizing 1.30 for release. After that, box parsing libraries - GPAC and Orange. Will says we need a rule (or simple mediapLAyer properties) for startup time. to 3 variations for startup - faster versus stable, live startup much faster, . Valve want an API. Need two type of output from. Discussion as to whether these media Player properties should have tight bindings with rules, which are meant to be cleanly encapsulated. Will discuss at f2f.
- Dan - closed some DVR bugs, working on switching rules, pushed change that prevented switching to upper bitrate. New rule around buffer-occupancy switching. Download-throughoput rule may work with it. PresentationStartTime can be off half second. Dash.js fix works in IE but not in Chrome.
- Castlabs looking to contribute some cool features around DRM (Widevine and PlayReady) support on all platforms, using EME v1 and v2, optimized Chromecast support. Smooth Streaming support, support of multiple audio tracks and dynamic track switching and support of multiple subtitle tracks and dynamic track switching. Will be present at the face-to-face meeting to present their work and discuss collaboration.
- Release 1.3 after Face-to-face, aiming for mid January 2015. Kirk has made a milestone.
- Will to open issue on media player API - what do we want it to include.
- F2F fixed for November 21st , 10:00-17:00 at 799 Market Street, San Francisco. Registration link is at http://www.eventbrite.com/e/dashjs-face-to-face-meeting-2014-tickets-13800845701. Will put up wiki pages to collect agenda items.
Attendees: Will, Jeff, Dan, Iraj, Kirk, Bart,
- Refactor moving to dev - actively working on merging in to dev. Send notification to group.
- Pending pull requests - Dan, Torbjorn, webm minified. Few character change to readme - asked for CLA, #243, Deminimus exception for CLA - decided ot to pursue.
- Automated CLA - wanted to set up own instance - node.js, c#, longevity in question. https://github.com/clabot/clabot, https://github.com/SharpCLABot/SharpCLABot, or hosted service.
- Mikhail as direct committer - no objections. Kirk will add, and remove Ross, Bart (at his request).
- Dan, bug fixed bug where video stopped playing in Chrome 37+, Chromium had changed API response. Allow "probably and "maybe" for codec acceptance. Captioning duplication. Kirk - issue with playing new mpd through same videoElement, may need to always request a new one.
- Torbjorn - Fix of MSETimeOffset when period.start != 0 - Kirk will open debate via email.
- Meeting - best date looks like Nov 7th or 21st,both Fridays. Difference is Jeff. Voted for Fri 21st. 10am - 5pm. Conclude dinner, 8pm. Akamai office. Book. Promote to DASH of IOP, attend. Productive and useful agenda.
- New FF released today? Jeff cannot see it playing. Will expects by end of year.
Attendees: Will, Bart, Jeff, Kirk,
- Thanks to Kirk for running the last meeting.
- Kirk will make call for refactoring move to /dev/ today. Please vote it up.
- Invite went out for f2f meeting. Better to have major contributors. Extend dates to end of November to try and find a common day.
- Bart - validator synced with Dash.js? - no. Separate project. If there are differences, then flag DASH IF (Waqar) and also dash.js. But please document so we have something to track.
- Add MS live stream to pull-down options in default player - Kirk to check.
- We have two contributions around box parsing - GPAC and Orange. Orange provides read and write capability. We need write for constructing PSSH boxes for EME appications. Tie breaker - who will dactually help with the integration?
- Read blog http://azure.microsoft.com/blog/2014/09/13/dash-live-streaming-with-azure-media-service/
Attendees: Parashuram (MOT), Kirk, Jeff
Kirk was running the meeting this week. Due to IBC, participation was light.
- There is a pull request to add a 'getting started' section to the readme. Jeff will take a look when he has a chance.
- Kirk has pushed a new branch 'refactoring' to the repo.
- Kirk created a pull request for the refactoring changes. This is the place to discuss the refactor.
- Mikhail has prepared a meeting to discuss the refactoring changes. The poll results indicated that the meeting will be 9AM Friday 19th, 2014, everyone is welcome!
Join by phone
+14257063500 (USA - Redmond Campus) English (United States)
+18883203585 (USA - Redmond Campus) English (United States)
Conference ID: 915701095
Attendees: Will, Dan, Parashuram (MOT), Kirk, Jeff, Tom, iraj,
- Box parsing - Will to ask Cyril for LOE to parse boxes which Kilroy specified
- 1.2 got released!! Many thanks to Kirk for marshaling and to all the contributors - largest contribution pool we have had for any release. Tagged and master branch. New functionality, lots of contribution. Major issues not to fix translating indexes in to times and reverse. Pull request pending on this. Another issue reported with SegmentList off by one. Conceptually easy - continuing cost in supporting SegmentList. Iraj/Will - see if SegmentList support will be added back to DASH-AVC/264
- 1.3 - push in to refactoring, push in to new branch within /dev. Request for webex session to go over major chnages in refactor branch. Put out email to see who is interested. Akamai offered to set up webex bridges etc or use Lync call. Dan to set up call.
- Docs - we need a better readme as well as API documentation. Tom/Dan/Will sugest jsdocs, grunt tasks remove docs, Parash to make some suggestions too and send them out. Jeff to look through what we have and make new readme. Github wiki and webasite can be used - repository not only interface.
- Dan - switching rules after refactor, MediaAnalytics, QA string of metrics. Kirk wants to make sure these are not carried in core code when they are not needed.
- Will - suggested having several dash.min files, one of which is mots inclousive for simple users, the other of which is a core base min which more sophisticated developers can use to construct an implementation.
- Next meeting on Sept 16th Kirk will run. Jeff/Will/Dan will be out due to IBC.
Attendees: Will, Nathan, Bart, Jeff, Iraj, Kirk, Kilroy,
- mp4box.js - contributed by GPAC - thanks! Has a dependency on datastream.js (Apache 2.0)- we need segment parsing to extract SIDX, PSSH, event message boxes, trun box for segment duration, and caption extraction. Current deflated size is 135kB, which is too large. Actions - 1) Will to ask Romain and Cyril on LOE to only implement box parsing that we need 2) Kirk to add mp4bpx.js to 1.3 dev branch along with refactor and we can take it from there.
- Kilroy send list of boxes that we need parsed.
- On Mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=1039149 , only the MPEG-TS implementation requires ftyp with segment index. Kilroy to comment on bug.
- Refactoring, 1.2.0 almost complete. Couple more bug fixes mainly around segment-template/segmentlist live streams.Mikhail working on new chart index.html to show manifest changes delta. Mount this week.
- TextTrackCue has been deprecated by the browsers. VTTCue added specifically for support of WebVTT cues. Kirk is going to replace our current reliance on etxtTrackCue with VttCue. This will allow the simple WebVTT and TTML support - without styling - to continue. IN the future, the order of priority for implemnentaiotn of captions will be a) Check if videoElement sourceBuffer support mime-type of caption type directly. If it does, add it b) if not, check to see if caption-format specific interface exists, such as VttCue or TTMLCue. If it does, use it to appended formatted cues c) if all else fails, drop styling and pass in text only captions through VTTCue.
- Bart - has issue where he has to disable hardware video decoding, setting Chrome flag. Windows issue. Suggested he send out live link to list to see if others are having this issue.
Attendees: Will, Dan, Jeff, Kirk, Bertrand, JW
- Kirk - pushed bug fixes today. Refactoring branch is in good shape, Mikhail is restructuring rules , standard object with execute method, return new value and priority. Metrics are passed in to execute. Existing rules will be converted. Put in to official repo. Public fork MSopentech/dashjs.
- Dan - submission DVRinfo, video.js using it for their next release. Wrote fix for bug #178, start parameter "s" specified via anchor tag. Minimum for VOD. Kirk says can use presentation time. UTC time is possible if referenced. Will push for review.
- Bertrand - Orange exploit for add support for protocols, syncrhonized with code. First version js smooth streaming support. Minimal modifications. First verison working LIVE and working. Faced issues with merging parallel downloading causes. Baseline should be non-parallel. Can create another simpler controller. Publish extensions in next few months. Would like to provide contributions in future. @Kirk - bufferController is being refactored. Too complicated so refactoring.
- JW - builder of popular JWplayer. Supporting Flash/HTML5, focus on HLS workflow today. Play HLS in Flash. Convert over to DASH. Research mode. Current standing - basic implementation inside JWplayer. Hooking up to JW interface and API. Working on initial implementaiton, DRM support big differentiator - get working with playready, widevine and AES-128. Questions - 1) Support for multiple audio tracks - not implemented yet 2) DXFP - try to create a source buffer for text tracks . Fall back for WebVTT and TTML and parsing text strings without styling in to video element. 3) Load framework in firefox, error not thrown cleanly. Unknown. 4) startup time.- minBufferTime.
- 1.2 release - change-list up from that. Vote Tue, commit Friday, Jeff. Kirk demo. Index page. Not for next release. Jeff web components. Polymer project.
Attendees: Will, Dan, Steve, Tom
- Brightcove built a nice integration between dash.as and dash.js to provide flash fallback in non-MSE enabled browsers. http://blog.videojs.com/post/92536319027/dash-everywhere-ish-hack-project
- Consider re-org of project, as player elements including CSS and UI libraries are mixed up with the core dash.js code. Suggest an index page which can launch several different player examples, including the current default player. Dan to look in to this and suggest layout to list.
- Kirk - Microsoft are getting the refactor branch ready to propose. It is pretty stable and provides an easier way way to configure rules. Will not be ready for 1.2 release but perhaps release after that.
- The doodle poll results http://doodle.com/vb87rdpv8ix53586 are in. To accommodate a better time for Europe, we will shift this call to Tuesday at 10am PDT. Next meeting 10.am. PDT on Oct 5th. Kirk has said he can make every second call at this time.
- Dan - DVR API for control bar in live streams, time conversion. Will look at adding an api for non-zero start time for streams and hook that in to a query arg in the default player.
- Dan - suggest to support subclipping. Will add an enhancement bug but not in current sprint.
Attendees: Will, Bart, Dan, Nathan, Steve,
- Please fill out Doodle poll at http://doodle.com/vb87rdpv8ix535866wwkw9qf to pick a time slot for this call.
- Dan - created an API for DVR streams to drive a UI returning relative and UTC time for DVR , also total length of DVR window. Singleton class, source for playhead time.
- Bart offers live stream for reference.
- Steve - tried out Dan's API for scrub bar. Working on it with video.js
- Orange issues on segments being returned out of order after bitrate switch.
- Orange request around sequential segment loading - group agrees that baseline should be sequential requests with extension to allow for parallel requests.
- MinBufferTime - minimum player delay at startup is interpreting minBufferTime literally as a starting buffer delay. It should really be the target stable buffer. Revisit buffer controller. Current streams take a long time to
- Motion to make Dan a contributor - approved.
- One month to release of 1.2 - need verification from Kirk, Mikhail and Dan on what changes will make it in.
Attendees: Will, Dan, Nathan, Steve,
- Dan met with Kirk - implement DVR metrics (relative time) for seek within DVR. Create VO to hold values. Can also do UTC seeks with this.
- Steve - video.js cannot currently support DVR windows. Dan going to test it with Akamai internally, then release so that video.js can look at it.
- Dan, had to pull video.js out of Akamai debug player, race conditions between sources. Dummy sources necessary at start? Steve will take a look.
- Multiperiod test vectors are now available. Will to add to github.
- Chrome updated and Canary stopped playing some H.264 content. Activity on bug.
- Put out Doodle - to change time to day other than Friday at request of Fraunhofer to make it easier for Europeans to join.
- Akamai live stream not too stable - Elemental have been notified.
Attendees: Will, Kirk, Dan, Steve,
- Akamai live stream available at http://24x7dash-i.akamaihd.net/dash/live/900080/elemental/dash.mpd. Report any issues to Dan or Will.
- Fruanhofer Fokus submission for ad insertion - thanks! Sample site + pull request. Manifest and segment parsing. Kirk is looking at the code. It would be better of there was a generic mp4 box parser so that common code can be used to exztract SIDX, message and TTML boxes. However, better to get code in and then improve it later.
- Dan working on switching rules, will communicate with Mikhail who is doing the refactoring.
- Dan to Steve - video.js integrated support for simple live UI. NO support yet for DVR scrubbing, but video.js is working. Look at Akamai UI solution first as interim solution?
- Kirk - working on merging token auth , refactor branch, adding rules, scheduling, input needed at this point. Scheduling is about which segments to request when, bitrates rules are about which representation you are scheduling.
- Multiperiod - need to improve. Current switch is low. Second element needs to be used.
- Create test to see if we can queue up mediaSources and then attach them dynamically to videoElements.
- Steve - video.js dash interface, will add to CONTRIB branch.
- Refresh test content. Sources.json holds current sources
- Build a new index.html as a launch page for the various players which we now have.
Attendees: Will, Jeff, Dan, Iraj, Kilroy, Kirk
- Live stream set up Akamai - 24x7 stream with DVR window. Should be available soon along with an alternate debug player. Investigate DVR UI behavior with video.js once it is available.
- Testing http://54.201.151.65/livesim/tfdt_32/testpic_2s/Manifest.mpd with current 1.1.2 reveals bug in scrubbing in to 5 minute DVR window. Jeff to file an issue.
- Dan has token auth code to push. Maybe look at DVR hooks next?
- Kirk - API need to be surfaced.?
- Kirk - improvements in how transition form one quality level to another. Reject late coming segments that no longer match . No notion of buffer replacement but could be done. Working on proposal for refactored player. Also bug fixes.
- Kilroy - add Clearkey to DRM task force. Did do some work on W3C.
- Microsoft - do some legal review for box parsing. Can we get this in before spring completes? Fokus were also going to contribute box parser and event handling. Will to write to Fokus and ash what their contribution status is.
Attendees: Will, Jeff, Iraj, Kilroy,
- Mozilla - EME announcement, using Adobe DRM, let's ask Streeter for clarification. MSE implementation using VP9 for Youtube. Please vote on this bug for MSE: https://bugzilla.mozilla.org/show_bug.cgi?id=778617 . Will ask Google to address next DASH IF meeting in SF.
- Kirk working on live improvements and TTML. Kilroy - keep core API consistent in player.
- Will to start writing new index page, others can improve.
- Clearkey support ? - is there a standard for MSE or for DASH? Not for DASH-AVC/264. Need to add clearkey to DRM descriptor. We should push this within DASH IF IOP. DRM task force - make new addition. Kilroy will add to action items.
- Box parsing for event message? MS have developers who would like to contribute, but have to get open source license stuff out the way first.
- SCTE-35 messaging, agreements between major companies by Kilroy. Looking positive.
Attendees: Will, Dan, Jeff, Kirk, Kilroy, Beatrice,
- Video.js: Steve had written interface between dash.js and video.js. General consensus that this is great. Code should be placed in contrib directory. Dan has reached out, working with Steve about player UI and will also reach out to JWPLayer to see if they have a interest in integrating. Kirk also noted that there is a real advantage in simplicity to have a player directly using DASH.js. even if the native HTML5 UI lacks features such as live DVR support. Dan to ask Frank@Akamai if they will contribute some base control UI that is capable of handling live DVR.
- Will suggested that the default index.html page not be a single player but instead be a launch page to several players, such as native, native+basic UI, wrapped with video.js, wrapped with jw etc. Kirk would like the ability to select a sample file from a pulldown and then launch it in any one of these players. Jeff/Will would also like a common set of test links to be available in each player. Each project could source this list from dash.js so that we can manage the sample links and keep them current.
- Items for 1.2 release: multi-period support (Digital Primates might look if they have time), events handling (Frauenhofer), TTML (Microsoft), live improvements + bug fixes (Microsoft)- documents, Token support for content protection (Akamai). Agree on a two month target sprint, which puts us around 15th July.
- Kilroy - feedback that its hard on how code works. Mikhail is looking at how to split out the buffer controller so that it can be rule-based. This is separate from the object model changes requested from the project which should still be considered.
- Live compatibility with Elemental - issue with buffer empty under Chrome, also reloading of init segments. Kirk - HEAD requests still failing against Akamai - Will to get investigation going.Will also repoted an issue with the buffer emtpying after the first 15s of the live stream and will open a issue on the site around this. Also a bug around repeated reloading of the init segments after a manifest refresh.
- Kirk - has a version of TTML working using the same pattern of pushing raw events to the videoElement , as was done for WebVTT support. THis means only simple TTML support with no support for styling or verification of the xml. It does check to see if the browser supports the mime-type first and only uses the manual approach if native support for TTML is not present.
- Kilroy has seen some open source test vectors for TTML and will get that info to Waqar and also the dash.js group.
- Update on other browser support. Will to ask Mozilla about Firefox.
Attendees: Dan, Jeff, Ross, Iraj, Nathan
- Dan is back and able to contribute to the project again!
- Fraunhofer Update - Ross has emailed Fraunhofer - Responded with they are at NAB. Ross to follow up with them after todays meeting.
- Jeff- Talks at NAB went well and looks like there is a lot of interest in DASH.js. Group out of Paris is interested in contributing. Follow up in next meeting to see where we are with this topic.
- Ross - Kirk not on call today but does know that TTML is being worked on - not sure about the progress without consulting Kirk.
- Dan - Follow up on public page listing players using Dash.js to make sure it is up to date. Dan will add the Akamai support player and will start a thread to group asking for URLs to players that are not listed.
- Ross - Going to talk with Kirk to see if he can take some time to get Dan caught up on live and align efforts for live playback going forward.
- No update on this topic - Elemental and Mikhail/Kirk around dash.js support for manifests which update availabnilityStartTime.
Attendees: Will, Ross, Jeff, Kirk,
- The DASH IF voted in Geneva last week on the features they would like to see in the next sprint 1.2. The 3 highest ranked features were TTML support, Event message handling, both at manifest and segment level and Multi-period support.
- Microsoft would like to take on TTML and refactoring scheduler. Fraunhofer had expressed a prior interest in picking up event messaging and mulit-period. Digital Primates might be able to contribute a developer's time too.
- Ross to contact Fraunhofer about contributing to 1.2.
- BBC have signed the CLA. Welcome abord!
- Current email thread with Elemental and Mikhail/Kirk around dash.js support for manifests which update availabnilityStartTime. Hope to get this resolved soon.
- Will and Jeff will give a talk about dash.js at the DASH TALKS seminar at NAB next Tuesday April 8th.
Attendees: Will, Jeff, Kirk, Nathan, Iraj, Kilroy, Ross,
- Will also sees issues with 33.0.1750 on Macbook Air. Problem seems specific to hardware acceleration on certain GPUs. Problem seemed resolved in Chrome Canary. @Kirk - add to release notes for 1.1.2
- Multiperiod - is it possible to create a sourceBuffer and add video without appending to a videoElement? No results yet.
- Voting and 1.1.2 release - multiple live streams that work in player, template and timeline, improvements in how may segments are requested. Reduced logging. Eventing for metrics, gets events. Note that any math in javascript that produces a result > 2^53 math results in a RTE. Kilroy - other precision limits? Plan to vote and release today. @Kirk to push to /master and @Will to copy to dashif.org.
- Refactoring on scheduling - summary feedback. Player getting complex due to many factors including promise architecture. Kirk suggested reduce complexity to make scenarios rule-specific. More straightforward compositional sets of rules for each scenario. Scenarios include features such as buffer length, live vs VO. Iraj requested that parameters can be set simply on each rule set.
- Daniel Silhavy (Fraunhofer) - discussion #114. Agreed opn approach but it requires changes almost every class. Invite him to create fork, communicate that community . Let's encourage him to start putting his time in to it. Thanks.
- Orange email - declaration of intent to add smooth streaming support. Welcome them to fork the code to create a smooth-enabled implementation, and then make pull requests for changes against the main dash.js master branch. @Kirk - don't diverge from our current agenda of providing great quality DASH playback. Kilroy anticipates proprietary ad systems will cause similar splits. Suggest send events for ads and then handle them in external packages.
- Get list of 1.2 features at the dash IF face-to-face. Timeline, suggest for 3 months, align with each successive face-to-face meeting.
- refactoring sets of rules.
- low latency mode for live
- basic TTML support (same pattern)
- Event message handling (SCTE-35 hand-off) segment parsing. (client side.
- multiperiod support (fixing).
Attendees: Will, Rich, Jeff, Nathan, Kirk, Iraj, Ross,
Discussion items
- Rich reports users of 33.0.1750 Chrome have decode issues on certain codecs. Disabled GPU acceleration seemed to fix it. If possible, he will distribute a URL so that others can verify. Nathan suggested ot file a Chromium bug as Google are reactive at fixing.
- Multiperiod support discussed at length. Current solution is that player will instantiate a new videoElement for the new period and overlay it on the primary videoElement. Nathan suggested there is a new append mode for source buffers that is not well supported in browsers yet, where the browser does not try to interpret the media time, but simply plays the content it is given. The code that is appending must manage appending the content in the correct order. Will suggested testing if a sourceBuffer can be created and media added without that source buffer being attached to a videoElement. If so, the new source buffer could be queued up and added very quickly.
- Iraj - noted that MPEG committee is considering adding support for constant periods. This might address period switch problems by essentially avoiding it. It will be a wehile until this mode is supported in brtowsers however.
- Discussion of how far back from live player should choose to sit. Will suggested that rather than trying to pick one number for everyone, that instead the player operate in two live modes - low latency and stable playback. Could be set by properties or context selection. Jeff commented that the switching rules would need to understand which mode it was operating in, which is true.
- Kirk made note that the requirement to establish time synchronization and find the live edge carries a lot of complexity in the client. SegmentTimeline avoids any requirement of time. Adding r=-1 to SegmentTimeline or using segment template adds in this complexity. Suggestion that we simplify things by restricting usage to segmentTimeline and having a reasonable (30s?) manifest refresh period. Decision to bring this point up at the face-to-face meeting in Geneva.
- Kirk has pushed latest changes to dev branch and stood up a 1.1.1 candidate for release. The code is here:
https://github.com/Dash-Industry-Forum/dash.js/tree/development
The player can be tested here:
http://msopentech-dash-js-1-1-1.azurewebsites.net/index.html?version=all
Release Notes:
- Improved support for dynamic mpd type
- Added search for live edge.
- Added support for overlapped segment requests.
- Added support for multiple buffer levels.
- Refined error type on the eventbus to be more uniform.
- Added manifestLoaded type on the eventbus
- Add reset() to MediaPlayer.
- Added ScheduleWhilePaused property to MediaPlayer.
- Added BufferMax property to MediaPlayer.
Attendees: Will, Beatrice, Nathan, Iraj, Kirk,
Discussion items:
- Kirk - has made bug fixes to his stream, is working with the DASH IF live vectors, along with MobiTV stream in IE. It is not working in Chrome, due to lack of support for 64-bit tfdt headers. Suggested that we ask Torbjorn to revert stream to 32-bit and then have it restart every 24hrs at night.
- In parallel, Nathan can assist Torbjorn in sending in the bug to Aaron@Google. Once Chrome supports 64-bit, then we can update the test vector. Will to mount init segment and segment on Akamai and introduce Nathan and Torbjorn. Nathan also needs the source buffer init string. (codec + mimetype)
- Finding live point is now working more efficiently. Kirk notices issues if you try to start right at a segment boundary, so current algorithm for live first play avoids this by calculating latest available segment, backing off one and then adding half a segment duration, to put the player squarely away from any segment edge discontinuities.
- For seek, to solve same problem, suggestion is to always add previous segment. This can increase post-seek start-up time. Beatrice suggested that these segments can be loaded in parallel. This is a good strategy if the client throughput >> bitrate being requested. Iraj also suggested that the prior segment could be requested at the lowest bitrate level. This is also a good optimization, although it has the downside that if the user ever seeks back through that content they will experience a pronounced quality drop for just that segment.
- Aggressive buffering is on by default. It can be changed by extending the request logic, or by a property setting which changes the buffer length to a fixed value. Kirk suggested property should be extended to allow the settings of a %buffer lenght, along with a min and max. Default values of 50%, 30s min and 300s were agreed upon. Will to write up an issue and Kirk to implement.
- Bart's stream, not working - Will to put Bart and Kirk in touch
- Nathan - closed a bunch of low hanging bugs and responded to list questions - thanks for that!
Attendees: Will, Dan, Kirk, Jeff, Nathan, Iraj, Beatrice.
Discussion items:
- Live is still struggling with two main issues - 1) mpds are missing the @start attribute in the first period and 2) The presentationTimeOffset is not used to allow the player to calculate the offset between presentation time and media time. If presentationTime and media time == 0 at the start, then this attribute is not needed, however Kurts finds streams where media time is not 0 at the start and presentationTimeOffset is not specified. ACTIONS - Will and Kurt to let the owners of these streams aware of their deficiencies and get them corrected.
- UI to show whats available to user. Current native UI only works with media time and does not support DVR windows. Decision to introduce APIs to allow a Javascript UI to be built by the player which can show the DVR capabilities better than native controls. Dash.js player can then show a sample control interface for live, although library itself will not implement the UI.
- This group should communicate with Romain over at GPAC and ensure that we test with an early version of DashCast that they may have functioning.
- Goal is release the 1.1 version in time for the Geneva face-to-face meetinfg of the DASH IF. Target date is therefore March 7th, one month from now.
Attendees: Will, Iraj, Bart, Kirk, Beatrice.
Discussion items:
- Status of 1.1: For time-addressed content, working well. For numerical addressed, long time to start due to up to 30s mismatch between client and server time and having to seaarch linearly for the starting point. The search can be done at most at half the availability window, which makes it slow for streams with small or zero availability window. Additionally, some mpds have periods where the video timestamp does not match the presentation timeline and no presentationTimeOffset or periodStart was present. It was suggested that these should be flagged as invlaid manifests rather than spinning cycles trying to accommodate them in the player. 1. Long discussion on the new r=-1 parameter suggested for segment timeline. At the end of the day it still requires the client and server to be closely synced in terms of time. Since servers are usually NTP synced, this means client needs a good UTC reference.
- Proposal in front of MPEG right now for the server to add a list of time sources to which the client can refer as a reference. UNtil this is standardized and implemnted by encoders, Will suggests using the akamai time source at http://jnc-time.edgesuite.net/ as a practical work around which can be overrideen once mpds contains other time source references.
- Will to start a list of live streams which the current 1.1 dev branch should play. We can work through this list and either fix the mpd or fix the player. Currently the Unified Streaming time addressed live stream works the best.
- Input from Mozilla around Air Mozilla - there is a bug (https://bugzilla.mozilla.org/show_bug.cgi?id=881512) titled "Implement enough of MSE to run the YT demo player" that has no blocking bugs at the moment.
- Orange Networks (former France Telecom) also interested in participating - let's help out both of these organizations if they choose to participate.
Attendees: Will, Nathan, Bart, Jeff, Dan
Discussion items:
- The 1.1 release is at http://msopentech-dash-js-livestreaming.azurewebsites.net/index.html?version=all and is locking up for many users under Chrome. No errors thrown in console. Not successfully playing live samples which was its purpose. These issues need to be reported to Kirk.
- Bart - mentioned that Steve from Intel, interested in contributing. He will reach out and get him involved.
- Nathan reported that inband messages need to be supported. Will create issue to track inband messaging.
- Digital Primates are busy next 6 weeks but will be able to review code in the interim.
- GPAC have been contracted by DASH IF to improve mp4box and DASH Cast to enable some reference packaging of content. Will to send scope of wrok to Bart. Anyone else who wnats a copy who is a DASH IF member then contact Will.
- Dan to check on his availability in next few weeks for coding.
Present: Ross, Iraj, Beatrice, Kirk, Bart, Nathan
Live - Pull request today, not a full implementation. Segment Templates without timeline does work but can be very slow to start. We need more test content for Templates. Goal is to encourage testing of the live implementation.
SMW - attendance a little lower than usual. Sessions were reasonably well attended with some very interesting discussions. General feeling was that MPEG-DASH is largely seen as a "done deal" - people were looking forward to the next stage (e.g. HEVC). DASH-IF will be less
F2F - Player performed very well on stream compatibility (played more than other players) but was not doing very well under constrained network conditions. MS plan to set up some testing for this and will focus on it as they move forward. DASH.js contributors strongly encouraged to focus on this aspect of performance.
Mozilla - Ross reached out to Mozilla via their public channels to offer our support in testing their MSE implementation. No significant progress as yet.
Issue triage - There is a small but growing number of issues that need classifying as an initial response. Assistance welcome.
Present: Will, Ross, Nathan, Kirk, Iraj, Beatrice,
-
Review of actions items since last meeting
-
Ross triage and organize: low, med, high, critical. Critical should be incorporate in next release. Ad hoc, with periodic review when items grow above 5. See wiki for details - https://github.com/Dash-Industry-Forum/dash.js/wiki/How-to-Contribute
-
Will - time service and front end - can test at http://jnc-time.edgesuite.net/ (GET or HEAD), http://jnc-time.edgesuite.net/?iso and http://jnc-time.edgesuite.net/?xml. Plan is to mount at time.akamai.com. still underway.
-
Ross - LA for issue #32 - under way.
-
Current issues:
-
Kirk - scheduling changes now include the ability to handle high latency urls. Segements are requested in parallel and the code does not wiat for the prior request to complete beforemaking the next request. Will reported video quality problems testing on Mac Air, as the aggressive preloading up to 100% of the video seemed to reduce rendering resources. Suggest we cap the max buffer that will be built. 30s for content < 10min and 300s for content > 10min. These thresholds can be set as modifiable properties versus extensions,
-
Kirk - still OK right now for Mid Dec. , wrap up scheduling improvements, email on live , reach out for feedback.
-
At SMW west, we have a session on Wed 20th at 1;45 pm on the dash.js project. Ross talking about governance and openess and demo on IE 11 under Win 8.1, Jeff will talk about the code and demo on Chrome . Richard Leider from Google will talk about Youtube's use of DASH as well as EME in general.
-
Question asked about Mozilla supporting MSE. Heard that end of year had been a target. Decided we should reach out proactively to Mozilla to see if we can ensure that the dash.js player is compatible with their implementaiton form the beginning. Ross to look through his contact list and Will to contact Chris Blizzard.
-
At DASH IF face-to-face on Nov 22, Iraj asked that we come prepared to contribute to developing a plan for 2014 dev priorities. Will to generate a features matrix. Also talk about Waqar and the compliance tests, as well as collaboration between dash.js and DASH IF. Kirk/Ross will demo some of the newer features they have added. Only have one hour allocated for demos and planning.
Present: Will, Jeff, Dave, Tim, Bart, Sandeep, Nathan, Ross, Beatrice, Kirk,
-
Review of actions items since last meeting
-
Ross - Issue on CLA# 32 ongoing
-
Ross - track downloads not so easy out of github. If we mount copies on a CDN, we can track those much more simply.
-
Kirk - Microsoft Open tech have to focus efforts in their live branch around scheduling of segments and concurrent requests. This is driven by customer demands on their end. This may threaten milestone 1.1 goal of mid-december . Kirk will inform us at next call in two weeks what the status is.
-
New discussion topics
-
Fandor - have integrated dash.js with production web application. Clients in QA at Google. Problems playing films have unplayable sections, receiving bytes, buffer rejecting them or timestamps not in right range. Segments are being returned by the server. Nathan suggested that the timestamps on the segments may be out of the range the sourcebuffer is expecting. Fandor to examine detailed console logs and also open issue on Github with a link to the offending mpd.
-
presentationDelayOffset - this is optional, but can be specified in the manifest to help a client correct for delivery delay once a segment leaves the encoder and is propagated through a CDN. Its not required however, so if it's not present clients should take in to account that a segment may not practically be available when it says it is.
-
SMW show - Jeff/Ross/Will in session on "C203: Building an Open Source DASH-AVC/264 Player". Jeff will talk about and demo v1.0 of dash.js. Ross will follow with some new developments from the MS branch.
-
DASH IF face-to-face. Kirk will be there from the 19th and will coordinate any client testing using. Will/Jeff/Ross to present task force within interop. Items to cover: A) Road-map, including any changes to live support and B) Improvements to the DASH spec around encoder/client co-operating to sync on time.
-
Will to mount a universally accessible reference time service on akamai. Will distribute details once it is in place.
-
Will to look in to having Akamai front github for delivery and if not feasible (due to forced SSL, or rights) then look at access rights for committers. Nathan offered a nightly build driven by Jenkins that could automatically FTP.
-
Ross- ownership of triage on issue tracker. See if carve out some time.
Present: Beatrice, Nathan, Kirk, Iraj, Kilroy
-
Review of action items from last meeting
-
Kirk - Make a new issue around start-up logic and how we can optimize it. Plan to integrate that with the Live Streaming work. Possible to split the simultaneous segment request that is available in the Live Streaming branch and push it separately before the Live Streaming. Kirk is working with several developers including Dan.
-
ROSS: Need a CLA for #32 - ongoing Ongoing, Ross will contact the developer and approve the CLA.
-
ROSS: Is #33 stale? - yes issue is stale, now closed.
-
ROSS: Can we track usage of the tool? Ross raised this on the mailing list. No feedback from community yet. Tracking number of downloads is a great idea. The measurements will not be definitive and there is no guarantee that the developers will accept to share the data.
-
Discussion topics
-
Kirk - Live Streaming and Fast Segment Scheduling: UPDATE -
Kirk is making good progress and most of the issues are related to: content, scheduling issues. We discussed two specific concerns:(1)The time of the server is 30,35 seconds different from the time on the client; when you request the segment for the current time on the client and trying to find the live edge what you get back is that it is not available yet, the first segment is not available until the current moment 35sec later, (2)availability start time coincides with the presentation time and you cannot download it until you are supposed to display it.
Action items based on discussions about the issues above:
- Contact content provider to fix the content used for testing. The content does not show any of the segments in the time buffer window from their current time; they start describing segments at "that moment" instead of "moment-time shift buffer window"
- in dash.js design for the segment timeline, start with the last available listed segment in the most recently available segment and backwards from there and see if it works.
- MPEG spec or DASH IF could add an interpretation regarding the presentation delay. The spec should not conduce to the interpretation that the presentation delay should be added to the current time of the segment and not be played until that moment. 0 should be a special value and should be defined as you do not apply the attribute.
- Static noise while switching audio bitrates. Track as issue #69. has anyone verified this issue? No, it is browser dependent and not reproducing with IE11. Either the developer help us with more investigations either will wait until Kirk and Nathan become available.
- 1.1 Milestone issue review: see https://github.com/Dash-Industry-Forum/dash.js/issues?labels=&milestone=2&page=1&state=open Most of these issues are assigned to Kirk and resolved or to be resolved in the Live Streaming branch. Issue #32 CLA need Issue #80 Nathan could not repro, will look into it at some point
- Seek fails on a specific Video (issue #75) - Senthil - confirmed on Chrome - can we duplicate. Pull request from developer to be accepted after Ross confirms CLA was signed.
- Review of new issues, do any need to go into Milestone 1.1 - see https://github.com/Dash-Industry-Forum/dash.js/issues?state=open Issue #79 Kirk will close by design Issue #78 Kirk will play with it Issue #77 is an enhancement and Kirk could look into it when he has time.
Present: Ross, Dan, Beatrice, Nathan, Kirk, Iraj, Senthil
-
Review of action items from last meeting
-
Kirk - Make new issue - UI to show target bandwidth #71 - DONE
-
Kirk - Make a new issue around start-up logic and how we can optimize it.
-
Discussion topics
-
Kirk - Live Streaming and Fast Segment Scheduling: UPDATE? Targetting end of November to submit to dash.js.
-
Static noise while switching audio bitrates. Track as issue #69
-
DASH-IF needs to supply a contributor who can focus on conformance if that is their primary desire. Discussed in IP meeting last Tuesday - a representative is testing conformance. We need to liaise better with IOP when major features are added. Longer term we could consider automating execution of the test vectors - how many of these don't require human observation. MS Open Tech have been working on an integration.
-
1.1 Milestone issue prioritization. Ross closed 1.0 Milestone. created a 1.1 Milestone (Dec 16th). Moved open 1.0 issues to it. ACTION: identify other issues for 1.1 release
- DASH IF F2F is Nov 20th/21st - target this date for integration testing
- We reviewed open issues and assigned to Milestone 1.1 as appropriate
- ROSS: Need a CLA for #32
- Ross: Is #33 stale?
- Seek fails on a specific Video (issue #75) - Senthil - confirmed on Chrome - can we duplicate
- Nobody has attempted to reproduce yet
- Can we track usage of the tool? Ross to raise on the mailing list
Present: Will, Nathan, Jeff, Sandhin, Kirk,
- Review of action items from last meeting
- CLA from Nate Burr has been received
- Nathan - Updated contributor list - done
- Dan - captioning html file - done
- Discussion topics
- Kirk - A player using dash.js should be notified when the manifest is updated and be able to access a subset of the data in the manifest. Decision to use existing eventbus, with event 'ManifestUpdated'. Current UI only lets switch methods, method accepts value. Make new issue - UI to show target bandwidth.
- Kirk - Live Streaming and Fast Segment Scheduling, in process. SegmentTemplate not working correctly.Predicts end of November to submit to dash.js.
- Herman - Static noise while switching audio bitrates . Track as issue. On both browsers. #69
- From last call - should performance logic be built into dash.js or is dash.js more of a conformance tool? Agreed that motivation of current participants is performance over conformance. DASH IF needs to supply a contributor who can focus on conformance if that is their primary desire.
- Next milestone, which issues should we tackle and what number will it be - 1.1 or 2? Decided on 1.1 with a primary emphasis on Live. Would like to have fewer, smaller releases. End of November to submit to dash.js repository. Issues woith live; timestamp offset on media streams to presentaiton time to video player.
- Senthil introduced himself. Based in Bangalore, individual contributor.
- As part of live, Kirk is looking at parallel request in live branch. Each video/audio/text segment for a given time point is requested in parallel. Akamai is interested in extending to parallel sub-segment range requests.
- Make a new issue around start-up logic and how we can optimize it.
Present: Dan, Jeff, Iraj, Nathan. Kilroy (My apologies, I believe I am missing one person from this list. Please email the group if you were present and not on this list.)
-
Review of actions items since last meeting
-
No update yet - We need the CLA from Nate Burr so can anybody please nudge him to send it in.
-
No update yet - File a bug with Chrome for handling AVC3 codecs
-
Bug was files for incorrect index being shown and a fix was submitted and integrated into dev branch.
-
Phase one of VTT caption support was discussed, completed, and has been integrated into dev branch.
-
Jquery has been removed from dash.js - Thanks for the effort from Nathan.
-
Release of 1.0
-
Nathan is updating the contributor list with the two that responded to his email.
-
Dan create a captioning.html file with caption test MPD as src.
-
Nathan is preparing the build today to be voted on. Please vote. Looking to get the release out by Monday.
-
Current pulls - what's in motion, problems, questions
-
#32 Leading 0's - Nathan believes that Kirk is following up on this but is not sure. Kirk is not present to confirm.
-
#65 Replace img - Nathan has not seen this contributor before so we need to follow up and see if CLA is signed/needed. Side note - This change is only three lines and so Nathan added the change to the dev branch manually.
-
Other Topics - Should performance logic be built into dash.js or is dash.js more of a conformance tool? How much time should be spent on trying to get performance perfect? This topic was raised based on multi-level buffer and startup times. Some proposed changes were:
-
Should we modify rules to not switch up as quickly at startup until the buffer length is stable. This will get us a faster startup time and less buffer underrun errors.
-
Logic to start on the most suitable index based on bandwidth measurements and other intelligence.
-
Fragment abandonment logic that tries to prevent a buffer underrun at startup.
-
Conclusion: We should add performance enhancements into dash.js but do so in a very extensible way.
Present: Will, Jeff, Kirk, Dan, Ross, Iraj, Nathan, Jan
-
Review of action items from last meeting
-
We need the CLA from Nate so can anybody please nudge him to send it in.
-
File a bug with Chrome for handling AVC3 codecs. Will
-
Current pulls - what's in motion, problems, questions
-
Dan found a bug with the incorrect max index being shown. He is going to file an issue and investigate it.
-
Concerning issue #33 on out-of-band captioning support. Dan has investigated and will pick up this issue. VTT is supported natively by both IE11 and Chrome. A subset of TTML is supported natively by IE11. Discussed implementation options and the group decided that implementation would be broken in to 2 phases. The goal for the MIlestone1 release will be Phase1 only: 2.2 Phase1: take VTT urls referenced in the manifest in Chrome (and VTT/TTML in IE11) and feed their bytes directly in to a SourceBuffer, along side the audio and video SourceBuffers already being created. This should always be done if the browser can handle the caption format natively. 2.2 Phase2: for incoming formats that are not supported on that browser, retrieve and parse the caption file and then use the TextTrack APIs to dynamically add a text track to the element and populate it with the appropriate cues.
-
Status on Milestone 1 and 1.0 release. (#22) - Will Withdraw (#18) - Kirk - close (#17) - Kirk multiperiod - close (#11) - Will withdraw but make make high priority for next milestone as several potential users ahve complained about the size of the library. Currently debug.js and error.js use JQuery to implement UI features. We should refactor the solution to move these out of the core library and in to the player implementation.
-
Other items.
-
Ross - add a wiki entry for a simple process, using existing github tools, for keeping a common and accessible list of filed CLAs.
-
Normal release for snapshot 0.2.6 by Friday Sept 30th. Nathan will mount DASH IF. Iraj will send out link for DASH IF community review until Friday Sept 6. All* Aim for the formal 1.0 release on Monday Sept 9th just in time for IBC :)
Present: Will, Dan, Bart, Ross, Nathan, Kirk, Iraj, Kilroy, jan,
- Approval of minutes of July 25th meeting - Approved.
- Actions items
- Need a CFA from Nate Burr - Will to ask.
- Dan to restructure his submission to create a new "Adaptive Buffering" branch and add the enhancements to the DashContext instead of a separate AkamaiContext. Make sure new branch is off of latest dev branch. Cancel old pull request and isue a new pull request ocne this is done.
- Status of pulls
- #32 "Leading 0's in SementTemplate and IE11 meta tag" waiting on later fix by Nate Burr. Kirk is monitoring this.
- #38 will should self-commit as there were no comments and it is text only.
- #41 will be withdrawn and resubmitted (see Dan's item above).
- Status of Milestone 1 issues.
- For captioning, Kilroy to ask W3C for reference TTML implementation. Ross to send links to OS projects that have parsers. Dan to see if he would be able to work on it.
- Adding Fork Me Ribbon, Did you know we have a page at http://dash-industry-forum.github.io/dash.js/ - Action Nathan add to index.html.
- Other items
- Seeking with numerical segments of variable duration. Kilroy pointed out that segmnetTimeline should be used as the adressing scheme any time there is any variability in the segment durations.
- Kilroy is having someone examine the problem of figuring out the playback edge under live and VOD. ** Will** to send the document form Thomas that lays out the live use cases and the manifest @attributes to expect.
- dash.js will particpate in the IBC virtual interop demo for both VOD and LIVE. Will to ask encoder particpants what segment addressing/duration they will be using. We'll get demo streams in late August and will test. Should prepare verison of player with just those streams available in the pull-down.
- Test new mp4box demuxing capabilities for packaging content for DASH-AVC/264.
- Handling AVC3 and HEVC init behavior - Kilroy to give info to Kirk to open up an issue to track this.
Present - Will, Rich, Dan, Nathan, Kirk, Ross, Iraj, Beatrice,
- Approval of minutes from July 12th meeting - correction, Ross was absent. Edited to fix.
- Action items status - all complete fomr last week except
- Will to adjust readme in master and dev to emphasize that pull requests should be against dev.
- Tim Williams has a pull request waiting. Nathan or Kirk to review.
- Kaltura need to sign CFA - Will to contact.
- Open issues
- New Thomson urls are using AVC3 codec, on the server is a duplicate version that is AVC1. Kirk to switch references URLs in pull-down stream
- Dan has issue with charts having a fixed Y-max value - he will investigate
- Akamai suggesting that index.html be modified to allow a different context (and player instance)to be used with each LOAD. Dan to mount prototype for comment prior to issuing pull request.
- Report on the client comparison tests run by DASH IF in San Jose - competed with a Qualcomm, BuyDRM clients. Run dash.js under IE and Chrome. dash.js performed poorly in the concurrent playback tests, where multiple clients were competing for scarce bandwidth. BuyDRM client uses parallel requests to dominate bandwidth. We should implement a similar scheme - Will open issue to track this.
- 0.2.5 Release went out. Latest player available at http://dashif.org/reference/players/javascript/0.2.5/index.html
- For Milestone 1.0, EME and Multiperiod support are underway and picked up by Kirk. Captioning support: VOD only. Feature must be able to detect a cpation URL in the manifest, XHR it and then feed it in to the video.text buffer. If the browser does not support that format, then it should parse the caption file, sync it and display it in a div over the video object.
- Create wiki page for users to register their players which are derivatives of dash.js. (Example: Kaltura). Will to make.
Present - Will, Beatrice, Angelo, Jan, Nathan, Iraj, Kirk,
- Approval of minutes from June 14th meeting - approved. Items marked as in-progress for Ross are complete.
- Review open bugs - 2. #30 - Support for Edit List, necessary to support Universal Pictures initiative for EME playback 2. #22 - Autoplay not working correctly 2. #21 - Snowy video - test on Ubuntu be generating a progressive asset and if that is also snowy then close bug as wont-fix. 2. #18 - playing EME content. Kirk to open a new branch for dev of EME features. IE11 carries EME support for playready, but not clearkey. 2. #17 - multi-period support, Fraunhofer Fokus already have an implementation. Will to ask if they are interested in submitting.
- External contributors submitted to master. Nathan to merge with dev. Will to update read-me to make it clear that pull requests shouold be against dev.
- 0.2.5 Release - voted down by Jeff/Nathan since test vector support in Chrome has regressed since 0.2.3. Issue #31 opened to address this issue. Kirk to take a look.
- DASH IF conducting tests on Tuesday morning July 16th. Jeff will manage testing against client under Chrome and Kirk under IE. Use the best version for the job if it is not 0.2.4 or 0.2.5
- We have a one hour section allocated to the reference client during dash.js f2f on Tuesday at 6.30pm. We'll do some demos and also discuss feature priority. Will to create table of DASH spec requirements and dash.js capabilities.
- New test vectors from Thompson causing codec errors in both IE and Chrome. Decided to track these errors as issues with a TEST_VECTOR prefix and see how that works. Push back to Waqar - Nathan and Kirk
- Congrats to Ross to being elected President of the Apache Software Foundation. Appreciate you experience on this project.
Present: Ross, Jeff, Jan, Kirk, Iraj, Beatrice
Minutes of May 31st Meeting were approved with the [no changes/the following changes]
- DONE: Ross Add issue to remove JQuery library
- DONE: Ross Add issue to add JS library concatenation and minification to build
- DONE: Ross To share blog post with Jeff and Iraj
- IN PROGRESS: Ross to mount gov doc on wiki. 1. DONE: Need new page to list roles (see https://github.com/Dash-Industry-Forum/dash.js/wiki/governance-model) 1. DONE: Describe decision making process (see https://github.com/Dash-Industry-Forum/dash.js/wiki/governance-model) 1. Expand contribution process 1. DONE: Define draft release process 1. DONE: Map GitHub roles to project roles
We agreed to adopt a feature branch management process. It was noted that we need to also define a release management process. Since MS Open Tech is nearing completion of an important feature we would like to agree the release process now, so that we are ready to implement it when the time comes.
Ross has written an outline process at https://github.com/Dash-Industry-Forum/dash.js/wiki/Release-Management and will add details to this as necessary.
Questions:
- what is a reasonable time to allow for feature branch review?
- that is how long is Lazy Consensus on a pull request?
- 96hrs minimum, account for long weekends etc.
- how long does the IWG need to test and approve a release candidate?
- not needed for minor releases
- assumption is that developers have run tests
- 2 weeks needed for approval
- do we need a release branch for official releases?
- Kirk: to drive to discussion on the mailing list
- in what form should the release candidate be provided to the IWG?
- delayed this discussion item in the interests of time
- how is the website updated once a release is made?
- Jeff has access to the javascript landing page and can add a link to the latest version
- Will does the rest of the website
- who should perform the website updates?
- Iraj: can give appropriate people access to website
- Iraj: we can have candidate releases on the website
- When there is an approved release main website will change to showcase the approved release
- How do we publicise release
- delayed this discussion item in the interests of time
- for 0.*.0 releases?
- for 0.2.* releases?
- for 1.0.0 release?
Ross has created a new GitHub team for DASH.js committers. This allows us to map governance model roles to git roles (updated the wiki page accordingly).
Should any of the current "project coordinators" be moved to the "committer" role?
Given that MS Open Tech will be creating a new release in the near future (to incorporate their recent work) we ought to set a target date and expected features.
What process should we adopt for release planning?
- Do we want to create a roadmap or be responsive to community contributions?
- DASH-IF would like a roadmap
- Defined by a collaboration between IOP and DASH.js
- Roadmap should be managed by IOP, DASH.js follow in Issue tracker
- DASH.js have the discussion and prioritise in issue tracker based on available resources and interest
- Do we want a regular release cycle?
- delayed this discussion item in the interests of time
What constitutes a 0..0 release and a 0.12. release? - delayed this discussion item in the interests of time
What is our target for a 1.0 release? - DASH-AVC/264 fully implemented
- June 13th Press event cancelled
- Press release scheduled June 19th
- Press conference scheduled June 27th
- MS Open Tech blog delayed at request of PWG
- Currently planned for June 20th
Present: Ross, Jeff, Will, Iraj, Kirk, Nathan, Beatrice, Kilroy,
Minutes of May 17th Meeting were approved with the no changes.
- DONE: Add read-me for how-to run grunt and tests - Kirk
- DONE: Ross to add Kirk as Admin, to take role of Project Committer
- IN PROGRESS: Ross to mount gov doc on wiki.
- DONE: Need new page to list roles (see https://github.com/Dash-Industry-Forum/dash.js/wiki/governance-model)
- DONE: Describe decision making process (see https://github.com/Dash-Industry-Forum/dash.js/wiki/governance-model)
- Expand contribution process
- Map GitHub roles to project roles
- DONE: Bart sends out doc for integration changes - http://nvie.com/posts/a-successful-git-branching-model/
- DONE: Nathan response to pull request from Adam and **Ross **will follow-up with him about procedure.
- DONE Send copy of any signed feedback agreements to DASH IF Exec Director for safe-keeping. Will to do.
- DONE: Ask Google for logo to add to contributors section of player - Will.
- DONE: Will to make bullet points for Jan. Jan to pimp Jeff's session at SME next week.
- DONE Nathan send Kirk list of test vectors that don't work in Chrome to test in IE.
- DONE: At SME, the general DASH session will announce the project and demo the player. Jeff goes in to deeper dive. Current status is that project is announced but we will defer 1.0 release until broader compatibility is achieved against test vectors after browser upgrades.
Jeff provided feedback from his session at Streaming Media East.
- Couple of good sessions.
- Lots of good feedback and interest.
- Will observed that in the demo it was hard to see debug player details, e.g. unable to see it was a 6Mb stream at 1080p, and unable to see bandwidth throttling.
- Perhaps have some other items of importance, e.g. overlay advertising.
Bart proposed a branching strategy
Kirk suggests the project is not large enough yet, but Nathan recognised it as the process used internally at Digital Primates. Since the process does not add significant overhead it was agreed that the project will adopt this process of code management now so that we are ready to scale as appropriate.
There is an open issue with respect to how the project agrees that branches are pushed to master. This will be addressed by active developers over the coming weeks and months.
Will observes we need all these external libraries to function. (UI excluded)
<!-- Libraries -->
<script src="app/lib/jquery/js/jquery-1.8.3.min.js"></script> 94KB
<script src="app/lib/q.js"></script> 46KB
<script src="app/lib/dijon.js"></script> 22KB
<script src="app/lib/xml2json.js"></script> 10KB
<script src="app/lib/objectiron.js"></script> 7KB
<script src="app/lib/long.js"></script> 23KB
<script src="app/lib/Math.js"></script> 1KB
<!-- Minified Dash -->
<script src="dash.min.js"></script> 72KB
Do we really need all of these? Could we replace the entire library with a few functions that are actually used? Right now we have a download of 275KB to play adaptive content. The Flash code we have to do the same is 42KB.
The general goals could be expressed as:
- using as little of external libraries as possible
- keeping the minimum code necessary for playback to < 50KB.
- if having a external libraries is unavoidable, then can we aggregate while minimizing so that there is a single dash.min.js which in a single GET request delivers all the necessary code for playback.
Jeff suggests JQuery might be removable Will requests that other files are bundled an minimized Jeff Perhaps we should to make this happen at build time
It was agreed to create issues for the removal of JQuery and the automation of bundling of libraries at build time.
Ross observes that bi-weekly meetings can be productive but they can also exclude community members unable to attend.
Ross proposes that no decisions are made in meetings. Such meetings should create proposals which will be submitted to the mailing list and subject to the appropriate decision making process this will ensure maximum participation and oversight from project members. Meeting minutes will therefore be shared via the mailing list after each meeting.
After we clarified that these items need not be voted upon in most cases (approved by lazy consensus) this proposal was accepted.
Ross Shared a document on decision making process via the mailing list. This is under review via the lazy consensus process.
Ross encouraged attendees at the meeting to review the page and raise any issues on the mailing list.
The team are encouraged to use the mailing list as much as possible for communications as this encourages third parties to participate in the project.
DASH-IF press conference week of June 10th press release
- DONE: Ross Add issue to remove JQuery library
- DONE: Ross Add issue to add JS library concatenation and minification to build
Present Will, Jeff, Bart, Kirk, Angelo, Nathan, Alex, Ross, Jan, Iraj, Kilroy, Beatrice
Agenda
- Confirm time for meeting or ask for adjustments - stick with time. 10h00 PST every two weeks starting May 17th
- Switch over to DASH IF audio and webex for future calls - from next meeting. Will to update meeting invite.
- Summarize updates to site
- License headers added to files
- "How to contribute" section added to wiki, along with links to the feedback agreement.
- Reference player updated to v0.2.3
- MS code - fixes for other browsers, test infrastructure, using grunt.
- Add read-me for how-to run grunt and tests - Kirk.
- Ross to add Kirk as Admin, to take role of Project Committer.
- Governance doc distributed by Ross - discussed and approved by those present. . Need continuous integration later. Ross to mount gov doc on wiki. Need new page to list roles.
- Bart sends out doc for integration changes - http://nvie.com/posts/a-successful-git-branching-model/ - please review.
- Open pull requests - who is reviewing - Nathan is looking. **Nathan **response to pull request from Adam and **Ross **will follow-up with him about procedure.
- Send copy of any signed feedback agreements to DASH IF Exec Director for safe-keeping. Will to do.
- Ask Google for logo to add to contributors section of player - Will.
- Will to make bullet points for Jan. Jan to pimp Jeff's session at SME next week.
- Nathan send Kirk list of test vectors that don't work in Chrome to test in IE. . 13 At SME, the general DASH session will announce the project and demo the player. Jeff goes in to deeper dive. Current status is that project is announced but we will defer 1.0 release until broader compatibility is achieved against test vectors after browser upgrades.
Present Will, Doug, Ross, Bart, Angelo, Yojak, Jeff, Steve, Nathan, Kirk, John, Rich, Vishal, Makoto,Charles
Agenda
- Introduction and welcome.
- Legal Summary - DASH IF members are now covered by changes to the Bylaws and IPR declaration, which allow for members submission to open Source projects administered by the Forum, under BSD-3 clause license. Non-DASH IF members can also contribute, but must first sign the Feedback agreement Feedback Agreement. Will will mount these on a wiki page. All submitters must sign prior to requesting a pull. Will will ask Google to sign feedback agreement.
- All files must carry the new BSD header - Will to provide to Nathan.
- Get firm commitments from those interested in submitting: Digital Primates, Akamai, Microsoft, Path1.
- Establish procedure and process for a) reviewing pull-requests. Submitters will be able to nominate admin. Review to be described in doc shortly after call, sent out by Ross.
- Establish procedure and process for bug submission, triage,and assignment. Admin will respond to bugs. Noted that may outgrow github bug submission quickly, but will start with that.
- Establish procedure and process for establishing scope and timelines. Requirement to satisfy DASH-AVC/264 test vectors is a common requirement for DASH IF members.
- Everyone should join the "dashjs" Google Group listserver at https://groups.google.com/d/forum/dashjs.
- Establish a bi-weekly working call. Suggest Friday at 10h00 PT every two weeks starting today. I need a volunteer to run the calls if I am out. Ross volunteers.
- Other items? Iraj, suggest create new repro to make a clean transition. Will objected as being disruptive to what has already been established. Compromised on a code review by Jeff/Ross within the next two weeks and a commitment to have legal coverage for the one non-DASH IF submission within the same time period.
- Kirk (MS) noted that submitted Google test code not directly applicable to player. Ross suggests two repositories. Another suggestionfor same repo, different directory. Bart seconds one repro, separate directory. We'll go with a separate Test directory for now.