From fd0119f3dbaf59bce61607f4ab7863a7657ba6c5 Mon Sep 17 00:00:00 2001 From: CarolinePascal Date: Mon, 4 May 2026 18:00:14 +0200 Subject: [PATCH] fix(camera_encoder_config): Removing camera_encoder_config from LeRobotDataset, as it's only required in LeRobotDatasetWriter. --- src/lerobot/datasets/dataset_writer.py | 2 +- src/lerobot/datasets/lerobot_dataset.py | 24 +++++------------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/lerobot/datasets/dataset_writer.py b/src/lerobot/datasets/dataset_writer.py index 4841f7d3b..0a4fb4308 100644 --- a/src/lerobot/datasets/dataset_writer.py +++ b/src/lerobot/datasets/dataset_writer.py @@ -118,7 +118,7 @@ class DatasetWriter: """ self._meta = meta self._root = root - self._camera_encoder_config = camera_encoder_config + self._camera_encoder_config = camera_encoder_config or VideoEncoderConfig() self._encoder_threads = encoder_threads self._batch_encoding_size = batch_encoding_size self._streaming_encoder = streaming_encoder diff --git a/src/lerobot/datasets/lerobot_dataset.py b/src/lerobot/datasets/lerobot_dataset.py index ea1cfc424..759f7dac3 100644 --- a/src/lerobot/datasets/lerobot_dataset.py +++ b/src/lerobot/datasets/lerobot_dataset.py @@ -178,8 +178,7 @@ class LeRobotDataset(torch.utils.data.Dataset): batch_encoding_size (int, optional): Number of episodes to accumulate before batch encoding videos. Set to 1 for immediate encoding (default), or higher for batched encoding. Defaults to 1. camera_encoder_config (VideoEncoderConfig | None, optional): Video encoder settings for cameras - (codec, quality, etc.). Defaults to - :class:`~lerobot.datasets.video_utils.VideoEncoderConfig` defaults when ``None``. + (codec, quality, etc.). encoder_threads (int | None, optional): Number of encoder threads (global). ``None`` lets the codec decide. streaming_encoding (bool, optional): If True, encode video frames in real-time during capture @@ -204,9 +203,6 @@ class LeRobotDataset(torch.utils.data.Dataset): 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 - if camera_encoder_config is None: - camera_encoder_config = VideoEncoderConfig() - self._camera_encoder_config = camera_encoder_config self._encoder_threads = encoder_threads if self._requested_root is not None: @@ -253,14 +249,14 @@ class LeRobotDataset(torch.utils.data.Dataset): if streaming_encoding and len(self.meta.video_keys) > 0: streaming_enc = self._build_streaming_encoder( self.meta.fps, - self._camera_encoder_config, + camera_encoder_config, self._encoder_threads, encoder_queue_maxsize, ) self.writer = DatasetWriter( meta=self.meta, root=self.root, - camera_encoder_config=self._camera_encoder_config, + camera_encoder_config=camera_encoder_config, encoder_threads=self._encoder_threads, batch_encoding_size=batch_encoding_size, streaming_encoder=streaming_enc, @@ -656,9 +652,7 @@ class LeRobotDataset(torch.utils.data.Dataset): video_backend: Video decoding backend (used when reading back). batch_encoding_size: Number of episodes to accumulate before batch-encoding videos. ``1`` means encode immediately. - camera_encoder_config: Video encoder settings for cameras; defaults - match :class:`~lerobot.datasets.video_utils.VideoEncoderConfig` - when ``None``. + camera_encoder_config: Video encoder settings for cameras (codec, quality, etc.). encoder_threads: Number of encoder threads (global). ``None`` lets the codec decide. metadata_buffer_size: Number of episode metadata records to buffer @@ -671,8 +665,6 @@ class LeRobotDataset(torch.utils.data.Dataset): Returns: A new :class:`LeRobotDataset` in write mode. """ - if camera_encoder_config is None: - camera_encoder_config = VideoEncoderConfig() obj = cls.__new__(cls) obj.meta = LeRobotDatasetMetadata.create( repo_id=repo_id, @@ -696,7 +688,6 @@ class LeRobotDataset(torch.utils.data.Dataset): 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._camera_encoder_config = camera_encoder_config obj._encoder_threads = encoder_threads # Reader is lazily created on first access (write-only mode) @@ -761,9 +752,7 @@ class LeRobotDataset(torch.utils.data.Dataset): video_backend: Video decoding backend for reading back data. batch_encoding_size: Number of episodes to accumulate before batch-encoding videos. - camera_encoder_config: Video encoder settings for cameras; defaults - match :class:`~lerobot.datasets.video_utils.VideoEncoderConfig` - when ``None``. + camera_encoder_config: Video encoder settings for cameras (codec, quality, etc.). encoder_threads: Number of encoder threads (global). ``None`` lets the codec decide. image_writer_processes: Subprocesses for async image writing. @@ -801,9 +790,6 @@ class LeRobotDataset(torch.utils.data.Dataset): obj.repo_id, obj._requested_root, obj.revision, force_cache_sync=force_cache_sync ) - if camera_encoder_config is None: - camera_encoder_config = VideoEncoderConfig() - obj._camera_encoder_config = camera_encoder_config obj._encoder_threads = encoder_threads obj.root = obj.meta.root