1. A method of encoding a video stream in a video encoder, the method comprising: receiving an n×n residual block in a transform component of the video encoder; and transforming the n×n residual block using an n×n transform to generate an n×n transform coefficient block, wherein the n×n transform is based on (n/m*n/m) m×m Hadamard transforms and (m*m) (n/m)×(n/m) discrete cosine transforms (DCT), wherein m<n, and a matrix D that is derived as the Kronecker product of an m×m identity matrix and one selected from a group consisting of the (n/m)×(n/m) DCT and an (n/m)×(n/m) inverse DCT (IDCT) wherein the matrix D is derived using the (n/m)×(n/m) IDCT, and transforming the n×n residual block further comprises computing one selected from the group consisting of D T P T H T XHPD and H T P T D T XDPH to generate the n×n transform coefficient block, wherein X is the n×n residual block, wherein H, P, and D are individual matrices used to implement the 2D IDCTH transform and the 2D DCTH transform and wherein the n×n transform is based on a matrix H that is derived as the Kronecker product of an (n/m)×(n/m) identity matrix and the m×m Hadamard transform, a n×n permutation matrix P designed to preserve sequency.