[utils] Restrict parse_codecs and add theora as known vcodec (#21381)
authorSergey M․ <dstftw@gmail.com>
Thu, 13 Jun 2019 18:56:17 +0000 (01:56 +0700)
committerSergey M․ <dstftw@gmail.com>
Thu, 13 Jun 2019 18:56:17 +0000 (01:56 +0700)
test/test_utils.py
youtube_dl/utils.py

index 71980b3fcd80f0714c30c028eec5d3ee38c18348..659c6ece53d480a5d709366ef44e29eedbec3027 100644 (file)
@@ -822,6 +822,15 @@ class TestUtil(unittest.TestCase):
             'vcodec': 'av01.0.05M.08',
             'acodec': 'none',
         })
+        self.assertEqual(parse_codecs('theora, vorbis'), {
+            'vcodec': 'theora',
+            'acodec': 'vorbis',
+        })
+        self.assertEqual(parse_codecs('unknownvcodec, unknownacodec'), {
+            'vcodec': 'unknownvcodec',
+            'acodec': 'unknownacodec',
+        })
+        self.assertEqual(parse_codecs('unknown'), {})
 
     def test_escape_rfc3986(self):
         reserved = "!*'();:@&=+$,/?#[]"
index ead9bd8628c88183e5ca0aaa7a0eb9b8fe03d836..a1f586b801a5aaa254ec63525f26ba32388b9474 100644 (file)
@@ -2529,7 +2529,7 @@ def parse_codecs(codecs_str):
     vcodec, acodec = None, None
     for full_codec in splited_codecs:
         codec = full_codec.split('.')[0]
-        if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v', 'hvc1', 'av01'):
+        if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v', 'hvc1', 'av01', 'theora'):
             if not vcodec:
                 vcodec = full_codec
         elif codec in ('mp4a', 'opus', 'vorbis', 'mp3', 'aac', 'ac-3', 'ec-3', 'eac3', 'dtsc', 'dtse', 'dtsh', 'dtsl'):
@@ -2540,13 +2540,8 @@ def parse_codecs(codecs_str):
     if not vcodec and not acodec:
         if len(splited_codecs) == 2:
             return {
-                'vcodec': vcodec,
-                'acodec': acodec,
-            }
-        elif len(splited_codecs) == 1:
-            return {
-                'vcodec': 'none',
-                'acodec': vcodec,
+                'vcodec': splited_codecs[0],
+                'acodec': splited_codecs[1],
             }
     else:
         return {