Patent ID: 7286132

Claim:
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; passing the output video data to the presenter thread to present the output video data; wherein the application thread performs: reading a sample of the video data; allocating a sample object for the sample; partially decoding the sample to produce the pre-decompressed video data; and transfering the sample object to the upload thread wherein the upload thread performs: obtaining a video memory surface; issuing a first snooping command; and uploading the pre-decompressed video data into the video memory surface wherein the decoder thread performs: issuing a second snooping command; obtaining a new video memory surface; determining a status of the new video memory surface; performing the decoding to produce the decoded video data in the new video memory surface; and attaching the new video memory surface to the sample object wherein the application thread further performs: determining in the application, effect parameters for the effect; and passing the effect parameters from the application to the render thread; wherein the output sample object is a proxy.