IP Library Granted Patent US 7,286,132
Granted Patent B2
US 7,286,132 · App. 10/829,324 · Granted Oct 23, 2007

System and methods for using graphics hardware for real time two and three dimensional, single definition, and high definition video effects

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,286,132
App. No.
10/829,324
Granted
Oct 23, 2007
Kind
B2
Abstract

A method, system, and computer readable medium including instructions for processing single definition or high definition video data to produce an two dimensional and three dimensional effects to occur at a future time. The effects are created in a video processing system using multiple threads.

Claims (84)

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;

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.

2. A method for processing video data to produce an effect to occur at a future time, comprising the steps of:

receiving the video data;

creating the effect: generating pre-decompressed video data from the video data;

uploading the pre-decompressed video data into video hardware;

decoding the pre-decompressed video data to produce decoded video data;

determining parameters which describe the effect;

rendering the effect in the decoded video data to produce output video data;

presenting the output video data; and

releasing resources utilized in decoding and rendering;

wherein the steps of creating the effect, generating pre-decompressed video, and determining parameters are performed by an application;

wherein the steps of uploading the pre-decompressed video, decoding the pre-decompressed video data, rendering the effect, and releasing resources are performed by a 3D-Server; and

wherein generating pre-decompressed video data from the video data comprises: 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 transferring the sample object to the 3D-Server.

3. The method according to claim 2 , wherein uploading the pre-decompressed video data into video hardware comprises: obtaining a video memory surface; issuing a first snooping command; and uploading the pre-decompressed video data into the video memory surface.

4. The method according to claim 3 , wherein the pre-decompressed video data is uploaded into the video memory surface using a Bus Mastering process.

5. The method according to claim 3 , wherein decoding the pre-decompressed video data to produce decoded video data comprises:

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.

6. The method according to claim 5 , further comprising: determining, in the application, parameters for the effect; passing the effect parameters from the application to the 3D-Server; and receiving, in the application, an output sample object.

7. The method according to claim 6 , wherein the output sample object is a proxy.

8. The method according to claim 6 , wherein rendering the effect in the decoded video data to produce output video data comprises: assigning a target memory surface to the output sample object; rendering the effect; and storing the rendered effect in the target memory surface.

9. The method according to claim 8 , wherein outputting the output video data comprises:

placing the output sample object in a presenter queue; and performing a presenter method to present the output sample object as the output video data.

10. A system for processing video data to produce an effect to occur at a future time, comprising:

means for implementing an 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;

means for implementing an upload thread for uploading the pre-decompressed video data into video hardware;

means for implementing a decoding thread for decoding the pre-decompressed video data to produce decoded video data;

means for implementing a render thread rendering the effect in the decoded video data to produce output video data; and

means for implementing a presenter thread presenting the output video data;

wherein the means for implementing the application thread comprises: means for reading a sample of the video data; means for allocating a sample object for the sample; means for partially decoding the sample to produce the pre-decompressed video data; and means for transferring the sample object to the upload thread;

wherein the means for implementing the unload thread comprises: means for obtaining a video memory surface; means for issuing a first snooping command; and means for uploading the pre-decompressed video data into the video memory surface;

wherein the means for implementing the decoder thread comprises: means for issuing a second snooping command; means for obtaining a new video memory surface; means for determining a status of the new video memory surface; means for performing the decoding to produce the decoded video data in the new video memory surface; and means for attaching the new video memory surface to the sample object;

wherein the means for implementing the application thread further comprises: means for determining, in the application, effect parameters for the effect; means for passing the effect parameters from the application to the render thread; and

wherein the output sample object is a proxy.

11. A system for processing video data to produce an effect to occur at a future time, comprising: means for receiving the video data; means for creating the effect; means for generating pre-decompressed video data from the video data; means for uploading the pre-decompressed video data into video hardware; means for decoding the pre-decompressed video data to produce decoded video data; means for determining parameters which describe the effect; means for rendering the effect in the decoded video data to produce output video data; means for presenting the output video data; and means for releasing resources utilized in decoding and rendering;

wherein the means for creating the effect, means for generating pre-decompressed video, and means for determining parameters are an application;

wherein the means for uploading the pre-decompressed video, means for decoding the pre-decompressed video data, means for rendering the effect, and means for releasing resources are a 3D-Server; and

