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

Bandwidth algorithm. #325

Merged
merged 21 commits into from
Jan 10, 2024
Merged

Bandwidth algorithm. #325

merged 21 commits into from
Jan 10, 2024

Conversation

i-zolotarenko
Copy link
Contributor

No description provided.

@i-zolotarenko i-zolotarenko requested a review from mrlika January 3, 2024 16:08
@i-zolotarenko i-zolotarenko marked this pull request as draft January 3, 2024 16:08
@mrlika mrlika marked this pull request as ready for review January 10, 2024 15:15
@mrlika mrlika merged commit 1be6eb2 into v1 Jan 10, 2024
2 checks passed
@mrlika mrlika deleted the bandwidth-algorithm branch January 10, 2024 17:08
mrlika added a commit that referenced this pull request Jun 25, 2024
* Use only callbacks instead of promise creation in hls engine.

* Add segment storage initialization.

* Add peer settings options.

* Move storage cleanup logic into storage class.

* Add p2p loaders container.

* Add p2p loaders destroy logic.

* Remove unnecessary toString on string variable.

* Don't use response.arrayBuffer() if getting data from stream.

* Change peer announcement type and corresponding logic.

* Use single PeerRequestError with different types instead of lot of Error classes.

* Change peer announcement type and corresponding logic.

* Remove memory request container counters.

* Remove unnecessary segmentsToDelete from memory segment storage.

