Abstract:
A device of updating a media file for an increased resolution includes an I/O interface, a processor, and a storage device. The I/O interfaces acquires a first media file having first data samples and a second media file having second data samples. Each first data sample is sampled from an analog media signal and encoded with P bits and each second data sample is sampled from the analog media signal and encoded with Q bits, wherein “P” and “Q” are integers, and a resolution in bits of Q is greater than a resolution in bits of. The processor divides each second data sample by a corresponding one of the first data samples to calculate third data samples. The storage device stores the calculated third data samples as a third media file.

Description:
FIELD 
       [0001]    The present disclosure generally relates to a method of updating a media file for an increased resolution, and more particularly, to a method of upgrading an audio file with an increased resolution and a device for performing the same. 
       BACKGROUND 
       [0002]    In today&#39;s world when a user purchases a media file (e.g., music) from service providers, the media file as delivered may have a 16 bits/sample encoding resolution and a 44.1 kHz sampling rate, similar or the same as a compact disk (CD). Hereinafter, the encoding resolution is referred to as a number of bits encoded used for each sampled media signal. 
         [0003]    The idea of high resolution media is becoming popular because hobbyist and audiophiles are purchasing equipments to encode their original analog media on vinyl with a higher resolution. For a relatively high resolution media, a typical resolution used for encoding may be 24 bits/sample and the sampling rate Fs may be 44.1 kHz, 48 kHz, 96 kHz, or the like. 
         [0004]    Such increase in resolution may add both additional visual or sound precision to the media, but also increase the dynamic range. With the additional bits in each sample, the dynamic range can be wider. 
         [0005]    Thus, users may want to upgrade their media files for an increased resolution, optimizing storage resource usage. A normal upgrade may only add additional files to the storage device, replacing relatively low resolution files (e.g., 16 bits/sample resolution media file) with the relatively high resolution files (e.g., 24 bits/sample resolution media file). 
         [0006]    If the users want to keep both the low and high resolution files, the storage space may be required to be as much the size of the respective low and high resolution files. 
       SUMMARY 
       [0007]    In one aspect, there is provided a device of updating a media file for an increased resolution. The device includes an input/output (I/O) interface, a processor, and a storage device. The I/O interface receives a first media file having a plurality of first data samples and a second media file having a plurality of second data samples and transmits the first and second media files to a processor. Each of the first data samples is sampled from an analog media signal and encoded with P bits and each of the second data samples is sampled from the analog media signal and encoded with Q bits, wherein “P” and “Q” are integers, and a resolution in bits of Q is greater than a resolution in bits of P. The processor divides each of the second data samples by a corresponding one of the first data samples to calculate a plurality of third data. The storage device stores the calculated third data samples into a third media file of the storage device. 
         [0008]    In another aspect, there is provided a method of updating a media file for an increased resolution. The method includes receiving, at a processing unit, a first media file having a plurality of first data samples and a second media file having a plurality of second data samples, dividing, at the processing unit, each of the second data samples by a corresponding one of the first data samples to obtain a plurality of third data samples, and storing, in a storage device, the plurality of third data samples into a third media file. Each of the first data samples is sampled from an analog media signal and encoded with P bits and each of the second data samples is sampled from the analog media signal and encoded with Q bits, wherein “P” and “Q” are integers, and a resolution in bits of Q is greater than a resolution in bits of P. 
         [0009]    Further, in another aspect, there is provided a computer program product for performing updating a media file for an increased resolution. The computer program product is stored in a non-transitory computer-readable storage medium having computer readable program instructions. The computer readable program instructions are read and carried out by a processor. The method includes receiving a first media file having a plurality of first data samples and a second media file having a plurality of second data samples, dividing each of the second data samples by a corresponding one of the first data samples to obtain a plurality of third data samples, and storing the plurality of third data samples into a third media file of a storage device. Each of the first data samples is sampled from an analog media signal and encoded with P bits and each of the second data samples is sampled from the analog media signal and encoded with Q bits, wherein “P” and “Q” are integers, and a resolution in bits of Q is greater than a resolution in bits of P. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1  is a block diagram of a device of updating a media file for an increased resolution according to an embodiment of the present disclosure; 
           [0011]      FIGS. 2A to 2D  illustrate examples of first, second, intermediate, and third media files, respectively, according to an embodiment of the present disclosure; 
           [0012]      FIGS. 3A and 3B  illustrate examples of media files stored in a storage of the device according to an embodiment of the present disclosure; 
           [0013]      FIG. 4  is a block diagram of a media file encoder/decoder of the device according to an embodiment of the present disclosure; 
           [0014]      FIG. 5A  is a flow chart illustrating a method of updating a media file for an increased resolution according to an embodiment of the present disclosure; 
           [0015]      FIG. 5B  is a flow chart illustrating a method of retrieving the media file updated through the method of  FIG. 5A  according to an embodiment of the present disclosure; 
           [0016]      FIG. 6  is a diagram illustrating a media distributing system including a media distributing server and a user device according to an embodiment of the present disclosure; and 
           [0017]      FIG. 7  is a block diagram of a computer system according to an embodiment of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
       [0018]    Like reference numerals may refer to like elements throughout the written descriptions and drawings. 
         [0019]      FIG. 1  is a block diagram of a device  40  of updating a media file for an increased resolution according to an embodiment of the present disclosure.  FIGS. 2A to 2D  illustrate examples of first, second, intermediate, third media files  10 ,  20 ,  30 / 30 ′, and  20 ′, respectively, according to an embodiment of the present disclosure.  FIGS. 3A and 3B  illustrate examples of media files stored in a storage  420  of the device  40  according to an embodiment of the present disclosure. 
         [0020]    Referring to  FIG. 1 , the device  40  may include a media file encoder/decoder  410 , a storage  420 , a control system  430 , an input interface  440 , and an output interface  450 . The media file encoder/decoder  410  may receive first and second media files  10  and  20  through the input interface  440  from an external device (not shown in  FIG. 1 ). While it is illustrated in  FIG. 1  that the input and output interface  430  and  440  are separated from each other, exemplary embodiments of the present disclosure are not limited thereto, and for example, the input and output interfaces  430  and  440  may be implemented into a single input/output (I/O) interface. The input and output interfaces  430  and  440  may allow the device  40  to communicate with external devices (e.g., a media distributing server  50  or a media player  60  of  FIG. 6 ) to exchange media files. The input and output interfaces  430  and  440  may be implemented using, e.g., a communication modem (not shown) based on a radio connection or e.g., a universal serial bus (USB) based on a physical interface. 
         [0021]    Each of the first and second media files  10  and  20  may include media contents such as music, songs, or the like. It is assumed throughout the present disclosure that the second media file  20  is encoded with a relatively high resolution (e.g., 24 bits/sample) than that (e.g., 16 bits/sample) of the first media file  10 . 
         [0022]    For example, the first media file  10  may be generated by encoding an analog media signal with a first encoding resolution and a first sampling frequency to include a plurality of first data vectors (e.g., a plurality of data samples)  10 - 1  to  10 - n,  as shown in  FIG. 2A . The first media file  10  may be received by the device  40  through the input interface  440 . The first encoding resolution may be, but not limited to, 16 bits/sample, 18 bits/sample, and 20 bits/sample, and the first sampling frequency may be, but not limited to, 44.1 kHz. Here, “n” is an integer of at least one. 
         [0023]    In addition, the second media file  20  may be generated to upgrade sound quality of the first media file  10  by encoding the analog media signal with a second encoding resolution and a second sampling frequency to include a plurality of second data vectors (e.g., a plurality of data samples)  20 - 1  to  20 - n,  as shown in  FIG. 2B . The second encoding resolution may be, but not limited to, 24 bits/sample, and the second sampling frequency may be, but not limited to, 44.1 kHz, or 96 kHz. In an embodiment, the first and second sampling frequencies may be the same as each other to ensure the same number of samples in each of the first media file  10  and the second media file  20 . 
         [0024]    Referring back to  FIG. 1 , the control device  430  may include a microprocessor or like controller to control operations of the media file encoder/decoder  410 , the storage  420 , the input interface  440 , and the output interface  450 . 
         [0025]    For example, the control device  430  may control the media file encoder/decoder  410  to receive the first media file  10  and the second media file  20  and divide each of the second data vectors  20 - 1  to  20 - n  of the second media file  20  by a corresponding one of the first data vectors  10 - 1  to  10 - n  of the first media file  10  to obtain a plurality of intermediate data vectors (e.g., data samples)  30 - 1  to  30 - n , as shown in  FIG. 2C . Each of the intermediate data vectors  30 - 1  to  30 - n  may be calculated by dividing each of the second data vectors  20 - 1  to  20 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n.    
         [0026]    For example, referring to  FIGS. 2A to 2C , each of the first data vectors  10 - 1  to  10 - n  may be a 16 bit vector, referred to as a “sample A”, each of the second data vectors  20 - 1  to  20 - n  may be a 24 bit vector, referred to as a “sample B”, and each of the intermediate data vectors  30 - 1  to  30 - n , referred to as a “sample C”, may be obtained by dividing the sample B by the sample A (e.g., C=B/A). 
         [0027]    For example, if the first data vector  10 - 1  and the second data vector  20 - 1  have hexadecimal values of “2710H” and “98968H”, respectively, the media file encoder/decoder  410  may output an intermediate data vector  30 - 1  having a hexadecimal value of “3E8H” as a result of dividing the hexadecimal value “98968H” by the hexadecimal value “2710H”, and transmit the intermediate data vector  30 - 1  of “3E8H” to the storage  420  rather than sending the second data vector  20 - 1  of “98968H” to the storage  420 . 
         [0028]    Substantially the same operations as those given for the above-mentioned pair of data vectors  10 - 1  and  20 - 1  may repetitively be applied to other combinations of the data vectors (e.g.,  10 - 2  and  20 - 2  to  10 - n  and  20 - n ) to end up obtain the plurality of intermediate data vectors  30 - 1  to  30 - n.    
         [0029]    In an embodiment, instead of the second data vectors  20 - 1  to  20 - n  being stored, the intermediate data vectors  30 - 1  to  30 - n  may be stored in the storage  420  to optimize usage of the storage device. Since each of the intermediate data vectors  30 - 1  to  30 - n  has a smaller memory size than each of the second data vectors  20 - 1  to  20 - n , a storage usage may be reduced. However the present disclosure is not limited thereto. For example, only the intermediate data vectors  30 - 1  to  30 - n  may be stored, the first data vectors  10 - 1  and  10 - n  being erased. In an embodiment, both of the intermediate data vectors  30 - 1  to  30 - n  and the first data vectors  10 - 1  and  10 - n  may be stored in the storage  420 , which allows a user to retain the first data vectors  10 - 1  and  10 - n  in a storage device (e.g.,  420  of  FIG. 1 ). 
         [0030]    In an embodiment, referring to  FIG. 3A , the first data vectors  10 - 1  to  10 - n  and the intermediate data vectors  30 - 1  to  30 - n  may be stored in separate files which are the first media file  10  and a first intermediate media file  30 , respectively, so that the low quality media content (e.g.,  10 ) may continue to be played back even while or after the original media file has been updated. Alternatively, the first data vectors  10 - 1  to  10 - n  and the intermediate data vectors  30 - 1  to  30 - n  may be stored in a same file which is a second intermediate media file  30 ′. 
         [0031]    In an embodiment, the first media file  10 , the first intermediate media file  30 , and/or the second intermediate media file  30 ′ may be compressed in a lossless manner to be stored in the storage  420 , however it is assumed in the present disclosure that the first media file  10 , the first intermediate media file  30 , and/or the second intermediate media file  30 ′ is/are not compressed to be stored in the storage  420 . However, exemplary embodiments of the present disclosure are not limited thereto. 
         [0032]    Referring back to  FIG. 1 , in order to retrieve the original media contents encoded with a relatively high resolution (e.g., 24 bits/sample), the control device  430  may control the media file encoder/decoder  410  to read the first data vectors  10 - 1  to  10 - n  and the intermediate media vectors  30 - 1  to  30 - n  from the first media file  10  and the first intermediate media file  30 , or the second intermediate media file  30 ′ and multiply each of the intermediate data vectors  30 - 1  to  30 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n  to obtain a plurality of third data vectors (e.g., data samples)  20 - 1 ′ to  20 - n′.    
         [0033]    For example, each of the third data vectors  20 - 1 ′ to  20 - n ′, referred to as a “sample D”, as shown in  FIG. 2D , may be calculated by multiplying each of the intermediate data vectors  30 - 1  to  30 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n.    
         [0034]    The third data vectors  20 - 1 ′ to  20 - n ′ may constitute a third media file  20 ′, as shown in  FIG. 2D , and each may correspond to each of the second data vectors  20 - 1  to  20 - n . The third data vectors  20 - 1  to  20 - n ′ may be played back through a media player  60 , as shown in  FIG. 6 . 
         [0035]      FIG. 4  is a block diagram of a media file encoder/decoder  410  of the device  40  according to an embodiment of the present disclosure. 
         [0036]    In an embodiment, referring to  FIG. 4 , the media file encoder/decoder  410  may be implemented with a digital signal processing (DSP) chip including a division circuit  411  (e.g., a binary division circuit) for performing the dividing of each of the second data vectors  20 - 1  to  20 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n  and a multiplication circuit  412  (e.g., a binary multiplication circuit) for performing the multiplying of each of the intermediate data vectors  30 - 1  to  30 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n . Each of the division circuit  411  and the multiplication circuit  412  may be an integer circuit. 
         [0037]    Although detailed configurations of the division circuit  411  and the multiplication circuit  412  are not described in the present disclosure, configurations of the division and multiplication circuits  411  and  412  for performing the above-described functions thereof are well known to a person skilled in the art. 
         [0038]    In an embodiment, the media file encoder/decoder  410  may be implemented with a processor such as a central processing unit (CPU), a microprocessor, or the like. The CPU may include an arithmetic logic unit (ALU) to perform the above division and multiplication operations among the first media file  10 , the second media file  20 , and/or the first or second intermediate media file  30  or  30 ′. 
         [0039]    The control device  430  may control the above operations of the media file encoder/decoder  410 , the storage  420 , the input interface  440 , and the output interface  450 . 
         [0040]      FIG. 5A  is a flow chart illustrating a method of updating a media file for an increased resolution according to an embodiment of the present disclosure.  FIG. 5B  is a flow chart illustrating a method of retrieving the media file updated through the method of  FIG. 5A  according to an embodiment of the present disclosure. 
         [0041]    Referring to  FIG. 5A , the method of updating a media file for an increased resolution according to an embodiment of the present disclosure may include receiving first and second media files  10  and  20  in an operation S 110 . The first media file  10  includes a plurality of first data vectors  10 - 1  to  10 - n  and the second media file  20  includes a plurality of second data vectors  20 - 1  to  20 - n . The method may further include dividing each of the second data vectors  20 - 1  to  20 - n  of the second media file  20  by a corresponding one of the first data vectors  10 - 1  to  10 - n  of the first media file  10  in an operation S 120  and storing the division results into the first or second intermediate file  30  or  30 ′ of the storage  420  in an operation S 130 . Thus, the first intermediate media file  30  may include a plurality of intermediate data vectors  30 - 1  to  30 - n , and the second intermediate media file  30 ′ may include both the intermediate data vectors  30 - 1  to  30 - n  and the first data vectors  10 - 1  to  10 - n.    
         [0042]    Referring to  FIG. 5B , the method of retrieving the media file updated through the method of  FIG. 5A  according to an embodiment of the present disclosure may include reading the first and first intermediate media files  10  and  30  or the second intermediate media file  30 ′ to obtain the first data vectors  10 - 1  to  10 - n  and the intermediate data vectors  30 - 1  to  30 - n  in an operation S 210 . The method may further include multiplying each of the plurality of intermediate data vectors  30 - 1  to  30 - n  by a corresponding one of the first data vectors  10 - 1  to  10 - n  to retrieve the original second media file  20 ′ in an operation S 220 . The method may further include playing back the retrieved second media file  20 ′ in an operation S 230 . In an embodiment, the method might not play back the retrieved second media file  20 ′ immediately after the operation S 220 . For example, the method may include storing the retrieved second media file  20 ′ to a storage (e.g., the storage  420 ) or memory (not shown) in an operation S 225  prior to the operation S 230 , and thus, the device  40  could decide dynamically the playback of the retrieved second media file  20 ′ based on available resources (e.g., CPU, memory, etc) on the device  420 . 
         [0043]    For example, depending on the state of the device  40  at the time of the multiplication in the operation S 220  is completed, the second media file  20 ′ may be stored in the storage or the memory without being played back, or may be stored in the storage or the memory and then played back later, or in an embodiment, the second media file  20 ′ might not be stored in the storage or the memory, but fed to the media player  60  and played back in a streaming manner through the media player  60 . For example, the second media file  20 ′ may temporally be stored in a buffer (not shown) while being played back in the streaming manner. However, the present disclosure is not limited thereto. 
         [0044]    The device  40  or the methods according to according to an embodiment of the present disclosure allow media (e.g., a media file of a storage device (e.g.,  420  of  FIG. 1  or a card) to be upgraded, storing different versions (e.g., 16 bits/sample and 24 bits/sample) of the media into the storage device with optimized, less usage of storage thereon by adding only an intermediate version (e.g., 30) of the media to the storage device without deleting or altering the low resolution version (e.g., 16 bits/sample) of the media. 
         [0045]    In addition, the device  40  or the methods according to according to an embodiment of the present disclosure may supporting combining the low resolution version and the intermediate version of media file to store the combined result into the same file of the storage device, or may support storing the low resolution version and the intermediate version of the media into separate files, which may be different from each other in storage organization or file formats, so that flexibility for access to the media may be maximized. For example, using a digital right management (DRM) technique, it is possible to allow some users to access the low resolution version of the media, or allow other users to access the high resolution version (e.g., 24 bits/sample version) of the media, or both of the low and high quality versions of the media. For example, a DRM mechanism could be applied to allow anyone to access the low resolution version of the media on the storage device while only a DRM identified owner can access the high resolution version of the media on the storage device. 
         [0046]    In addition, the device  40  or the methods according to according to an embodiment of the present disclosure may allow media purchasers to upgrade their low resolution version of the media for higher resolution version for each new increment in encoding resolution that is made available. Depending on whether the intermediate version of the media is stored in a separate file or a same file from/as the low resolution version of the media, the media purchaser could share the low resolution media file with another users using a simple copy operation, while the original media purchaser may have access to the high resolution media file. 
         [0047]    Thus, when media distributors (not shown) may store the low resolution version and the intermediate version of the media into separate files and sell the higher resolution media file (e.g.,  20 ) to users, the media distributors may control access right of the users to the higher resolution media file using the DRM technology. 
         [0048]    Further, according to an exemplary embodiment of the present disclosure, the low resolution media file is unchanged during the upgrade process, and thus this storage algorithm may lend itself well to usage on Write Once, Read Many (WORM) devices. For example, the WORM devices may include spinning media and memory card versions. 
         [0049]      FIG. 6  is a diagram illustrating a media distributing system including a media distributing server  50  and a user device  60  according to an embodiment of the present disclosure. 
         [0050]    In an embodiment, referring to  FIG. 6 , the media distributing server  50  may store the first and second media files  10  and  20  in a storage  510  and distribute (or transmit) the first and second media files  10  and  20  to the user device  60  through a network  500 . The media distributing server  50  may include the storage  510  and a network modem  520 , and the user device  40  corresponding to the device  40  of  FIG. 1  may include the media file encoder/decoder  410 , the storage  420 , the controller  430 , the input interface  440 , and the output interface  450 , as described with reference to  FIG. 1 . 
         [0051]    Referring back to  FIG. 1 , the user device  40  may generate the first intermediate media file  30  or the second intermediate media file  30 ′ using the first and second media files  10  and  20  downloaded from the media distributing server  50  and store the first intermediate media file  30  or the second intermediate media file  30 ′ into the storage  420 . In an embodiment, the user device  40  may store the first media file  10  into the storage  420 . Duplicate descriptions will be omitted for the purpose of simplicity. 
         [0052]    Referring back to  FIG. 1 , later, upon user&#39;s request, the media file encoder/decoder  410  may decode the first intermediate media file  30  to generate the third media file  20 ′ corresponding to the second media file  20  having a relatively high resolution. Further, the third media file  20 ′ may be played back by a media player  60 . 
         [0053]    The network  500  may be implemented using on a wired communication based on Internet, local area network (LAN), wide area network (WAN), or a wireless communication based on code division multiple access (CDMA), global system for mobile communication (GSM), wideband CDMA, CDMA-2000, time division multiple access (TDMA), long term evolution (LTE), wireless LAN, Bluetooth, or the like. 
         [0054]      FIG. 7  is a block diagram of a computing system  1000  according to an embodiment of the present disclosure. 
         [0055]    Referring to  FIG. 7 , the computing system  1000  may be used a platform for performing the functions or operations described hereinabove with respect to the device  40  of  FIG. 1  or the methods of  FIGS. 5A and 5B . 
         [0056]    In addition, the computing system  1000  may be implemented with a ultra-mobile personal computer (UMPC), a net-book, a personal digital assistance (PDA), a portable computer (PC), a web tablet, a wireless phone, a mobile phone, a smart phone, an e-book, a portable multimedia player (PMP), a portable game console, a navigation device, a black box, a digital camera, a digital multimedia broadcasting (DMB) player, a digital audio recorder, a digital audio player, a digital picture recorder, a digital picture player, a digital video recorder, a digital video player, or the like. 
         [0057]    Referring to  FIG. 7 , the computing system  1000  may include a processor  1010 , I/O devices  1020 , a memory system  1030 , a display device  1040 , and a network adaptor  1050 . 
         [0058]    The processor  1010  may drive the I/O devices  1020 , the memory system  1030 , the display device  1040 , and the network adaptor  1050  through a bus  1060 . 
         [0059]    The computing system  1000  may include a program module for performing the functions or operations described hereinabove with respect to the device  40  of  FIG. 1  or the methods of  FIGS. 5A and 5B  according to exemplary embodiments. For example, the program module may include routines, programs, objects, components, logic, data structures, or the like, for performing particular tasks or implement particular abstract data types. The processor (e.g.,  1010 ) of the computing system  1000  may execute instructions written in the program module to perform the functions or operations described with respect to the device  40  of  FIG. 1  or the methods of  FIGS. 5A and 5B . The program module may be programmed into the integrated circuits of the processor (e.g.,  1010 ). In an exemplary embodiment, the program module may be stored in the memory system (e.g.,  1030 ) or in a remote computer system storage media. 
         [0060]    The computing system  1000  may include a variety of computing system readable media. Such media may be any available media that is accessible by the computer system (e.g.,  1000 ), and it may include both volatile and non-volatile media, removable and non-removable media. 
         [0061]    The memory system (e.g.,  1030 ) can include computer system readable media in the form of volatile memory, such as random access memory (RAM) and/or cache memory or others. The computer system (e.g.,  1000 ) may further include other removable/non 
         [0062]    removable, volatile/non-volatile computer system storage media. 
         [0063]    The computer system (e.g.,  1000 ) can communicate with one or more devices using the network adapter (e.g.,  1050 ). The network adapter may support wired communications based on a LAN, a WAN, or the like, or wireless communications based on CDMA, GSM, wideband CDMA, CDMA-2000, TDMA, LTE, wireless LAN, Bluetooth, or the like. 
         [0064]    Exemplary embodiments of the present disclosure may include a system, a method, and/or a computer program product. The computer program product may include a non-transitory computer readable storage medium (e.g., the memory system  1030 ) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure. 
         [0065]    The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, or the like, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
         [0066]    Computer readable program instructions described herein can be downloaded to the computing system  1000  from the computer readable storage medium or to an external computer or external storage device via a network (e.g.,  500 ). The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card (e.g.,  1050 ) or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the computing system. 
         [0067]    Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the computing system (e.g.,  1000 ) through any type of network, including a LAN or a WAN, or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In an exemplary embodiment, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure. 
         [0068]    Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, device, and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
         [0069]    These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0070]    The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0071]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 
         [0072]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0073]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements, if any, in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the present disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the present disclosure. The embodiment was chosen and described in order to best explain the principles of the present disclosure and the practical application, and to enable others of ordinary skill in the art to understand the present disclosure for various embodiments with various modifications as are suited to the particular use contemplated. 
         [0074]    While the present disclosure has been particularly shown and described with respect to preferred embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in forms and details may be made without departing from the spirit and scope of the present disclosure. It is therefore intended that the present disclosure not be limited to the exact forms and details described and illustrated, but fall within the scope of the appended claims.