Accelerated Video Encoding

Abstract
A video encoding acceleration service to increase one or more of the speed and quality of video encoding is described. The service acts as an intermediary between an arbitrary video encoder computer program application and arbitrary video acceleration hardware. The service receives one or more queries from the video encoder to identify implementation specifics of the video acceleration hardware. The service interfaces with the video acceleration hardware to obtain the implementation specifics. The service communicates the implementation specifics to the video encoder. The implementation specifics enable the video encoder to: (a) determine whether one or more of speed and quality of software encoding operations associated with the video encoder can be increased with implementation of a pipeline of one or more supported encoding pipeline configurations and capabilities, and (b) implement the pipeline by interfacing with the service.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

In the Figures, the left-most digit of a component reference number identifies the particular Figure in which the component first appears.



FIG. 1 illustrates an exemplary system for accelerated video encoding, according to one embodiment.



FIG. 2 shows an exemplary embodiment of a video encoding pipeline configuration, wherein some of the encoding processes are accelerated in hardware.



FIG. 3 shows an exemplary procedure for accelerated video encoding, according to one embodiment.



FIG. 4 in the Appendix shows an exemplary video encoder application to illustrate the manner in which video encoding acceleration application programming interfaces can be utilized, according to one embodiment.



FIG. 5 in the Appendix shows an exemplary video encoding pipeline configuration, wherein acceleration hardware accelerates motion estimation, transform, quantization, and the inverse process to produce encoded images, according to one embodiment.



FIG. 6 in the Appendix shows an exemplary video encoding pipeline configuration in which hardware accelerates only motion estimation, according to one embodiment.



FIG. 7 in the Appendix shows several exemplary motion estimation parameters, according to one embodiment.



FIG. 8 in the Appendix shows exemplary motion vector data stored in a Display 3-Dimensional (D3D) surface, according to one embodiment.



FIG. 9 in the Appendix shows an exemplary diagram indicating that width of a luma surface matches an original YCbCr image, according to one embodiment.



FIG. 10 in the Appendix shows an exemplary diagram indicating that the number of residue value per line of video is ½ width of the original video image, according to one embodiment.



FIG. 11 in the Appendix shows an exemplary diagram indicating that the width of the residue surface is ¼ the width of the original progressive frame, according to one embodiment.


