1. A method comprising: identifying a current source block from a current source frame from a source video stream; generating a predicted block for the current source block; generating a source transform block by transforming the current source block into the frequency domain; generating a predicted transform block by transforming the predicted block into the frequency domain; generating, by a processor in response to instructions stored on a non-transitory computer readable medium, a denoised transform block based on the source transform block and the predicted transform block; generating a denoised block by inverse transforming the denoised transform block; generating a residual block based on a difference between the denoised block and the predicted block; generating an encoded block by encoding the residual block; and outputting or storing the encoded block.