Claims
- 1. An application program interface (API) comprising:
a set of one or more residual difference data structures including residual difference information for encoded multimedia content; and a corresponding set of one or more control command data structures including control commands to control prediction and addition of residual coding information to decode multimedia content, wherein the API includes the control commands necessary to control multimedia decoding in accordance with any of a plurality of standard multimedia codecs.
- 2. An API according to claim 1, wherein the residual difference data structures and the control command data structures are two of a plurality of dynamically selected types of operational data structure(s) of the API.
- 3. An API according to claim 1, wherein the control command data structures include macroblock control commands, to control prediction and addition of residual coding information on a macroblock level.
- 4. An API according to claim 1, wherein the API selectively invokes at least the subset of control commands upon identifying a processing capability of at least the decoder and the accelerator.
- 5. An API according to claim 4, wherein the API iteratively issues a set of control commands to negotiate an acceptable communication capability between one or more decoder applications and one or more hardware accelerators.
- 6. An API according to claim 1, wherein the API negotiates an acceptable communication capability between one or more decoders and one or more hardware accelerators by iteratively issuing configuration commands reflecting various alternative degrees and methods of decoding acceleration capability until choosing one that is acceptable to both the decoder(s) and the accelerator(s).
- 7. An API according to claim 1, further comprising:
data structures, generated in response to command(s) received from a decoder application, consisting of deblocking filter control command(s) to control one or more deblocking filter attributes of a communicatively coupled hardware accelerator.
- 8. An API according to claim 7, wherein the deblocking filter control commands control a smoothing filter across block boundaries of a decoded picture.
- 9. An API according to claim 7, wherein the deblocking filter control commands include a flag sent for each block edge denoting whether the deblocking filter is to be applied across the associated block edge.
- 10. An API according to claim 1, wherein the control command data structure is a fixed-size data structure for each macroblock of a picture.
- 11. An API according to claim 10, wherein the API utilizes an absolute macroblock address within each control command data structure to specify which macroblock to process, facilitating independent processing of each individual macroblock control command of a picture.
- 12. An API according to claim 11, wherein the absolute macroblock address facilitates parallel processing of two or more macroblocks of a picture.
- 13. An API according to claim 11, wherein the API utilizes a data location pointer within each control command data structure to specify the location within the corresponding residual difference data buffer for the data associated with the macroblock control command, facilitating independent processing of each individual macroblock control command of a picture.
- 14. An API according to claim 13, wherein the data location pointer facilitates parallel processing of two or more macroblocks of a picture.
- 15. A storage medium comprising a plurality of executable instructions which, when executed, implement an application program interface (API) according to claim 1.
- 16. A computing system comprising:
a storage medium including a plurality of executable instructions; and an execution unit, coupled to the storage medium, to execute at least a subset of the executable instructions to implement an application program interface (API) according to claim 1.
- 17. An application program interface (API) comprising:
one or more auto-negotiation data structures, dynamically generated by the API to negotiate at least a set of processing standards among and between one or more elements of a media processing system; and one or more operational data structures, dynamically generated by the API to support processing of media content among and between the media processing system elements in accordance with the negotiated processing standard(s).
- 18. An API according to claim 17, the operational data structures comprising:
a set of one or more residual difference data structures including residual difference information for encoded multimedia content; and a set of one or more control command data structures including control commands to control prediction and addition of residual coding information to decode multimedia content, wherein the API includes the control commands necessary to control multimedia decoding in accordance with any of a plurality of multimedia codecs and invokes at least a subset of the control commands to interface the decoder with the multimedia accelerator.
- 19. An API according to claim 17, the operational data structures comprising:
a raw bitstream data structure, dynamically generated to transfer raw media content bitstream(s) between media processing system elements.
- 20. An API according to claim 17, wherein the auto-negotiation data structure(s) are dynamically generated to negotiate a split in media processing between identified media processing system elements.
- 21. An API according to claim 20, the operational data structures comprising:
a set of one or more residual difference data structures including residual difference information for encoded multimedia content; and a set of one or more control command data structures including control commands to control prediction and addition of residual coding information to decode multimedia content, wherein the API includes the control commands necessary to control multimedia decoding in accordance with any of a plurality of multimedia codecs and invokes at least a subset of the control commands to interface the decoder with the multimedia accelerator; wherein the residual difference data structures and the control command data structures are dynamically generated to facilitate shared media processing between a decoder application executing on a host computer and a hardware accelerator, communicatively coupled to the host computer based, at least in part, on the auto-negotiation data structure.
- 22. An API according to claim 20, the operational data structures comprising:
a raw bitstream data structure, dynamically generated to transfer raw media content bitstream(s) to facilitate media content decoding on a hardware accelerator communicatively coupled to a host computer implementing the API based, at least in part, on the auto-negotiation data structure.
- 23. A storage medium comprising a plurality of executable instructions which, when executed, implement an API according to claim 17.
- 24. A storage medium comprising a plurality of executable instructions which, when executed, implement an application program interface (API) to facilitate communication between elements of a media processing system, the API including one or more auto-negotiation data structures, dynamically generated by the API to negotiate at least a set of processing standards among and between one or more elements of a media processing system, and one or more operational data structures, dynamically generated by the API to support processing of media content among and between the media processing system elements in accordance with the negotiated processing standards).
- 25. A method facilitating media processing between elements of a media processing system, the method comprising:
negotiating a media processing standard acceptable to each of the media processing system elements from a plurality of media processing standards; and dynamically generating operational data structures to support the negotiated media processing among and between the media processing system elements.
- 26. A method according to claim 25, wherein negotiating a media processing standard comprises:
generating auto-negotiation data structure(s) configured in accordance with a proposed media processing standard; issuing the auto-negotiation data structure(s) to each element of the media processing system; and adopting the media processing system standard if each of the elements accept the proposed media processing standard.
- 27. A method according to claim 26, further comprising:
iteratively performing the generating and issuing steps utilizing a different proposed media processing standard on subsequent iterations until an acceptable media processing standard is adopted.
- 28. A method according to claim 25, wherein dynamically generating operational data structures comprises:
generating residual difference data structure(s) to pass residual difference information between media processing system elements; generating control command data structure(s) to pass control commands tailored in accordance with an adopted media processing standard based, at least in part, on the auto-negotiation.
- 29. A method according to claim 25, wherein the auto-negotiation data structure(s) also include a proposed split in media processing between the media processing system elements.
- 30. A method according to claim 29, wherein dynamically generating operational data structures comprises:
generating raw bitstream data structure(s), to pass raw bitstream media content from a decoder application to a hardware accelerator to decode the media content based, at least in part, on the negotiated split in media processing between the decoder application and the hardware accelerator.
- 31. A method according to claim 29, wherein dynamically generating operational data structures comprises:
generating a residual difference data structure, to pass residual difference information between media processing system elements; and generating a control command data structure, to pass control commands tailored in accordance with an adopted media processing standard; wherein the residual difference data structure and the control command data structure are generated to facilitate shared decoding among two or more media processing system elements, as negotiated between the media processing system elements.
- 32. A media processing system comprising:
a storage medium including a plurality of executable instructions; and an execution unit, coupled to the storage medium, to execute at least a subset of the plurality of executable instructions to implement a method according to claim 25.
- 33. A storage medium comprising a plurality of executable instructions which, when executed, implement a method according to claim 25.
- 34. A computing system comprising:
a plurality of non-integrated media processing system elements, to receive and process media content; and an application program interface (API), communicatively coupling the non-integrated media processing system elements, to automatically negotiate a media processing standard acceptable to each of the plurality of non-integrated media processing system standards, and to dynamically generate data structures to facilitate media processing by the system elements.
- 35. A computing system according to claim 34, the non-integrated media processing system elements comprising:
one or more media processing application(s) of a plurality of media processing applications to receive and processing media content in accordance with one or more media processing standards; and one or more hardware accelerator(s) of a plurality of hardware accelerators to perform one or more media processing tasks in accordance with one or more media processing standards.
- 36. A computing system according to claim 34, wherein the API also negotiates a split in media processing among the media processing system elements based, at least in part, on an identified media processing capability of the media processing system elements.
- 37. A computing system according to claim 36, wherein the API dynamically generates a residual difference data structure to pass residual difference information, and a control command data structure to pass macroblock control commands tailored in accordance with an acceptable media processing system standard, when two or more media processing system elements decode the received media content.
- 38. A computing system according to claim 36, wherein the API dynamically generates a raw bitstream data structure to pass raw bitstream media content from one media processing system element to another media processing system element to decode the received media content.
- 39. A computing system according to claim 38, wherein a decoder application passes received media content to one or more hardware accelerators to decode the media content via the raw bitstream data structure(s).
RELATED APPLICATIONS
[0001] This application claims priority to a provisional application entitled An Adaptive Multimedia Application Interface, serial No. 60/198,938, filed on Apr. 21, 2000 by Sullivan, et al. and commonly assigned to the assignee of the present invention.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60198938 |
Apr 2000 |
US |