Claims
  • 1. A method at least partially implemented by a computing device for a video encoding acceleration service, the method comprising: receiving, by the video encoding acceleration service, one or more queries from a video encoder to identify implementation specifies of acceleration hardware;responsive to receiving the one or more queries, the video encoding acceleration service: interfacing with the acceleration hardware to obtain the implementation specifics;responsive to receiving the implementation specifics, communicating the implementation specifics to the video encoder; andwherein the implementation specifics enable the video encoder during runtime to: (a) determine whether one or more of speed and quality of software encoding operations associated with the video encoder can be increased with implementation of a particular encoding pipeline of one or more supported encoding pipeline configurations and capabilities; and(b) implement the particular encoding pipeline by interfacing with the video encoding acceleration service.
  • 2. The method claim 1, wherein the software encoding operations comprise one or more of motion estimation, residue computation, motion compensation, and transform operations.
  • 3. The method claim 1, wherein the software encoding operations comprise one or more of noise reduction, image stabilization, edge detection, sharpening, and frame rate conversion operations.
  • 4. The method claim 1, wherein the one or more queries comprise a get capabilities query, and wherein received implementation specifics include information associated with the one or more supported encoding pipeline configurations.
  • 5. The method claim 1, wherein the one or more queries comprise a get distance metrics query, and wherein received implementation specifics include a description of one or more search metrics supported by the video encoding acceleration hardware for motion estimation operations.
  • 6. The method claim 1, wherein the one or more queries comprise a get search profiles query, and wherein received implementation specifics include a description of one or more search profiles supported by the video encoding acceleration hardware, the one or more search profiles allowing the video encoder to evaluate implementation specific trade-offs between video encoding processing times and video encoding quality metrics.
  • 7. The method claim 1, wherein the one or more queries comprise a get motion estimation capabilities query, and wherein received implementation specifics include data indicating one or more of maximum supported image size, maximum supported search window size, and an indication of whether acceleration hardware supports variable macro block sizes.
  • 8. The method claim 1, further comprising: receiving, by the video encoding acceleration service, a request including a set of configuration parameters to create an object that implements the particular encoding pipeline; andresponsive to receiving the request, creating the object based on the configuration parameters, the encoder object for encoding decoded source video data using the particular encoding pipeline.
  • 9. The method claim 8, wherein the configuration parameters specify one or more of the particular encoding pipeline, an output format for encoded video, a number of I/O data streams for association with the particular encoding pipeline, static configuration properties for interpolation of luma and chroma values, a suggested number of data buffers for the I/O data streams, and a device driver specified queue size based on available resources.
  • 10. The method claim 1, further comprising: receiving, by the video encoding acceleration service, execute requests and a set of parameters from the video encoder, the execute requests corresponding to operations associated with the particular encoding pipeline to encode decoded source video data;responsive to receiving the execute requests, the video encoding acceleration service: communicating the execute requests and the parameters to the acceleration hardware;receiving responses associated with the communicated execute requests from the acceleration hardware; andforwarding the responses to the video encoder.
  • 11. A computer-readable storage medium comprising computer-program instructions executable by a processor for: communicating, by a video encoder program module, one or more requests to a video encoding acceleration service to identify capabilities of one or more of video encoding pipeline configurations and capabilities supported by acceleration hardware;responsive to receiving the capabilities from the video encoding acceleration service, the video encoder: identifying, based on the capabilities, one or more video encoding operations associated with the video encoder that will benefit from one or more of speed and quality if implemented by the acceleration hardware;requesting, by the video encoder, the video encoding acceleration service to create a customized video encoding pipeline for implementing the one or more video encoding operations via the acceleration hardware such that any remaining video encoding operations are implemented in software.
  • 12. The computer-readable storage medium of claim 11, wherein the one or more video encoding operations comprise one or more of motion estimation, residue computation, motion compensation, and transform operations.
  • 13. The computer-readable storage medium of claim 11, wherein the one or more video encoding operations comprise one or more of noise reduction, image stabilization, edge detection, sharpening, and frame rate conversion operations.
  • 14. The computer-readable storage medium of claim 11, wherein the computer-program instructions for requesting further comprise instructions for directing the video encoding acceleration service to create the customized video encoding pipeline such that data flow between system memory and graphics device memory is minimized.
  • 15. The computer-readable storage medium of claim 11, further comprising computer-program instructions executable by the processor for: receiving, by the video encoder, encoded or decoded source video data; andif received source video data is encoded, at least partially decoding, by the video encoder, the source video data to generate decoded source video data for encoding by an encoding object created by the video encoding acceleration service, the encoding object implementing the customized video encoding pipeline.
  • 16. The computer-readable storage medium of claim 11, wherein the computer-program instructions further comprise instructions for encoding decoded source video data using the customized video encoding pipeline.
  • 17. A computing device comprising: interfacing means for a video encoding acceleration service to: receive one or more queries from a video encoder, the one or more queries requesting the video encoding acceleration service to identify implementation specifics of acceleration hardware, the implementation specifics for enabling the video encoder to: (a) determine whether one or more of speed and quality of software encoding operations associated with the video encoder can be increased with implementation of a particular encoding pipeline of one or more supported encoding pipeline configurations and capabilities, and (b) implement the particular encoding pipeline via the video encoding acceleration service to encode decoded source video data;query the acceleration hardware to obtain the implementation specifics; andcommunicate implementation specifics received from the acceleration hardware to the video encoder.
  • 18. The computing device of claim 17, wherein the software encoding operations comprise one or more of motion estimation, residue computation, motion compensation, and transform operations.
  • 19. The computing device of claim 17, wherein the software encoding operations comprise one or more of noise reduction, image stabilization, edge detection, sharpening, and frame rate conversion operations.
  • 20. The computing device of claim 17, wherein the interfacing means further comprise means for the video encoding acceleration service to: receive a create encoder object request from the video encoder to create an encoder object that implements the particular encoding pipeline;receive one or more execute requests from the video encoder to implement operations associated with the particular encoding pipeline in the acceleration hardware; andforward information associated with the one or more execute requests to the acceleration hardware to encode the decoded source video data.
Continuation in Parts (1)
Number Date Country
Parent 11276336 Feb 2006 US
Child 11673423 US