1. A method for processing video data to produce an effect to occur at a future time, comprising: implementing an application thread, an upload thread, a decoding thread, a render thread, and a presenter thread. passing the video data to the application thread for creating the effect to be added to the video data, generating pre-decompressed video data from the video data, and determining parameters which describe the effect; passing the pre-decompressed video data to the upload thread for uploading the pre-decompressed video data into video hardware; passing the pre-decompressed video data to the decoding thread for decoding the pre-decompressed video data to produce decoded video data; passing the decoded video data to the render thread rendering the effect in the decoded video data to produce output video data; and passing the output video data to the presenter thread to present the output video data.