The disclosure herein relates to an moving image output apparatus, method and computer-readable storage medium for outputting moving images based on moving image data.
The shift to low-end personal computers (hereinafter referred to as “PCs”) is increasingly becoming popular these days, and the prices of the parts used in the PCs are kept low for keeping the prices of the PCs low, and therefore the performances of the PCs are kept low accordingly.
For low-end notebook personal computers (hereinafter referred to as “note PCs”), 1.6 GHz Central Processing Unit (CPU) processors, for example, are used for running programs thereof.
It is hard to say that the CPU speed of 1.6 GHz is high lately. The reason is that with this CPU speed it is possible that the CPUs cannot process the reproduction of moving images along with the display of the moving images when reproducing high-definition moving images for the distribution on the Internet.
In such cases where the reproduction of moving images is not processed in time with the display of the moving images, the dropping frames of the moving images or the freeze of the PC will occur.
Such high-definition moving image content for the distribution includes, for example, content according to H. 264/AVC mode, which belongs to a content type of what is called MPEG4.
In addition, technologies are developed for particular reproductions such as slow-motion, still and frame-by-frame reproductions (for example, see Patent Document 1).
Besides, technologies are also developed for the mutual communications of video images between workstations having different specifications for frame period (for example, see Patent Document 2).
Moreover, technologies are also developed for processing the reproductions of moving images while decreasing the loads thereof on the low-end note PCs as described above (see Patent Documents 3 to 15).
[Patent document 1]
[Patent document 2]
[Patent document 3]
[Patent document 4]
[Patent document 5]
[Patent document 6]
[Patent document 7]
[Patent document 8]
[Patent document 9]
[Patent document 10]
[Patent document 11]
[Patent document 12]
[Patent document 13]
[Patent document 14]
[Patent document 15]
However, the technologies disclosed in Patent Documents 1 and 2 as described above are the ones for changing the specifications for frame period and the like, and not the ones for solving problems in which the reproduction of moving images is not processed in time with the display of the moving images.
Additionally, in the technologies disclosed in Patent Documents 3 to 15, some of the original decoding processes are omitted, simplified or reduced in order to handle high loads, and therefore these technologies cannot take the full advantage of the original image formats and the image quality is deteriorated as a result.
Although the above description assumes that the reproduction processes of moving images are run in a CPU, using both a CPU and a Graphics Processing Unit (GPU) will face the same problems.
According to an aspect of the embodiments, a moving image output apparatus includes a moving image acquisition unit, an image generation unit, an image output unit and an interval setting unit.
The moving image acquisition unit acquires moving image data, which represents a moving image as a collection of a plurality of images which are successive in time.
The image generation unit generates each piece of image data which represents each image of the moving image by processing the moving image data acquired by the moving image acquisition unit.
The image output unit sequentially outputs each piece of image data generated by the image generation unit according to a set time interval.
The interval setting unit sets to the image output unit a first time interval corresponding to the display speed of the moving image.
In addition, the interval setting unit temporarily sets to the image output unit a second time interval which is longer than the first time interval as for image data for which the generation by the image generation unit fails to occur in time with the sequential output with the first time interval by the image output unit.
The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed.
Specific embodiments of a moving image output apparatus, a moving image output method and a moving image output program will hereinafter be described with reference to the drawings.
The moving image output apparatus 1 includes a processing unit for running programs and a moving image output program which is run in the processing unit.
The moving image acquisition unit 2 acquires moving image data, which represents moving images as a collection of a plurality of images which are successive in time. The acquisition of image data is executed, for example, through a communication line such as the Internet or by an installation from a portable storage medium such as Digital Video Disc (DVD).
The image generation unit 3 generates each piece of image data which represents each image of the moving images by processing the moving image data acquired by the moving image acquisition unit 2.
The image output unit 4 sequentially outputs each piece of image data generated by the image generation unit 3 according to a set time interval.
The image display unit 5 displays the moving images by sequentially displaying each image represented by each piece of image data based on each piece of image data which is sequentially output from the image output unit 4.
The interval setting unit 6 sets to the image output unit 4 a first time interval corresponding to the display speed of the moving images. In addition, the interval setting unit 6 temporarily sets to the image output unit 4 a second time interval which is longer than the first time interval when the image generation by the generation unit 3 fails to occur in time with the sequential output with the first time interval by the image output unit 4.
The first embodiment described above may also be interpreted as a moving image output method for sequentially executing the functions which are sequentially executed by the units 2 to 6 of the moving image output apparatus 1 illustrated in
Next, a second embodiment of the present invention, which is more specific than the first embodiment, is described below.
A note PC 10 illustrated in
The communication interface 55 is connected to the Internet and carries out communications via the Internet. Here, the communication interface 55 particularly receives MPEG4 compliant moving image content. The moving image content includes moving image data, which represents moving images as a collection of a plurality of images which are successive in time, and audio data. That is, the communication interface 55 corresponds to a moving image acquisition unit for acquiring moving image data. The HDD 56 is a mass-storage device and stores various types of programs which include a moving image output program as an embodiment of the present invention and moving image content input via the Internet. The touch pad 22 is a kind of pointing device for moving a cursor displayed on the display screen 31 (see
In addition, the CPU 51 is a central processing unit for running programs. A CPU with a processor speed of 1.6 GHz, which is relatively slow, is employed in the note PC 10 used in this embodiment. The memory 52 is a memory for loading programs which are read out from the HDD 56 and run by the CPU 51. Besides, the memory 52 is also used as a temporary data storage place when the CPU 51 runs the programs. The nonvolatile memory 53 stores the Basic Input Output System (BIOS), which is a program run in the initial stage after the note PC 10 is booted. Also, the keyboard 21 is a tool for operators to input various types of information and instructions.
The display unit 54 receives display data and displays images corresponding to the display data on the display screen 31 (see
In the example described below, the communication interface 55 receives moving image content in MPEG4 format sent through the Internet. When the communication interface 55 receives the moving image content, the moving image content is temporarily stored in the HDD 56. Then, a series of image data is generated from the moving image data included in the moving image content, and moving images based on the series of image data are displayed on the display screen 31 (see
In addition, the audio data in the moving image content is sent to the audio output unit 57 and the audio which is in sync with the display of the moving images on the display screen 31 is output through the speaker 572.
When the CPU 51 receives input moving image data, the CPU 51 performs a decoding process 51a to the data. The input moving image data is data in an encoded format. And in the decoding process 51a, a decoding process which is called enthalpy decoding process is performed and moving image data in YCbCr format is generated. The Y data of the moving image data generated in the decoding process 51a represents the luminance of the moving images. In addition, the CbCr data of the moving image data in YCbCr format is called color difference data and represents the color of the moving images. The moving image data generated in the decoding process 51a is written in the memory 52 illustrated in
The moving image data generated in the inverse quantization/inverse DCT process 51b performed by the CPU 51 is sent to the CPU 541, and the GPU 541 performs a motion compensation/prediction process 541a and a deblocking process 541b to the moving image data. The motion compensation/prediction process and the deblocking process are conventional data processes. As the result of the motion compensation/prediction process 541a and the deblocking process 541b, each piece of image data which represents each of a series of images in the moving images respectively is generated. Each piece of the generated image data is sequentially written in an output buffer 541c. The image which is represented by the image data sequentially written in the output buffer 541c is sequentially converted to video output signals and displayed on the display screen 31. As a result, the moving images are displayed on the display screen 31. That is, the output buffer 541c of the GPU 541 is an example of the image output unit for sequentially outputting image data.
The display speed of the moving image display is defined as the number of frames (images) displayed per one second. As the display speed is originally set in the input moving image data sent to the CPU 51, the CPU 51 performs an interval setting process 51c to set an output interval of the image data to the output buffer 541c of the GPU 541. For example, in the case where a display setting of 30 frames per second is set in the input moving image data, an image output setting with the interval of 33 ms is set to the output buffer 541c. That is, the CPU 51 has a role of setting a time interval corresponding to the display speed of moving images to the image output unit, which is an example of the roles of the interval setting unit, by performing the interval setting process 51c.
Meanwhile, the motion compensation/prediction process 541a includes an intra prediction process and an inter-frame prediction process, and the intra prediction process is performed in any one type of nine prediction modes, namely Mode 0 to Mode 8. The prediction mode to be performed is described in the meta-information in the moving image data which is decoded in the decoding process 51a. In addition, as a prediction mode is set to each piece of the generated image data, the prediction mode may be occasionally changed while a sequence of moving images is being played. And, as described in detail below, the loads of the GPU 541 in the intra prediction process varies in different prediction modes and therefore so does the processing time. Consequently, the timing of writing the image data to the output buffer 541c depends upon the type of the prediction mode employed for generating the image data. Thus, as described below, the CPU 51 determines in the interval setting process 51c whether or not the generation processing speed of each piece of image data is sufficient for the above display speed. And in the interval setting process 51c the CPU 51 temporarily sets an output interval longer than that corresponding to the display speed to the output buffer 541c as for the image data for which the generation processing speed is not sufficient for the display speed. This leads that even image data for which the load of the generation process is high can be generated in time with the data output from the output buffer 541c.
When the user of the note PC 10 illustrated in
Also,
When the reproduction application is run, first the device information such as the BIOS stored in the nonvolatile memory 53 (see
When it is determined that the PC is not a low-end PC in the checking procedure in step S101, the process proceeds to step S119 and a normal decoding process is performed because the performance of the PC which performs the moving image reproduction is sufficiently high. Here, the normal decoding process is not merely a decoding process, but a series of processes for generating image data in order to display moving images. That is, this normal decoding process is a normal moving image reproduction process, in which the checking of the generation processing speed based on the prediction mode and the like as described above is not performed.
When it is determined that the PC is a low-end PC in the checking procedure in step S101, it is necessary to take measures to prevent the dropping frames of the moving images or the freeze of the PC because the performance of the PC which performs the moving image reproduction is low. In practice, as is often the case, various types of low-end PCs with different performances exist, but in the following explanations only one type of PC is determined as low-end for convenience of explanation.
When it is determined that the PC is a low-end PC in the checking procedure in step S101, a menu screen, which is illustrated in
When the moving image content is input into the memory 52, a program which is called timing engine is read out from the HDD 56 and loaded into the memory 52 (step S106). The timing engine is a program which performs the processing parts (particularly, the interval setting process 51c) executed by the CPU 51 in the moving image reproduction process as described with reference to
The moving image data subject to the enthalpy decoding process has what is called a GOP (Group of Picture) structure. The GOP layer, the picture layer, the slice layer, the macrobook layer and the block layer are derived sequentially from the moving image data by performing the enthalpy decoding process. The picture layer is a layer in which a series of images included in the GOP layer is separated into individual images. The slice layer is a layer in which a single image is divided into several tiers. And the macroblock layer is a layer in which the slice layer is divided into several blocks. Each macroblock included in the macroblock layer is subject to the intra prediction process. In addition, the block layer is a processing unit of the inverse quantization/inverse DCT process. A common prediction mode in the intra prediction process is used in a single image and is described in the meta-information related to the macrobloock layer. In step S108, the prediction mode is obtained from the meta-information related to the macroblock layer as above.
Here, a break is given to the explanations of the reproduction application, and the prediction mode and the intra prediction process based on the prediction mode are described below. The explanations of the reproduction application resumes after the explanations of the prediction mode and the like.
In each diagram of
Mode 0 as illustrated in
Similarly, in Mode 1 as illustrated in
Mode 2 as illustrated in
Mode 3 as illustrated in
j=(A+2*B+C+2)/4
k=o=(B+2*C+D+2)/4
m=p=s=(C+2*D+E+2)/4
n=q=t=w=(D+2*E+F+2)/4
r=u=x=(E+2*F+G+2)/4
v=y=(F+2*G+H+2)/4
z=(G+2*H+2)/4
Mode 4 as illustrated in
n=(H+2*G+F+2)/4
m=r=(G+2*F+E+2)/4
k=q=v=(F+2*E+X+2)/4
j=p=w=z=(E+2*X+A+2)/4
o=t=y=(X+2*A+B+2)/4
s=x=(A+2*B+C+2)/4
w=(B+2*C+D+2)/4
Mode 5 as illustrated in
j=q=(A+B+1)/2
o=u=(B+C+1)/2
s=y=(C+D+1)/2
w=(D+E+1)/2
k=r=(F+2*A+B+2)/4
p=v=(A+2*B+C+2)/4
t=z=(B+2*C+D+2)/4
x=(C+2*D+E+2)/4
m=(A+2*F+G+2)/4
n=(F+2*G+H+2)/4
Mode 6 as illustrated in
j=t=(A+E+1)/2
o=x=(E+2*A+B+2)/4
s=(A+2*B+C+2)/4
w=(B+2*C+D+2)/4
k=u=(E+F+1)/2
p=y=(A+2*E+F+2)/4
m=v=(F+G+1)/2
q=z=(E+2*F+G+2)/4
n=(G+H+1)/2,r=(H+2*G+F+2)/4
Mode 7 as illustrated in
j=(B+C+1)/2
m=o=(C+D+1)/2
q=s=(D+E+1)/2
u=w=(E+F+1)/2
y=(F+G+1)/2
k=(B+2*C+D+2)/4
n=p=(C+2*D+E+2)/4
r=t=(D+2*E+F+2)/4
v=x=(E+2*F+G+2)/4
z=(F+2*G+H+2)/4
Mode 8 as illustrated in
j=(A+E+1)/2
o=(A+2*E+F+2)/4
k=s=(E+F+1)/2
p=w=(E+2*F+G+2)/4
m=t=(F+G+1)/2
q=x=(F+3*G+2)/4
n=r=v=y=z=G
The pixel values of the predicted pixels are calculated as described above in each prediction mode, and therefore the processing load required for performing the calculations is the highest in Mode 2. And Modes 5 and 7 yield the second highest load, followed by Mode 6 and Mode 8. Modes 3 and 4 yield a still lower load, and Modes 0 and 1 yield the lowest load. In the explanations below, the processing times corresponding to the processing loads are predetermined, and the processing times are stored in association with the reproduction application. And when the prediction mode is checked, the processing time is also checked.
In step S108 illustrated in
When it is determined that the prediction mode is a prediction mode which requires a processing time longer than the above-described specified value, the output interval (display interval) of image data of the output buffer 541c (see
As the determinations in steps S108 and S109 are made based on the prediction mode which the moving image data sets for each image, prompt and precise determinations can be carried out prior to the generation of image data. As a result, in steps S110 and S111, the output interval can be changed if necessary before the output interval of image data reaches the specified value. This means that an applied embodiment as described below is preferable in the moving image output apparatus. In the applied embodiment, the moving image data as described above includes mode information which indicates a processing mode for each image in the generation process of the image data. And in the applied embodiment the image generation unit as described above generates image data in the processing mode indicated in the mode information included in the moving image data acquired by the moving image acquisition unit. Moreover, in the applied embodiment the interval setting unit determines for each piece of image data based on the mode information included in the moving image data acquired by the moving image acquisition unit whether or not the image generation is performed by the image generation unit in time with the sequential output with the first time interval.
The processes performed in steps S108 to S111 as described above correspond to an example of processes performed in the interval setting unit in the applied embodiment. In addition, the processes performed in steps S112 to S114 described below correspond to an example of processes performed in the image generation unit in the applied embodiment.
Subsequently, the inverse quantization/inverse DCT process is performed to the moving image data to which the enthalpy decoding process has been performed in step S107 (step S112). The moving image data to which the inverse quantization/inverse DCT process has been performed is sent to the GPU 541 (see
Following step S116, it remains in waiting state until it reaches the set display time (step S117), and when it reaches the set display time the output buffer outputs the image data of the concerned frame (step S118). As the output interval (display interval) is changed in step S110 as described above, the writing of the image data in step S115 is performed with a timing which allows enough time for the output interval. Thus, in step S117 the waiting state continues for the time period corresponding to the time allowance. After the image data is output, the procedure goes back to step S107 described above and the processes of the moving image data proceed in order to generate the image data of the subsequent frame.
When it is determined that the prediction mode is a prediction mode which requires a processing time longer than the specified value in step S109 described above, the processes as described above are performed to prevent the dropping frames of the moving images or the freeze of the PC when the moving images are being reproduced. However, the output timing of the image data is slightly delayed in comparison with the original output timing. Here in this embodiment, arrangements are implemented to make up for the delay. The procedures in which such arrangements are employed are described below.
When it is determined that the prediction mode is a prediction mode which requires a processing time shorter than the specified value, which means that the generation of the image data is performed in time with the output thereof with the specified value, the procedure goes to step S201 illustrated in
Then, the newly changed output interval (display interval) is reported to the GPU in step S203. However, if it is determined that delay data is not detected in step S201, the output interval is not changed, and therefore the specified value of the output interval is reported to the GPU in step S203. And then, the procedure goes from step S203 to step S112 in
This means that an applied embodiment of the moving image output apparatus as described below is preferable. In this applied embodiment, the interval setting unit sets a third time interval which is shorter than the first time interval to the image output unit as for the image data to be output after the second time interval is temporarily set. And the setting of the third time interval becomes effective until the delay in outputting the image data due to the setting of the second time interval is fully made up for.
The moving image display which is achieved as the result of the processes of the reproduction application described above is described below. Here, the display speed set in the moving image data is 30 frames per second.
An phenomenon caused when a conventional low-end PC performs the image data generation in a prediction mode in which the processing load is high is described as a comparative example below.
This is the end of the explanations of the embodiments of the present invention.
Although the above explanations set forth an example in which the moving image display is performed at the display speed set in the moving image data, the moving image output apparatus and the moving image output method according to an aspect of the embodiments may also be employed for play modes such as slow motion play and search play, in which the set display speed is adjusted.
Further, the above explanations set forth an example in which it is determined based on the prediction mode prior to the generation of the image data whether or not the generation of the image data occurs in time with the output thereof. However, in the moving image output apparatus and the moving image output method according to an aspect of the embodiments, the determination may be made in parallel with the generation of the image data and the actual processing speed for the generation process may be used as the information for the determination.
Moreover, the above explanations set forth an example in which the processes for recovering from the delay caused by setting a longer output interval are incorporated. However, in the moving image output apparatus and the moving image output method according to an aspect of the embodiments, the recovery processes may be omitted in a case of which the delay is not considered to be significant.
Additionally, the above explanations set forth an example in which the display screen 31 displays the moving images based on the moving image data for displaying which are subject to the reproduction operation. However, it is not always necessary that the moving image data for displaying is displayed on the apparatus itself which performs the reproduction operation. For example, the moving image data for displaying may be stored in portable storage media such as DVD and Blu-ray Disc. Instead, the moving image data for displaying may be output externally as-is and displayed on an image display apparatus.
According to the disclosure herein, the moving image output is achieved with preserving the original image quality even if the display speed of the moving image data is faster than the processing speed of the processing unit.
All example and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present inventions have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
This application is a continuation application of International Application PCT/JP2010/057616 filed on Apr. 28, 2010, the entire contents of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
20020039478 | Ono et al. | Apr 2002 | A1 |
20060067406 | Kitada et al. | Mar 2006 | A1 |
20060203909 | Kitada et al. | Sep 2006 | A1 |
20070053655 | Fujiwara | Mar 2007 | A1 |
20070086751 | Matsumoto | Apr 2007 | A1 |
20070140355 | Uchida et al. | Jun 2007 | A1 |
20070160129 | Fujisawa et al. | Jul 2007 | A1 |
20070189735 | Kawashima et al. | Aug 2007 | A1 |
20070201555 | Kikuchi et al. | Aug 2007 | A1 |
20070292110 | Nishi et al. | Dec 2007 | A1 |
20100046611 | Toma et al. | Feb 2010 | A1 |
20100209074 | Kondo et al. | Aug 2010 | A1 |
20120036547 | Aoyanagi et al. | Feb 2012 | A1 |
Number | Date | Country |
---|---|---|
05-216800 | Aug 1993 | JP |
07-327214 | Dec 1995 | JP |
2001-045491 | Feb 2001 | JP |
2001-045491 | Feb 2001 | JP |
2002-159011 | May 2002 | JP |
2003-153261 | May 2003 | JP |
2003-153261 | May 2003 | JP |
2006-101321 | Apr 2006 | JP |
2006-101322 | Apr 2006 | JP |
2006-101323 | Apr 2006 | JP |
2006-101402 | Apr 2006 | JP |
2006-101403 | Apr 2006 | JP |
2006-101404 | Apr 2006 | JP |
2006-101405 | Apr 2006 | JP |
2006-101406 | Apr 2006 | JP |
2006-211485 | Aug 2006 | JP |
2006-254231 | Sep 2006 | JP |
2007-174196 | Jul 2007 | JP |
2007-184871 | Jul 2007 | JP |
2007-195064 | Aug 2007 | JP |
2007-208476 | Aug 2007 | JP |
2007-235447 | Sep 2007 | JP |
2009-182891 | Aug 2009 | JP |
Entry |
---|
International Search Report dated Jun. 15, 2010 as received in application No. PCT/JP2010/057616. |
International Preliminary Report on Patentability mailed on Jan. 17, 2013 in application No. PCT/JP2010/057616. |
Notice of Reason for Rejection dated Apr. 22, 2014 with its English translation issued in the corresponding Japanese application No. 2012-512597 Full translation. |
Number | Date | Country | |
---|---|---|---|
20130038802 A1 | Feb 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2010/057616 | Apr 2010 | US |
Child | 13653821 | US |