UNPKG

rx-player

Version:
59 lines (38 loc) 2.31 kB
# RxPlayer core | Consideration | Status | | ----------------------- | ------------------------------------------ | | Preferred import style | Depends on the environment [1] | | Multithread environment | Should be runnable in a WebWorker entirely | [1] In a Multithreading mode, only the `types` file should probably be imported by external code (to ensure a small bundle size). In a monothreading mode, no import strategy is enforced. ## Overview The "core" regroups multiple modules constituting the central logic of the RxPlayer which can optionally run in a WebWorker environment. Those modules are: - **the `Core Main` (\_./main)** Make the link between the "main thread" part of the code and the core. When the core runs in a WebWorker, this is the part receiving and handling messages from the main thread. - **the `AdaptiveRepresentationSelector` (./adaptive)** Helps to choose the best quality in the current content by analyzing the current network, user settings and viewing conditions. - **the `Stream` (./stream)** Choose which media segments to download and push them to media buffers (here called the `SegmentSinks`) to then be able to decode them. - **the `SegmentSinks` (./segment_sinks)** Implement media sinks on which loaded segments will be pushed. The corresponding media data contained in them will then be decoded at the right time. Those can depend on browser buffers implementations (for example for audio and video contents, we rely on `SourceBuffer` JS objects) or may be completely defined in the code (for example, text track buffers in the `"html"` `textTrackMode` are entirely defined in the RxPlayer). Those `SegmentSinks` include an inventory which allows to retrieve the metadata about every segments that is still contained within it. - **the `fetchers` (./fetchers)** Link the `transports` module with the rest of the code, to download segments, download/refresh the manifest and collect data (such as the user's bandwidth) for the other modules. - **the `CmcdDataBuilder` (./cmcd)** Perform data collection and retrieval for the "Common Media Client Data" scheme, which is a specification allowing to communicate about playback conditions with a CDN.