12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- The official guide to swresample for confused developers.
- =========================================================
- Current (simplified) Architecture:
- ---------------------------------
- Input
- v
- __________________/|\___________
- / | \
- / input sample format convert v
- / | ___________/
- | |/
- | v
- | ___________/|\___________ _____________
- | / | \ | |
- | Rematrix | resample <---->| Buffers |
- | \___________ | ___________/ |_____________|
- v \|/
- Special Converter v
- v ___________/|\___________ _____________
- | / | \ | |
- | Rematrix | resample <---->| Buffers |
- | \___________ | ___________/ |_____________|
- | \|/
- | v
- | |\___________
- \ | \
- \ output sample format convert v
- \_________________ | ___________/
- \|/
- v
- Output
- Planar/Packed conversion is done when needed during sample format conversion.
- Every step can be skipped without memcpy when it is not needed.
- Either Resampling and Rematrixing can be performed first depending on which
- way it is faster.
- The Buffers are needed for resampling due to resamplng being a process that
- requires future and past data, it thus also introduces inevitably a delay when
- used.
- Internally 32bit float and 16bit int is supported currently, other formats can
- easily be added.
- Externally all sample formats in packed and planar configuration are supported
- It's also trivial to add special converters for common cases.
- If only sample format and/or packed/planar conversion is needed, it
- is performed from input to output directly in a single pass with no intermediates.
|