diff --git a/src/lerobot/configs/default.py b/src/lerobot/configs/default.py index be906edbd..e2902141e 100644 --- a/src/lerobot/configs/default.py +++ b/src/lerobot/configs/default.py @@ -17,7 +17,7 @@ from dataclasses import dataclass, field from lerobot.transforms import ImageTransformsConfig -from lerobot.utils.import_utils import get_safe_default_codec +from lerobot.utils.import_utils import get_safe_default_video_backend @dataclass @@ -34,7 +34,7 @@ class DatasetConfig: image_transforms: ImageTransformsConfig = field(default_factory=ImageTransformsConfig) revision: str | None = None use_imagenet_stats: bool = True - video_backend: str = field(default_factory=get_safe_default_codec) + video_backend: str = field(default_factory=get_safe_default_video_backend) # When True, video frames are returned as uint8 tensors (0-255) instead of float32 (0.0-1.0). # This reduces memory and speeds up DataLoader IPC. The training pipeline handles the conversion. return_uint8: bool = False diff --git a/src/lerobot/datasets/lerobot_dataset.py b/src/lerobot/datasets/lerobot_dataset.py index b6ab0f5f0..077e1efd1 100644 --- a/src/lerobot/datasets/lerobot_dataset.py +++ b/src/lerobot/datasets/lerobot_dataset.py @@ -36,7 +36,7 @@ from .utils import ( ) from .video_utils import ( StreamingVideoEncoder, - get_safe_default_codec, + get_safe_default_video_backend, resolve_vcodec, ) @@ -202,7 +202,7 @@ class LeRobotDataset(torch.utils.data.Dataset): self.episodes = episodes self.tolerance_s = tolerance_s self.revision = revision if revision else CODEBASE_VERSION - self._video_backend = video_backend if video_backend else get_safe_default_codec() + self._video_backend = video_backend if video_backend else get_safe_default_video_backend() self._return_uint8 = return_uint8 self._batch_encoding_size = batch_encoding_size self._vcodec = resolve_vcodec(vcodec) @@ -690,7 +690,7 @@ class LeRobotDataset(torch.utils.data.Dataset): obj.image_transforms = None obj.delta_timestamps = None obj.episodes = None - obj._video_backend = video_backend if video_backend is not None else get_safe_default_codec() + obj._video_backend = video_backend if video_backend is not None else get_safe_default_video_backend() obj._return_uint8 = False obj._batch_encoding_size = batch_encoding_size obj._vcodec = vcodec @@ -783,7 +783,7 @@ class LeRobotDataset(torch.utils.data.Dataset): obj.image_transforms = None obj.delta_timestamps = None obj.episodes = None - obj._video_backend = video_backend if video_backend else get_safe_default_codec() + obj._video_backend = video_backend if video_backend else get_safe_default_video_backend() obj._return_uint8 = False obj._batch_encoding_size = batch_encoding_size obj._vcodec = vcodec diff --git a/src/lerobot/datasets/video_utils.py b/src/lerobot/datasets/video_utils.py index 00ff09ee7..da1be142e 100644 --- a/src/lerobot/datasets/video_utils.py +++ b/src/lerobot/datasets/video_utils.py @@ -36,7 +36,7 @@ import torch from datasets.features.features import register_feature from PIL import Image -from lerobot.utils.import_utils import get_safe_default_codec +from lerobot.utils.import_utils import get_safe_default_video_backend logger = logging.getLogger(__name__) @@ -143,7 +143,7 @@ def decode_video_frames( Currently supports torchcodec on cpu and pyav. """ if backend is None: - backend = get_safe_default_codec() + backend = get_safe_default_video_backend() if backend == "torchcodec": return decode_video_frames_torchcodec(video_path, timestamps, tolerance_s, return_uint8=return_uint8) elif backend == "pyav": diff --git a/src/lerobot/utils/import_utils.py b/src/lerobot/utils/import_utils.py index 6ba912bf5..a7e8c8b59 100644 --- a/src/lerobot/utils/import_utils.py +++ b/src/lerobot/utils/import_utils.py @@ -69,7 +69,7 @@ def is_package_available( return package_exists -def get_safe_default_codec(): +def get_safe_default_video_backend(): logger = logging.getLogger(__name__) if importlib.util.find_spec("torchcodec"): return "torchcodec" diff --git a/tests/datasets/test_dataset_reader.py b/tests/datasets/test_dataset_reader.py index bbe858b5d..085563bb8 100644 --- a/tests/datasets/test_dataset_reader.py +++ b/tests/datasets/test_dataset_reader.py @@ -20,7 +20,7 @@ import pytest pytest.importorskip("datasets", reason="datasets is required (install lerobot[dataset])") from lerobot.datasets.dataset_reader import DatasetReader -from lerobot.utils.import_utils import get_safe_default_codec +from lerobot.utils.import_utils import get_safe_default_video_backend # ── Loading ────────────────────────────────────────────────────────── @@ -35,7 +35,7 @@ def test_try_load_returns_true_when_data_exists(tmp_path, lerobot_dataset_factor root=dataset.root, episodes=None, tolerance_s=1e-4, - video_backend=get_safe_default_codec(), + video_backend=get_safe_default_video_backend(), delta_timestamps=None, image_transforms=None, ) @@ -58,7 +58,7 @@ def test_try_load_returns_false_when_no_data(tmp_path): root=meta.root, episodes=None, tolerance_s=1e-4, - video_backend=get_safe_default_codec(), + video_backend=get_safe_default_video_backend(), delta_timestamps=None, image_transforms=None, )