Commit a1d6e91
committed
ListHelper: rework video quality representation and VideoStream selection
Replace the previous string-based resolution/fps/etc. handling for VideoStreams
by parsing the 'getResolution()'-string to a data class to improve maintainability.
Video resolutions (e.g. "720p60") were previously compared and matched using
regex-based string manipulation all over the place. This was fragile,
required repeated parsing and made it difficult to extend the matching logic.
It can handle all the strings like before: "720p", "720p60"
Additionally this patch can also handle strings like: "720p60@123k", or "720p@2m"
Main changes:
- Introduce internal data class VideoQuality (resolution, fps, bitrate, formatRank).
- Introduce internal VideoStreamWithQuality to associate streams with parsed quality.
- Parse quality only once.
- Replace resolution string sorting with a comparator based on
resolution -> fps -> formatRank -> bitrate.
- Rework stream selection to use a priority-based matching algorithm
(format, resolution, fps, bitrate).
- Prefer candidates with bitrate closest to the requested one when multiple
streams match the same priority class.1 parent 5b0a7a8 commit a1d6e91
1 file changed
Lines changed: 286 additions & 139 deletions
0 commit comments