Skip to content

Agenda for the 2016 San Francisco face to face meeting Dec 14th

Will Law edited this page Jan 31, 2017 · 21 revisions

This meeting is now complete. Minutes are below and original agenda for archival purposes below that.


08:30 - 09:00 – REGISTRATION, WELCOME COFFEE Attendees: Stefan Dimitri Bernhard Markus Mateo Garret Cooper Tobbe Dan Iraj Kilroy Greg Casey Will Frank Richard

09:00 - 12:30 – MORNING SESSION - CODE base:

  1. Demo: SAND / Annex D Metrics reporting demo
    1. Stefan - server and network assisted DASH. Reporting metrics using standardized messages, then coordinating clients competing for same bandwidth. Node.js implementation of DANE. Metrics element added to mpd. Messages sent every 2s. Uses HTTP headers. In case of 5Mbps connectivity, suggests both clients move to 2.3Mbps. Node server can be used to visualize switching.
    2. Fixed bugs in metrics calculations. Issue # 1707
    3. Keep functionality external. Add to CONTRIB.
    4. Add higher order metrics to get requests. API against MediaPlayer.
  2. Multi-period optimization for non-tear-down
    1. Today tear-down mediasource between periods. Introduces flicker.
    2. Rules for when we do not need to tear down mediasource
      1. PeriodContinuity indicated in period element. Amd 3. Must be adjacent periods. Live-sim has this today
      2. If AVC1 || AVC3, if 4cc code matches and profile =< what was already playing, then can re-use.
      3. If HEVC, same.
      4. Expect this to work with DRM if keyID matches across periods.
    3. Test vector – make one or have Waqar. Positive and negative test case.
    4. For multichannel switching, tear down. For DRm content
    5. Place in 2.5 to support ad insertion. Issue # 1708
  3. Refactoring of indexHandler
    1. IndexHandler figures out what fragment to get next. Streamroot broke up indexhandler into several pieces, but still carries legacy baggage. Would like to write clean version from scratch.
    2. Related to objectIroning of manifest object.
    3. Break in to two efforts – one for indehandler and the other
    4. Use of Epsilon may be addressed. Not needed for segmentTimeline or
    5. Lloyd has offered to do. Dan would like to do. Lower priority for 2.5
  4. Support of large numbers using big.js
    1. Smooth need 54bits for 10 GHz timescale from 1972 or earlier.
    2. Need to support 64 bit numbers. Extensive replacement required. Could limit to segmentTimeline.
    3. Need to review libraries, like big.js. Only require addition.
    4. Coordinate with isoboxer parser.
    5. Issue #1619.
  5. Retry Logic discussion
    1. What should the player do when it gets a 404 || 500 on a segment?
    2. Default today is retry 3 times and fail.
    3. Proposal now is issue #651
      1. VOD
        1. If alt baseURL, then try all alts. If they all fail, then go back and try different qualities.
        2. Try same index at lower quality.
        3. Timeout should be segment duration.
      2. LIVE Edge playback
        1. Do manifest update, then time sync.
        2. 2 retry first at half segment duration,
        3. Same as VOD.
    4. If XHR times out, then change to 60 retries.
    5. Test vectors with missing segments.
    6. APIs to adjust these properties.
    7. Investigate when live segments are fetched at live edge. Do we wait for segment availability? Issue #1709
  6. Review of multi-period handling for ad insertion – bug for ad insertion samples issue #1710
  7. Using the new Fetch() API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API to speed up start-time with larger segments. Could implement this polyfill https://github.com/github/fetch.
    1. Dan will look anyway. Stefan and Dave have investigated. Issue #1474
  8. EME key rotation
    1. Stefan – received live stream with rotating keys every other 2s segment with pssh boxes. Relying on EME to raise event. Issue that did not receive onEncrypted event in every browser. Chrome works. Workaround was to parse media segment, check if bit difference in pssh, then simulate onEcrypted event.
      1. Best practice – only apply this to widevine. App should not need to do anything. Should request keys upfront.
      2. Pssh should not be in init, otherwise .
  9. Player priority for which adaption sets to start playing – Thomas
    1. DASH IF has doc about multitrack selection – subtitles, captions, accessibility roles. Something should start playing at beginning.
    2. Main content should be annotated – that is supported today in dash.js. Other is alternative.
    3. Must selected codecs that can be played within each.
    4. Then automatic selection based on capabilities and user settings.
    5. Client processing model is documented. @SelectionPriority and @label implemented in AMD4.
    6. New proposal for MSEv2 around capabilities discovery https://github.com/WICG/media-capabilities .
  10. Better robustness of segment duration variation for segment timeline
    1. Problem – segmentTimeline , player only supporting +/- half segment duration . Issue #. @T defines start of segment. https://github.com/Dash-Industry-Forum/dash.js/issues/1711
    2. Solution is trust segmentTimeline. – are incorrectly applying variability logic outside of segmentTemplate.
  11. DEMO – webRTC p2p
    1. Shown by Akamai, using dash.js
  12. Trick Play
    1. Dan – would like to implement.
    2. Need fastforward and rewind.
    3. Use seek approach so consistent implementation in both directions.
    4. Waqar made some test vectors - http://dash.edgesuite.net/dash264/TestCases/9b/qualcomm/3/Trick_Multi_live.mpd
    5. Detect trick mode track, if present add ff and rewind buttons to control bar.
  13. Demo of image subtitles - Subtitle status and integration of new imscJS library.
    1. Proposal from Tobbe. Flexible scheme based on segmentTemplate.
    2. Add design to github. Open for comments. <AdaptationSet id="3" mimeType="image/jpeg" contentType="image"> <SegmentTemplate media="$RepresentationID$/tile$Number$.jpg” duration="125" startNumber="1"/>   <Representation bandwidth="10000" id="thumbnails" width="6400" height="180">     <EssentialProperty schemeIdUri=“dashif.org/thumbnail_tile” value="25x1"/>     </Representation>   </SegmentationTemplate> </AdaptationSet>
  14. HTTP 2.0 and Dash.js (Server push)
    1. Beta available from Akamai.
    2. K-push, add header hint to server to send sequence of segments.
    3. Need to find out
      1. How does dash.js know if H2 supported on host?
      2. Initiate k-push – which specific header
      3. How does XHR request pushed content?
      4. How to cancel push from client JS.
  15. W3C Clear Key support in dash.js
    1. Sander suggested our implementation not to IOP.
    2. Version of Content protection built in to each browser.
    3. Looks like any other DRM
    4. Registered system ID for clearKey.
    5. Client requests key via 3rd party channel, feeds to CDM.
    6. http://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey not working. Issue #1671.
    7. Need to clean out cablelabs test vectors from default player, including DASH IF test vectors.
    8. Reach out to Sander.
  16. Overall performance on Smart TVs and set-top boxes deployments (startup time, decryption, buffer pruning, ...)
    1. Maxdome – main business. Implement on TVs, besides EME problems, all TVs after 7min, rebuffering every chunk. Player related.
    2. Vudu and BBC ran in to issue.
    3. Intervals not running at expected cadence?
    4. Need to test on lower powered devices - cheap netbooks.
  17. United testing of full application
    1. During 2.4 release, realized baseURL support broken. Not noticed due to incomplete manual testing.
    2. Project getting to big for manual testing.
    3. Need to backfill tests
    4. During 2017, will only accept PR’s if they are accompanied by tests. Need to communicate to project.
    5. Test coverage – Istanbul? Switched to Mocha from Jasmine.
    6. Nightly build should show test coverage.
    7. Use _ to indicate “internal” functions for debugging and testing.
  18. Browserstack testing - https://mediaplayout-ci.cloud.bbc.co.uk/jenkins/job/smp.browserstack.dashjs.upstream/312/ to view
    1. BBC wrote automated tests. Run under our browserstack account.
    2. Every night, it fails, due to subset of tests.
    3. Need to remove these tests because they distort results, mainly for win7.
    4. Issue #1714
  19. LMSG
    1. 3 proposals for signaling last segment
      1. LMSG signal
      2. Use segmentTimeline with r value != -1
      3. Add new endNumber property.
    2. Segment profiles attribute signals inclusion of LMSG. 4.3.5.5 of DASH IF IOPv4
    3. Issue to add
  20. CTA WAVE
    1. Device Playback task force looking to make MSE/EME playback reliable on CE devices.
    2. Dash.js relies upon underlying media platform. What issues are observed? Would like to gather info from dash.js.
    3. Submit issues directly - https://github.com/cta-wave/device-playback-task-force/issues .
  21. Improving code simplicity - which are the best candidates?
    1. IndexHandler
    2. ES5 port to ES6 (presence of var for example).
    3. Manfest parser, removing iron
    4. Removing TTML parser, adding in IMSC1
  22. MPEG-LA and DASH patent pool - affect on dash.js project and utilization
    1. Discuss at dinner
  23. Road Map 2017 - Top Ten Goals
    1. Robustness of playback
    2. Low latency live (including CMAF, MPEG).
    3. Code simplicity
    4. Ads - robustness between periods and content types.
    5. DRM – key rotation for live
    6. Even more modularity – fetching, manifest parsing,
    7. Error reporting – error codes
    8. Low performance devices (Faster startup)
    9. Tile based VR.
    10. Metrics – SAND
    11. Dead streams in demo page
    12. Multi-channel audio (verify)
    13. Understanding which features are supported.
    14. Documentation
    15. MPD Chaining
  24. Take picture

