Skip to content

Commit a1d6e91

Browse files
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

File tree

0 commit comments

Comments
 (0)