This application claims the benefit of Taiwan application Serial No. 94105673, filed Feb. 24, 2005, the subject matter of which is incorporated herein by reference.
1. Field of the Invention
The invention relates in general to a frame capture apparatus, and more particularly to an apparatus and a method for capturing full-screen frames in real time.
2. Description of the Related Art
Nowadays, the online game is to be fashionable on the game world. There is a need for live broadcasting for someone who is not on-site can see the live match. If the match is processing the live broadcast, normally, someone utilizes a camera to shoot the computer monitor or outputs the analog video from the computer monitor frame. For example: the composite video broadcasts on television. If the video is to be broadcasted on the network, the analog video has to be converted into a digital video by way of video conversion. However, the frames may have deteriorated quality after several times of conversions, and the complicated converting procedure increases the cost of constructing a network broadcast station.
The available frame capturing software may be used to capture the frame on the computer. In the computer with Microsoft Windows Operating System, the key, Print Screen, may be used to capture the frame on the monitor. However, these methods are available for capturing a single frame only, and the typical game software is usually executed in a full-screen mode so that the displayed frame cannot be captured by the above-mentioned methods. Because the full-screen frame on the computer cannot be directly captured and converted into the video bitstream, it is disadvantageous to the live game broadcast on the network.
It is therefore an object of the invention to provide an apparatus and a method of capturing full-screen frames in real time.
The invention achieves the above-identified object by providing an apparatus of capturing full-screen frames displayed by a display unit. The display unit has a first display buffer and a second display buffer and selects one of the first and second display buffers as a front buffer for displaying the full-screen frames. The apparatus includes a display driver unit and a capture unit. The display driver unit drives the display unit. When data in the front buffer is updated, the display driver unit generates image data and saves the image data to a temporary buffer and then copies the image data from the temporary buffer to a share buffer. The capture unit reads the image data from the share buffer and generates a video bitstream according to the image data.
The invention achieves the above-identified object by providing a method of capturing full-screen frames in real time. First, image data is generated and saved to a temporary buffer when data in a front buffer is updated. Next, the image data in the temporary buffer is copied to a share buffer. Then, the image data in the share buffer is read and a video bitstream is generated according to the image data.
Other objects, features, and advantages of the invention will become apparent from the following detailed description of the preferred but non-limiting embodiments. The following description is made with reference to the accompanying drawings.
When the program, such as a computer game especially having three-dimensional animation, is executed in a full-screen mode, the frame update speed has to be high enough such that the frame smoothness is not influenced. The display unit 130 uses a first buffer 132 and a second buffer 134 to write the frame data alternately such that the waiting time for writing data can be shortened. The methods of using two buffers can be classified into two types including a flipping type and a blitting type. The flipping type is to alternately regard the first buffer 132 and the second buffer 134 as a front buffer and a back buffer. That is, when the first buffer 132 serves as the front buffer, the frame data is to be outputted to the monitor. At this time, the next frame data is written into the second buffer 134 which serves as the back buffer. Next, the second buffer 134 serves as the front buffer, and the frame data thereof is to be outputted to the monitor. At this time, the next frame data is to be written into the second buffer 134 which serves as the back buffer. The blitting type is to fixedly use the first buffer 132 as the front buffer and to write the data from the second buffer 134 to the first buffer 132 when the frame data is to be updated.
Because the typical application program cannot directly access the first buffer 132 and the second buffer 134 in the display unit 130, the full-screen frame cannot be captured. This embodiment captures the frame data in the front buffer when the display driver unit 120 is updating the frame. After converting the video format and resolution of the frame data, the converted frame data is stored in a temporary buffer 122. Next, the display driver unit 120 tries to obtain the token of a share buffer 140. If the token is obtained, the data in the temporary buffer 122 is copied to the share buffer 140. The capture unit 150 reads the data in the share buffer 140 after the token of the share buffer 140 is obtained, and generates a video bitstream V for output.
The temporary buffer 122 may be a memory for the display driver unit 120 to request the allocation from the operation system. The share buffer 140 is a memory for the capture unit 150 to request the allocation from the operation system. The share buffer 140 is shared between the display driver unit 120 and the capture unit 150 and the share buffer 140 has the token to avoid conflict therebetween because the share buffer 140 cannot be accessed until the token is obtained.
Next, the token capable of accessing the share buffer 140 is obtained (step 250). Then, the data of the temporary buffer 122 is copied to the share buffer 140. After the token is released (step 270), the capturing of one frame is completed. That is, the display driver unit 120 executes steps 240 to 270 each time when the frame is updated so as to save the captured frame into the share buffer 140.
In step 340, it is asked to get the token of the share buffer 140. If the token cannot be obtained, it means that the share buffer 140 is being occupied. Thus, this frame capturing process fails and 1 is added to the frame loss count (step 342). If the token is obtained, step 350 is executed.
In step 350, the capture unit 150 reads the data of the share buffer 140 and then releases the token after the reading procedure (step 360). Next, the capture unit 150 combines the captured audio with the read frames to generate the video bitstream V (step 370). The video bitstream V may be transferred on the network or saved as a file.
The apparatus and method for capturing full-screen frames according to the embodiments of the invention can capture frames of the executing application program in the full-screen mode and further convert the frames into the video bitstreams.
While the invention has been described by way of examples and in terms of preferred embodiments, it is to be understood that the invention is not limited thereto. On the contrary, it is intended to cover various modifications and similar arrangements and procedures, and the scope of the appended claims therefore should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements and procedures.
Number | Date | Country | Kind |
---|---|---|---|
94105673 | Feb 2005 | TW | national |