18:00 – 21:00 - GROUP DINNER AT "BOXING ROOM", 399 GROVE ST, SAN FRANCISCO


This meeting is the North American face-to-face meeting of the dash.js project on GitHub. This meeting is open to all dash.js contributors, committers and interested parties to present/discuss architectural, feature, scope and planning input for the project. The meeting is free to attend. Lunch will be provided.

This meeting is being held on Wed Dec 14th and hosted by Dolby at 1275 Market St, San Francisco, CA 94103. This is a fantastic opportunity to meet industry experts around media and explore the industry context in which dash.js resides. Finalized agenda:

08:30 - 09:00 – REGISTRATION, WELCOME COFFEE

09:00 - 12:30 – MORNING SESSION - CODE base:

  1. Demo: SAND / Annex D Metrics reporting demo
  2. Multiperiod optimzation for non-tear-down
  3. Refactoring of indexHandler
  4. Support of large numbers using big.js
  5. Retry Logic discussion
  6. Review of multi-period handling for ad insertion.
  7. Improving code simplicity - which are the best candidates?
  8. Using the new Fetch() API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API to speed up start-time with larger segments. Could implement this polyfill https://github.com/github/fetch
  9. EME key rotation
  10. Better robustness of segment duration variation for segment timeline

11:45 - 12:10 DOLBY CINEMA EXPERIENCE