* Specific configuration for each separate shaka player instance. (#307)

* Add ability to create multiple shaka p2p-players despite the global shared library configuration.

* Remove unnecessary p2pml assignment.

* Fix issue with typo in "chunk"

* Add ability to subscribe to segments store update.

* Add stale p2p loader destroy timeout.

* Add request container http requests subscriptions.

* Add vite-plugin-node-polyfills to demo.

* Move utils to separate folder.

* Fix issues with abort looping, not handling requests in container.

* Force queue process if playback position was significantly changed.

* Add stream property to segment type.

* Fix issue with fetch result data wrong promise error handling.

* Fix issue with not clearing aborted engine request.

* Add random http loading.

* Change JsonSegmentAnnouncement type.

* Add loading through p2p to process queue.

* Change load method parameter to queue item.

* Add loggers to hybrid loader, p2p-manager.

* Add load probability to http random load.

* Show stat in Demo. Destroy p2p manager if there is no uploadable data.

* Refactor code related to stat components.

* Add loggers select to demo.

* And onPeerClose event to Peer class.

* Fix issue with wrong array buffer slicing. Modify choosing peer connection logic.

* Add peer logger. Use utf-8 string for peer ids instead of hashes.

* Remove ripemd160 package.

* Install node types. Patch bittorrent-tracker. Remove modules ignoring for browsers in bittorrent-tracker package.json.

* Sent ArrayBuffer to peer instead of Buffer. Use custom function to change string from utf-8 to hex.

* Add remain time predicting logic.

* Create universal bandwidth-approximator.

* Add bitrate adaptation logic.

* Rename p2p-loader logger.

* Use simple number variable instead of object creation.

* Modify uploading cancellation logic.

* Broadcast announcement not more than 1 time for macrotask.

* Generate user-friendly stream hash.

* Configure tsconfig module, target options.

* Change event handler name to onSegmentLoaded.

* Add core event handlers to shaka.

* Fix issues with shaka streams playback.

* Revise and refactor code.

* Move p2p files to separate p2p directory.

* Rename request container file and p2p loader and container files.

* Add request-container, storage loggers. Use queueMicrotask instead of setTimeout.

* Fix issue with skipping first segment in queue generation function.

* Add binary serialization functions.

* Remove bits file.

* P2P loader. (#305)

* Fix issue with wrong segment endTime.

* Fix issue with hls wrong segment local id.

* Add linked-map, load queue and http-loader.

* Add load queue class.

* Add segments storage.

* Add segments load logic.

* Add plugin requests promises map.

* Rewrite load queue.

* Move segment queue status determination to queue class.

* Separate main and secondary stream to different contexts.

* Remove unnecessary loader layer.

* Fix issue with not loading after moving playhead to random position.

* Rename hybrid loader file.

* Initialize playback on first segment request by plugin.

* Make storage async. Add core destroy logic.

* Use StreamWithReadonlySegments type in plugins.

* Add bandwidth approximator.

* Refactor load queue code.

* Load controlling: pure functions style. (#302)

* Refactor code, use functional style.

* Add shaka playback update handling.

* Set playback after first segment is requested.

* Remove unnecessary linked map methods.

* Use is loaded callback in queue generating function instead of segment storage instance.

* Install bittorrent-tracker and ripemd160 to core.

* Create type declaration for bittorrent tracker.

* Create P2PLoader and Peer classes.

* Move enums to separate file.

* Remove unused position core property.

* Create secondary hybrid loader only if necessary.

* Add force parameter to process queue hybrid loader method.

* Add sendCommand method to Peer.

* Add request type.

* Create and apply RequestContainer class.

* Rename settings time window properties.

* Add AbortError.

* Add streams map to hybrid loader.

* Add peer self segments map generation logic.

* Notify peers on segment loadings update.

* Fix types issues.

* Add peer events.

* Add downloadSegment method to p2p-loader. Use p2p request type in Peer class.

* Use request container in p2p-loader.

* Add receiving segment chunks logic.

* Reject promise with errors in peer class.

* Rewrite fetch segment with async await.

* Use object with booleans instead of set for segment queue statuses.

* Rename fetch segment function.

* Rename hybrid loader public method.

* Use engine callbacks instead of promise creation in core.

* Remove unnecessary getControlledPromise function from engines.

* Create hybrid loaders when necessary data is already set.

* Add progress to http loading.

* Add progress functionality to Peer class.

* Fix type issues.

* Use only callbacks instead of promise creation in hls engine.

* Add segment storage initialization.

* Add peer settings options.

* Move storage cleanup logic into storage class.

* Add p2p loaders container.

* Add p2p loaders destroy logic.

* Remove unnecessary toString on string variable.

* Don't use response.arrayBuffer() if getting data from stream.

* Change peer announcement type and corresponding logic.

* Use single PeerRequestError with different types instead of lot of Error classes.

* Change peer announcement type and corresponding logic.

* Remove memory request container counters.

* Remove unnecessary segmentsToDelete from memory segment storage.

* Fix issue with typo in "chunk"

* Add ability to subscribe to segments store update.

* Add stale p2p loader destroy timeout.

* Add request container http requests subscriptions.

* Add vite-plugin-node-polyfills to demo.

* Move utils to separate folder.

* Fix issues with abort looping, not handling requests in container.

* Force queue process if playback position was significantly changed.

* Add stream property to segment type.

* Fix issue with fetch result data wrong promise error handling.

* Fix issue with not clearing aborted engine request.

* Add random http loading.

* Change JsonSegmentAnnouncement type.

* Add loading through p2p to process queue.

* Change load method parameter to queue item.

* Add loggers to hybrid loader, p2p-manager.

* Add load probability to http random load.

* Show stat in Demo. Destroy p2p manager if there is no uploadable data.

* Refactor code related to stat components.

* Add loggers select to demo.

* And onPeerClose event to Peer class.

* Fix issue with wrong array buffer slicing. Modify choosing peer connection logic.

* Add peer logger. Use utf-8 string for peer ids instead of hashes.

* Remove ripemd160 package.

* Install node types. Patch bittorrent-tracker. Remove modules ignoring for browsers in bittorrent-tracker package.json.

* Sent ArrayBuffer to peer instead of Buffer. Use custom function to change string from utf-8 to hex.

* Add remain time predicting logic.

* Create universal bandwidth-approximator.

* Add bitrate adaptation logic.

* Rename p2p-loader logger.

* Use simple number variable instead of object creation.

* Modify uploading cancellation logic.

* Broadcast announcement not more than 1 time for macrotask.

* Generate user-friendly stream hash.

* Configure tsconfig module, target options.

* Change event handler name to onSegmentLoaded.

* Add core event handlers to shaka.

* Fix issues with shaka streams playback.

* Revise and refactor code.

* Move p2p files to separate p2p directory.

* Rename request container file and p2p loader and container files.

* Add request-container, storage loggers. Use queueMicrotask instead of setTimeout.

* Fix issue with skipping first segment in queue generation function.

* Add binary serialization functions.

* Remove bits file.

---------

Co-authored-by: Igor Zolotarenko <[email protected]>
Co-authored-by: Andriy Lysnevych <[email protected]>

* Add number and array binary serialization functions.

* Add array compression function.

* Rewrite using bigint.

* Fix issue with wrong bitwise operation.

* Change similar int serialization algorithm.

* Complete similar int array serialization algorithm.

* Refactor code and apply serialization.

* Fix errors.

* Change removing/creating new p2p loader order.

* Add clappr player.

* Add hls.js clappr player.

* Fix eslint warnings.

* Add shaka clappr player.

* Fix lint warnings.

* Disable no explicit any rule for demo.

* Refactor code.

* Change comment.

* Use common approach for hls and dash in shaka.

* Refactor, simplify and optimize getting segment references in shaka-player.

* Safe hls subscription/unsubscription to/from events.

* Clearing and disposing for shaka engine.

* Destroy hls instance.

* Fix type errors.

* Fix bug.

* Delegate control to process queue. (#313)

* Reduce LoadProgress object type.

* Create microtask for process queue.

* Add event dispatcher class.

* Create Request class.

* Move Request file to separate file.

* Change style of bittorrent-tracker declarations event handlers types.

* Create P2PTrackerClient class to encapsulate peer connection logic.

* Add TODO task.

* Add requests error handling.

* Fix types errors.

* P2P announce segments on http requests state change.

* Fix bugs.

* Make broadcastAnnouncement method as function expression.

* Refactor Request code. Create separate flows for each type of abort.

* Remove event subscriptions to request instance.

* Fix type errors.

* Fix bugs.

* Fix lint warnings.

* Move P2P tracker client to separate file.

* Fix more bugs. Rewrite loggers.

* Remove unused code.

* Use function declaration instead of expression.

---------

Co-authored-by: Igor Zolotarenko <[email protected]>

* Compare hls instances on each manifest loading in hls js integration.

* Remove decoration utils.

* Use md5 algorithm. Generate 15 bytes hash (1 byte truncate).

* Use one decimal in segment id. Other truncate.

* Structure binary commands code. Fix bugs.

* Add PeerRequestSegmentCommand.

* Don't add empty arrays to binary command representation.

* Remove inner types file.

* Split too large command buffer into chunks.

* Send split command.

* Receive splited to chunks command.

* Add string serialization.

* Fix bug.

* Cancel last commit changes.

* Fix prettier warnings.

* Add ability to resume segment downloading starting from certain byte.

* Rename file.

* Add peer destroy logger. Fix type error.

* Add errors handling.

* Update dependencies. (#321)

* Update dependencies.

* Check hls.js versions.

---------

Co-authored-by: Igor Zolotarenko <[email protected]>

* Live stream delay. (#318)

* Fix issue with segment index.

* Add try catch block to hook segment index method.

* Fix bug.

* Fix bug.

* Multiply to 2 to get segment id from start time.

* Substitute segment index get method immediately if it already exists.

* Set live edge delay.

* Use more common configuration approach for shaka-player.

* Rename method.

---------

Co-authored-by: Igor Zolotarenko <[email protected]>

* Rename file.

* Refactor http loader. Throw error and clear already loaded data on bytes mismatch.

* Add SegmentDataSendingCompleted command.

* Failed attempts clear interval.

* Throw http unexpected status code error.

* Clear failed attempts list after 60 seconds after last error.

* Fix type error.

* Bandwidth calculator. (#323)

* Rename file.

* Add bandwidth calculator.

* Add bandwidth calculator.

* Git use another approach. Suppress loading intervals together.

* Use time shift instead of loading intervals.

---------

Co-authored-by: Igor Zolotarenko <[email protected]>

* Playhead position change bug. (#324)

* Fix issue with not loading requested by engine segment.

* Fix types error.

* Bandwidth algorithm. (#325)

* Add ability to get bandwidth for last N not spliced seconds.

* Get from engines additional stream info (is live, active stream bandwidth)

* Pass multiple bandwidth calculators of different types to hybrid loader and requests.

* Return generator from generateQueue function.

* Add shaka segment index reading optimisation.

* Revise queue generation algorithm.

* Fix issue with load stalling after abrupt position changing.

* Fix issue with engine request has been already settled.

* Enhance bandwidth algorithm.

* Fix lint errors.

* Make CLEAR_THRESHOLD_MS a class field

* Rename methods

* Remove LinkedMap class

* Remove redundant comment

* Rename downloadProgressRatio

* Rename to queueDownloadRatio

* Move demo to shorter folder

* Open browser on demo start

* Update dependencies

* Fix GitHub Actions

---------

Co-authored-by: Igor Zolotarenko <[email protected]>
Co-authored-by: Andriy Lysnevych <[email protected]>

* Fix DPlayer not playing in Safari

* ShakaPlayer on macOS fixes

* Fix issues

* Use the latest Clappr player for the demo

* Improve Prettier and ESLint configuration

* Update packages

* pnpm: run demo from root

* Add favicon to the demo

* Update dependencies

* Small refactoring

* Improve enum usage

* Refactoring

* Refactoring of peer protocol handling

* Reset downloading error on successful download

* peerId generation (#327)

* peerId generation

* improvements

* vite-env

* pnpm-lock

* vite-env in demo

* improvements

* Typed linter (#330)

* WIP: fixing linter issues

* WIP: fix hls.js types

* WIP: hls.js types fixes

* WIP: shaka types

* Finish with types

* Update CodeQL action

* Configuration update

* Improve

* Fix/console-warnings (#331)

* console-warnings

* Simplify types

* Test CodeQL

* Update actions

* Delete test file

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* refactored naming (#333)

* Hls.js live eadge delay autodetection (#334)

* userConfig

* added type check

* Fix types

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Fix: limit versions in demo (#335)

* fix/limit-versions

* stick-to-major-version

* stick-to-major-version

* Refactor: umd bundle to esm bundle (#338)

* esm bundle

* nodePolyfills

* modules-demo

* Update demo.js

* Update index.html

* Update dependencies

* Add link to ES modules demo page

* Fix demo

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* dash-shaka-playback from npm

* Feat: Segment validation (#336)

* segment validation

* improvements

* test func

* error type

* fixed p2p segment validation

* Revert abort callback type

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* FIX: "debug" dependency (#339)

* dependencies update

* Fix debug module import style

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Feat: event emitter (#340)

* event emitter

* Fix types

* Fix file name

* Add event dispatcher optimization

* Create listeners once

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Fix: dev server & pnpm scripts improved (#342)

* fix-dev-server&pnpm-clean-improved

* clean scripts

* Make pnpm calls consistent across projects

* Fix json syntax

* Refactor linter and type check configuration

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Fix tsconfig.node.json (#345)

* Feat: setup http request callback (#344)

* setup http request callback

* improvements

* async func

* abort signal

* Refactor: event dispatcher (#343)

* improved event dispatcher

* refactored segment-storage

* fixed mistake in dispatchEvent

* fixed type

* Feat: core events (#346)

* segment events

* peer events

* chunk events

* types refactored

* Updated core events

* Chunk events

* RequestError moved to public type

* peer protocol

* added documentation for core events

* added type DownloadSource

* changed type to downloadSource

* significantly reduced description of events

* Removed interface extension

* onSegmentLoaded moved to request.ts

* refactor naming

* removed unsuded var from demo

* Feat: Config (#347)

* core config

* shaka

* hls

* removed hls userconfig from engine

* fixed demo

* dynamic config change

* changed config type to omit

* zero config

* deep merge

* Dynamic config for core

* refactored tracker-client config

* get core config

* removed readonly from settings

* refactored deep merge

* refactored core config & naming

* simplified deepConfigMerge

* added shaka & hls engine config

* export types

* Small refactoring (#348)

* internal-types (#349)

* Refactoring

* Fix naming

* Refactor index.ts

* Refactoring

* Improve core configuration

* swarmId & trackerClientVersionPrefix core config fields

* Update dependencies

* Refactor config to be readonly

* Rename Hlsjs to HlsJs

* Update dependencies recursively

* Better logging

* Feat: npm autodeploy (#350)

* npm-publish workflow

* Update .github/workflows/npm-publish.yml

* improvements

* publish on tags

* removed deprecated command

* Rewrited npm-publish action

* added support for different versions

* removed redundant func since it doesn't affect logic

* removed auto commit

* updated packages.json for npm publish

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* deleted unused scripts from packages

* API changes (#351)

* WIP: better API

* injectP2PMixin

* Make callbacks private

* Improve P2P mixin types

* Validate shaka

* Rename Hls.js Engine class

* Rename Shaka P2P engine class

* Final fixes and renaming

* added package p2p-demo

* updated pnpm-lock

* added peerDependencies

* updated build config

* Fix Clappr player stats

* simplified config

* added main file in package.json

* Update demo/package.json

* improvements

* update pnpm-lock

* removed vite from demo package

* removed vite from demo devDependencies

* added version support for demo package

* deleted tsconfig.node.json

* playback options

* added cleanupfunc & removed stream select

* hls player

* fixed videocontainer ref

* removed unused code

* defaultValue for input

* useQueryParams

* player components

* deleted App.tsx to prevent merge conflict

* Revert "Fix Clappr player stats"

This reverts commit 8ff5c40.

* Graph network

* core version from packageJson

* improved graph options

* revised & improved code

* refactor

* pnpm-lock

* Feat/demo (#352)

* deleted unused scripts from packages

* added package p2p-demo

* updated pnpm-lock

* added peerDependencies

* updated build config

* simplified config

* added main file in package.json

* Update demo/package.json

* improvements

* update pnpm-lock

* removed vite from demo package

* removed vite from demo devDependencies

* added version support for demo package

* deleted tsconfig.node.json

* playback options

* added cleanupfunc & removed stream select

* hls player

* fixed videocontainer ref

* removed unused code

* defaultValue for input

* useQueryParams

* player components

* Graph network

* core version from packageJson

* improved graph options

* revised & improved code

* refactor

* pnpm-lock

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* FEAT: Download stats chart (#353)

* simplified jsx

* chart draft with 1 value

* chart draft

* draft stacked area chart

* draft of chart with fake data

* implemented chart with fake data

* chart with real stat

* added legend with stored data

* colors moved to constants

* added percentage calculation

* Chart legend moved to separate component

* implemented chart legends

* refactored naming

* resolved all TS-type-errors

* spacing for readability

* renamed chart component

* fixed margin of svg container

* d3 types moved to dev deps

* improvements

* mbit/s

* removed unused deps

* resolved merge conflicts

* Refactor: network graph (#357)

* simplified jsx

* chart draft with 1 value

* chart draft

* draft stacked area chart

* draft of chart with fake data

* implemented chart with fake data

* chart with real stat

* added legend with stored data

* colors moved to constants

* added percentage calculation

* Chart legend moved to separate component

* implemented chart legends

* refactored naming

* resolved all TS-type-errors

* spacing for readability

* renamed chart component

* fixed margin of svg container

* d3 types moved to dev deps

* improvements

* mbit/s

* removed unused deps

* button to create new peer

* draft of graph network

* draft of graph

* GraphNetwork with fake data

* NetworkGraph with real data

* types

* component moved to folder

* removed custom data generation

* changed transition time on exit

* pnpm-lock

* pnpm

* improvements

* type improvements

* changed link type

* Feat: responsive layout (#359)

* simplified jsx

* chart draft with 1 value

* chart draft

* draft stacked area chart

* draft of chart with fake data

* implemented chart with fake data

* chart with real stat

* added legend with stored data

* colors moved to constants

* added percentage calculation

* Chart legend moved to separate component

* implemented chart legends

* refactored naming

* resolved all TS-type-errors

* spacing for readability

* renamed chart component

* fixed margin of svg container

* d3 types moved to dev deps

* improvements

* mbit/s

* removed unused deps

* button to create new peer

* draft of graph network

* draft of graph

* GraphNetwork with fake data

* NetworkGraph with real data

* types

* component moved to folder

* removed custom data generation

* changed transition time on exit

* pnpm-lock

* pnpm

* improvements

* type improvements

* changed link type

* implemented responsive layout

* implemented debug options

* fixed debugger

* dimensions improvements

* custom trackers

* small improvements

* removed refs from d3 files

* vite bundler

* tsc compile improvements

* fixed default trackers

* Fixes

* refactored responsive layout

* layout css

* updated css imports

* refactored useQueryParams hook

* implemented resize with ResizeObserver

* separated types

* pnpm updated to 9.0.0

* separated logic for a better readability

* improvements

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Feat: players (#361)

* hls clappr & dplayer

* vime player

* plyr player

* plyr instance

* openPlayer

* added opt groups in playback options

* shaka player

* separated player's props

* shaka DPlayer

* Shaka Clappr

* Clappr declaration

* Add PlayerEvents type

* Plyr imporvements

* OpenPlayer improvements

* Simplified hls configuration with getConfiguredHlsInstance

* simplified shakaP2PEngine configuration

* mediaelement test

* simplified render func

* shaka import improvements

* fixed playback options

* Clappr shakaP2PEngine

* shaka Plyr

* p2p engine destroy

* refactored HLS integration in players

* hls mediaElement player container

* configure shaka events

* Plyr improvements

* remove window.Hls on cleanup

* refactored cleanup logic for openPlayer

* small adjustments

* small adjustments

* MediaElement bug fixed

* shaka improvements

* clappr styles

* shaka clappr

* type declaration

* global declaration

* fixed type errors

* Add HLS & shaka support check and error message for unsupported browsers

* Refactor useQueryParams hook to improve readability and performance

* add custom quality selector for hlsjs player

* Fix select-container alignment issue in Hlsjs.css

* removed redundant code

* Add playsInline attribute to video elements in players

* test vime with mp4

* Add vidstack player

* Update HLS provider library

* Improve types

* simplified vidstack player setup

* p2p config improvements

* fix type error

* changed default player

* added debug mode from query params

* Removed Vime player since it will be deprecated

* fixed naming

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Feat/docs (#362)

* hls clappr & dplayer

* vime player

* plyr player

* plyr instance

* openPlayer

* added opt groups in playback options

* shaka player

* separated player's props

* shaka DPlayer

* Shaka Clappr

* Clappr declaration

* Add PlayerEvents type

* Plyr imporvements

* OpenPlayer improvements

* Simplified hls configuration with getConfiguredHlsInstance

* simplified shakaP2PEngine configuration

* mediaelement test

* simplified render func

* shaka import improvements

* fixed playback options

* Clappr shakaP2PEngine

* shaka Plyr

* p2p engine destroy

* refactored HLS integration in players

* hls mediaElement player container

* configure shaka events

* Plyr improvements

* remove window.Hls on cleanup

* refactored cleanup logic for openPlayer

* small adjustments

* small adjustments

* MediaElement bug fixed

* shaka improvements

* clappr styles

* shaka clappr

* type declaration

* global declaration

* fixed type errors

* Add HLS & shaka support check and error message for unsupported browsers

* Refactor useQueryParams hook to improve readability and performance

* add custom quality selector for hlsjs player

* Fix select-container alignment issue in Hlsjs.css

* removed redundant code

* Add playsInline attribute to video elements in players

* test vime with mp4

* Add vidstack player

* Update HLS provider library

* Improve types

* simplified vidstack player setup

* p2p config improvements

* fix type error

* changed default player

* added debug mode from query params

* Removed Vime player since it will be deprecated

* fixed naming

* jsdoc

* refactor types

* add typedoc configuration for p2p-media-loader packages

* add typedoc configuration for p2p-media-loader packages

* added plugin for typedoc

* updated main README file

* Improved core config jsdoc

* main readme files improvements

* typedoc config

* add docs to gitignore

* jsdoc improvements

* updated applyDynamicConfig method parameter types in HlsJsP2PEngine and ShakaP2PEngine

* updated video players to autoplay and mute by default

* updated video player styles for better aspect ratio control

* updated HlsjsClapprPlayer initialization in engine.ts

* removed member visibility section

* api doc

* refactor:  Shaka player initialization and video container handling

* updated with new player examples

* refactored video player initialization and container handling

* improved readability

* updated API documentation link in README.md

* small fix in api docs

* api docs improvements

* improved scrollbar styling in typedoc

* Improve video player initialization and container handling

* Add error logging for player initialization in HlsjsOpenPlayer and ShakaPlyr

* Removed categorizeByGroup from typedoc.json

* Updated import URLs for p2p-media-loader-core and p2p-media-loader-hlsjs

* Updated event names and parameters for peer events

* Removed DeepReadOnly type

* Refactored naming

* Improved api docs

* Improve types

* Fix linter issues

* Updated README in packages

* Updated FAQ.md

* Improved FAQ.md

* Updated FAQ.md

---------

Co-authored-by: Andriy Lysnevych <[email protected]>

* Fixed httpwindow download

* Refactored proccess queue

* Updated httpDownloadTimeWindow and p2pDownloadTimeWindow in CoreConfig

* Naming and documentation fixes

* Updated openplayerjs

* Refactored randomTimeout

* fixed timewindow naming

* Refactored loadRandomThroughHttp  logic

* Removed statuses in requests

* randomized segmentsToDownload

* Updated values in CoreConfig

* Refactored segment loading logic for hybrid loader

* Small improvements to loadRandomThroughHttp

* Improvements

* Improved config

* Updated CoreConfig values and apply dynamic configuration changes

* Updated dynamic configuration example in Hls.js engine

* Fix: segment abort issue &  added requestProcessQueueCallback in peer (#365)

* improvements

* Fix segment abort issue

* Refactor requestProcessQueueCallback

* Refactor segment event details types

* Small improvements

* Fixed onSegmentAnnouncement

* Update hybrid-loader.ts

* Refactor: docs (#366)

* improvements

* Fix segment abort issue

* Refactor requestProcessQueueCallback

* Refactor segment event details types

* Small improvements

* Fixed onSegmentAnnouncement

* Refactor core types docs

* Refactor engine types

* Revert "Refactor engine types"

This reverts commit e7cda7c.

* Refactor engine types

* Removed question in FAQ

* Removed "ts-essentials" from dependencies

* Refactor segment storage expiration logic

* Fix typedoc props sorting

* Updated cachedSegmentExpiration to undefined for VOD streams and use default value for live streams

* Small adjustments

* Feat: Extended config (#368)

* Add main & secondary stream configs

* Refactor dynamic configuration handling in Core.applyDynamicConfig

* Refactored types

* Fix jsdoc in types

* Refactor mergeConfigs function to use Object.create(null)

* Refactor mergeConfigs function to handle restricted properties

* Fix types

* Refactor core to use StreamConfig instead of CoreConfig

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use StreamConfig instead of CoreConfig

* Add tests for core utils

* Update eslint config to ignore test folder

* Refactor core configuration to use DefinedCoreConfig

* Refactor overrideConfig

* Small improvements

* Small improvements

* Feat: isP2PDisabled (#369)

* Add main & secondary stream configs

* Refactor dynamic configuration handling in Core.applyDynamicConfig

* Refactored types

* Fix jsdoc in types

* Refactor mergeConfigs function to use Object.create(null)

* Refactor mergeConfigs function to handle restricted properties

* Fix types

* Refactor core to use StreamConfig instead of CoreConfig

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use StreamConfig instead of CoreConfig

* Add tests for core utils

* Update eslint config to ignore test folder

* Refactor core configuration to use DefinedCoreConfig

* Refactor overrideConfig

* Small improvements

* Small improvements

* Add isP2PDisabled in static stream configuration

* Refactor applyDynamicConfig method to handle changes in isP2PDisabled and stream configurations

* Refactor Peer class connection event handling

* Refactor segment loading logic to improve P2P functionality

* Refactor stream configuration handling in Core.applyDynamicConfig

* Simplified dynamic configuration handling

* Improved CoreConfig description in documentation

* Remove redundant comments from codebase

* Refactor segment loading logic to improve P2P functionality

* Refactor naming for enhanced readability

* Refactor segment loading logic to handle P2P functionality

* Refactor error handling in RequestsContainer.destroy method

* Improved naming

* Improvements in Core and RequestsContainer

* Refactor Peer class connection event listeners

* Refactor error handling in catch block

* Refactor Peer class connection event listeners and add missing event handlers

* Refactor peer-connection (#370)

* Add main & secondary stream configs

* Refactor dynamic configuration handling in Core.applyDynamicConfig

* Refactored types

* Fix jsdoc in types

* Refactor mergeConfigs function to use Object.create(null)

* Refactor mergeConfigs function to handle restricted properties

* Fix types

* Refactor core to use StreamConfig instead of CoreConfig

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use partial updates in HlsJsP2PEngine and ShakaP2PEngine

* Refactor core configuration to use StreamConfig instead of CoreConfig

* Add tests for core utils

* Update eslint config to ignore test folder

* Refactor core configuration to use DefinedCoreConfig

* Refactor overrideConfig

* Small improvements

* Small improvements

* Add isP2PDisabled in static stream configuration

* Refactor applyDynamicConfig method to handle changes in isP2PDisabled and stream configurations

* Refactor Peer class connection event handling

* Refactor segment loading logic to improve P2P functionality

* Refactor stream configuration handling in Core.applyDynamicConfig

* Simplified dynamic configuration handling

* Improved CoreConfig description in documentation

* Remove redundant comments from codebase

* Refactor segment loading logic to improve P2P functionality

* Refactor naming for enhanced readability

* Refactor segment loading logic to handle P2P functionality

* Refactor error handling in RequestsContainer.destroy method

* Improved naming

* Improvements in Core and RequestsContainer

* Refactor Peer class connection event listeners

* Refactor error handling in catch block

* Refactor Peer class connection event listeners and add missing event handlers

* Refactor peer-connection

* Resolved type error

* Rename master to main

* Fix docs and terminology

* Use default swarm ID in the demo

* Move vitest to dev dependencies

* Fix dependencies

* Fixes

* Rename local to runtime

* Update documentation

* NPM version badge

* Add build badge

---------

Co-authored-by: Igor Zolotarenko <[email protected]>
Co-authored-by: Igor Zolotarenko <[email protected]>
Co-authored-by: i-zolotarenko <[email protected]>
Co-authored-by: igor <[email protected]>
Co-authored-by: Dmytro Demchenko <[email protected]>
Co-authored-by: DimaDemchenko <[email protected]>
Co-authored-by: DimaDemchenko <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants