1. A method for encoding a video stream having a plurality of frames, the method comprising: identifying, by a processor, an intra prediction mode for a block of a frame, wherein the intra prediction mode is one of a plurality of intra prediction modes; generating a residual block for the block using the intra prediction mode; identifying a transform mode for the residual block based on the intra prediction mode identified for the block, the transform mode being one of a plurality of transform modes and each of the plurality of transform modes associated with at least one of the plurality of intra prediction modes; wherein the plurality of transform modes comprises a 1D Asymmetrical Discrete Sine Transform (ADST) applied to each horizontal row followed by a 1D ADST applied to each vertical column, the 1D ADST applied to each horizontal row followed by a 1D Discrete Cosine Transform (DCT) applied to each vertical column, the 1D DCT applied to each horizontal row followed by the 1D ADST applied to each vertical column, and the 1D DCT applied to each horizontal row followed by the 1D DCT applied to each vertical column; applying the transform mode to the residual block to generate a transform block comprising a plurality of transform coefficients; identifying a scan mode for the transform block based on the transform mode identified for the residual block; scanning the transform block to form a sequence of the plurality of transform coefficients using the scan mode identified for the residual block; identifying a probability model of a plurality of probability models for generating an entropy code for the plurality of transform coefficients in the sequence, the probability model identified based on the transform mode identified for the residual block, and each of the plurality of probability models associated with at least one of the plurality of transform modes; and encoding the sequence using the probability model identified using the residual block.