12:10 - 13:10 – LUNCH, NETWORKING

13:30 - 17:00 – AFTERNOON SESSION - Features and Project:

  1. Player priority for which adaption sets to start playing – Thomas
  2. Trick Play 21 HTTP 2.0 and Dash.js (Server push)
  3. Demo of image subtitles - Subtitle status and integration of new imscJS library.
  4. Support for thumbnails (JPEG images?)
  5. W3C Clear Key support in dash.js
  6. Overall performance on Smart TVs and set-top boxes deployments (startup time, decryption, buffer pruning, ...)
  7. Automated testing of full application
  8. Browserstack testing - https://mediaplayout-ci.cloud.bbc.co.uk/jenkins/job/smp.browserstack.dashjs.upstream/312/ to view
  9. MPEG-LA and DASH patent pool - affect on dash.js project and utilization
  10. Road Map 2017 - Top Ten Goals

18:00 – 21:00 - GROUP DINNER AT "BOXING ROOM", 399 GROVE ST, SAN FRANCISCO

This event is strictly registration-only and first-come, first served. You must register to attend at:

http://dashjs-2016-san-francisco.eventbrite.com

The day's detailed agenda will be community driven.


Original wishlist for archive purposes.

  1. Refactoring of indexHandler
  2. Support of large numbers using big.js
  3. Review of multi-period handling for ad insertion.
  4. Improving code simplicity - which are the best candidates?
  5. Using the new Fetch() API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API to speed up start-time with larger segments. Could implement this polyfill https://github.com/github/fetch
  6. SAND / Annex D Metrics reporting demo
  7. EME key rotation
  8. Overall performance on Smart TVs and set-top boxes deployments (startup time, decryption, buffer pruning, ...)
  9. Subtitle status and integration of new imscJS library. Demo of image subtitles
  10. Better robustness of segment duration variation for segment timeline
  11. MPEG-LA and DASH patent pool - affect on dash.js
  12. W3C Clear Key support in dash.js
  13. Automated testing of full application
  14. Browserstack testing - https://mediaplayout-ci.cloud.bbc.co.uk/jenkins/job/smp.browserstack.dashjs.upstream/312/ to view the results. Always failing
  15. Multiperiod optimzation for non-tear-down
  16. Road Map 2017 - Top Ten Goals
  17. Retry Logic discussion
  18. Multi-Track MediaSource Teardown
  19. Support for thumbnails (JPEG images?)
  20. Trick Play
  21. HTTP 2.0 and Dash.js (Server push)
  22. Unit Test, Coverage Reporting, Feature PR must have a test in 2017
  23. Player priority for which adaption sets to start playing - Thomas
Clone this wiki locally