Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.0.0 (LHLS Chunked Transfer Support, IMSC1, Refactor) #2370

Closed
wants to merge 237 commits into from
Closed
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
237 commits
Select commit Hold shift + click to select a range
6faaecc
Rename events to TS.
itsjamie Apr 2, 2019
d54b9c5
Draft usage of strict event emitter.
itsjamie Apr 2, 2019
a5107bb
Merge remote-tracking branch 'origin/master' into strict-event-emitter
itsjamie May 25, 2019
02f938a
Example usage in playlist loader.
itsjamie Jun 13, 2019
d1e25a0
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Oct 9, 2019
30d0a28
removeListener
itsjamie Oct 9, 2019
0d91cf6
Adds types for Timeline Controller events.
itsjamie Oct 12, 2019
ebe7753
Undo rename of Events -> HlsEvents.
itsjamie Oct 12, 2019
fa4818d
Merge branch 'strict-event-emitter' into timeline-controller-event-types
itsjamie Oct 12, 2019
6593bb4
The payload type is ArrayBuffer
itsjamie Oct 12, 2019
5d0f6a0
Make it so eventemitter doesn't directly extend EventEmitter.
itsjamie Oct 14, 2019
9a5ddd3
Use helper methods for registering and unregistering events.
itsjamie Oct 14, 2019
f9c33ec
Add off alias for removeListener.
itsjamie Oct 14, 2019
4705095
Use delegation rather than inheritance.
itsjamie Oct 14, 2019
60e0fbb
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Oct 14, 2019
e19c00e
Fix linting issues.
itsjamie Oct 15, 2019
a8f41aa
Fix a few linting issues in playlist-loader.
itsjamie Oct 15, 2019
1b22ad7
Merge remote-tracking branch 'origin/strict-event-emitter' into timel…
itsjamie Oct 15, 2019
2d8ecb3
Merge pull request #2398 from video-dev/timeline-controller-event-types
itsjamie Oct 15, 2019
ec1e2b4
Rename `Event` -> `Events` Enum. Move from default to named export.
itsjamie Oct 15, 2019
54e213a
Do not use class fields and autobind with arrow functions.
itsjamie Oct 15, 2019
09d0ceb
Missed on last commit.
itsjamie Oct 15, 2019
702f8f1
Help with context binding with playlist-loader.
itsjamie Oct 15, 2019
40579ae
More event payloads.
itsjamie Oct 15, 2019
bb3afd3
Type payload to ArrayBuffer.
itsjamie Oct 15, 2019
c4ebef1
Convert ABR controller to use typed event emitter.
itsjamie Oct 15, 2019
a324aab
Remove listeners with same context.
itsjamie Oct 15, 2019
f027ef3
Type the rest of the abr events.
itsjamie Oct 15, 2019
356d12d
Linting fix.
itsjamie Oct 15, 2019
ce77eb6
Remove non-native text track ID.
itsjamie Oct 16, 2019
837d0a0
Typescripted events
LucasMaupin Oct 22, 2019
8b1de1e
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Oct 30, 2019
7699d08
Minor typing fixes.
itsjamie Oct 30, 2019
8b5cf8f
Merge remote-tracking branch 'origin/strict-event-emitter' into abr-c…
itsjamie Oct 30, 2019
855747a
Merge pull request #2403 from video-dev/abr-controller-event-typing
itsjamie Oct 30, 2019
1dbc3cd
Typo fix.
itsjamie Oct 30, 2019
3a37b7b
Merge branch 'feature/v1.0.0' into strict-event-emitter
itsjamie Nov 3, 2019
b695163
In process of converting controllers.
itsjamie Nov 4, 2019
1ed3844
More controller typescripting.
itsjamie Nov 5, 2019
3bac74f
Merge branch 'feature/v1.0.0' into feature/logger_events_ts
LucasMaupin Nov 12, 2019
523df0a
Convert more triggers to emits.
itsjamie Nov 15, 2019
ac806c6
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Nov 15, 2019
ff71a44
Convert fps-controller to typescript.
itsjamie Nov 15, 2019
bcfdf35
Added some more types.
itsjamie Nov 15, 2019
f0a462a
Adding more event types.
itsjamie Nov 15, 2019
5837756
Add typing to logger.js
LucasMaupin Nov 15, 2019
e855274
Remove events.js
LucasMaupin Nov 15, 2019
3f54727
Catch listener errors when not in debug mode.
itsjamie Nov 15, 2019
264665a
Lint logger.ts and events.ts files
LucasMaupin Nov 15, 2019
061a3e0
More typing of the events.
itsjamie Nov 18, 2019
c948561
Merge branch 'strict-event-emitter' of https://github.com/video-dev/h…
itsjamie Nov 18, 2019
07da07f
Work on getting tests to pass.
itsjamie Nov 25, 2019
ba1541b
Do error handling in the listener not on the emit.
itsjamie Nov 26, 2019
ef593cb
Fixing the last unit tests to use the new emit API.
itsjamie Nov 26, 2019
4a4f8b5
Merge branch 'feature/v1.0.0' into strict-event-emitter
itsjamie Nov 26, 2019
a395161
Update functional test bench to use (data) signature for events.
itsjamie Nov 26, 2019
d103942
Update demos.
itsjamie Nov 26, 2019
68aa95b
Default context of event listeners to the Hls instance.
itsjamie Nov 27, 2019
35ce938
Mute video when required to auto play functional tests
Nov 14, 2019
c3d690c
Use KEY_LOADING event.
itsjamie Nov 27, 2019
45446e2
Merge pull request #2447 from Eyevinn/feature/logger_events_ts
robwalch Dec 9, 2019
8ad6dcc
Merge branch 'upstream/master' into feature/v1.0.0
Dec 8, 2019
9222335
Fix live level details fragment merging
Dec 10, 2019
5e5a918
Merge pull request #2466 from video-dev/merge-v0.13.0-beta.3
robwalch Dec 10, 2019
d017c03
Upgrade Typescript, ESLint, Babel.
itsjamie Dec 20, 2019
742678c
Add prefer optional chain rule.
itsjamie Dec 20, 2019
b769b32
Add babel plugin for optional chaining.
itsjamie Dec 20, 2019
5c96d13
Implement optional chaining to match rule.
itsjamie Dec 20, 2019
d1d65d7
Update ESDoc fork to support optional chaining.
itsjamie Dec 30, 2019
2ca6bb8
feat: Add supported M3U8 tags
Korilakkuma Dec 30, 2019
6eec3df
fix: Replace tab to space
Korilakkuma Dec 30, 2019
6eb6eaf
fix: Fix indent
Korilakkuma Dec 30, 2019
06e48aa
Merge branch 'upstream/master' into feature/v1.0.0
Jan 8, 2020
f2dcbab
Enforce 'no-unused-vars' lint rule
Jan 8, 2020
0c4e407
Cleanup timeout calls
Jan 8, 2020
691dceb
Enforce no-case-declarations
Jan 8, 2020
8bffb8e
Fix audio gaps introduced by changes in remuxer continuity tracking
Jan 9, 2020
98191de
Update esdoc
itsjamie Jan 10, 2020
27c0874
Update esdoc to handle Babel v7 SpreadProperty -> SpreadElement.
itsjamie Jan 10, 2020
6bb71c8
Working towards making event emitter less of a breaking change.
itsjamie Jan 11, 2020
01dcc20
Fix eslint issues on demo js.
itsjamie Jan 11, 2020
050694f
Update tests to have a first parameter as the event name.
itsjamie Jan 11, 2020
07c3012
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Jan 11, 2020
2106766
Add back event name to functional test listeners.
itsjamie Jan 11, 2020
06f5253
Convert number-isFinite to TypeScript
Jan 13, 2020
1f9df56
Convert mp4-generator to TypeScript
Jan 13, 2020
4b77fff
Merge remote-tracking branch 'origin/feature/v1.0.0' into prefer-opti…
itsjamie Jan 13, 2020
c1a93d6
Match source branch unused var warning for TS.
itsjamie Jan 13, 2020
6c1c469
Remove @babel/register usage on functional tests.
itsjamie Jan 13, 2020
ea9ce12
Update chromedriver.
itsjamie Jan 13, 2020
0b5c08f
Skip large buffer holes with partial fragments when seeking
Jan 13, 2020
3bdcdbd
Convert mp4-generator to TypeScript
Jan 13, 2020
be5f2d3
Revert "Convert mp4-generator to TypeScript"
Jan 15, 2020
b9e4635
access payload via rest parameters instead of arguments object
Jan 15, 2020
b051a12
Merge pull request #2488 from Korilakkuma/feat/add-supported-m3u8-tag
robwalch Jan 15, 2020
90ab629
change MP4Types to Record<string, number[]>
Jan 16, 2020
911d77f
Merge pull request #2495 from F3n67u/feature/v1.0.0
robwalch Jan 16, 2020
f0af3fe
Merge branch 'github-hls/v1.0.0' into feature/v1.0.0
Jan 17, 2020
16aca06
Convert mpegaudio to TypeScript
Jan 17, 2020
cffc37f
return undefined implicitly
Jan 20, 2020
baa786b
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Jan 20, 2020
bc19ac2
Set AbrController to have protected fields for extension.
itsjamie Jan 20, 2020
cf97eb8
Marked BufferController events as protected available for overriding.
itsjamie Jan 20, 2020
09d978d
Mark cap-level-controller events as protected for overriding.
itsjamie Jan 20, 2020
b5e2e5d
Mark fpsController event handling as protected.
itsjamie Jan 20, 2020
723be92
Support new TypeScript features (Optional Chaining) (#2486)
itsjamie Jan 20, 2020
c8e362e
Merge remote-tracking branch 'origin/feature/v1.0.0' into strict-even…
itsjamie Jan 21, 2020
36abfbb
Strict event emitter (#2395)
itsjamie Jan 21, 2020
ab1b9db
Merge pull request #2499 from F3n67u/feature/v1.0.0-ts-mp4-generator
robwalch Jan 21, 2020
b604c4f
Use fragment stats in loaders and reset stats on load
Jan 28, 2020
e70a5d3
Remove stats assert since loader resets stats
robwalch Jan 28, 2020
ba07abc
Remove change in tsdemuxer that caused video tearing
Feb 26, 2020
43e57ca
Merge branch 'master' of https://github.com/video-dev/hls.js into fea…
Feb 27, 2020
150bbfe
[WIP] Add a demo page with a timeline chart for debugging the player …
Jan 23, 2020
10ae925
Update buffer colors
Jan 23, 2020
6cf519e
Make player and chart classes
Jan 23, 2020
14428a8
Show fragments on the timeline
Jan 25, 2020
9b506aa
Show media.currentTime on the timeline
Jan 25, 2020
6d39c53
Log object and seek on click
Jan 25, 2020
dbc2bf7
Zoom in and out with (shift key) double-click
Jan 25, 2020
dc479c3
Format time values (~hh:mm:ss.SSS) and display currentTime
Jan 25, 2020
0373b28
Chart rendering improvements
Jan 25, 2020
d33af5a
Show discontinuities ('cc: ')(> 0) in chart
Jan 27, 2020
e1d98e7
Update max zoom value based on start + totalduration + targetduration…
Jan 27, 2020
c85852a
Add additional event listeners for chart updates
Jan 27, 2020
a531a31
Improve chart height
Jan 28, 2020
05590c3
Update the "dev" script and webpack config to build and serve the tim…
Jan 29, 2020
1d44ede
Add back the id3-track-controller and render the metadata TextTrack i…
Mar 5, 2020
533ae15
Fix observer typing and errors
Mar 5, 2020
a7d4bf0
Add demo-timeline to netlify
Mar 5, 2020
8f5be19
Add demo-timeline to netlify
Mar 5, 2020
8dd6858
Fix demo metrics
Mar 5, 2020
aa4874f
Update test examples so that they autoplay muted
Mar 9, 2020
c97fc9a
Update timeline chart based on feedback
Mar 12, 2020
0c2b2a6
Fix raw duration computation when 'default_sample_duration' field is …
Apr 3, 2020
7e90e1f
Merge pull request #2625 from adrian-branescu/bugfix/default-sample-d…
robwalch Apr 17, 2020
029147e
Merge changes from v0.13.2...v0.14.0-beta.1 into feature/v1.0.0
Apr 18, 2020
d4286e1
Merge pull request #2661 from video-dev/merge-v0.14.0-beta.1-into-fea…
robwalch Apr 21, 2020
732c2c3
fix: the functional tests for "MPEG Audio Only demo" failed
Apr 28, 2020
5868bcf
refactor: perfer optional chaining
Apr 28, 2020
d698ecb
Merge remote-tracking branch 'upstream/feature/v1.0.0' into feature/v…
Apr 28, 2020
a0bcbf8
Merge branch 'feature/v1.0.0' into feature/v1.0.0-ts-mpeg-audio
Apr 28, 2020
4bf6ee9
fix: using implicit return
Apr 28, 2020
e12ba43
Fix regression in non-native track handling
Apr 28, 2020
05c2a11
Include changes to Events.NON_NATIVE_TEXT_TRACKS_FOUND from v0.14
Apr 28, 2020
105208d
Merge pull request #2505 from F3n67u/feature/v1.0.0-ts-mpeg-audio
robwalch May 1, 2020
566c94c
Merge branch 'upstream/master' into feature/v1.0.0
May 11, 2020
ad1bbef
feat: add type to discontinuities.js and fix @typescript-eslint/prefe…
May 12, 2020
4ade9b4
refactor: convert hex.js to hex.ts
May 12, 2020
95c55f8
chore(tests): Add encrypted tests to extend DRM support.
itsjamie May 13, 2020
a244799
chore: Switch conditional for downloading identity keys.
itsjamie May 14, 2020
a2be2cf
fix typo on fairplay keyformat.
itsjamie May 14, 2020
a6ffd3b
Merge pull request #2735 from video-dev/chore/add-encrypted-unit-tests
itsjamie May 17, 2020
eca7f4c
Add typings for WebVTT parser.
itsjamie May 17, 2020
906eba8
Merge pull request #2727 from F3n67u/feature/v1.0.0-ts-hex
itsjamie May 24, 2020
765155a
Add some types to usage sites for Timeline Controller.
itsjamie May 17, 2020
93decb9
Add expect error for IE11 fix for Uint8Array.prototype.slice.
itsjamie May 24, 2020
8600ec3
Set console assert as allowable console messages.
itsjamie May 24, 2020
5647110
Add additional typing to discontinuity handling.
itsjamie May 25, 2020
207704c
Merge pull request #2742 from video-dev/webvtt-parser-typings
itsjamie May 26, 2020
49a7c96
Merge pull request #2726 from F3n67u/feature/v1.0.0-ts-discontinuities
itsjamie May 26, 2020
f2ab851
initial demux/id3.js to demux/id3.ts
MartinHarkins Jun 5, 2020
6a176d2
basic typings for demux/id3.ts
MartinHarkins Jun 5, 2020
9cb23b3
Merge branch 'upstream/master' into feature/v1.0.0
Jun 8, 2020
98cf2b0
Use buffer appended event to kick off playing functional test, since …
Jun 8, 2020
409a1ab
perf: for .. of to simple for iteration
MartinHarkins Jun 11, 2020
536bb7a
Merge branch 'master' of github.com:video-dev/hls.js into merge-v0.14…
Jun 11, 2020
6c7aee5
Add audio-only with alt audio track test streams
Jun 11, 2020
b2ea274
fix pts initialize logic and test it
MartinHarkins Jun 12, 2020
4e7e935
refactor ID3 as module
MartinHarkins Jun 12, 2020
d56e428
In v1 playback begins after FRAG_CHANGED _after_ BUFFER_APPENDED
Jun 17, 2020
967ae7e
Merge pull request #2800 from video-dev/merge-v0.14.0-rc.1-into-featu…
robwalch Jun 17, 2020
d361e79
let consumers import ID3 functions as a module
MartinHarkins Jun 17, 2020
a393d10
Merge pull request #1 from MartinHarkins/demux-id3-as-module
MartinHarkins Jun 17, 2020
2f7fccc
Merge pull request #2787 from MartinHarkins/demux-id3-to-typescript
robwalch Jun 17, 2020
41addd9
feat: add support for decrypting init segments.
itsjamie Jun 17, 2020
196986b
Add onStart to Buffer Operations. Used for logging purposes now.
itsjamie Jun 18, 2020
c1e4835
Add support to getDuration for multi-trun content.
itsjamie Jun 18, 2020
768fc0e
Remove some assertions and unused imports.
itsjamie Jun 19, 2020
c05f7ec
Warn on promise chain loading issues.
itsjamie Jun 22, 2020
8ac9f55
Merge pull request #2809 from video-dev/feature/support-encrypted-fmp…
itsjamie Jun 23, 2020
4873445
Merge branch 'upstream/master' into feature/v1.0.0
Jun 25, 2020
3d6be17
Cleanup manifest and playlist RegExp
Jun 30, 2020
00596cc
Merge master into feature/v1.0.0
Jul 5, 2020
6046e48
Fix demo real-time stats
Jul 6, 2020
9478cc9
Remove live stream middle segment guess (matches v0.14.0)
Jul 6, 2020
cc5fdfd
Remove LHLS support
Jul 2, 2020
c789bd8
Merge pull request #2864 from video-dev/feature/remove-lhls-support
robwalch Jul 13, 2020
86c63bb
Merge changes from v0.14.1
Jul 13, 2020
7342b03
Merge branch 'upstream/master' into feature/v1.0.0
Jul 16, 2020
a729d17
Merge branch 'upstream/master' into feature/v1.0.0
Jul 29, 2020
a897348
Compare set sort and shift flags after PTSNormalize is applied to bot…
Jul 29, 2020
aafe3bc
Merge branch 'upstream/master' into feature/v1.0.0
Jul 30, 2020
26d79b3
Merge pull request #2928 from video-dev/task/merge-v0.14.6-into-v1
robwalch Jul 30, 2020
4293174
Fix MPEG audio append in buffer-controller
Jul 31, 2020
73a5920
Config log level in functional test runs
Jul 30, 2020
a526dbe
Silence redundant fragment selection logs
Jul 31, 2020
cef3b4c
Configure streams for audio and video buffer descrepency in buffer le…
Jul 31, 2020
fe94d51
Log duration offset tolerance in buffer test
Jul 31, 2020
346ebd9
Show multiple demo test tabs using modifier key
Aug 1, 2020
2722e73
Clear source buffers from chart when new ones are created
Aug 1, 2020
929bba1
Merge branch 'upstream/master' into feature/v1.0.0
Aug 4, 2020
dc9dc58
Merge branch 'upstream_hls.js/master' into feature/v1.0.0
Aug 7, 2020
ea9911c
Merge branch 'upstream/master' into feature/v1.0.0
Aug 7, 2020
a193e7e
Merge branch 'upstream/master' into feature/v1.0.0
Aug 14, 2020
d88e9cb
Fix mergeLivePlaylist when levelLastLoaded is 0
robwalch Aug 20, 2020
11c1655
Merge master into feature/v1.0.0
Sep 9, 2020
10897c0
Merge master into feature/v1.0.0
Sep 11, 2020
cc5ebfe
Update package-lock
Sep 12, 2020
6eaba83
Merge branch 'upstream_hls.js/master' into feature/v1.0.0
Sep 22, 2020
c741d4d
Parse Low-Latency HLS `EXT-X-SERVER-CONTROL`
Jul 3, 2020
7bbe6cf
Add #EXT-X-PART-INF:PART-TARGET=N parsing
Aug 11, 2020
07e858d
Use SERVER-CONTROL HOLD-BACK for live start time when liveDurationSyn…
Jul 30, 2020
825f294
Parse Partial Segments
Aug 11, 2020
9af55d4
Update playlist-loader tests and Supported M3u8 tags in README
Aug 12, 2020
75f42df
Improve part parsing and fragment class
Aug 15, 2020
1b5ab5d
Add delivery directive for next SN and Part 0 to live playlist reload…
Aug 5, 2020
f31cdc6
Implement base playlist controller class extended by level, audio-tra…
Aug 11, 2020
12cf1fe
Part Delivery Directive logic, Fragment update and TypeScript improve…
Aug 15, 2020
d6efd1a
Low-Latency HLS Part Loading
Aug 18, 2020
66e0a0a
Perform Low-Latency CDN Tune-in and factor in age header when selecti…
Aug 21, 2020
8cdc2cb
Cleanup fragment loader part handling and event typing
Sep 4, 2020
f3e5f6e
Use part duration in edge segments
Sep 7, 2020
d415f4d
Avoid repeated browser error log `Refused to get unsafe header "age"`…
Sep 14, 2020
e65ae7b
Improve playlist and track loading error handling
Sep 15, 2020
199bcc4
Improve playlist loading error handling and fragment tracker tracking
Sep 16, 2020
41c138e
Fix `findIndependentPart`
Sep 22, 2020
4bff403
Low-Latency HLS Delta Playlist support
Sep 24, 2020
f5294f8
Update test streams
Sep 26, 2020
929d4eb
Remove demo-timelline
Oct 2, 2020
2c00055
Remove part loading
Sep 26, 2020
1cb049d
Complete delta-playlist merging and playlist alignment
Sep 26, 2020
5b9496f
Disable part playlist refreshes when lowLatencyMode is false
Oct 2, 2020
5375bab
Remove empty audio track workaround because it causes gaps in live st…
Oct 2, 2020
9e446e6
Remove ID3 cues when buffer is flushed
Oct 3, 2020
292bbac
Merge pull request #3060 from video-dev/feature/hls-v10-support
robwalch Oct 5, 2020
3fc868f
Merge branch 'upstream_hls.js/master' into feature/v1.0.0
Oct 5, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 5 additions & 4 deletions .esdoc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
"source": "./src",
"destination": "./api-docs",
"plugins": [
{"name": "esdoc-standard-plugin"},
{"name": "esdoc-typescript-plugin", "option": {"enable": true}},
{"name": "@itsjamie/esdoc-standard-plugin"},
{"name": "@itsjamie/esdoc-typescript-plugin", "option": {"enable": true}},
{
"name": "esdoc-ecmascript-proposal-plugin",
"name": "@itsjamie/esdoc-ecmascript-proposal-plugin",
"option": {
"objectRestSpread": true
"objectRestSpread": true,
"optionalChaining": true
}
}
]
Expand Down
41 changes: 31 additions & 10 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,18 @@ module.exports = {
{
'name': 'window',
'message': 'Use `self` instead of `window` to access the global context everywhere (including workers).'
},
{
'name': 'SourceBuffer',
'message': 'Use `self.SourceBuffer`'
},
{
'name': 'setTimeout',
'message': 'Use `self.setTimeout`'
},
{
'name': 'setInterval',
'message': 'Use `self.setInterval`'
}
],

Expand All @@ -90,11 +102,10 @@ module.exports = {
'no-var': 1,
'no-empty': 1,
'no-mixed-operators': 1,
'no-unused-vars': 1,
'@typescript-eslint/no-unused-vars': 1,
'no-unused-vars': 2,
'no-console': 1,
'no-fallthrough': 1,
'no-case-declarations': 1,
'no-case-declarations': 2,
'no-irregular-whitespace': 1,
'no-self-assign': 1,
'new-cap': 1,
Expand All @@ -107,12 +118,22 @@ module.exports = {
'no-void': 0,
'no-useless-catch': 2,
'lines-between-class-members': 2,
'no-prototype-builtins': 0,
'@typescript-eslint/consistent-type-assertions': [ 2,
{
'assertionStyle': 'as',
'objectLiteralTypeAssertions': 'never'
'no-prototype-builtins': 0
},
'overrides': [
{
'files': ['*.ts'],
'rules': {
'no-unused-vars': 0,
'@typescript-eslint/no-unused-vars': 1,
'@typescript-eslint/prefer-optional-chain': 2,
'@typescript-eslint/consistent-type-assertions': [ 2,
{
'assertionStyle': 'as',
'objectLiteralTypeAssertions': 'never'
}
]
}
]
}
}
]
};
1 change: 1 addition & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ exemptLabels:
- Confirmed
- Feature proposal
- Question
- Needs Triage


# Label to use when marking an issue as stale
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ coverage/
/dist
/netlify
/api-docs
/demo-timeline/dist
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
demo
demo-timeline
docs/html
misc
test
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we publishing test sources now in the npm package? any specific reason? :)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge issue 5b7639b
Fixed

Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
api_key:
secure: "kR9xHKhWfOv6vwxz1d//PpC22VDupnPI59L9czLkpLoIdzm5rm3eV7he4XPlQfbSrV1UBgURARgF+yekmeqUZk9vqfo4F5oa+6KiBxAdnI9PjsjYRSXitdq4a6kpIR854nxUIOlDXR5AbD2MgNaKsQHiaNlngdR/870OhiwqRJVwQOLKVUADw1QWECXe/DXrQiFbMunxBrTyutbrGuI8cT7wzqFn+aPkI/3liiw8PTr93GrtxZ/bFxI899KzMSHHMXB+eDDMtxPFD+VApruD7h6f+1C0psJeOV8/PkzrRkbPELPBKKaPH9TvVOPUf2OSRHVna828wnLHwseae0rgtuk7+ZJmB9XZKX9FUBDT4/Gv/AkE+m/cwnoqaatAMJYR+yiQqsosjBLDAaTUOPHu3wBdAaR5uL5fGsSsKe3sUfSQHrv86vReNl9ETU06apmyWtsIbyhMtv98j9I+hNVjKZUI30g1ee6LgjlDlBavMk8KAbLbyBTcJlNAexj8Rppdqg+AdW7rYW+S6SgfTyyYQKTLeFwmDjfrkqzHJnk78sV18+xPLI1hbzBGp/bXaW23sLDBLLV5Sxifr8flUMkUdH28zsLCHUQ7C4GKQ19el2NZgIxSsnxRA8vGZof7OXasR4HJVjv/PSx+DN6Fi1PV1SiNBcwgPCGIIxBF7TUPxJk="
file_glob: true
file: dist/*
file: dist/*.{js,js.map}
draft: true
tag_name: $TRAVIS_TAG
target_commitish: $TRAVIS_COMMIT
Expand Down
84 changes: 84 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at the [video-dev slack](https://video-dev.org/). All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of actions.

**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the project community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
36 changes: 20 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,22 @@ Find the commit on [https://github.com/video-dev/hls.js/blob/deployments/README.
<video id="video"></video>
<script>
var video = document.getElementById('video');
if(Hls.isSupported()) {
if (Hls.isSupported()) {
var hls = new Hls();
hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
hls.on(Hls.Events.MANIFEST_PARSED, function() {
video.play();
});
}
// hls.js is not supported on platforms that do not have Media Source Extensions (MSE) enabled.
// When the browser has built-in HLS support (check using `canPlayType`), we can provide an HLS manifest (i.e. .m3u8 URL) directly to the video element through the `src` property.
// This is using the built-in support of the plain video element, without using hls.js.
// Note: it would be more normal to wait on the 'canplay' event below however on Safari (where you are most likely to find built-in HLS support) the video.src URL must be on the user-driven
// white-list before a 'canplay' event will be emitted; the last video event that can be reliably listened-for when the URL is not on the white-list is 'loadedmetadata'.
});
}
// hls.js is not supported on platforms that do not have Media Source Extensions (MSE) enabled.
// When the browser has built-in HLS support (check using `canPlayType`), we can provide an HLS manifest (i.e. .m3u8 URL) directly to the video element through the `src` property.
// This is using the built-in support of the plain video element, without using hls.js.
// Note: it would be more normal to wait on the 'canplay' event below however on Safari (where you are most likely to find built-in HLS support) the video.src URL must be on the user-driven
// white-list before a 'canplay' event will be emitted; the last video event that can be reliably listened-for when the URL is not on the white-list is 'loadedmetadata'.
else if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8';
video.addEventListener('loadedmetadata',function() {
video.addEventListener('loadedmetadata', function() {
video.play();
});
}
Expand All @@ -99,11 +99,11 @@ HTMLVideoElement control and events could be used seamlessly.
|[<img src="https://images.gunosy.com/logo/gunosy_icon_company_logo.png" width="120">](https://gunosy.com)|[<img src="https://user-images.githubusercontent.com/1480052/35802840-f8e85b8a-0a71-11e8-8eb2-eee323e3f159.png" width="120">](https://www.gl-systemhaus.de/)|[<img src="https://cloud.githubusercontent.com/assets/6525783/20801836/700490de-b7ea-11e6-82bd-e249f91c7bae.jpg" width="120">](http://nettrek.de/)|[<img src="https://cloud.githubusercontent.com/assets/244265/12556385/999aa884-c353-11e5-9102-79df54384498.png" width="120">](https://www.nytimes.com/)|
|[<img src="https://cloud.githubusercontent.com/assets/1798553/20356424/ba158574-ac24-11e6-95e1-1ae591b11a0a.png" width="120">](https://www.peer5.com/)|[<img src="https://cloud.githubusercontent.com/assets/4909096/20925062/e26e6fc8-bbb4-11e6-99a5-d4762274a342.png" width="120">](http://qbrick.com/)|[<img src="https://www.radiantmediaplayer.com/images/radiantmediaplayer-new-logo-640.jpg" width="120">](https://www.radiantmediaplayer.com/)|[<img src="https://www.rts.ch/hummingbird-static/images/logos/logo_marts.svg" width="120">](http://www.rts.ch/)|
|[<img src="https://cloud.githubusercontent.com/assets/12702747/19316434/0a3601de-9067-11e6-85e2-936b1cb099a0.png" width="120">](https://www.snapstream.com/)|[<img src="https://www.streamamg.com/wp-content/themes/barebones/_assets/images/streamamg-logo.png" width="120">](https://www.streamamg.com/)|[<img src="https://streamsharkio.sa.metacdn.com/wp-content/uploads/2015/10/streamshark-dark.svg" width="120">](https://streamshark.io/)|[<img src="https://camo.githubusercontent.com/9580f10e9bfa8aa7fba52c5cb447bee0757e33da/68747470733a2f2f7777772e7461626c6f74762e636f6d2f7374617469632f696d616765732f7461626c6f5f6c6f676f2e706e67" width="120">](http://my.tablotv.com/)|
|[<img src="https://user-images.githubusercontent.com/2803310/34083705-349c8fd0-e375-11e7-92a6-5c38509f4936.png" width="120">](https://www.streamroot.io/)|[<img src="http://vignette1.wikia.nocookie.net/tedtalks/images/c/c0/TED_logo.png/revision/20150915192527" width="120">](https://www.ted.com/)|[<img src="https://www.seeklogo.net/wp-content/uploads/2014/12/twitter-logo-vector-download.jpg" width="120">](https://twitter.com/)|[<img src="https://cloud.githubusercontent.com/assets/8201317/20566816/bc33f51c-b196-11e6-9bd3-afb71a06460b.png" width="120">](http://vwflow.com)|
|[<img src="https://user-images.githubusercontent.com/2803310/34083705-349c8fd0-e375-11e7-92a6-5c38509f4936.png" width="120">](https://www.streamroot.io/)|[<img src="http://vignette1.wikia.nocookie.net/tedtalks/images/c/c0/TED_logo.png/revision/20150915192527" width="120">](https://www.ted.com/)|[<img src="https://www.seeklogo.net/wp-content/uploads/2014/12/twitter-logo-vector-download.jpg" width="120">](https://twitter.com/)|[<img src="https://player.clevercast.com/img/clevercast.png" width="120">](https://www.clevercast.com)|
|[<img src="https://player.mtvnservices.com/edge/hosted/Viacom_logo.svg" width="120">](https://www.viacom.com/)|[<img src="https://user-images.githubusercontent.com/1181974/29248959-efabc440-802d-11e7-8050-7c1f4ca6c607.png" width="120">](https://vk.com/)|[<img src="https://s3.amazonaws.com/uploads.hipchat.com/87223/4876411/7Rybnl26ReFzlt3/jw-logo-red.png" width="120">](https://www.jwplayer.com)|[<img src="https://staticftv-a.akamaihd.net/arches/francetv/default/img/og-image.jpg?20161007" width="120">](https://www.france.tv)|
|[<img src="http://showmax.akamaized.net/e/logo/showmax_black.png" width="120">](https://tech.showmax.com)|[<img src="https://static3.1tv.ru/assets/web/logo-ac67852f1625b338f9d1fb96be089d03557d50bfc5790d5f48dc56799f59dec6.svg" width="120" height="120">](https://www.1tv.ru/) | [<img src="https://user-images.githubusercontent.com/1480052/40482633-c013ebce-5f55-11e8-96d5-b776415de0ce.png" width="120">](https://www.zdf.de) | [<img src="https://github.com/cdnbye/hlsjs-p2p-engine/blob/master/figs/cdnbye.png" width="120">](https://github.com/cdnbye/hlsjs-p2p-engine)| |
|[<img src="https://streaming.cdn77.com/live-streaming-logo-dark.png" width="120">](https://streaming.cdn77.com/)| [<img src="https://avatars0.githubusercontent.com/u/7442371?s=200&v=4" width="120">](https://r7.com/)|[<img src="https://raw.githubusercontent.com/Novage/p2p-media-loader/gh-pages/images/p2pml-logo.png" width="120">](https://github.com/Novage/p2p-media-loader)|[<img src="https://avatars3.githubusercontent.com/u/45617200?s=400" width="120">](https://kayosports.com.au)
|[<img src="https://user-images.githubusercontent.com/6701211/61649753-b3415600-ac77-11e9-9fbb-90a4d4c61628.png" width="120">](https://flosports.tv)
|[<img src="https://avatars1.githubusercontent.com/u/5279615?s=400&u=9771a216836c613f1edf4afe71cfc69d4c5657ed&v=4" width="120">](https://flosports.tv)


## Player Integration
Expand All @@ -119,6 +119,7 @@ hls.js is (being) integrated in the following players:
- [Videojs](http://videojs.com) through [videojs-contrib-hls.js](https://github.com/Peer5/videojs-contrib-hls.js). Production ready plug-in with full fallback compatibility built-in.
- [Fluid Player](https://www.fluidplayer.com)
- [OpenPlayerJS](https://www.openplayerjs.com), as part of the [OpenPlayer project](https://github.com/openplayerjs)
- [CDNBye](https://github.com/cdnbye/hlsjs-p2p-engine), a p2p engine for hls.js powered by WebRTC Datachannel.

## Chrome/Firefox integration

Expand Down Expand Up @@ -201,7 +202,7 @@ All HLS resources must be delivered with [CORS headers](https://developer.mozill
- ITU-T Rec. H.264 and ISO/IEC 14496-10 Elementary Stream
- ISO/IEC 13818-7 ADTS AAC Elementary Stream
- ISO/IEC 11172-3 / ISO/IEC 13818-3 (MPEG-1/2 Audio Layer III) Elementary Stream
- Packetized metadata (ID3) Elementary Stream
- Packetized metadata (ID3v2.3.0) Elementary Stream
- AAC container (audio only streams)
- MPEG Audio container (MPEG-1/2 Audio Layer III audio only streams)
- Timed Metadata for HTTP Live Streaming (in ID3 format, carried in MPEG-2 TS)
Expand All @@ -215,9 +216,9 @@ All HLS resources must be delivered with [CORS headers](https://developer.mozill
- Adaptive streaming
- Manual & Auto Quality Switching
- 3 Quality Switching modes are available (controllable through API means)
- Instant switching (immediate quality switch at current video position)
- Smooth switching (quality switch for next loaded fragment)
- Bandwidth conservative switching (quality switch change for next loaded fragment, without flushing the buffer)
- Instant switching (immediate quality switch at current video position)
- Smooth switching (quality switch for next loaded fragment)
- Bandwidth conservative switching (quality switch change for next loaded fragment, without flushing the buffer)
- In Auto-Quality mode, emergency switch down in case bandwidth is suddenly dropping to minimize buffering.
- Accurate Seeking on VoD & Live (not limited to fragment or keyframe boundary)
- Ability to seek in buffer and back buffer without redownloading segments
Expand All @@ -240,13 +241,16 @@ All HLS resources must be delivered with [CORS headers](https://developer.mozill
- `#EXT-X-ENDLIST` (Live playlist)
- `#EXT-X-MEDIA-SEQUENCE`
- `#EXT-X-TARGETDURATION`
- `#EXT-X-CONTINUITY`
- `#EXT-X-DISCONTINUITY`
- `#EXT-X-DISCONTINUITY-SEQUENCE`
- `#EXT-X-BYTERANGE`
- `#EXT-X-MAP`
- `#EXT-X-KEY` (https://tools.ietf.org/html/draft-pantos-http-live-streaming-08#section-3.4.4)
- `#EXT-X-PROGRAM-DATE-TIME` (https://tools.ietf.org/html/draft-pantos-http-live-streaming-18#section-4.3.2.6)
- `EXT-X-START:TIME-OFFSET=x` (https://tools.ietf.org/html/draft-pantos-http-live-streaming-18#section-4.3.5.2)
- `#EXT-X-PREFETCH`
- `#EXT-X-PREFETCH-DISCONTINUITY`

## License

Expand Down