Filter For Capturing Hardware Or Software Decoded Video
Original Publication Date: 2008-Apr-30
Included in the Prior Art Database: 2008-Apr-30
Firoz Dalal: INVENTOR [+1]
ABSTRACT Video decoding may be performed by either hardware or software, wherein the compressed data is restored to a visible image for display to a user. In both cases, uncompressed data from the decoder is typically not saved to a file prior to the uncompressed data being rendered by a video renderer in a graphics processing unit (GPU), as the data is rendered onto the video memory and not returned to the decoder. To save the uncompressed data, a filter may be connected between a video decoder and a video renderer. The filter captures the uncompressed data, and may save it to a file on the hard drive, for example.
Hardware and software decoding can both be used to decompress data (e.g., MPEG files) so that the data may be restored to a visible image for display to a user. For example, to view an MPEG file on a computer, the data may first be read so that it can be decompressed by a decoder. In software mode, the decoder (e.g., Intervideo Decoder, Cyberlink Decoder, or Microsoft Decoder) decodes the compressed data. In hardware mode, a hardware component performs some part of decoding. In either mode, decompressed data is sent to the computer’s video card for display on the monitor. In most instances, however, the uncompressed data from the decoder is not saved to a file, as once the data is sent to the graphics processing unit (GPU) for rendering, it is rendered onto the video memory and the data is not returned to the decoder.
The present invention allows for uncompressed data from the decoder to be saved to a file prior to being rendered by a hardware component, such as a video renderer. In embodiments of the present invention, some part of decoding and decompression take place within the GPU by specialized hardware that is dedicated to the decoding process. More specifically, using an interface, such as an API, (e.g., DirectX Video Acceleration 2.0 (DXVA2) API), the decoder, via a graphics driver, may translate decoding and decompression instructions into the hardware so that decoding and decompression occur in the hardware, rather than software. Typically, the process of decoding data is performed in a pipeline, such as a multimedia pipeline (e.g., DirectShow). An example of a multimedia pipeline is illustrated below in FIG. 1.
Figure 1. Multimedia Pipeline for Video Decoding
Generally, a file source component receives data from a specific location, such as a local file or the internet, and sends the data, which is typically compressed, to a parser that parses out the audio compressed data from the video compressed data. The parser may also define the boundaries for a video frame. The parser then sends the compressed video data to a video decoder (e.g., via a memory pointer) that decodes the frames of a video file (e.g., MPEG file) and sends the uncompressed data to a video renderer that displays the video on a display of a computing device, for instance. In one embodiment, the video decoder stores the compressed data.
As previously discussed, in order for the decoder to run in hardware mode, an interface, such as an API (e.g., DXVA2 API) may be used, and interfaces between the decoder and the hardware. This common interface is used so that any decoder may be compatible with any hardware. The hardware, being exposed to the interface, allows decoding and decompression to be performed by hardware, rather than software. As suc...