/------------------------------\/------------------------------\/------\/------\/------\/------\ | long || long || sh || o || r || t | dct coefs \------------------------------/\------------------------------/\------/\------/\------/\------/ | | | | | | | | | | | | imdct_half() V V V V V V /------------------------------\/------------------------------\/------\/------\/------\/------\ | long || long || sh || o || r || t | idcted coefs \------------------------------/\------------------------------/\------/\------/\------/\------/ : | : | : | : | : | : | : | : dow: memcpy : window: memcpy : window: window: window: window: win overlap with fmul_window() : | : | : | : | : | : | : | : (":" marks the border between one window or memcpy and the next.) : V : V : V : V : V : V : V : ---/------------------------\--------------------------------------/\--------------/\----------- / \ / \ / \ / \ / \ o / \ t / long \ long / \ / \ output samples \ / sh \ / r \ / (diagonals mark window magnitudes, drawn as triangles rather than sines because this is ascii.) \ / \ / \ / (direction doesn't mean anything; I alternated up and down just because that fits nicely in the diagram.) \ / \ / \ / -----------------------------------\------------------------/--------------\/--------------\/---