VIDEO STORAGE
20180366157 ยท 2018-12-20
Inventors
Cpc classification
H04N21/23103
ELECTRICITY
International classification
Abstract
A video storage apparatus is described which stores and provides access to a video sequence of images. The apparatus comprises an array of storage devices, each image in the sequence being stored on at least one of the storage devices in the array, or being distributed across the array of storage devices with each portion being independently reproducible. A driver is provided, the driver being operable to access the video sequence by reading images in time order from the array of storage devices, temporally adjacent ones of the images, or different portions of the same image, being read by the driver from different storage devices in the array. In this way, an array of independent drives can be used to store video and allow much faster access to the stored video than would be the case with a single drive, and in a way which is more robust to drive failure.
Claims
1. A video storage apparatus for providing access to a video sequence of images, the apparatus comprising: an array of storage devices, each image in the sequence being stored on at least one of the storage devices in the array; and a driver, the driver being operable to access the video sequence by reading images in time order from the array of storage devices, temporally adjacent ones of the images being read by the driver from different storage devices in the array.
2. A video storage apparatus according to claim 1, wherein each image in the sequence is stored in its entirety on at least one of the storage devices in the array.
3. A video storage apparatus according to claim 1, wherein each image in the sequence is spatially distributed in image portions across a plurality of the storage devices in the array, and wherein each image is accessible by reading different image portions of the image from different storage devices in the array.
4. A video storage apparatus according to claim 1, wherein each image in the sequence is stored on only one of the storage devices in the array.
5. A video storage apparatus according to claim 1, wherein each image in the sequence is stored on a plurality of the storage devices in the array.
6. A video storage apparatus according to claim 1, wherein each image in the sequence is stored on all of the storage devices in the array.
7. A video storage apparatus according to claim 1, wherein the driver is operable to access the video sequence by reading images from different ones of the storage devices in a repeating order.
8. A video storage apparatus according to claim 1, wherein if the driver is unable to access an image in the sequence from a storage device, the previous image in the sequence is displayed instead.
9. A video storage apparatus according to claim 1, wherein if the driver is unable to access an image in the sequence from a storage device, the image is obtained from a different one of the storage devices instead.
10. A video storage apparatus according to claim 1, wherein if the driver is unable to access an image in the sequence from a storage device, a blended image is generated from available stored images and displayed in real-time.
11. A video storage apparatus according to claim 9, wherein the image is obtained from a storage device from which the driver is not due to read a temporally adjacent image.
12. A video storage apparatus according to claim 1, wherein each image is stored as an uncompressed image file.
13. A video storage apparatus according to claim 1, wherein each storage device comprises a plurality of physical storage devices, each image being split across the plurality of physical storage devices.
14. A video storage apparatus according to claim 1, wherein the driver is operable to store a video sequence to the array of storage devices by alternating the storage of images to different ones of the storage devices within the array such that temporally adjacent images are stored to different storage devices.
15. A video storage apparatus according to claim 1, wherein the driver is operable to populate a replacement storage device with images by determining its position in the array based on which of the images are to be stored in the replacement storage device.
16. A video storage apparatus according to claim 15, wherein the replacement storage device is populated automatically in response to it being detected by the driver.
17. A video storage apparatus according to claim 1, wherein the temporal position of each image in the video sequence is indicated by the file name of the file storing that image.
18. A video storage apparatus according to claim 17, wherein the driver is operable to identify which of the storage devices is to be used to store a video image based on its file name.
19. A video storage apparatus according to claim 17, wherein the driver is operable to identify from which storage devices an image is to be retrieved based on its file name.
20-21. (canceled)
22. A video storage method of providing access to a video sequence of images, the method comprising: providing a video sequence of images on an array of storage devices, each image in the sequence being stored on at least one of the storage devices in the array; and accessing the video sequence by reading images in time order from the array of storage devices, temporally adjacent ones of the images being read from different storage devices in the array.
23-41. (canceled)
Description
[0046] To help understanding of the invention, a specific embodiment thereof will now be described by way of example and with reference to the accompanying drawings, in which:
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057] Referring to
[0058] Referring to
[0059] Each image frame (or file) is fed to and output from sequential ones of the drives using a single virtual drive as a user interface. It can be seen that each of the drives may store a different subset of the data, and in particular a different subset of the image files. Specifically, drive E:\ stores frames 0, 8, 16, 24, 32 . . . , drive F:\ stores frames 1, 9, 17, 25, 33 . . . , drive G:\ stores frames 2, 10, 18, 26, 34 . . . , drive H:\ stores frames 3, 11, 19, 27, 35 . . . , I:\ stores frames 4, 12, 20, 28, 36 . . . , drive J:\ stores frames 5, 13, 21, 29, 37 . . . , K:\ stores frames 6, 14, 22, 30, 38 . . . , and drive L:\ stores frames 7, 15, 23, 31, 39 . . . . It will be appreciated from this sequencing that in order to access the image in order, the driver will need to access the drives in a repeating sequenceE, F, G, H, I, J, K, L. It will further be appreciated that the driver can initiate access to drive F (for example) before file retrieval from the drive E has been completed. In other words, multiple storage devices can be accessed substantially in parallel to greatly increase the speed with which data can be read from the storage devices compared with if the data had been stored on a single device. It will be appreciated that drive addressing need not be by letterin a case where more than 26 drives are used, these could be addressed by name, such as drive 1, drive 2.
[0060] Referring to
[0061] Referring to
[0062] Referring to
[0063] It will be appreciated that if all image files are to be stored into all storage devices, then the process for both initial setup and device replacement is much simpler. If image files are to be stored to multiple ones of but not all storage devices, then the principles described above in relation to
[0064] Referring to
[0065] If a read failure is identified at the step C5, then at step C6 it is determined if this image file is available at another of the storage devices in the array 10, and if so then it is read from the other storage device at step C10, and then displayed normally at the step C8. If however the image file is not available at another of the storage devices in the array 10, then at step C7 the previous image in the sequence is displayed instead. This could be achieved simply by providing the previous image again to the application 24, or alternatively by informing the application 24 that the requested image file is not available, whereupon the application 24 will instruct the device driver to continue to display the previous frame. The process will then progress to the step C9 where playback continues. The failure detected at the step C5 may simply be due to corrupt data on the storage device, or due to a complete device failure. In the former case the driver 22 may attempt to repair the corrupted data by replacing corrupt files on the storage device with new files from the mass storage device 40. In the latter case, the failed storage device will need to be replaced as described above in relation to
[0066] It will be appreciated from the above that the driver 22 may read image files from the storage devices in a repeating order to playback a video sequence. Image files are distributed across the storage devices in a repeating order so that temporally adjacent images within the video sequence are stored to different storage devices. The repeating order in which the storage devices are accessed may match the repeating order in which the image files are stored to devices. However, if the image files are stored to multiple disks then this need not be the casethe driver could effectively pick up the ordered frames from any of the disks (which are not already being currently accessed in relation to another image file).
[0067] The present technique addresses each of the SSDs (or other storage devices such as USB) to be written to and read from, as independent drives. By recognising each of the disks as individual drives, playback can continue with any single (or potentially multiple) disk failure. The number of drives used is configurable based on the requirements of the system and multiple servers can also be used to increase capacity and playback performance, as with current methods. As with a conventional RAID configuration, an 8 disk array using the present technique will also provide an increased transfer speed of data, but media is split between disks, which are recognised independently as (for example) drives E:\ through to L:\, with the split being carried out on a discrete file basis (that is, each file is stored in its entirety on one storage device (although it may also be stored, again in its entirety, on other storage devices in the array)).
[0068] The present technique distributes whole frames/files across an array of individual disks/drives as temporal data, playing them back sequentially for the same quality visual effect. A drive may store the entire collection of files if the media is small enough to fit, or the files may be written sequentially by individual filename (frame) across the disks for larger media coverage. In either case, the files/frames will be read back sequentially from each of the drives. If the entire collection of files are stored on each of the storage devices, or if multiple copies of each file are distributed across the array (for example each file is stored on two different storage devices), then retrieval of each image file need not necessarily come from a predetermined one of the storage device. Instead, the driver may simply access the file from any one of the storage devices which is currently free to immediately process a read access instruction from the driver.
[0069] A significant benefit of the present technique is that if one disk fails the system continues reading the media and can simply ignore the failed disk, which can then be swapped at a convenient time. Instead of the intended image, the previously displayed image in the video sequence can be displayed again (or continue to be displayed). The technique utilises the human ocular ability to overlook (in most cases) minimal frame drops when running at very fast rates. In the example of a server using 8 disks, 1 in 8 frames will be dropped but at a speed of 60 frames per second, the dropped frames are almost unrecognizable to the untrained eye and so cause minimal visual disruption. In the alternative, if the entire media is stored on each of the storage devices in the array (or at least on multiple of the storage devices within the array), given that each disk is generally not running to full capacity, when one disk fails another can be prompted to read back the missing data for continued, smooth playback. It will be appreciated that the backup storage device in this case should be one which is relatively distant in the access order from the faulty storage device in order not to stall retrieval of other image files. For example, if (referring to
[0070] In either case, the failed disk can be easily removed and replaced (during or after video playback) with no further disruption: media is easily restored (remotely from the master source or on-site via USB or other) to the virtual S:\ drive, which re-distributes the missing data to the new disk(s). This is a faster and more robust process than the current RAID approach as only data for the individual disk(s) needs to be restored. The process, and in particular the auto-population of image files to the replacement disk, may also be automated based on the system detecting a new disk being present.
[0071] The present technique only requires enough disks to meet the bandwidth requirements (but more can be added if required) since if one fails, the consequences are relatively unnoticeable. In contrast, current RAID configurations would require extra disks, at extra cost, to immediately cater for disk failure. Furthermore, the technique reduces data redundancy compared with an equivalent RAID configuration, since it is not necessary to provide extra disks with checksum or mirrored data stored within a standard setup. The user experience can be expected to be generally equal to current RAID techniques, but is vastly beneficial in the event of a disk failure. Disks can be swapped in and out with minimal disruption to a show for continued ocular viewing and lower maintenance disruption/cost for the media director. It will be understood that the present technique can utilise any storage media, not just SSDs, and has the capacity to write to as many as required for the media solution (for example 20 USB storage devices).
[0072] Various modifications to the above-described embodiments can be envisaged. For example, rather than obtaining a missing image from another disk, or skipping the missing image entirely, a replacement image can be synthesised from other images. For example, given an image sequence a, b, c, if the image b is found to be missing due to a disk error, a replacement image b may be generated by interpolating or averaging between the images a (the previous image in the sequence) and c (the next image in the sequence). Suitable techniques may be similar to those used for motion compensation in MPEG video encoding. Provided that these techniques can be performed in real time, the generated images can be inserted in the place of the missing images.
[0073] It will be understood that the present technique also makes it possible to write data to storage media at a higher rate, since the driver can write data in parallel to multiple storage devices within the array. Further, if one (or more) of the storage devices in the array should fail, the driver can continue to write data to the operational storage devices in the array, resulting in a usable (albeit incomplete) stored video sequence. The non-operational storage device can later be replaced and populated with the missing images in the sequence in the manner described above.
[0074] While the above embodiments stored complete images to different storage devices within the array, it will be appreciated that another potential way of distributing the video sequence across multiple devices could be to spatially separate image data from each image across two or more devices. For example, even numbered lines of pixels of a particular image could be stored on one storage device, and odd lines of pixels of the same image could be stored on another storage device. In this way if a storage device fails then the system can continue with half resolution media, or alternatively the missing lines could be interpolated from the available lines. It will be appreciated that the same principle could be applied across more than two storage devices, with a repeating pattern of n lines within the image being written to n different storage devices in an array. It will be understood that the lines need not be horizontal lines, but could be vertical lines of pixels. It should also be understood that other spatial separation could be usedfor example blocks of pixels rather than lines. More generally, different spatial portions of each image can be written to different ones of the storage devices in the array, in a manner in which permits those portions to be independently reproduced from their respective storage devices and used to form an image for display, even if other portions of the image are not available. In other words, even though this variant splits images across multiple storage devices, the separate portions of the image are still stored as independently reproducible image files, which can be combined by the driver into an image for display.
[0075] Generally, the explanations given above of an implementation in which images are temporally distributed across disks applies also to an implementation in which spatial portions of images are distributed across disks. An example of such a spatially distributed storage and retrieval method is described with reference to
[0076] Considering the 8 drive array of
[0077] It will be appreciated that the driver can initiate access to drives E, F, G and H substantially concurrently. This enables the entire image, that is the 4 spatial regions A, B, C and D of that image, to be retrieved much more quickly than would be possible if the image as a whole was retrieved from a single drive. This benefit may be utilised to make real-time retrieval and display of high resolution and/or high frame rate image sequences possible, where an image frame could otherwise not be retrieved within a single-frame period. While in the present example the number of drives is greater than the number of image portions (thus permitting both spatial and temporal distribution of images across drives), it will be appreciated that in alternative embodiments the number of image portions may be the same as (or greater than) the number of drives, in which case retrieving a given image may require access to all drives. In the case of
[0078] It will be understood that the system description of
[0079] Referring to
[0080] At step D6, the image portion is written to the identified storage device. At step D7 it is determined whether there are further portions of the same image which need to be stored to the array 10. If so, the process returns to the step D4 where the next portion of the image is processed. If it is determined at the step D7 that there are no further portions of that image to be stored, then at a step D8 it is determined whether there are further images in the video sequence which need to be stored to the array 10. If further images are still to be stored, then the process returns to step D2 where the next image file is received. Otherwise, the process terminates at step D9.
[0081] Referring to
[0082] Referring to
[0083] If a read failure is identified at the step F5, then at step F6 it is determined if this image portion is available at another of the storage devices in the array 10, and if so then it is read from the other storage device at step F10, and passed to the display driver at the step F8. If however the image file is not available at another of the storage devices in the array 10, then at step F7 an action is taken to minimise the visual disruption to the viewer. Such actions may include displaying the same portion from a previous image in the sequence, rejecting all portions of the present image in the sequence and instead continuing to displaying the previous image in the sequence, interpolating missing image portions based on retrieved image portions (this would not work in the