wherein the means for generating pre-decompressed video data from the video data comprises: means for reading a sample of the video data; means for allocating a sample object for the sample; means for partially decoding the sample to produce the pre-decompressed video data; and means for transferring the sample object to the 3D-Server.

12. The system according to claim 11 , wherein the means for uploading the pre-decompressed video data into video hardware comprises: means for obtaining a video memory surface; means for issuing a first snooping command; and means for uploading the pre-decompressed video data into the video memory surface.

13. The system according to claim 12 , wherein the pre-decompressed video data is uploaded into the video memory surface using a Bus Mastering process.

14. The system according to claim 12 , wherein the means for decoding the pre-decompressed video data to produce decoded video data comprises: means for issuing a second snooping command; means for obtaining a new video memory surface; means for determining a status of the new video memory surface; means for performing the decoding to produce the decoded video data in the new video memory surface; and means for attaching the new video memory surface to the sample object.

15. The system according to claim 14 , further comprising: means for determining, in the application, parameters for the effect; means for passing the effect parameters from the application to the 3D-Server; and means for receiving, in the application, an output sample object.

16. The system according to claim 15 , wherein the output sample object is a proxy.

17. The system according to claim 15 , wherein the means for rendering the effect in the decoded video data to produce output video data comprises: means for assigning a target memory surface to the output sample object; means for rendering the effect; and means for storing the rendered effect in the target memory surface.

18. The system according to claim 17 , wherein the means for outputting the output video data comprises: means for placing the output sample object in a presenter queue; and means for performing a presenter method to present the output sample object as the output video data.

19. A computer readable medium including instructions for causing a computer system to execute a method for processing video data to produce an effect to occur at a future time, comprising: implementing an 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; implementing an upload thread for uploading the pre-decompressed video data into video hardware; implementing a decoding thread for decoding the pre-decompressed video data to produce decoded video data; implementing a render thread rendering the effect in the decoded video data to produce output video data; and implementing a presenter thread presenting the output video data;

wherein implementing the application thread comprises: 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 transferring the sample object to the upload thread;

wherein implementing the upload thread comprises: obtaining a video memory surface; issuing a first snooping command; and uploading the pre-decompressed video data into the video memory surface;

wherein implementing the decoder thread comprises: 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 implementing the application thread further comprises: determining, in the application, effect parameters for the effect; passing the effect parameters from the application to the render thread; and

wherein the output sample object is a proxy.

20. A computer readable medium including instructions for causing a computer system to execute a method for processing video data to produce an effect to occur at a future time, comprising the steps of: receiving the video data; creating the effect; generating pre-decompressed video data from the video data; uploading the pre-decompressed video data into video hardware; decoding the pre-decompressed video data to produce decoded video data; determining parameters which describe the effect; rendering the effect in the decoded video data to produce output video data; presenting the output video data; and releasing resources utilized in decoding and rendering;

wherein the steps of creating the effect, generating pre-decompressed video, and determining parameters are performed by an application;

wherein the steps of uploading the pre-decompressed video, decoding the pre-decompressed video data, rendering the effect, and releasing resources are performed by a 3D-Server; and

wherein generating pre-decompressed video data from the video data comprises: 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 transferring the sample object to the 3D-Server.

21. The computer readable medium according to claim 20 , wherein uploading the pre-decompressed video data into video hardware comprises: obtaining a video memory surface; issuing a first snooping command; and uploading the pre-decompressed video data into the video memory surface.

22. The computer readable medium according to claim 21 , wherein the pre-decompressed video data is uploaded into the video memory surface using a Bus Mastering process.

23. The computer readable medium according to claim 21 , wherein decoding the pre-decompressed video data to produce decoded video data comprises: 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.

24. The computer readable medium according to claim 23 , further comprising: determining, in the application, parameters for the effect; passing the effect parameters from the application to the 3D-Server; and receiving, in the application, an output sample object.

25. The computer readable medium according to claim 24 , wherein the output sample object is a proxy.

26. The computer readable medium according to claim 24 , wherein rendering the effect in the decoded video data to produce output video data comprises: assigning a target memory surface to the output sample object; rendering the effect; and storing the rendered effect in the target memory surface.

27. The computer readable medium according to claim 26 , wherein outputting the output video data comprises: placing the output sample object in a presenter queue; and performing a presenter method to present the output sample object as the output video data.