| 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. |