mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[utils] FormatSorter: Improve size and br
				
					
				
			Closes #1596 Previously, when some formats have accurate size and some approximate, the ones with accurate size was always prioritized For formats with known tbr and unknown vbr/abr, we were setting (vbr=tbr, abr=0) for sorting to work. This is no longer needed. Authored by pukkandan, u-spec-png
This commit is contained in:
		| @@ -917,8 +917,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | |||||||
|                     'acodec': 'mp4a.40.2', |                     'acodec': 'mp4a.40.2', | ||||||
|                     'video_ext': 'mp4', |                     'video_ext': 'mp4', | ||||||
|                     'audio_ext': 'none', |                     'audio_ext': 'none', | ||||||
|                     'vbr': 263.851, |  | ||||||
|                     'abr': 0, |  | ||||||
|                 }, { |                 }, { | ||||||
|                     'format_id': '577', |                     'format_id': '577', | ||||||
|                     'format_index': None, |                     'format_index': None, | ||||||
| @@ -936,8 +934,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | |||||||
|                     'acodec': 'mp4a.40.2', |                     'acodec': 'mp4a.40.2', | ||||||
|                     'video_ext': 'mp4', |                     'video_ext': 'mp4', | ||||||
|                     'audio_ext': 'none', |                     'audio_ext': 'none', | ||||||
|                     'vbr': 577.61, |  | ||||||
|                     'abr': 0, |  | ||||||
|                 }, { |                 }, { | ||||||
|                     'format_id': '915', |                     'format_id': '915', | ||||||
|                     'format_index': None, |                     'format_index': None, | ||||||
| @@ -955,8 +951,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | |||||||
|                     'acodec': 'mp4a.40.2', |                     'acodec': 'mp4a.40.2', | ||||||
|                     'video_ext': 'mp4', |                     'video_ext': 'mp4', | ||||||
|                     'audio_ext': 'none', |                     'audio_ext': 'none', | ||||||
|                     'vbr': 915.905, |  | ||||||
|                     'abr': 0, |  | ||||||
|                 }, { |                 }, { | ||||||
|                     'format_id': '1030', |                     'format_id': '1030', | ||||||
|                     'format_index': None, |                     'format_index': None, | ||||||
| @@ -974,8 +968,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | |||||||
|                     'acodec': 'mp4a.40.2', |                     'acodec': 'mp4a.40.2', | ||||||
|                     'video_ext': 'mp4', |                     'video_ext': 'mp4', | ||||||
|                     'audio_ext': 'none', |                     'audio_ext': 'none', | ||||||
|                     'vbr': 1030.138, |  | ||||||
|                     'abr': 0, |  | ||||||
|                 }, { |                 }, { | ||||||
|                     'format_id': '1924', |                     'format_id': '1924', | ||||||
|                     'format_index': None, |                     'format_index': None, | ||||||
| @@ -993,8 +985,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | |||||||
|                     'acodec': 'mp4a.40.2', |                     'acodec': 'mp4a.40.2', | ||||||
|                     'video_ext': 'mp4', |                     'video_ext': 'mp4', | ||||||
|                     'audio_ext': 'none', |                     'audio_ext': 'none', | ||||||
|                     'vbr': 1924.009, |  | ||||||
|                     'abr': 0, |  | ||||||
|                 }], |                 }], | ||||||
|                 { |                 { | ||||||
|                     'en': [{ |                     'en': [{ | ||||||
|   | |||||||
| @@ -5669,6 +5669,7 @@ def orderedSet_from_options(options, alias_dict, *, use_regex=False, start=None) | |||||||
|     return orderedSet(requested) |     return orderedSet(requested) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | # TODO: Rewrite | ||||||
| class FormatSorter: | class FormatSorter: | ||||||
|     regex = r' *((?P<reverse>\+)?(?P<field>[a-zA-Z0-9_]+)((?P<separator>[~:])(?P<limit>.*?))?)? *$' |     regex = r' *((?P<reverse>\+)?(?P<field>[a-zA-Z0-9_]+)((?P<separator>[~:])(?P<limit>.*?))?)? *$' | ||||||
| 
 | 
 | ||||||
| @@ -5717,8 +5718,10 @@ class FormatSorter: | |||||||
|         'source': {'convert': 'float', 'field': 'source_preference', 'default': -1}, |         'source': {'convert': 'float', 'field': 'source_preference', 'default': -1}, | ||||||
| 
 | 
 | ||||||
|         'codec': {'type': 'combined', 'field': ('vcodec', 'acodec')}, |         'codec': {'type': 'combined', 'field': ('vcodec', 'acodec')}, | ||||||
|         'br': {'type': 'combined', 'field': ('tbr', 'vbr', 'abr'), 'same_limit': True}, |         'br': {'type': 'multiple', 'field': ('tbr', 'vbr', 'abr'), | ||||||
|         'size': {'type': 'combined', 'same_limit': True, 'field': ('filesize', 'fs_approx')}, |                'function': lambda it: next(filter(None, it), None)}, | ||||||
|  |         'size': {'type': 'multiple', 'field': ('filesize', 'fs_approx'), | ||||||
|  |                  'function': lambda it: next(filter(None, it), None)}, | ||||||
|         'ext': {'type': 'combined', 'field': ('vext', 'aext')}, |         'ext': {'type': 'combined', 'field': ('vext', 'aext')}, | ||||||
|         'res': {'type': 'multiple', 'field': ('height', 'width'), |         'res': {'type': 'multiple', 'field': ('height', 'width'), | ||||||
|                 'function': lambda it: (lambda l: min(l) if l else 0)(tuple(filter(None, it)))}, |                 'function': lambda it: (lambda l: min(l) if l else 0)(tuple(filter(None, it)))}, | ||||||
| @@ -5949,13 +5952,15 @@ class FormatSorter: | |||||||
|             format['preference'] = -100 |             format['preference'] = -100 | ||||||
| 
 | 
 | ||||||
|         # Determine missing bitrates |         # Determine missing bitrates | ||||||
|         if format.get('tbr') is None: |         if format.get('vcodec') == 'none': | ||||||
|             if format.get('vbr') is not None and format.get('abr') is not None: |             format['vbr'] = 0 | ||||||
|                 format['tbr'] = format.get('vbr', 0) + format.get('abr', 0) |         if format.get('acodec') == 'none': | ||||||
|         else: |             format['abr'] = 0 | ||||||
|             if format.get('vcodec') != 'none' and format.get('vbr') is None: |         if not format.get('vbr') and format.get('vcodec') != 'none': | ||||||
|                 format['vbr'] = format.get('tbr') - format.get('abr', 0) |             format['vbr'] = try_call(lambda: format['tbr'] - format['abr']) or None | ||||||
|             if format.get('acodec') != 'none' and format.get('abr') is None: |         if not format.get('abr') and format.get('acodec') != 'none': | ||||||
|                 format['abr'] = format.get('tbr') - format.get('vbr', 0) |             format['abr'] = try_call(lambda: format['tbr'] - format['vbr']) or None | ||||||
|  |         if not format.get('tbr'): | ||||||
|  |             format['tbr'] = try_call(lambda: format['vbr'] + format['abr']) or None | ||||||
| 
 | 
 | ||||||
|         return tuple(self._calculate_field_preference(format, field) for field in self._order) |         return tuple(self._calculate_field_preference(format, field) for field in self._order) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan