Releases: facebookresearch/spdl
v0.0.14
Documentation Update
- Improved the documentation.
The SPDL was started as a experiment for multi-threading, but now it's not just multi-threading but also multi-processing.
It's more about production readiness, iterative optimization enabled by observability and flexibility.
The Overview and Getting Started have been updated to reflect this - Optimization Guide
https://facebookresearch.github.io/spdl/0.0.14/performance_analysis/index.html
In the new Optimization Guide section, we share the methodologies we develop while optimizing various production pipelines.
It illustrates how we estimate the data loading inefficiency, identify the bottleneck, and how we approach solving the bottleneck.
BC-breaking Changes
-
Propagate severe Pipeline errors to front-end by @mthrok in #699
WhenPipelineencounters an unexpected error, in addition to shutting down the pipeline,
the error is now propagated to the foreground.The unexpected error includes an error occurred in source iterator.
The errors happen in functions provided by users toPipeline.pipeare expected, so they are not part of it.
Bugfixes
Other Changes
- Increase the pipe output buffer size to 2 by @mthrok in #700
- Do not auto-populate
stop_afterby @mthrok in #702 - Make disaggregate to async by @mthrok in #703
Full Changelog: v0.0.13...v0.0.14
v0.0.13 - Observability Improvment
Better observability towards bottleneck detection
In this release, we re-organized the pipeline hooks, and expose the periodic performance measurement mechanism as public interface.
This allows to tap into the performance statistics of data processing pipeline, which makes it easy to analyze the pipeline performance, and optimize the pipeline.
Please checkout the renewed Performance Analysis documentation, and example to learn how to log the runtime performance statistics.
BC-breaking Changes
- Merge QueueClass and hook creation interface by @moto-meta in #691
New Features
- Expose stats logging as public API by @mthrok in #686
- Add performance analysis example by @mthrok in #694
- Add performance analysis docs by @mthrok in #693
Full Changelog: v0.0.12...v0.0.13
v0.0.12
New features
- Improved streaming media processing capability, including multi-stream demuxing, remuxing, encoding and complex filter graph capability.
- You can demux multiple streams from the source. (such as audio and video packets.)
- With the new
Muxerclass, you can encode media or remux packets. - Please check out the
streaming_video_processing.pyfor audio remuxing, streaming video decoding, and encoding.
- The new
FilterGraphclass can perform complex filtering, multiple-input, multiple-output and multi-media processing. One popular example isoverlayto add watermark on videos processed by AI. Please checkout the documentation.
What's Changed
- Rename BSF implementation by @mthrok in #631
- Add tests for codec by @mthrok in #632
- Add BSF class by @mthrok in #634
- Replace the implementation of BSF for nvdec by @mthrok in #635
- Add method to query stream index by @mthrok in #636
- Support multi-stream demuxing by @mthrok in #637
- Add duration option to multi-stream demuxing by @mthrok in #638
- Do not run packaging jobs on main branch after merge by @mthrok in #644
- Add channel_layout/sample_aspect_ratio attributes by @mthrok in #640
- Tweak test util for consistency by @mthrok in #641
- Add default stream by @mthrok in #642
- Returns None if there is no packet/frames by @mthrok in #643
- Add filter graph public class by @mthrok in #639
- Fix issues on encoding by @mthrok in #646
- Improve error message by @mthrok in #647
- Add audio encode config by @mthrok in #648
- Add video encode config by @mthrok in #649
- Add muxer by @mthrok in #645
- Add audio encoding by @mthrok in #650
- Add video encoding by @mthrok in #651
- Deprecate streaming_demux_video by @mthrok in #653
- Remove obsolete function by @mthrok in #652
- Return packets directly when stream is specified with single int by @mthrok in #654
- Add streaming video processing example by @mthrok in #655
- Update mermaid js version by @mthrok in #658
- Do not run lint job on master branch by @mthrok in #659
- Set cancellation by @mthrok in #660
- Fix doc by @mthrok in #661
- Bump version by @mthrok in #662
- Update doc by @mthrok in #663
- [BC-Breaking] Replace encode_image with save_image by @mthrok in #656
- Merge the internal implementation of FilterGraph by @mthrok in #657
- Get rid of custom source and use existing url attr by @mthrok in #664
- Remove wheel from build dep by @mthrok in #665
- Retrieve proper time base from BSF by @mthrok in #666
- Ensure no new Python download by @mthrok in #667
- Merge frame_rate impl by @mthrok in #668
- Improve the error message when using subprocess by @mthrok in #669
- Match the signature default value to usecase by @mthrok in #670
- Add pipeline ID to stage names by @mthrok in #671
- Add queue occupation rate log by @moto-meta in #672
- Update docs by @mthrok in #673
- Default to build nvdec by @mthrok in #677
- Set CMAKE_BUILD_TYPE=Release by @mthrok in #676
Full Changelog: v0.0.11...v0.0.12
v0.0.11
New features
- Add streaming NVDEC decoding example #571
- Add streaming_load_video_nvdec func #538
- Use None for skipping item in pipeline #545
- Add codec metadata #569
- Add stream sync #537
- Add streaming decoder #553, #566
- Add timestamp to frames
__repr__#586 - Add function to convert RGB video tensor to Frames #587
The following new features will be available in the next release.
- Add video encoder #592
- Add Muxer implementation #594
- Add audio encoding #597
- Add colorspace options #603
- Add time_base attributes to Audio/Video codec #604
- Add end time in Frames timestamp representation #605
- Add FilterGraph public C++ interface #606
- Add stream_index to Packets #626
BC-breaking changes
- [BC-breaking] Remove streaming_decode_packets #562
- [BC-Breaking] Do not copy attach codec when stream demuxing #621
Fixes
- Fix nvJPEG build #546
Test/CI
Full Changelog: v0.0.10...v0.0.11
v0.0.10
Summary
- You can now install SPDL with
pip install spdl, and use CUDA and NVDEC.- The extension module has been split into core and CUDA. Now it's possible to use CUDA package in environments without CUDA.
- The PyPI distributions for Linux x86_64 includes CUDA extension.
- NVEDC support has been added to CUDA extension. See the doc for the detail.
New Features
- Added
spdl.io.apply_bsfto apply bit-stream filtering to packets (#522, #503) - Added function to fetch FFmpeg versions (#507)
- Added NV12 to RGB color conversion functions (#528, #525, #526)
- Added a new
NvDecDecoder, which supports streaming decoding. (#517, #520, #531) - Added support to fetch codec from
PacketsandDemuxer. (#521)
BC-Breaking changes
- Removed alpha channel from NVDEC decoding (#527)
- The HOLD_GIL build option has been removed (#509, #511)
- Renamed the build config query functions
is_availabletobuilt_with(#514, #505)
Bugfix
- Fixed the allocator function signature by @mthrok in #504
- Fixed segfault when not built with CUDA by @mthrok in #513
Split code/binding/packages
Refactoring CUDA-related code
- Use spdl::cuda namespace for CUDA-related features by @mthrok in #495
- Reduce FFmpeg redundancy from CUDA extension by @mthrok in #498
- Do not pass AVCodecID directly by @mthrok in #499
- Do not link ffmpeg when building CUDA ext by @mthrok in #502
- Use iterator by @mthrok in #506
- Fix CUDA availability by @mthrok in #512
- Define CUDAStoragePtr by @mthrok in #519
- Move CUDA utils to detail by @mthrok in #530
- Add missing glog header inclusion to logging by @mthrok in #524
- Add constant accessor to CUDABuffer by @mthrok in #523
- Remove stray defs by @mthrok in #515
- Remove AVCodec from CUDA extension by @mthrok in #501
- Define CUDA_API_PER_THREAD_DEFAULT_STREAM by @mthrok in #518
- Clean up CUDA initialization logic by @mthrok in #529
CI Improvement
Full Changelog: v2025.03.17.00...v0.0.10
v0.0.9
What's Changed
The FFmpeg7 integration has been fixed.
- Add version attribute by @mthrok in #412
- Append queue name with index by @mthrok in #418
- Prefix the queue/stage order by @mthrok in #421
- Fix FFmpeg7 Integration by @mthrok in #189
Full Changelog: v0.0.8...v0.0.9
Please checkout the Assets bellow to download CUDA binaries.
Release Assets
release-assets Initial Commit
v0.0.8 - The first (yet experimental) release
SPDL is now available on PyPI for the following platform and Python versions.
You can install it with pip install spdl.
- Linux/macOS
- Python 3.10, 3.11, 3.12 and 3.13
There is no binary distribution for 3.13t yet.
The IO module with CUDA support is not available on PyPI.
Instead you can download wheels compiled with CUDA 12.6 from the following Assets section.
You need to install nvidia-cuda-runtime-cu12 package.
(It's available in https://pypi.org/project/nvidia-cuda-runtime-cu12/ or
if you are installing PyTorch following from the official channel, it will be automatically installed.)
The spdl distribution is an empty meta package.
The actual functionalities are split into spdl_io and spdl_core packages.
They are independent each other and can be installed separately.
For the detail of package usage, please refer to the documentation.
https://facebookresearch.github.io/spdl/0.0.8/index.html