+ void trace_counter(int i, Number counter);
+ void trace_event_begin(const std::string& name);
+ void trace_event_end();
+
+ } // namespace spdl::core
diff --git a/main/_sources/generated/libspdl/root.rst.txt b/main/_sources/generated/libspdl/root.rst.txt
new file mode 100644
index 00000000..7a2b5f7a
--- /dev/null
+++ b/main/_sources/generated/libspdl/root.rst.txt
@@ -0,0 +1,10 @@
+===========
+Libspdl API
+===========
+
+.. include:: class_view_hierarchy.rst.include
+
+.. include:: file_view_hierarchy.rst.include
+
+.. include:: unabridged_api.rst.include
+
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1Buffer.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Buffer.rst.txt
new file mode 100644
index 00000000..c7beda42
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Buffer.rst.txt
@@ -0,0 +1,27 @@
+.. _exhale_struct_structspdl_1_1core_1_1Buffer:
+
+Struct Buffer
+=============
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Derived Types
+*************
+
+- ``public spdl::core::CPUBuffer`` (:ref:`exhale_struct_structspdl_1_1core_1_1CPUBuffer`)
+- ``public spdl::core::CUDABuffer`` (:ref:`exhale_struct_structspdl_1_1core_1_1CUDABuffer`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::Buffer
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1BytesAdaptor.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1BytesAdaptor.rst.txt
new file mode 100644
index 00000000..87d19a6b
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1BytesAdaptor.rst.txt
@@ -0,0 +1,26 @@
+.. _exhale_struct_structspdl_1_1core_1_1BytesAdaptor:
+
+Struct BytesAdaptor
+===================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_adaptor.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Base Type
+*********
+
+- ``public spdl::core::SourceAdaptor`` (:ref:`exhale_struct_structspdl_1_1core_1_1SourceAdaptor`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::BytesAdaptor
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1CPUBuffer.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CPUBuffer.rst.txt
new file mode 100644
index 00000000..360f7753
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CPUBuffer.rst.txt
@@ -0,0 +1,26 @@
+.. _exhale_struct_structspdl_1_1core_1_1CPUBuffer:
+
+Struct CPUBuffer
+================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Base Type
+*********
+
+- ``public spdl::core::Buffer`` (:ref:`exhale_struct_structspdl_1_1core_1_1Buffer`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::CPUBuffer
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDABuffer.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDABuffer.rst.txt
new file mode 100644
index 00000000..ffe0c167
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDABuffer.rst.txt
@@ -0,0 +1,26 @@
+.. _exhale_struct_structspdl_1_1core_1_1CUDABuffer:
+
+Struct CUDABuffer
+=================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Base Type
+*********
+
+- ``public spdl::core::Buffer`` (:ref:`exhale_struct_structspdl_1_1core_1_1Buffer`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::CUDABuffer
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDAConfig.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDAConfig.rst.txt
new file mode 100644
index 00000000..8858a67a
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CUDAConfig.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1CUDAConfig:
+
+Struct CUDAConfig
+=================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::CUDAConfig
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1CropArea.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CropArea.rst.txt
new file mode 100644
index 00000000..840d921b
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1CropArea.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1CropArea:
+
+Struct CropArea
+===============
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::CropArea
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1DataInterface.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DataInterface.rst.txt
new file mode 100644
index 00000000..742518cd
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DataInterface.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1DataInterface:
+
+Struct DataInterface
+====================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_adaptor.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::DataInterface
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1DecodeConfig.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DecodeConfig.rst.txt
new file mode 100644
index 00000000..11b73644
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DecodeConfig.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1DecodeConfig:
+
+Struct DecodeConfig
+===================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::DecodeConfig
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1DemuxConfig.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DemuxConfig.rst.txt
new file mode 100644
index 00000000..9d3f1ac8
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1DemuxConfig.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1DemuxConfig:
+
+Struct DemuxConfig
+==================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::DemuxConfig
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1EncodeConfig.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1EncodeConfig.rst.txt
new file mode 100644
index 00000000..32d903fc
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1EncodeConfig.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1EncodeConfig:
+
+Struct EncodeConfig
+===================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::EncodeConfig
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1Rational.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Rational.rst.txt
new file mode 100644
index 00000000..5bcac4d4
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Rational.rst.txt
@@ -0,0 +1,17 @@
+.. _exhale_struct_structspdl_1_1core_1_1Rational:
+
+Struct Rational
+===============
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::Rational
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1SourceAdaptor.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1SourceAdaptor.rst.txt
new file mode 100644
index 00000000..13f141db
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1SourceAdaptor.rst.txt
@@ -0,0 +1,26 @@
+.. _exhale_struct_structspdl_1_1core_1_1SourceAdaptor:
+
+Struct SourceAdaptor
+====================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_adaptor.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Derived Type
+************
+
+- ``public spdl::core::BytesAdaptor`` (:ref:`exhale_struct_structspdl_1_1core_1_1BytesAdaptor`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::SourceAdaptor
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/structspdl_1_1core_1_1Storage.rst.txt b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Storage.rst.txt
new file mode 100644
index 00000000..8fbf65d7
--- /dev/null
+++ b/main/_sources/generated/libspdl/structspdl_1_1core_1_1Storage.rst.txt
@@ -0,0 +1,27 @@
+.. _exhale_struct_structspdl_1_1core_1_1Storage:
+
+Struct Storage
+==============
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_storage.h`
+
+
+Inheritance Relationships
+-------------------------
+
+Derived Types
+*************
+
+- ``public spdl::core::CPUStorage`` (:ref:`exhale_class_classspdl_1_1core_1_1CPUStorage`)
+- ``public spdl::core::CUDAStorage`` (:ref:`exhale_class_classspdl_1_1core_1_1CUDAStorage`)
+
+
+Struct Documentation
+--------------------
+
+
+.. doxygenstruct:: spdl::core::Storage
+ :project: libspdl
+ :members:
+ :protected-members:
+ :undoc-members:
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_adaptor_8h_1aeea90ffba3c9156c91a3f9cea6b1526c.rst.txt b/main/_sources/generated/libspdl/typedef_adaptor_8h_1aeea90ffba3c9156c91a3f9cea6b1526c.rst.txt
new file mode 100644
index 00000000..30c9d76c
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_adaptor_8h_1aeea90ffba3c9156c91a3f9cea6b1526c.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_adaptor_8h_1aeea90ffba3c9156c91a3f9cea6b1526c:
+
+Typedef spdl::core::SourceAdaptorPtr
+====================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_adaptor.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::SourceAdaptorPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_buffer_8h_1a295ea6cb7bed7deb39f245f91beff04b.rst.txt b/main/_sources/generated/libspdl/typedef_buffer_8h_1a295ea6cb7bed7deb39f245f91beff04b.rst.txt
new file mode 100644
index 00000000..5cab0008
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_buffer_8h_1a295ea6cb7bed7deb39f245f91beff04b.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_buffer_8h_1a295ea6cb7bed7deb39f245f91beff04b:
+
+Typedef spdl::core::CUDABufferPtr
+=================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::CUDABufferPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_buffer_8h_1aa53ca0dad3d74ed660c4f0ae55bb3ca3.rst.txt b/main/_sources/generated/libspdl/typedef_buffer_8h_1aa53ca0dad3d74ed660c4f0ae55bb3ca3.rst.txt
new file mode 100644
index 00000000..6306fd48
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_buffer_8h_1aa53ca0dad3d74ed660c4f0ae55bb3ca3.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_buffer_8h_1aa53ca0dad3d74ed660c4f0ae55bb3ca3:
+
+Typedef spdl::core::CPUBufferPtr
+================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::CPUBufferPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_decoding_8h_1a8fd65cf6184acafacace029e6a2e20b8.rst.txt b/main/_sources/generated/libspdl/typedef_decoding_8h_1a8fd65cf6184acafacace029e6a2e20b8.rst.txt
new file mode 100644
index 00000000..3afdc366
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_decoding_8h_1a8fd65cf6184acafacace029e6a2e20b8.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_decoding_8h_1a8fd65cf6184acafacace029e6a2e20b8:
+
+Typedef spdl::core::DecoderPtr
+==============================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_decoding.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::DecoderPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_demuxing_8h_1a77c7c5e3c314e95c84755ff4be0c7382.rst.txt b/main/_sources/generated/libspdl/typedef_demuxing_8h_1a77c7c5e3c314e95c84755ff4be0c7382.rst.txt
new file mode 100644
index 00000000..a1802c02
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_demuxing_8h_1a77c7c5e3c314e95c84755ff4be0c7382.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_demuxing_8h_1a77c7c5e3c314e95c84755ff4be0c7382:
+
+Typedef spdl::core::DemuxerPtr
+==============================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_demuxing.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::DemuxerPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1a35f2f4ff658c5bf990288f605b286514.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1a35f2f4ff658c5bf990288f605b286514.rst.txt
new file mode 100644
index 00000000..fbe9814c
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1a35f2f4ff658c5bf990288f605b286514.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1a35f2f4ff658c5bf990288f605b286514:
+
+Typedef spdl::core::FFmpegImageFramesPtr
+========================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegImageFramesPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1a37b07a783dc120ebfbf2bc1df02f63c9.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1a37b07a783dc120ebfbf2bc1df02f63c9.rst.txt
new file mode 100644
index 00000000..0ef51ab8
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1a37b07a783dc120ebfbf2bc1df02f63c9.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1a37b07a783dc120ebfbf2bc1df02f63c9:
+
+Typedef spdl::core::FFmpegVideoFramesPtr
+========================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegVideoFramesPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1a6f38c02e59d9bde7760a9662ec20d4f6.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1a6f38c02e59d9bde7760a9662ec20d4f6.rst.txt
new file mode 100644
index 00000000..98a7496f
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1a6f38c02e59d9bde7760a9662ec20d4f6.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1a6f38c02e59d9bde7760a9662ec20d4f6:
+
+Typedef spdl::core::FFmpegAudioFrames
+=====================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegAudioFrames
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1aaa34b66b95f4cc27c8e9333bc20eb179.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1aaa34b66b95f4cc27c8e9333bc20eb179.rst.txt
new file mode 100644
index 00000000..07510d9e
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1aaa34b66b95f4cc27c8e9333bc20eb179.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1aaa34b66b95f4cc27c8e9333bc20eb179:
+
+Typedef spdl::core::FFmpegAudioFramesPtr
+========================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegAudioFramesPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1ac65015b0c2d25150472229b1af78398a.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1ac65015b0c2d25150472229b1af78398a.rst.txt
new file mode 100644
index 00000000..8a7b2b20
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1ac65015b0c2d25150472229b1af78398a.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1ac65015b0c2d25150472229b1af78398a:
+
+Typedef spdl::core::FFmpegVideoFrames
+=====================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegVideoFrames
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1af53bca5467cae4ea8c56a12f0c281d7d.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1af53bca5467cae4ea8c56a12f0c281d7d.rst.txt
new file mode 100644
index 00000000..51dcebae
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1af53bca5467cae4ea8c56a12f0c281d7d.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1af53bca5467cae4ea8c56a12f0c281d7d:
+
+Typedef spdl::core::FFmpegFramesPtr
+===================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegFramesPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_frames_8h_1afcf5acc7119e9f97078aa93aba49bdf9.rst.txt b/main/_sources/generated/libspdl/typedef_frames_8h_1afcf5acc7119e9f97078aa93aba49bdf9.rst.txt
new file mode 100644
index 00000000..64c2cf68
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_frames_8h_1afcf5acc7119e9f97078aa93aba49bdf9.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_frames_8h_1afcf5acc7119e9f97078aa93aba49bdf9:
+
+Typedef spdl::core::FFmpegImageFrames
+=====================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::FFmpegImageFrames
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1a40b9e72f2c5acbf57523f3147b49b4d7.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1a40b9e72f2c5acbf57523f3147b49b4d7.rst.txt
new file mode 100644
index 00000000..83c3e8e0
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1a40b9e72f2c5acbf57523f3147b49b4d7.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1a40b9e72f2c5acbf57523f3147b49b4d7:
+
+Typedef spdl::core::ImagePacketsPtr
+===================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::ImagePacketsPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1a491d9af92f6473307b62089e5fd58655.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1a491d9af92f6473307b62089e5fd58655.rst.txt
new file mode 100644
index 00000000..36c6a558
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1a491d9af92f6473307b62089e5fd58655.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1a491d9af92f6473307b62089e5fd58655:
+
+Typedef spdl::core::VideoPackets
+================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::VideoPackets
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1a7d8aab12ea6bbedd5f5ac3a61ca35052.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1a7d8aab12ea6bbedd5f5ac3a61ca35052.rst.txt
new file mode 100644
index 00000000..fe090401
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1a7d8aab12ea6bbedd5f5ac3a61ca35052.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1a7d8aab12ea6bbedd5f5ac3a61ca35052:
+
+Typedef spdl::core::AudioPacketsPtr
+===================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::AudioPacketsPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1a9f1d8f8a824887584d6c7afeef0db0ba.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1a9f1d8f8a824887584d6c7afeef0db0ba.rst.txt
new file mode 100644
index 00000000..b185cf34
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1a9f1d8f8a824887584d6c7afeef0db0ba.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1a9f1d8f8a824887584d6c7afeef0db0ba:
+
+Typedef spdl::core::ImagePackets
+================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::ImagePackets
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1ac32cc3efe73a9e4d350dea50de9bfc1a.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1ac32cc3efe73a9e4d350dea50de9bfc1a.rst.txt
new file mode 100644
index 00000000..4b3e2575
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1ac32cc3efe73a9e4d350dea50de9bfc1a.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1ac32cc3efe73a9e4d350dea50de9bfc1a:
+
+Typedef spdl::core::AudioPackets
+================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::AudioPackets
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1ad0bca8953615860b5cd7c018711defd2.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1ad0bca8953615860b5cd7c018711defd2.rst.txt
new file mode 100644
index 00000000..f20992d8
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1ad0bca8953615860b5cd7c018711defd2.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1ad0bca8953615860b5cd7c018711defd2:
+
+Typedef spdl::core::PacketsPtr
+==============================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::PacketsPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_packets_8h_1ae3f1d293e78dbd0c27d6b9607cc7658e.rst.txt b/main/_sources/generated/libspdl/typedef_packets_8h_1ae3f1d293e78dbd0c27d6b9607cc7658e.rst.txt
new file mode 100644
index 00000000..790670ff
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_packets_8h_1ae3f1d293e78dbd0c27d6b9607cc7658e.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_packets_8h_1ae3f1d293e78dbd0c27d6b9607cc7658e:
+
+Typedef spdl::core::VideoPacketsPtr
+===================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::VideoPacketsPtr
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_types_8h_1a2e4149a86d8a55df8a689a1d40855fa8.rst.txt b/main/_sources/generated/libspdl/typedef_types_8h_1a2e4149a86d8a55df8a689a1d40855fa8.rst.txt
new file mode 100644
index 00000000..a970622a
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_types_8h_1a2e4149a86d8a55df8a689a1d40855fa8.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_types_8h_1a2e4149a86d8a55df8a689a1d40855fa8:
+
+Typedef spdl::core::OptionDict
+==============================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::OptionDict
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_types_8h_1a4b013fc972e599fc717bd1afd978b083.rst.txt b/main/_sources/generated/libspdl/typedef_types_8h_1a4b013fc972e599fc717bd1afd978b083.rst.txt
new file mode 100644
index 00000000..1b2b95c0
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_types_8h_1a4b013fc972e599fc717bd1afd978b083.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_types_8h_1a4b013fc972e599fc717bd1afd978b083:
+
+Typedef spdl::core::cuda_allocator_fn
+=====================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::cuda_allocator_fn
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_types_8h_1a58ee8c8a06f6695125b423a1a8532efc.rst.txt b/main/_sources/generated/libspdl/typedef_types_8h_1a58ee8c8a06f6695125b423a1a8532efc.rst.txt
new file mode 100644
index 00000000..6bf51be0
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_types_8h_1a58ee8c8a06f6695125b423a1a8532efc.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_types_8h_1a58ee8c8a06f6695125b423a1a8532efc:
+
+Typedef spdl::core::cuda_allocator
+==================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::cuda_allocator
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/typedef_types_8h_1a8429006d88afae24621607926baef99e.rst.txt b/main/_sources/generated/libspdl/typedef_types_8h_1a8429006d88afae24621607926baef99e.rst.txt
new file mode 100644
index 00000000..27501d1c
--- /dev/null
+++ b/main/_sources/generated/libspdl/typedef_types_8h_1a8429006d88afae24621607926baef99e.rst.txt
@@ -0,0 +1,14 @@
+.. _exhale_typedef_types_8h_1a8429006d88afae24621607926baef99e:
+
+Typedef spdl::core::cuda_deleter_fn
+===================================
+
+- Defined in :ref:`file__home_runner_work_spdl_spdl_src_libspdl_core_types.h`
+
+
+Typedef Documentation
+---------------------
+
+
+.. doxygentypedef:: spdl::core::cuda_deleter_fn
+ :project: libspdl
\ No newline at end of file
diff --git a/main/_sources/generated/libspdl/unabridged_orphan.rst.txt b/main/_sources/generated/libspdl/unabridged_orphan.rst.txt
new file mode 100644
index 00000000..39131ef5
--- /dev/null
+++ b/main/_sources/generated/libspdl/unabridged_orphan.rst.txt
@@ -0,0 +1,88 @@
+:orphan:
+
+
+Full API
+========
+
+Directories
+***********
+
+
+.. toctree::
+ :maxdepth: 5
+
+ dir__home_runner_work_spdl_spdl_src.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ dir__home_runner_work_spdl_spdl_src_libspdl.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ dir__home_runner_work_spdl_spdl_src_libspdl_core.rst
+
+Files
+*****
+
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_adaptor.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_buffer.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_conversion.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_decoding.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_demuxing.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_encoding.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_frames.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_packets.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_storage.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_transfer.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_types.h.rst
+
+.. toctree::
+ :maxdepth: 5
+
+ file__home_runner_work_spdl_spdl_src_libspdl_core_utils.h.rst
diff --git a/main/_sources/generated/multi_thread_preprocessing.rst.txt b/main/_sources/generated/multi_thread_preprocessing.rst.txt
new file mode 100644
index 00000000..10ab6aa5
--- /dev/null
+++ b/main/_sources/generated/multi_thread_preprocessing.rst.txt
@@ -0,0 +1,100 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+multi\_thread\_preprocessing
+============================
+
+.. automodule:: multi_thread_preprocessing
+
+..
+ ############################################################################
+ Source
+ ############################################################################
+
+Source
+------
+
+.. rubric:: Source
+
+.. raw:: html
+
+
+ Click here to see the source.
+
+.. literalinclude:: ../../../examples/multi_thread_preprocessing.py
+ :linenos:
+
+.. raw:: html
+
+
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+
+Functions
+---------
+.. rubric:: Functions
+
+
+
+.. autofunction:: multi_thread_preprocessing.entrypoint
+
+
+
+.. autofunction:: multi_thread_preprocessing.exp_torch
+
+
+
+.. autofunction:: multi_thread_preprocessing.exp_spdl
+
+
+
+.. autofunction:: multi_thread_preprocessing.run_dataloader
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.dataloader.DataLoader.rst.txt b/main/_sources/generated/spdl.dataloader.DataLoader.rst.txt
new file mode 100644
index 00000000..45747e53
--- /dev/null
+++ b/main/_sources/generated/spdl.dataloader.DataLoader.rst.txt
@@ -0,0 +1,7 @@
+spdl.dataloader.DataLoader
+==========================
+
+.. currentmodule:: spdl.dataloader
+
+.. autoclass:: DataLoader
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.dataloader.MergeIterator.rst.txt b/main/_sources/generated/spdl.dataloader.MergeIterator.rst.txt
new file mode 100644
index 00000000..57040603
--- /dev/null
+++ b/main/_sources/generated/spdl.dataloader.MergeIterator.rst.txt
@@ -0,0 +1,7 @@
+spdl.dataloader.MergeIterator
+=============================
+
+.. currentmodule:: spdl.dataloader
+
+.. autoclass:: MergeIterator
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.dataloader.rst.txt b/main/_sources/generated/spdl.dataloader.rst.txt
new file mode 100644
index 00000000..7dea760b
--- /dev/null
+++ b/main/_sources/generated/spdl.dataloader.rst.txt
@@ -0,0 +1,123 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+spdl.dataloader
+===============
+
+.. automodule:: spdl.dataloader
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+.. rubric:: Functions
+
+
+run\_in\_subprocess
+-------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.dataloader.run_in_subprocess
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+.. rubric:: Classes
+
+
+DataLoader
+----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.dataloader.DataLoader
+
+
+MergeIterator
+-------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.dataloader.MergeIterator
+
+
+
+
+
+..
+ ############################################################################
+ Exceptions
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Sub modules
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Others
+ ############################################################################
+
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.dataloader.run_in_subprocess.rst.txt b/main/_sources/generated/spdl.dataloader.run_in_subprocess.rst.txt
new file mode 100644
index 00000000..3f8892cd
--- /dev/null
+++ b/main/_sources/generated/spdl.dataloader.run_in_subprocess.rst.txt
@@ -0,0 +1,6 @@
+spdl.dataloader.run\_in\_subprocess
+===================================
+
+.. currentmodule:: spdl.dataloader
+
+.. autofunction:: run_in_subprocess
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.AudioFrames.rst.txt b/main/_sources/generated/spdl.io.AudioFrames.rst.txt
new file mode 100644
index 00000000..506e80f1
--- /dev/null
+++ b/main/_sources/generated/spdl.io.AudioFrames.rst.txt
@@ -0,0 +1,20 @@
+spdl.io.AudioFrames
+===================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: AudioFrames
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~AudioFrames.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~AudioFrames.num_channels
+ ~AudioFrames.num_frames
+ ~AudioFrames.sample_fmt
+ ~AudioFrames.sample_rate
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.AudioPackets.rst.txt b/main/_sources/generated/spdl.io.AudioPackets.rst.txt
new file mode 100644
index 00000000..d13e92e0
--- /dev/null
+++ b/main/_sources/generated/spdl.io.AudioPackets.rst.txt
@@ -0,0 +1,19 @@
+spdl.io.AudioPackets
+====================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: AudioPackets
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~AudioPackets.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~AudioPackets.num_channels
+ ~AudioPackets.sample_rate
+ ~AudioPackets.timestamp
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.CPUBuffer.rst.txt b/main/_sources/generated/spdl.io.CPUBuffer.rst.txt
new file mode 100644
index 00000000..409191d8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.CPUBuffer.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.CPUBuffer
+=================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: CPUBuffer
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.CPUStorage.rst.txt b/main/_sources/generated/spdl.io.CPUStorage.rst.txt
new file mode 100644
index 00000000..f4ae1283
--- /dev/null
+++ b/main/_sources/generated/spdl.io.CPUStorage.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.CPUStorage
+==================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: CPUStorage
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.CUDABuffer.rst.txt b/main/_sources/generated/spdl.io.CUDABuffer.rst.txt
new file mode 100644
index 00000000..a6d12428
--- /dev/null
+++ b/main/_sources/generated/spdl.io.CUDABuffer.rst.txt
@@ -0,0 +1,12 @@
+spdl.io.CUDABuffer
+==================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: CUDABuffer
+ :members:
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~CUDABuffer.device_index
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.CUDAConfig.rst.txt b/main/_sources/generated/spdl.io.CUDAConfig.rst.txt
new file mode 100644
index 00000000..b426bb1a
--- /dev/null
+++ b/main/_sources/generated/spdl.io.CUDAConfig.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.CUDAConfig
+==================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: CUDAConfig
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.DecodeConfig.rst.txt b/main/_sources/generated/spdl.io.DecodeConfig.rst.txt
new file mode 100644
index 00000000..33f8a77e
--- /dev/null
+++ b/main/_sources/generated/spdl.io.DecodeConfig.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.DecodeConfig
+====================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: DecodeConfig
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.DemuxConfig.rst.txt b/main/_sources/generated/spdl.io.DemuxConfig.rst.txt
new file mode 100644
index 00000000..a64ab358
--- /dev/null
+++ b/main/_sources/generated/spdl.io.DemuxConfig.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.DemuxConfig
+===================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: DemuxConfig
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.Demuxer.rst.txt b/main/_sources/generated/spdl.io.Demuxer.rst.txt
new file mode 100644
index 00000000..36639b6b
--- /dev/null
+++ b/main/_sources/generated/spdl.io.Demuxer.rst.txt
@@ -0,0 +1,15 @@
+spdl.io.Demuxer
+===============
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: Demuxer
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~Demuxer.demux_audio
+ ~Demuxer.demux_image
+ ~Demuxer.demux_video
+ ~Demuxer.has_audio
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.EncodeConfig.rst.txt b/main/_sources/generated/spdl.io.EncodeConfig.rst.txt
new file mode 100644
index 00000000..d1e0a25c
--- /dev/null
+++ b/main/_sources/generated/spdl.io.EncodeConfig.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.EncodeConfig
+====================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: EncodeConfig
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.Frames.rst.txt b/main/_sources/generated/spdl.io.Frames.rst.txt
new file mode 100644
index 00000000..ac46a468
--- /dev/null
+++ b/main/_sources/generated/spdl.io.Frames.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.Frames
+==============
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: Frames
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.ImageFrames.rst.txt b/main/_sources/generated/spdl.io.ImageFrames.rst.txt
new file mode 100644
index 00000000..fa21a17e
--- /dev/null
+++ b/main/_sources/generated/spdl.io.ImageFrames.rst.txt
@@ -0,0 +1,22 @@
+spdl.io.ImageFrames
+===================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: ImageFrames
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~ImageFrames.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~ImageFrames.height
+ ~ImageFrames.metadata
+ ~ImageFrames.num_planes
+ ~ImageFrames.pix_fmt
+ ~ImageFrames.pts
+ ~ImageFrames.width
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.ImagePackets.rst.txt b/main/_sources/generated/spdl.io.ImagePackets.rst.txt
new file mode 100644
index 00000000..1bfd04a9
--- /dev/null
+++ b/main/_sources/generated/spdl.io.ImagePackets.rst.txt
@@ -0,0 +1,19 @@
+spdl.io.ImagePackets
+====================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: ImagePackets
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~ImagePackets.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~ImagePackets.height
+ ~ImagePackets.pix_fmt
+ ~ImagePackets.width
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.NpzFile.rst.txt b/main/_sources/generated/spdl.io.NpzFile.rst.txt
new file mode 100644
index 00000000..2d519284
--- /dev/null
+++ b/main/_sources/generated/spdl.io.NpzFile.rst.txt
@@ -0,0 +1,16 @@
+spdl.io.NpzFile
+===============
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: NpzFile
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~NpzFile.close
+ ~NpzFile.get
+ ~NpzFile.items
+ ~NpzFile.keys
+ ~NpzFile.values
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.Packets.rst.txt b/main/_sources/generated/spdl.io.Packets.rst.txt
new file mode 100644
index 00000000..2c839887
--- /dev/null
+++ b/main/_sources/generated/spdl.io.Packets.rst.txt
@@ -0,0 +1,7 @@
+spdl.io.Packets
+===============
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: Packets
+ :members:
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.VideoFrames.rst.txt b/main/_sources/generated/spdl.io.VideoFrames.rst.txt
new file mode 100644
index 00000000..42c87a49
--- /dev/null
+++ b/main/_sources/generated/spdl.io.VideoFrames.rst.txt
@@ -0,0 +1,21 @@
+spdl.io.VideoFrames
+===================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: VideoFrames
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~VideoFrames.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~VideoFrames.height
+ ~VideoFrames.num_frames
+ ~VideoFrames.num_planes
+ ~VideoFrames.pix_fmt
+ ~VideoFrames.width
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.VideoPackets.rst.txt b/main/_sources/generated/spdl.io.VideoPackets.rst.txt
new file mode 100644
index 00000000..9e27e421
--- /dev/null
+++ b/main/_sources/generated/spdl.io.VideoPackets.rst.txt
@@ -0,0 +1,21 @@
+spdl.io.VideoPackets
+====================
+
+.. currentmodule:: spdl.io
+
+.. autoclass:: VideoPackets
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~VideoPackets.clone
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+ ~VideoPackets.frame_rate
+ ~VideoPackets.height
+ ~VideoPackets.pix_fmt
+ ~VideoPackets.timestamp
+ ~VideoPackets.width
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_convert_array.rst.txt b/main/_sources/generated/spdl.io.async_convert_array.rst.txt
new file mode 100644
index 00000000..c017c1e8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_convert_array.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_convert\_array
+=============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_convert_array
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_convert_frames.rst.txt b/main/_sources/generated/spdl.io.async_convert_frames.rst.txt
new file mode 100644
index 00000000..2ba6c988
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_convert_frames.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_convert\_frames
+==============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_convert_frames
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_decode_image_nvjpeg.rst.txt b/main/_sources/generated/spdl.io.async_decode_image_nvjpeg.rst.txt
new file mode 100644
index 00000000..3036dc91
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_decode_image_nvjpeg.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_decode\_image\_nvjpeg
+====================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_decode_image_nvjpeg
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_decode_packets.rst.txt b/main/_sources/generated/spdl.io.async_decode_packets.rst.txt
new file mode 100644
index 00000000..993d09a9
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_decode_packets.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_decode\_packets
+==============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_decode_packets
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_decode_packets_nvdec.rst.txt b/main/_sources/generated/spdl.io.async_decode_packets_nvdec.rst.txt
new file mode 100644
index 00000000..49aeefaa
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_decode_packets_nvdec.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_decode\_packets\_nvdec
+=====================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_decode_packets_nvdec
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_demux_audio.rst.txt b/main/_sources/generated/spdl.io.async_demux_audio.rst.txt
new file mode 100644
index 00000000..c9b08c90
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_demux_audio.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_demux\_audio
+===========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_demux_audio
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_demux_image.rst.txt b/main/_sources/generated/spdl.io.async_demux_image.rst.txt
new file mode 100644
index 00000000..c68ba227
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_demux_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_demux\_image
+===========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_demux_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_demux_video.rst.txt b/main/_sources/generated/spdl.io.async_demux_video.rst.txt
new file mode 100644
index 00000000..47c2c1a7
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_demux_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_demux\_video
+===========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_demux_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_encode_image.rst.txt b/main/_sources/generated/spdl.io.async_encode_image.rst.txt
new file mode 100644
index 00000000..0ecfc6dc
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_encode_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_encode\_image
+============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_encode_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_audio.rst.txt b/main/_sources/generated/spdl.io.async_load_audio.rst.txt
new file mode 100644
index 00000000..9ab840f5
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_audio.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_audio
+==========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_audio
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_image.rst.txt b/main/_sources/generated/spdl.io.async_load_image.rst.txt
new file mode 100644
index 00000000..990116da
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_image
+==========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_image_batch.rst.txt b/main/_sources/generated/spdl.io.async_load_image_batch.rst.txt
new file mode 100644
index 00000000..7b35ab3c
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_image_batch.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_image\_batch
+=================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_image_batch
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_image_batch_nvdec.rst.txt b/main/_sources/generated/spdl.io.async_load_image_batch_nvdec.rst.txt
new file mode 100644
index 00000000..ca441d45
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_image_batch_nvdec.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_image\_batch\_nvdec
+========================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_image_batch_nvdec
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_image_batch_nvjpeg.rst.txt b/main/_sources/generated/spdl.io.async_load_image_batch_nvjpeg.rst.txt
new file mode 100644
index 00000000..e75f33c5
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_image_batch_nvjpeg.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_image\_batch\_nvjpeg
+=========================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_image_batch_nvjpeg
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_load_video.rst.txt b/main/_sources/generated/spdl.io.async_load_video.rst.txt
new file mode 100644
index 00000000..229a0080
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_load_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_load\_video
+==========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_load_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_sample_decode_video.rst.txt b/main/_sources/generated/spdl.io.async_sample_decode_video.rst.txt
new file mode 100644
index 00000000..339d6c82
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_sample_decode_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_sample\_decode\_video
+====================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_sample_decode_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_streaming_decode_packets.rst.txt b/main/_sources/generated/spdl.io.async_streaming_decode_packets.rst.txt
new file mode 100644
index 00000000..f2a900e3
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_streaming_decode_packets.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_streaming\_decode\_packets
+=========================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_streaming_decode_packets
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_transfer_buffer.rst.txt b/main/_sources/generated/spdl.io.async_transfer_buffer.rst.txt
new file mode 100644
index 00000000..25bea4d8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_transfer_buffer.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_transfer\_buffer
+===============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_transfer_buffer
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.async_transfer_buffer_cpu.rst.txt b/main/_sources/generated/spdl.io.async_transfer_buffer_cpu.rst.txt
new file mode 100644
index 00000000..197654e3
--- /dev/null
+++ b/main/_sources/generated/spdl.io.async_transfer_buffer_cpu.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.async\_transfer\_buffer\_cpu
+====================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: async_transfer_buffer_cpu
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.convert_array.rst.txt b/main/_sources/generated/spdl.io.convert_array.rst.txt
new file mode 100644
index 00000000..2cf481b0
--- /dev/null
+++ b/main/_sources/generated/spdl.io.convert_array.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.convert\_array
+======================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: convert_array
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.convert_frames.rst.txt b/main/_sources/generated/spdl.io.convert_frames.rst.txt
new file mode 100644
index 00000000..12901ec5
--- /dev/null
+++ b/main/_sources/generated/spdl.io.convert_frames.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.convert\_frames
+=======================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: convert_frames
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.cpu_storage.rst.txt b/main/_sources/generated/spdl.io.cpu_storage.rst.txt
new file mode 100644
index 00000000..6ec467f1
--- /dev/null
+++ b/main/_sources/generated/spdl.io.cpu_storage.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.cpu\_storage
+====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: cpu_storage
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.cuda_config.rst.txt b/main/_sources/generated/spdl.io.cuda_config.rst.txt
new file mode 100644
index 00000000..3c0e711a
--- /dev/null
+++ b/main/_sources/generated/spdl.io.cuda_config.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.cuda\_config
+====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: cuda_config
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.decode_config.rst.txt b/main/_sources/generated/spdl.io.decode_config.rst.txt
new file mode 100644
index 00000000..47014f18
--- /dev/null
+++ b/main/_sources/generated/spdl.io.decode_config.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.decode\_config
+======================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: decode_config
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.decode_image_nvjpeg.rst.txt b/main/_sources/generated/spdl.io.decode_image_nvjpeg.rst.txt
new file mode 100644
index 00000000..f581a93b
--- /dev/null
+++ b/main/_sources/generated/spdl.io.decode_image_nvjpeg.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.decode\_image\_nvjpeg
+=============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: decode_image_nvjpeg
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.decode_packets.rst.txt b/main/_sources/generated/spdl.io.decode_packets.rst.txt
new file mode 100644
index 00000000..a40c4bfd
--- /dev/null
+++ b/main/_sources/generated/spdl.io.decode_packets.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.decode\_packets
+=======================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: decode_packets
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.decode_packets_nvdec.rst.txt b/main/_sources/generated/spdl.io.decode_packets_nvdec.rst.txt
new file mode 100644
index 00000000..e7e389f8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.decode_packets_nvdec.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.decode\_packets\_nvdec
+==============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: decode_packets_nvdec
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.demux_audio.rst.txt b/main/_sources/generated/spdl.io.demux_audio.rst.txt
new file mode 100644
index 00000000..a1939463
--- /dev/null
+++ b/main/_sources/generated/spdl.io.demux_audio.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.demux\_audio
+====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: demux_audio
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.demux_config.rst.txt b/main/_sources/generated/spdl.io.demux_config.rst.txt
new file mode 100644
index 00000000..d6737a05
--- /dev/null
+++ b/main/_sources/generated/spdl.io.demux_config.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.demux\_config
+=====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: demux_config
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.demux_image.rst.txt b/main/_sources/generated/spdl.io.demux_image.rst.txt
new file mode 100644
index 00000000..b0f85210
--- /dev/null
+++ b/main/_sources/generated/spdl.io.demux_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.demux\_image
+====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: demux_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.demux_video.rst.txt b/main/_sources/generated/spdl.io.demux_video.rst.txt
new file mode 100644
index 00000000..ec3996e4
--- /dev/null
+++ b/main/_sources/generated/spdl.io.demux_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.demux\_video
+====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: demux_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.encode_config.rst.txt b/main/_sources/generated/spdl.io.encode_config.rst.txt
new file mode 100644
index 00000000..797e9b99
--- /dev/null
+++ b/main/_sources/generated/spdl.io.encode_config.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.encode\_config
+======================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: encode_config
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.encode_image.rst.txt b/main/_sources/generated/spdl.io.encode_image.rst.txt
new file mode 100644
index 00000000..08ed5ea8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.encode_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.encode\_image
+=====================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: encode_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.get_audio_filter_desc.rst.txt b/main/_sources/generated/spdl.io.get_audio_filter_desc.rst.txt
new file mode 100644
index 00000000..cc86dc78
--- /dev/null
+++ b/main/_sources/generated/spdl.io.get_audio_filter_desc.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.get\_audio\_filter\_desc
+================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: get_audio_filter_desc
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.get_filter_desc.rst.txt b/main/_sources/generated/spdl.io.get_filter_desc.rst.txt
new file mode 100644
index 00000000..c3a7d885
--- /dev/null
+++ b/main/_sources/generated/spdl.io.get_filter_desc.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.get\_filter\_desc
+=========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: get_filter_desc
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.get_video_filter_desc.rst.txt b/main/_sources/generated/spdl.io.get_video_filter_desc.rst.txt
new file mode 100644
index 00000000..8879290c
--- /dev/null
+++ b/main/_sources/generated/spdl.io.get_video_filter_desc.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.get\_video\_filter\_desc
+================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: get_video_filter_desc
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.load_audio.rst.txt b/main/_sources/generated/spdl.io.load_audio.rst.txt
new file mode 100644
index 00000000..778e9e27
--- /dev/null
+++ b/main/_sources/generated/spdl.io.load_audio.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.load\_audio
+===================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: load_audio
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.load_image.rst.txt b/main/_sources/generated/spdl.io.load_image.rst.txt
new file mode 100644
index 00000000..4f52c3ac
--- /dev/null
+++ b/main/_sources/generated/spdl.io.load_image.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.load\_image
+===================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: load_image
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.load_image_batch_nvjpeg.rst.txt b/main/_sources/generated/spdl.io.load_image_batch_nvjpeg.rst.txt
new file mode 100644
index 00000000..34ecb2c1
--- /dev/null
+++ b/main/_sources/generated/spdl.io.load_image_batch_nvjpeg.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.load\_image\_batch\_nvjpeg
+==================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: load_image_batch_nvjpeg
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.load_npz.rst.txt b/main/_sources/generated/spdl.io.load_npz.rst.txt
new file mode 100644
index 00000000..620e7b84
--- /dev/null
+++ b/main/_sources/generated/spdl.io.load_npz.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.load\_npz
+=================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: load_npz
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.load_video.rst.txt b/main/_sources/generated/spdl.io.load_video.rst.txt
new file mode 100644
index 00000000..5582a89b
--- /dev/null
+++ b/main/_sources/generated/spdl.io.load_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.load\_video
+===================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: load_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.rst.txt b/main/_sources/generated/spdl.io.rst.txt
new file mode 100644
index 00000000..9b7d0068
--- /dev/null
+++ b/main/_sources/generated/spdl.io.rst.txt
@@ -0,0 +1,842 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+spdl.io
+=======
+
+.. automodule:: spdl.io
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+.. rubric:: Functions
+
+
+async\_convert\_array
+---------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_convert_array
+
+
+async\_convert\_frames
+----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_convert_frames
+
+
+async\_decode\_image\_nvjpeg
+----------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_decode_image_nvjpeg
+
+
+async\_decode\_packets
+----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_decode_packets
+
+
+async\_decode\_packets\_nvdec
+-----------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_decode_packets_nvdec
+
+
+async\_demux\_audio
+-------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_demux_audio
+
+
+async\_demux\_image
+-------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_demux_image
+
+
+async\_demux\_video
+-------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_demux_video
+
+
+async\_encode\_image
+--------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_encode_image
+
+
+async\_load\_audio
+------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_audio
+
+
+async\_load\_image
+------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_image
+
+
+async\_load\_image\_batch
+-------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_image_batch
+
+
+async\_load\_image\_batch\_nvdec
+--------------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_image_batch_nvdec
+
+
+async\_load\_image\_batch\_nvjpeg
+---------------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_image_batch_nvjpeg
+
+
+async\_load\_video
+------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_load_video
+
+
+async\_sample\_decode\_video
+----------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_sample_decode_video
+
+
+async\_streaming\_decode\_packets
+---------------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_streaming_decode_packets
+
+
+async\_transfer\_buffer
+-----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_transfer_buffer
+
+
+async\_transfer\_buffer\_cpu
+----------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.async_transfer_buffer_cpu
+
+
+convert\_array
+--------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.convert_array
+
+
+convert\_frames
+---------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.convert_frames
+
+
+cpu\_storage
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.cpu_storage
+
+
+cuda\_config
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.cuda_config
+
+
+decode\_config
+--------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.decode_config
+
+
+decode\_image\_nvjpeg
+---------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.decode_image_nvjpeg
+
+
+decode\_packets
+---------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.decode_packets
+
+
+decode\_packets\_nvdec
+----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.decode_packets_nvdec
+
+
+demux\_audio
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.demux_audio
+
+
+demux\_config
+-------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.demux_config
+
+
+demux\_image
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.demux_image
+
+
+demux\_video
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.demux_video
+
+
+encode\_config
+--------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.encode_config
+
+
+encode\_image
+-------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.encode_image
+
+
+get\_audio\_filter\_desc
+------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.get_audio_filter_desc
+
+
+get\_filter\_desc
+-----------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.get_filter_desc
+
+
+get\_video\_filter\_desc
+------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.get_video_filter_desc
+
+
+load\_audio
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.load_audio
+
+
+load\_image
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.load_image
+
+
+load\_image\_batch\_nvjpeg
+--------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.load_image_batch_nvjpeg
+
+
+load\_npz
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.load_npz
+
+
+load\_video
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.load_video
+
+
+run\_async
+----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.run_async
+
+
+sample\_decode\_video
+---------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.sample_decode_video
+
+
+streaming\_decode\_packets
+--------------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.streaming_decode_packets
+
+
+to\_jax
+-------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.to_jax
+
+
+to\_numba
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.to_numba
+
+
+to\_numpy
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.to_numpy
+
+
+to\_torch
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.to_torch
+
+
+transfer\_buffer
+----------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.transfer_buffer
+
+
+transfer\_buffer\_cpu
+---------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.io.transfer_buffer_cpu
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+.. rubric:: Classes
+
+
+AudioFrames
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.AudioFrames
+
+
+AudioPackets
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.AudioPackets
+
+
+CPUBuffer
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.CPUBuffer
+
+
+CPUStorage
+----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.CPUStorage
+
+
+CUDABuffer
+----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.CUDABuffer
+
+
+CUDAConfig
+----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.CUDAConfig
+
+
+DecodeConfig
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.DecodeConfig
+
+
+DemuxConfig
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.DemuxConfig
+
+
+Demuxer
+-------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.Demuxer
+
+
+EncodeConfig
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.EncodeConfig
+
+
+Frames
+------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.Frames
+
+
+ImageFrames
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.ImageFrames
+
+
+ImagePackets
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.ImagePackets
+
+
+NpzFile
+-------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.NpzFile
+
+
+Packets
+-------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.Packets
+
+
+VideoFrames
+-----------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.VideoFrames
+
+
+VideoPackets
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.io.VideoPackets
+
+
+
+
+
+..
+ ############################################################################
+ Exceptions
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Sub modules
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Others
+ ############################################################################
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.run_async.rst.txt b/main/_sources/generated/spdl.io.run_async.rst.txt
new file mode 100644
index 00000000..cb8e46e8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.run_async.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.run\_async
+==================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: run_async
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.sample_decode_video.rst.txt b/main/_sources/generated/spdl.io.sample_decode_video.rst.txt
new file mode 100644
index 00000000..acc0c03f
--- /dev/null
+++ b/main/_sources/generated/spdl.io.sample_decode_video.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.sample\_decode\_video
+=============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: sample_decode_video
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.streaming_decode_packets.rst.txt b/main/_sources/generated/spdl.io.streaming_decode_packets.rst.txt
new file mode 100644
index 00000000..fda2c4c7
--- /dev/null
+++ b/main/_sources/generated/spdl.io.streaming_decode_packets.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.streaming\_decode\_packets
+==================================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: streaming_decode_packets
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.to_jax.rst.txt b/main/_sources/generated/spdl.io.to_jax.rst.txt
new file mode 100644
index 00000000..f9bdd6cc
--- /dev/null
+++ b/main/_sources/generated/spdl.io.to_jax.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.to\_jax
+===============
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: to_jax
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.to_numba.rst.txt b/main/_sources/generated/spdl.io.to_numba.rst.txt
new file mode 100644
index 00000000..e06531b8
--- /dev/null
+++ b/main/_sources/generated/spdl.io.to_numba.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.to\_numba
+=================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: to_numba
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.to_numpy.rst.txt b/main/_sources/generated/spdl.io.to_numpy.rst.txt
new file mode 100644
index 00000000..ca69d04c
--- /dev/null
+++ b/main/_sources/generated/spdl.io.to_numpy.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.to\_numpy
+=================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: to_numpy
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.to_torch.rst.txt b/main/_sources/generated/spdl.io.to_torch.rst.txt
new file mode 100644
index 00000000..fcd17240
--- /dev/null
+++ b/main/_sources/generated/spdl.io.to_torch.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.to\_torch
+=================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: to_torch
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.transfer_buffer.rst.txt b/main/_sources/generated/spdl.io.transfer_buffer.rst.txt
new file mode 100644
index 00000000..eeed0daf
--- /dev/null
+++ b/main/_sources/generated/spdl.io.transfer_buffer.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.transfer\_buffer
+========================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: transfer_buffer
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.io.transfer_buffer_cpu.rst.txt b/main/_sources/generated/spdl.io.transfer_buffer_cpu.rst.txt
new file mode 100644
index 00000000..418d52d7
--- /dev/null
+++ b/main/_sources/generated/spdl.io.transfer_buffer_cpu.rst.txt
@@ -0,0 +1,6 @@
+spdl.io.transfer\_buffer\_cpu
+=============================
+
+.. currentmodule:: spdl.io
+
+.. autofunction:: transfer_buffer_cpu
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.Pipeline.rst.txt b/main/_sources/generated/spdl.pipeline.Pipeline.rst.txt
new file mode 100644
index 00000000..a4007770
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.Pipeline.rst.txt
@@ -0,0 +1,16 @@
+spdl.pipeline.Pipeline
+======================
+
+.. currentmodule:: spdl.pipeline
+
+.. autoclass:: Pipeline
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~Pipeline.auto_stop
+ ~Pipeline.get_item
+ ~Pipeline.get_iterator
+ ~Pipeline.start
+ ~Pipeline.stop
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.PipelineBuilder.rst.txt b/main/_sources/generated/spdl.pipeline.PipelineBuilder.rst.txt
new file mode 100644
index 00000000..86cd13f2
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.PipelineBuilder.rst.txt
@@ -0,0 +1,17 @@
+spdl.pipeline.PipelineBuilder
+=============================
+
+.. currentmodule:: spdl.pipeline
+
+.. autoclass:: PipelineBuilder
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~PipelineBuilder.add_sink
+ ~PipelineBuilder.add_source
+ ~PipelineBuilder.aggregate
+ ~PipelineBuilder.build
+ ~PipelineBuilder.disaggregate
+ ~PipelineBuilder.pipe
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.PipelineFailure.rst.txt b/main/_sources/generated/spdl.pipeline.PipelineFailure.rst.txt
new file mode 100644
index 00000000..4fd507a0
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.PipelineFailure.rst.txt
@@ -0,0 +1,6 @@
+spdl.pipeline.PipelineFailure
+=============================
+
+.. currentmodule:: spdl.pipeline
+
+.. autoexception:: PipelineFailure
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.PipelineHook.rst.txt b/main/_sources/generated/spdl.pipeline.PipelineHook.rst.txt
new file mode 100644
index 00000000..163fe6de
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.PipelineHook.rst.txt
@@ -0,0 +1,13 @@
+spdl.pipeline.PipelineHook
+==========================
+
+.. currentmodule:: spdl.pipeline
+
+.. autoclass:: PipelineHook
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~PipelineHook.stage_hook
+ ~PipelineHook.task_hook
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.TaskStatsHook.rst.txt b/main/_sources/generated/spdl.pipeline.TaskStatsHook.rst.txt
new file mode 100644
index 00000000..d9bffbe0
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.TaskStatsHook.rst.txt
@@ -0,0 +1,13 @@
+spdl.pipeline.TaskStatsHook
+===========================
+
+.. currentmodule:: spdl.pipeline
+
+.. autoclass:: TaskStatsHook
+ :members:
+
+ .. rubric:: Methods
+
+ .. autosummary::
+ ~TaskStatsHook.stage_hook
+ ~TaskStatsHook.task_hook
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.create_task.rst.txt b/main/_sources/generated/spdl.pipeline.create_task.rst.txt
new file mode 100644
index 00000000..699103eb
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.create_task.rst.txt
@@ -0,0 +1,6 @@
+spdl.pipeline.create\_task
+==========================
+
+.. currentmodule:: spdl.pipeline
+
+.. autofunction:: create_task
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.pipeline.rst.txt b/main/_sources/generated/spdl.pipeline.rst.txt
new file mode 100644
index 00000000..992eb2bd
--- /dev/null
+++ b/main/_sources/generated/spdl.pipeline.rst.txt
@@ -0,0 +1,162 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+spdl.pipeline
+=============
+
+.. automodule:: spdl.pipeline
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+.. rubric:: Functions
+
+
+create\_task
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.pipeline.create_task
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+.. rubric:: Classes
+
+
+Pipeline
+--------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.pipeline.Pipeline
+
+
+PipelineBuilder
+---------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.pipeline.PipelineBuilder
+
+
+PipelineHook
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.pipeline.PipelineHook
+
+
+TaskStatsHook
+-------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+ :template: _custom_autosummary_class.rst
+
+ ~spdl.pipeline.TaskStatsHook
+
+
+
+
+
+..
+ ############################################################################
+ Exceptions
+ ############################################################################
+
+
+
+.. rubric:: Exceptions
+
+
+PipelineFailure
+---------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.pipeline.PipelineFailure
+
+
+
+
+
+..
+ ############################################################################
+ Sub modules
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Others
+ ############################################################################
+
+
+
+
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.get_ffmpeg_filters.rst.txt b/main/_sources/generated/spdl.utils.get_ffmpeg_filters.rst.txt
new file mode 100644
index 00000000..3482289a
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.get_ffmpeg_filters.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.get\_ffmpeg\_filters
+===============================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: get_ffmpeg_filters
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.get_ffmpeg_log_level.rst.txt b/main/_sources/generated/spdl.utils.get_ffmpeg_log_level.rst.txt
new file mode 100644
index 00000000..32ecddb1
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.get_ffmpeg_log_level.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.get\_ffmpeg\_log\_level
+==================================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: get_ffmpeg_log_level
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.is_cuda_available.rst.txt b/main/_sources/generated/spdl.utils.is_cuda_available.rst.txt
new file mode 100644
index 00000000..a498462e
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.is_cuda_available.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.is\_cuda\_available
+==============================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: is_cuda_available
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.is_nvcodec_available.rst.txt b/main/_sources/generated/spdl.utils.is_nvcodec_available.rst.txt
new file mode 100644
index 00000000..58c2e330
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.is_nvcodec_available.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.is\_nvcodec\_available
+=================================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: is_nvcodec_available
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.rst.txt b/main/_sources/generated/spdl.utils.rst.txt
new file mode 100644
index 00000000..c8aa99e8
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.rst.txt
@@ -0,0 +1,183 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+spdl.utils
+==========
+
+.. automodule:: spdl.utils
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+.. rubric:: Functions
+
+
+get\_ffmpeg\_filters
+--------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.get_ffmpeg_filters
+
+
+get\_ffmpeg\_log\_level
+-----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.get_ffmpeg_log_level
+
+
+is\_cuda\_available
+-------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.is_cuda_available
+
+
+is\_nvcodec\_available
+----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.is_nvcodec_available
+
+
+set\_ffmpeg\_log\_level
+-----------------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.set_ffmpeg_log_level
+
+
+trace\_counter
+--------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.trace_counter
+
+
+trace\_event
+------------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.trace_event
+
+
+trace\_gc
+---------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.trace_gc
+
+
+tracing
+-------
+.. autosummary::
+ :toctree:
+ :nosignatures:
+ :hide_from_toctree:
+
+ ~spdl.utils.tracing
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Exceptions
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Sub modules
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Others
+ ############################################################################
+
+
+
+
+
+
+
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.set_ffmpeg_log_level.rst.txt b/main/_sources/generated/spdl.utils.set_ffmpeg_log_level.rst.txt
new file mode 100644
index 00000000..d1b282d5
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.set_ffmpeg_log_level.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.set\_ffmpeg\_log\_level
+==================================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: set_ffmpeg_log_level
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.trace_counter.rst.txt b/main/_sources/generated/spdl.utils.trace_counter.rst.txt
new file mode 100644
index 00000000..e8a481ff
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.trace_counter.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.trace\_counter
+=========================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: trace_counter
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.trace_event.rst.txt b/main/_sources/generated/spdl.utils.trace_event.rst.txt
new file mode 100644
index 00000000..41e9d851
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.trace_event.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.trace\_event
+=======================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: trace_event
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.trace_gc.rst.txt b/main/_sources/generated/spdl.utils.trace_gc.rst.txt
new file mode 100644
index 00000000..d395789d
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.trace_gc.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.trace\_gc
+====================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: trace_gc
\ No newline at end of file
diff --git a/main/_sources/generated/spdl.utils.tracing.rst.txt b/main/_sources/generated/spdl.utils.tracing.rst.txt
new file mode 100644
index 00000000..dd7a253d
--- /dev/null
+++ b/main/_sources/generated/spdl.utils.tracing.rst.txt
@@ -0,0 +1,6 @@
+spdl.utils.tracing
+==================
+
+.. currentmodule:: spdl.utils
+
+.. autofunction:: tracing
\ No newline at end of file
diff --git a/main/_sources/generated/video_dataloading.rst.txt b/main/_sources/generated/video_dataloading.rst.txt
new file mode 100644
index 00000000..ea4e8e4b
--- /dev/null
+++ b/main/_sources/generated/video_dataloading.rst.txt
@@ -0,0 +1,125 @@
+..
+ Custom template for our custom_autosummary.
+ The purpose of using custom_autosummary is list the entries on
+ the right side bar instead of the left side bar.
+ This is achieved with the combination of custom directive, template and CSS.
+
+ The `custom_autosummary` directive functions mostly like `autosummary`. We
+ pass `:toctree:` option to generate a doc page for each entry, but we use
+ our custom `:hide_from_toctree:` option so as not to attach them in ToC tree.
+
+ This template inserts a section header for each entry, so that they show up
+ in the right-side bar. The headers are hidden by CSS.
+
+ Because each entry will have its own table and their borders no longer match,
+ table borders are hidden by CSS and instead we use horizontal line.
+
+.. raw:: html
+
+
+
+video\_dataloading
+==================
+
+.. automodule:: video_dataloading
+
+..
+ ############################################################################
+ Source
+ ############################################################################
+
+Source
+------
+
+.. rubric:: Source
+
+.. raw:: html
+
+
+ Click here to see the source.
+
+.. literalinclude:: ../../../examples/video_dataloading.py
+ :linenos:
+
+.. raw:: html
+
+
+
+..
+ ############################################################################
+ Functions
+ ############################################################################
+
+
+
+
+Functions
+---------
+.. rubric:: Functions
+
+
+
+.. autofunction:: video_dataloading.entrypoint
+
+
+
+.. autofunction:: video_dataloading.worker_entrypoint
+
+
+
+.. autofunction:: video_dataloading.benchmark
+
+
+
+.. autofunction:: video_dataloading.source
+
+
+
+.. autofunction:: video_dataloading.decode_video
+
+
+
+.. autofunction:: video_dataloading.decode_video_nvdec
+
+
+
+.. autofunction:: video_dataloading.get_pipeline
+
+
+
+
+
+..
+ ############################################################################
+ Attributes
+ ############################################################################
+
+
+
+
+
+..
+ ############################################################################
+ Classes
+ ############################################################################
+
+
+
+
+Classes
+-------
+
+.. rubric:: Classes
+
+
+
+.. autoclass:: video_dataloading.PerfResult
+ :members:
+
+
+
+
+
+.. raw:: html
+
+
\ No newline at end of file
diff --git a/main/_sources/getting_started/concurrency.rst.txt b/main/_sources/getting_started/concurrency.rst.txt
new file mode 100644
index 00000000..34780a9e
--- /dev/null
+++ b/main/_sources/getting_started/concurrency.rst.txt
@@ -0,0 +1,130 @@
+Concurrency
+===========
+
+.. py:currentmodule:: spdl.dataloader
+
+The pipelines we looked at so far process data sequentially.
+Now let's introduce concurrency to the pipeline so that it finishes jobs faster.
+
+There are two parameters that affects the pipeline performance.
+
+1. Stage concurrency
+2. Thread pool size
+
+Stage Concurrency
+-----------------
+
+The stage concurrency can be configured with ``concurrency`` argument in the :py:meth:`PipelineBuilder.pipe` method.
+
+This argument determines at most how many operations of the stage the event loop would schedule at a given time.
+
+.. important::
+
+ Please note that **scheduling multiple tasks concurrently does not necessarily mean
+ all of them are executed concurrently.** The execution of scheduled tasks is subject to
+ the availability of resources required for the execution.
+
+ See the :ref:`Thread Pool Size` for the detail.
+
+For example, let's say we have a pipeline that downloads data and pre-process them, and we implement it like the following.
+
+.. code-block::
+
+ pipeline = (
+ PipelineBuilder()
+ .add_source(url_generator)
+ .pipe(download, concurrency=4)
+ .pipe(preprocess, concurrency=2)
+ .add_sink(3)
+ .build()
+ )
+
+The ``download`` stage will schedule 4 tasks, and wait for any of the tasks to complete. When a task is completed, the stage will schedule another task with new input data.
+
+Similarly, ``preprocess`` stage will schedule 2 tasks and when a task is completed, it will schedule another task.
+
+The following diagram illustrates this.
+
+.. mermaid::
+
+ flowchart TD
+ A[url_generator]
+ subgraph B[download]
+ b1[download 1]
+ b2[download 2]
+ b3[download 3]
+ b4[download 4]
+ end
+ subgraph C[preprocess]
+ c1[preprocess 1]
+ c2[preprocess 2]
+ end
+ subgraph D[sink]
+ d1[result 1]
+ d2[result 2]
+ d3[result 3]
+ end
+ A --> B
+ B --> C
+ C --> D
+
+.. note::
+
+ When the stage concurrency is bigger than 1, the results of the operations are,
+ by default, put to the output queue in the order of task completion.
+ Therefore the order of the processed items can change.
+
+ This behavior can be changed by specifying ``output_order="input"`` in
+ :py:meth:`PipelineBuilder.pipe` method, so that the order of the output is same
+ as the input.
+
+Thread Pool Size
+----------------
+
+Async event loop uses :py:class:`~concurrent.futures.ThreadPoolExecutor` to execute
+synchronous functions as async functions.
+
+When executing functions that are synchronous, the event loop can offload
+its execution to the thread pool and wait for its completion.
+This is what :py:meth:`~asyncio.loop.run_in_executor` does and it is a primal
+way to execute synchronous functions in async event loop.
+
+The majority of operations performed in ML data loading are synchronous, so we need to
+use this mechanism to run them in asynchronous context.
+Or in an alternative view, the event loop acts as a surrogate who manages the thread pool
+and does all the scheduling and inter/intra op parallelization.
+
+The size of thread pool can be specified with ``num_threads`` argument in the
+:py:meth:`PipelineBuilder.build` method.
+
+The size of the thread pool serves as the capacity that pipeline can execute synchronous
+functions concurrently. Therefore, if concurrently scheduling multiple tasks of
+synchronous operations, the size of thread pool must be bigger than the number of
+the concurrency.
+
+The following code snippet illustrates this.
+
+.. code-block::
+
+ def preprocess(data):
+ """A hypothetical preprocessing function. (not async)"""
+ ...
+
+ pipeline = (
+ PipelineBuilder()
+ .add_source(source)
+ .pipe(preprocess, concurrency=3)
+ # Run at most 3 `preprocess` functions concurrently.
+ .add_sink(3)
+ .build(num_threads=3)
+ # Use 3 threads in the thread pool to accommodate 3 async_preprocess
+ )
+
+.. note::
+
+ Note that there are cases where the stage concurrency and
+ thread pool size are irrelevant.
+
+ For example, some libraries implement thread-based parallelism in
+ low-level language like C++. When using such libraries the concurrency
+ is constraint by the resource managed by the library.
diff --git a/main/_sources/getting_started/index.rst.txt b/main/_sources/getting_started/index.rst.txt
new file mode 100644
index 00000000..ddc3bdba
--- /dev/null
+++ b/main/_sources/getting_started/index.rst.txt
@@ -0,0 +1,8 @@
+Getting Started
+===============
+
+.. toctree::
+
+ intro
+ stages
+ concurrency
diff --git a/main/_sources/getting_started/intro.rst.txt b/main/_sources/getting_started/intro.rst.txt
new file mode 100644
index 00000000..381fd0ca
--- /dev/null
+++ b/main/_sources/getting_started/intro.rst.txt
@@ -0,0 +1,63 @@
+Building and Running Pipeline
+=============================
+
+.. py:currentmodule:: spdl.dataloader
+
+First, let's look at how easy it is to build the pipeline in SPDL.
+
+The following snippet demonstrates how one can construct a
+:py:class:`Pipeline` object using a :py:class:`PipelineBuilder` object.
+
+.. code-block::
+
+ >>> from spdl.dataloader import PipelineBuilder
+ >>>
+ >>> pipeline = (
+ ... PipelineBuilder()
+ ... .add_source(range(12))
+ ... .pipe(lambda x: 2 * x)
+ ... .pipe(lambda x: x + 1)
+ ... .aggregate(3)
+ ... .add_sink(3)
+ ... .build()
+ ... )
+
+
+The resulting :py:class:`Pipeline` object contains all the logic to
+perform the operations in an async event loop in the background thread.
+
+To run the pipeline, call :py:meth:`Pipeline.start`.
+Once the pipeline starts executing, you can iterate on the pipeline.
+Finally call :py:meth:`Pipeline.stop` to stop the background thread.
+
+.. code-block::
+
+ >>> pipeline.start()
+ >>>
+ >>> for item in pipeline:
+ ... print(item)
+ [1, 3, 5]
+ [7, 9, 11]
+ [13, 15, 17]
+ [19, 21, 23]
+ >>> pipeline.stop()
+
+It is important to call :py:meth:`Pipeline.stop`.
+Forgetting to do so will leave the background thread running,
+leading to the situation where Python interpreter gets stuck at exit.
+
+In practice, there is always a chance that data processing raises an error,
+so there is a context manager :py:meth:`Pipeline.auto_stop` to make sure that
+pipeline is stopped.
+
+.. code-block::
+
+ >>> with pipeline.auto_stop():
+ ... for item in pipeline:
+ ... print(item)
+
+.. note::
+
+ Once :py:meth:`Pipeline.stop` method is called, the ``Pipeline`` object is unusable.
+ To pause and resume the execution, simply keep the reference around until the
+ next use.
diff --git a/main/_sources/getting_started/stages.rst.txt b/main/_sources/getting_started/stages.rst.txt
new file mode 100644
index 00000000..433eea0c
--- /dev/null
+++ b/main/_sources/getting_started/stages.rst.txt
@@ -0,0 +1,136 @@
+Pipeline Stages
+===============
+
+.. py:currentmodule:: spdl.dataloader
+
+:py:class:`Pipeline` is composed of multiple stages.
+There are mainly three kind of stages.
+
+- Source
+- Processing
+- Sink (buffer)
+
+Source
+------
+
+Source specifies where the data are located. This is typically file paths or URLs.
+The source can be set with :py:meth:`PipelineBuilder.add_source`
+method. The only requirement for the source object is that it must implement
+:py:class:`~collections.abc.Iterable` or :py:class:`~collections.abc.AsyncIterable`
+interface.
+
+For example
+
+- Load a list of paths from a file.
+
+.. code-block::
+
+ def load_path_from_file(input_path: str):
+ with open(input_path, "r") as f:
+ for line in f:
+ if path := line.strip():
+ yield path
+
+- Files in directories
+
+.. code-block::
+
+ def find_files(path: Path, ext: str):
+ yield from path.glob(f'**/*{ext}')
+
+- Asynchronously list files in remote storage
+
+.. code-block::
+
+ # Using some imaginary client
+ async def list_bucket(bucket: str) -> AsyncIterator[str]:
+ client = client.connect()
+ async for route in client.list_bucket(bucket):
+ yield route
+
+.. note::
+
+ Since the source object is executed in async event loop, if the source is
+ ``Iterable`` (synchronous iterator), the source object must be lightweight
+ and refrain from performing blocking operation.
+
+ Running a blocking operation in async event loop can, in turn, prevent the
+ loop from scheduling callbacks, prevent tasks from being canceled, and
+ prevent the background thread from joining.
+
+Processing
+----------
+
+Pre-processing is where a variety of operations are applied to the items passed
+from the previous stages.
+
+You can define processing stage by passing an operator function (callable) to
+:py:meth:`~PipelineBuilder.pipe`. (Also there is :py:meth:`~PipelineBuilder.aggregate`
+method, which can be used to stack multiple items.)
+
+The operator can be either async function or synchronous function. Either way,
+the operator must take exactly one argument†, which is an output from the earlier
+stage.
+
+.. note::
+
+ † If you need to pass multiple objects between stages, use tuple or define a
+ protocol using :py:class:`~dataclasses.dataclass`.
+
+The following diagram illustrates a pipeline that fetch images from remote
+locations, batch decode and send data to GPU.
+
+.. mermaid::
+
+ flowchart TD
+ A[Source] --> B(Acquire data)
+ B --> C(Batch)
+ C --> D(Decode & Pre-process &Transfer to GPU & Convert to Tensor)
+ D --> E[Sink]
+
+An implementation could look like this.
+It uses :py:func:`spdl.io.async_load_image_batch`, which can decode and resize images
+and send the decoded frames to GPU in asynchronously.
+
+.. code-block::
+
+ >>> import spdl.io
+ >>> from spdl.dataloader import PipelineBuilder
+ >>>
+ >>> def source() -> Iterator[str]:
+ ... """Returns the list of URLs to fetch data from"""
+ ... ...
+ >>>
+ >>> async def download(url: str) -> bytes:
+ ... """Download data from the given URL"""
+ ... ...
+ >>>
+ >>> async def process(data: list[bytes]) -> Tensor:
+ ... """Given raw image data, decode, resize, batch and transfer data to GPU"""
+ ... buffer = spdl.io.async_load_image_batch(
+ ... data,
+ ... width=224,
+ ... height=224,
+ ... cuda_config=spdl.io.cuda_config(device_index=0),
+ ... )
+ ... return spdl.io.to_torch(buffer)
+ >>>
+ >>> pipeline = (
+ ... PipelineBuiler()
+ ... .add_source(source())
+ ... .pipe(download)
+ ... .aggregate(32)
+ ... .pipe(process)
+ ... .add_sink(4)
+ ... .build()
+ ... )
+ >>>
+ >>>
+
+
+Sink
+----
+
+Sink is a buffer where the results of the pipeline is accumulated.
+A sink can be attached to pipeline with :py:meth:`PipelineBuilder.add_sink` method.
+You can specify how many items can be buffered in the sink.
diff --git a/main/_sources/index.rst.txt b/main/_sources/index.rst.txt
new file mode 100644
index 00000000..40edee05
--- /dev/null
+++ b/main/_sources/index.rst.txt
@@ -0,0 +1,43 @@
+.. SPDL documentation master file, created by
+ sphinx-quickstart on Fri Jun 14 19:39:36 2024.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+SPDL
+====
+
+SPDL (Scalable and Performant Data Loading)
+
+.. toctree::
+ :hidden:
+
+ Home
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents
+
+ overview
+ installation
+ getting_started/index
+ performance_analysis/index
+ migration/index
+ best_practice
+ examples
+ fb/examples
+ faq
+
+.. toctree::
+ :maxdepth: 2
+ :caption: API References
+
+ API Reference
+ API Reference (Meta)
+ API Reference (C++)
+ API Index
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Development Notes
+
+ notes/index
diff --git a/main/_sources/installation.rst.txt b/main/_sources/installation.rst.txt
new file mode 100644
index 00000000..77360563
--- /dev/null
+++ b/main/_sources/installation.rst.txt
@@ -0,0 +1,147 @@
+Installation
+============
+
+From source
+-----------
+
+The following command will build and install `spdl` Python package.
+
+.. note::
+
+ Make sure to use `-v` to see the log from the actual build process.
+
+**Regular installation**
+
+.. code-block::
+
+ pip install . -v
+
+**Development installation**
+
+.. code-block::
+
+ pip install -e . -v
+
+The build process first downloads/builds/installs some third-party
+dependencies, then it builds SPDL and its binding code.
+
+Build can be customized through the environment variables;
+
+- ``SPDL_USE_CUDA=1``: Enable CUDA integration, such as background data transfer.
+- ``SPDL_USE_NVCODEC=1``: Enable
+ `NVIDIA VIDEO CODEC `_
+ integration, i.e. GPU video decoder and direct CUDA memory placement
+- ``SPDL_USE_TRACING=1``: Enable `Perfetto `_
+ integration for performance profiling.
+- ``SPDL_USE_FFMPEG_VERSION``: Specify the version of FFmpeg you want to use
+ to reduce the build time. By default, SPDL compiles against FFmpeg 4, 5, 6 and 7,
+ and pick available one at run time.
+- ``SPDL_RELASE_GIL=0``: I/O module does not release GIL. This is intended to be used for
+ experimenting with free-threaded Python (3.13+).
+
+See `setup.py `_ for the up-to-date available options.
+
+Trouble Shooting
+----------------
+
+If you hit an error like the following, ``--no-build-isolation`` can help.
+
+.. code-block:: text
+
+ Installing collected packages: ninja, wheel, setuptools, cmake
+ Creating /tmp/pip-build-env-1ac3bsc_/overlay/bin
+ changing mode of /tmp/pip-build-env-1ac3bsc_/overlay/bin/ninja to 775
+ changing mode of /tmp/pip-build-env-1ac3bsc_/overlay/bin/wheel to 775
+ changing mode of /tmp/pip-build-env-1ac3bsc_/overlay/bin/cmake to 775
+ changing mode of /tmp/pip-build-env-1ac3bsc_/overlay/bin/cpack to 775
+ changing mode of /tmp/pip-build-env-1ac3bsc_/overlay/bin/ctest to 775
+ Successfully installed cmake-3.30.5 ninja-1.11.1.1 setuptools-75.2.0 wheel-0.44.0
+
+ ...
+
+ CMake Error at CMakeLists.txt:3 (project):
+ Running
+
+ '/tmp/pip-build-env-xic7ygls/overlay/bin/ninja' '--version'
+
+ failed with:
+
+ no such file or directory
+
+This happens because, somehow ``cmake`` command is not pointing the ``ninja`` installed
+by ``pip``.
+
+One workaround is to use ``--no-build-isolation`` option.
+e.g. ``TMPDIR="${PWD}/build" pip install . -v --no-build-isolation``
+
+
+Requirements
+------------
+
+* Supported OS: Linux, macOS
+
+* Build requirements
+ - C++20 compiler (Tested on GCC 11 and Clang 15)
+ - CMake, Ninja
+ - (Optional) CUDA Toolkit
+
+* Runtime Requirements and dependencies
+ - Python 3.10+
+ - NumPy
+ - (Optional) PyTorch
+ - (Optional) Numba
+ - (Optional) CUDA runtime
+
+Dependencies
+------------
+
+The libspdl uses the following third party libraries, which are fetched and built automatically during the build process.
+
+* `{fmt} `_ (`MIT `_)
+* `gflags `_ (`BSD-3 `_)
+* `glog