1. A method comprising: identifying a current source block from a current source frame from a source video stream; generating a prediction block for the current source block; generating a source transform block of the current source block by transforming the current source block into the frequency domain; generating a prediction transform block of the prediction block by transforming the prediction 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 an approximation of an integration of a product of the denoised transform block with a conditional probability function of the denoised transform block given the source transform block and the prediction 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 prediction block; generating an encoded block by encoding the residual block; and outputting or storing the encoded block.