|
8 | 8 | import importlib.resources |
9 | 9 | import os |
10 | 10 | import typing |
11 | | -from pathlib import Path |
12 | 11 | from dataclasses import dataclass, field |
| 12 | +from pathlib import Path |
13 | 13 |
|
14 | 14 | from benchmark_decoders_library import ( |
15 | 15 | AbstractDecoder, |
|
20 | 20 | TorchAudioDecoder, |
21 | 21 | TorchCodecCore, |
22 | 22 | TorchCodecCoreBatch, |
23 | | - TorchCodecCoreNonBatch, |
24 | 23 | TorchCodecCoreCompiled, |
| 24 | + TorchCodecCoreNonBatch, |
25 | 25 | TorchCodecPublic, |
26 | 26 | TorchVision, |
27 | 27 | ) |
28 | 28 |
|
| 29 | + |
29 | 30 | @dataclass |
30 | 31 | class DecoderKind: |
31 | 32 | display_name: str |
32 | 33 | kind: typing.Type[AbstractDecoder] |
33 | 34 | default_options: dict = field(default_factory=dict) |
34 | 35 |
|
| 36 | + |
35 | 37 | decoder_registry = { |
36 | 38 | "decord": DecoderKind("DecordAccurate", DecordAccurate), |
37 | 39 | "decord_batch": DecoderKind("DecordAccurateBatch", DecordAccurateBatch), |
38 | 40 | "torchcodec_core": DecoderKind("TorchCodecCore:", TorchCodecCore), |
39 | 41 | "torchcodec_core_batch": DecoderKind("TorchCodecCoreBatch", TorchCodecCoreBatch), |
40 | | - "torchcodec_core_nonbatch": DecoderKind("TorchCodecCoreNonBatch", TorchCodecCoreNonBatch), |
41 | | - "torchcodec_core_compiled": DecoderKind("TorchCodecCoreCompiled", TorchCodecCoreCompiled), |
| 42 | + "torchcodec_core_nonbatch": DecoderKind( |
| 43 | + "TorchCodecCoreNonBatch", TorchCodecCoreNonBatch |
| 44 | + ), |
| 45 | + "torchcodec_core_compiled": DecoderKind( |
| 46 | + "TorchCodecCoreCompiled", TorchCodecCoreCompiled |
| 47 | + ), |
42 | 48 | "torchcodec_public": DecoderKind("TorchCodecPublic", TorchCodecPublic), |
43 | | - "torchvision": DecoderKind("TorchVision[backend=video_reader]", TorchVision, {"backend": "video_reader"}), |
| 49 | + "torchvision": DecoderKind( |
| 50 | + "TorchVision[backend=video_reader]", TorchVision, {"backend": "video_reader"} |
| 51 | + ), |
44 | 52 | "torchaudio": DecoderKind("TorchAudio", TorchAudioDecoder), |
45 | 53 | } |
46 | 54 |
|
| 55 | + |
47 | 56 | def in_fbcode() -> bool: |
48 | 57 | return "FB_PAR_RUNTIME_FILES" in os.environ |
49 | 58 |
|
@@ -89,17 +98,19 @@ def main() -> None: |
89 | 98 | "--decoders", |
90 | 99 | help=( |
91 | 100 | "Comma-separated list of decoders to benchmark. " |
92 | | - "Choices are: " + ", ".join(decoder_registry.keys()) + ". " + |
93 | | - "To specify options, append a ':' and then value pairs seperated by a '+'. " |
| 101 | + "Choices are: " |
| 102 | + + ", ".join(decoder_registry.keys()) |
| 103 | + + ". " |
| 104 | + + "To specify options, append a ':' and then value pairs seperated by a '+'. " |
94 | 105 | "For example, torchcodec:num_threads=1+color_conversion_library=filtergraph." |
95 | 106 | ), |
96 | 107 | type=str, |
97 | 108 | default=( |
98 | | - "decord,decord_batch," + |
99 | | - "torchvision," + |
100 | | - "torchaudio," + |
101 | | - "torchcodec_core,torchcodec_core:num_threads=1,torchcodec_core_batch,torchcodec_core_nonbatch," + |
102 | | - "torchcodec_public" |
| 109 | + "decord,decord_batch," |
| 110 | + + "torchvision," |
| 111 | + + "torchaudio," |
| 112 | + + "torchcodec_core,torchcodec_core:num_threads=1,torchcodec_core_batch,torchcodec_core_nonbatch," |
| 113 | + + "torchcodec_public" |
103 | 114 | ), |
104 | 115 | ) |
105 | 116 | parser.add_argument( |
|
0 commit comments