A method of decoding or encoding, the method comprising: generating a new multi-transform data structure by embedding one or more non-recursive transforms into a larger recursive transform; receiving information regarding a target data block for encoding or decoding, the target data block for encoding or decoding being one of: a compressed video or image data block or an uncompressed video or image data block; determining whether to use a recursive transform or a non-recursive transform for the encoding or decoding of the target data block; when a result of the determination is to use the recursive transform: generate the recursive transform using the multi-transform data structure and cause or transmit information that causes the target data block to be encoded or decoded using the generated recursive transform; and when a result of the determination is to use the non-recursive transform of the multi-transform data structure: cause or transmit information that causes the target data block to be encoded or decoded using one of the one or more non-recursive transforms embedded in the multi-transform data structure, wherein at least part of the one of the one or more non-recursive transforms of the multi-transform data structure is embedded in at least part of one half of the larger recursive transform of the multi-transform data structure, characterized in that, the recursive transform is a 2N-point DCT-2 and the one of the one or more of non-recursive transforms is a N-point scaled DST-7 or DCT-8, the method further comprising: creating a resulting basis that corresponds to original odd bases of 2N-point DCT-2 by: (i) replacing a first half of the odd bases of 2N-point DCT-2 with N-point scaled DST-7 or DCT-8 bases, and (ii) filling a second half of the odd bases of the 2N-point DCT-2 with the flipped DST-7 or DCT-8 bases plus inverse signs. generating a new multi-transform data structure by embedding one or more non-recursive transforms into a larger recursive transform; receiving information regarding a target data block for encoding or decoding, the target data block for encoding or decoding being one of: a compressed video or image data block or an uncompressed video or image data block; determining whether to use a recursive transform or a non-recursive transform for the encoding or decoding of the target data block; when a result of the determination is to use the recursive transform: generate the recursive transform using the multi-transform data structure and cause or transmit information that causes the target data block to be encoded or decoded using the generated recursive transform; and when a result of the determination is to use the non-recursive transform of the multi-transform data structure: cause or transmit information that causes the target data block to be encoded or decoded using one of the one or more non-recursive transforms embedded in the multi-transform data structure, wherein at least part of the one of the one or more non-recursive transforms of the multi-transform data structure is embedded in at least part of one half of the larger recursive transform of the multi-transform data structure, characterized in that, the recursive transform is a 2N-point DCT-2 and the one of the one or more of non-recursive transforms is a N-point scaled DST-7 or DCT-8, the method further comprising: creating a resulting basis that corresponds to original odd bases of 2N-point DCT-2 by: (i) replacing a first half of the odd bases of 2N-point DCT-2 with N-point scaled DST-7 or DCT-8 bases, and (ii) filling a second half of the odd bases of the 2N-point DCT-2 with the flipped DST-7 or DCT-8 bases plus inverse signs.