tizen 2.3 release
[framework/multimedia/ffmpeg.git] / doc / swresample.txt
1     The official guide to swresample for confused developers.
2    =========================================================
3
4 Current (simplified) Architecture:
5 ---------------------------------
6                         Input
7                           v
8        __________________/|\___________
9       /                   |            \
10      /    input sample format convert   v
11     /                     | ___________/
12     |                     |/
13     |                     v
14     |         ___________/|\___________              _____________
15     |        /            |            \            |             |
16     |   Rematrix          |          resample <---->|   Buffers   |
17     |        \___________ | ___________/            |_____________|
18     v                    \|/
19 Special Converter         v
20     v         ___________/|\___________              _____________
21     |        /            |            \            |             |
22     |   Rematrix          |          resample <---->|   Buffers   |
23     |        \___________ | ___________/            |_____________|
24     |                    \|/
25     |                     v
26     |                     |\___________
27     \                     |            \
28      \   output sample format convert   v
29       \_________________  | ___________/
30                          \|/
31                           v
32                         Output
33
34 Planar/Packed convertion is done when needed during sample format convertion
35 Every step can be skipped without memcpy when its not needed.
36 Either Resampling and Rematrixing can be performed first depending on which
37 way its faster.
38 The Buffers are needed for resampling due to resamplng being a process that
39 requires future and past data, it thus also introduces inevitably a delay when
40 used.
41 Internally 32bit float and 16bit int is supported currently, other formats can
42 easily be added
43 Externally all sample formats in packed and planar configuration are supported
44 Its also trivial to add special converters for common cases
45 If only sample format and or packed/planar convertion is needed it
46 is performed from input to output directly in a single pass with no intermediates.