This application claims the benefit of U.S. Provisional Application No. 63/232,814, filed 13 Aug. 2021, which claims the benefit of U.S. Provisional Application No. 63/211,183, filed 16 Jun. 2021, the disclosures of each of which are incorporated, in their entirety, by this reference.
The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.
Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
Features from any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
As used herein, the term “video codec” generally refers to a device that performs encoding (i.e., compression) and decoding (i.e., decompression) of video data. Video data is typically encoded at a transmitter for more efficient transmission and decoded at a receiver for reproduction. Examples of video codecs include, without limitation, MPEG4 and VP9.
VP9 is an open and royalty-free video coding format developed by Google. VP9 competes mainly with MPEG's High Efficiency Video Coding (HEVC/H.265). At first, VP9 was mainly used on Google's video platform YouTube. The emergence of the Alliance for Open Media, and its support for the ongoing development of the successor AV1, of which Google is a part, led to growing interest in the format.
In contrast to HEVC, VP9 support is common among modern web browsers, including Chromium, Google Chrome, Opera, Firefox, Microsoft Edge, and Safari. Android has supported VP9 since version 4.4 KitKat, while iOS/iPadOS added support for VP9 in iOS/iPadOS 14. VP9 is customized for video resolutions greater than 1080p (such as UHD) and also enables lossless compression.
In operation, the VP9 codec encodes a video frame by dividing the frame into rows and columns to achieve coding units called macroblocks, at least some of which may be further split into prediction units (PUs) and transform units (TUs). The VP9 codec employs an inter-prediction mode for motion compensation by using a similar region on previously coded frames close to the current block for prediction. In case no acceptable reference is available, or no motion vector for any available reference gives acceptable prediction results, a block can use intra prediction. For intra prediction, edge (top/top-right, left and top-left) pixels are used to predict the contents of the current block. The exact mechanism through which the edge pixels are filtered to generate the predictor is called the intra prediction mode.
As shown in
Within each PU, there can be multiple TUs, and intra-prediction is performed on a transform unit basis and decided on a PU basis. Stated differently, intra-prediction mode is the same for all TUs in a PU. In order to perform intra prediction for a given TU, the reconstructed pixels from the neighboring TUs are needed. Hence there is an algorithmic data dependency. For example, if the neighboring TU is within the same PU, the current TU has to use reconstructed pixels from that neighbor TU for each of the prediction modes of that neighbor. As such, all TUs within a PU have the same mode. Stated differently, tu1 mode 0 should use tu0 mode0 as neighbors, to 1 mode 1 should use tu0 mode1 as neighbors, etc. Alternatively, if the neighboring TU is from a different PU, the current TU has to use reconstructed pixels for the best prediction mode of the neighboring TU/PU. Traditional software and hardware encoders process all PUs independently without sharing any prediction data across PUs. This limitation burns power across the hardware encoder blocks and impacts performance by increasing overall processing times.
The present disclosure is generally directed to a video encoder and/or video encoding process having reduced processing time. As will be explained in greater detail below, embodiments of the present disclosure may share data across TUs of different PU shapes during intra-prediction mode. By buffering neighbor reconstructed pixels (right and left boundary pixels), the reconstructed pixels can be reused across PUs. Thus, transform units can avoid reconstructing pixels that have already been reconstructed by one or more neighbor TUs from different PUs. The encoder may be implemented in hardware for accelerated performance and, thus, achieve improved video data transmission efficiency in computer networks and wireless communications.
The following will provide, with reference to
As illustrated in
As used herein, “video data” generally refers to a stored or transmitted signal that represents a visual image in a manner reproducible by a computing device. Video data may occur as a continuous, analog signal or a representation of such a signal converted into a non-continuous, digital format. In a digital format, the video data can be stored as a series of bits on a hard disk or in computer memory. Types of video data include, without limitation, MPEG video data and VP9 video data.
As used herein, “encoding” generally refers to converting information or a signal into a coded form, such as by compression of video data. Examples of encoding include, without limitation, compression of VP9 video data or compression of MPEG video data.
At step 104 one or more of the systems described herein may determine, by the computing device, pixels for a first transform unit (TU) of a first prediction unit (PU) of a square shape of the video data. For example, the pixels for the first TU may be reconstructed based on information about pixels of neighboring TUs in a same or similar manner as may be carried out during a decoding process, thus predicting what the decoder will be able to determine for a TU by reconstructing pixel data for that TU using reconstructed pixel data of its neighboring TUs. Comparing the reconstructed pixels of a TU to the real pixels of that TU to obtain residuals is part of the compression carried out by the encoding, so that information about pixels that can be reconstructed reliably can be reduced or eliminated in the compressed data. Processing may proceed from step 104 to step 106.
At step 106 one or more of the systems described herein may store, by the computing device, the pixels in a buffer. For example, the reconstructed pixels may be stored in a hardware data buffer. Processing may proceed from step 106 to step 108.
As used herein, “buffer” generally refers to a region of a physical memory storage used to temporarily store data while it is being moved from one place to another. Buffers can be implemented in a fixed memory location in hardware or by using a virtual data buffer in software pointing at a location in the physical memory. In all cases, the data stored in a data buffer are stored on a physical storage medium.
At step 108 one or more of the systems described herein may perform, by the computing device, intra-prediction for a second PU by reusing the stored pixels for a second TU of the second PU. For example, the data stored in the buffer may be read out of the buffer instead of reconstructing those pixels again. In this process, reading out the data of the buffer may be accompanied by reading the data back into the buffer for continued storage and reuse by other TUs that neighbor the first TU. Processing may proceed from step 108 to step 110.
At step 110 one or more of the systems described herein may encode the video data based on the intra-prediction performed for the second PU. For example, the reconstructed pixels for the second TU may be subtracted from the actual pixels of the second TU to obtain a residual. This residual may be employed to compress the video data. Following step 110, the encoded video data may be stored and/or transmitted.
A video encoder may be implemented in any suitable manner. Turning to
Example video encoder 120 in
Turning to
Some TUs from different PUs are going to have the same processing mathematically, so they do not need to perform the same processing again. The TUs from different PUs that use them as neighbors can share the reconstructed pixel data for these neighbors. For example, the processing for n×n pu0 tu0 is the same as for: 2n×n pu0 tu0, n×2n pu0 tu0, and 2n×2n pu0 tu0. A special case exists for 64×64 PU with 4 32×32 TU split. In this special case, processing for 2n×n (64×32) pu0 tu1 is the same as for 2n×2n (64×64) tu1. The hardware implementation may thus buffer the neighbor reconstructed pixels (right and left boundary pixels) for the above mentioned TUs to be reused across other PUs.
With the data sharing disclosed above, a video encoder and/or video encoding process may have reduced processing time. For example, embodiments of the present disclosure may share data across TUs of different PU shapes during intra-prediction mode. By buffering neighbor reconstructed pixels (right and left boundary pixels), the reconstructed pixels can be reused across PUs. Thus, transform units can avoid reconstructing pixels that have already been reconstructed by one or more neighbor TUs from different PUs. The encoder may be implemented in hardware for accelerated performance and, thus, achieve improved video data transmission efficiency in computer networks and wireless communications. Although discussed particularly herein with reference to the VP9 codec, it is envisioned that these techniques also may be of benefit with other video codecs that employ an intra-prediction mode.
A computer-implemented method may include receiving, by a computing device, video data to be encoded and determining, by the computing device, pixels for a first transform unit (TU) of a first prediction unit (PU) of a square shape of the video data. The method may additionally include storing, by the computing device, the pixels in a buffer and performing, by the computing device, intra-prediction for a second PU by reusing the stored pixels for a second TU of the second PU. The method may also include encoding the video data based on the intra-prediction performed for the second PU.
A video encoder may include a buffer and a physical processor configured to receive video data to be encoded and determine pixels for a first transform unit (TU) of a first prediction unit (PU) of a square shape of the video data. The physical processor may additionally be configured to store the pixels in the buffer and perform intra-prediction for a second PU by reusing the stored pixels for a second TU of the second PU. The physical processor may also be configured to encode the video data based on the intra-prediction performed for the second PU.
Data centers and libraries may house large quantities of digital data, which may be retrieved or modified as needed. For example, data may be stored in tape cartridges and housed in data racks so that individual cartridges can be easily loaded or retrieved without needing to access entire libraries of data. In some embodiments, the term “data center” may refer to a facility that houses and/or stores electronic and computing equipment for ongoing computing processes. In some embodiments, the terms “data library” or “tape library” may refer to a repository or archive to store and/or retrieve digital data. In some examples, the term “tape cartridge” may refer to an enclosure containing a length of magnetic tape that may store digital data. For example, a magnetic tape cartridge may include a LINEAR TAPE-OPEN (LTO) cartridge that may be stored or mounted in a data-center storage rack. In some examples, the term “rack” may refer to a physical framework designed to house electronic and/or computing equipment, particularly in a data center. For example, a tape library may utilize one or more racks to house tape cartridges.
When a new tape library is installed, thousands of tape cartridges may potentially be loaded for the new library, and multiple libraries may be installed or modified for a data center. The installation process may be time consuming and physically demanding if each tape cartridge is individually loaded by hand. For example, conventional methods for loading LTO tape cartridges may be a manual process to load each cartridge, and installing a tape library may require the loading process to be repeated 8,319 times. In this example, a single data center site may include over 150 libraries, resulting in a process that is not ergonomic for the person loading the tape cartridges. Additionally, the manual process may increase the risk of dropped or damaged tape cartridges, which may also be costly when tape cartridges need to be replaced.
The present disclosure is generally directed to a tape loading tool for facilitating and improving the loading of tape cartridges, particularly LTO cartridges, into a tape library. As will be explained in greater detail below, embodiments of the present disclosure may by dimensioning a tape holder apparatus to hold multiple cartridges while leaving an exposed bottom opening, enable individual tape cartridges to be pushed out from the bottom opening and mounted to a designated rack or tape library. The disclosed tape holder apparatus may first include a tape holder designed to hold a specified number of tape cartridges. For example, the disclosed tape holder apparatus may include a cubical tape holder, and individual tape cartridges may be inserted from an open top of the tape holder by dropping a flat cartridge into the tape holder. The tape holder apparatus described herein may also include a horizontal opening, open on two sides of the tape holder along the bottom of the tape holder apparatus, that enables individual cartridges to be pushed out, one at a time, to be loaded into a tape library slot. The disclosed tape holder apparatus may then include a handle on the outside of the tape holder that enables easier holding of the tape holder, and therefore enables easier holding of tape cartridges. Furthermore, the disclosed tape holder apparatus may include protrusions that help guide individual cartridges as they are pushed out of the tape holder.
Using the described tape cartridge loading tool, manual installation of tape cartridges may be improved over traditional methods. Specifically, the tape holder apparatus may enable the process of loading tape cartridges into a tape library to be easier and faster than conventional manual methods, which may decrease the amount of time taken to install a tape library. Additionally, by improving the ease of holding multiple cartridges, the disclosed tape holder apparatus may decrease the likelihood of dropped and damaged tape cartridges, thereby also providing cost savings when installing the tape library.
The following will provide, with reference to
In some embodiments, open top 204 may be dimensioned based on a size of a tape cartridge, such as the area of the largest face of an LTO cartridge. In these embodiments, a user may hold a tape cartridge in a substantially horizontal or flat orientation and drop the tape cartridge into cubical tape holder 202. Additionally, tape cartridges may be inserted into cubical tape holder 202 individually or as a stack of tape cartridges.
In one example, horizontal slot 206 may be open at faces 210(1) and 210(2) that do not include handle 208. In this example, horizontal slot 206 may be open along two consecutive bottom edges of cubical tape holder 202 at a front face and a side face to enable individual tape cartridges to be pushed out, one at a time, through the front face to be loaded into a tape library when the front face is oriented to face an open tape library slot. In other words, the user may use a finger to push an exposed back edge of the tape cartridge along face 210(1) of
In one embodiment, horizontal slot 206 may be dimensioned as an opening larger than a thickness of the tape cartridge at the front face (i.e., face 210(2) in
In some examples, an opening 212 may be dimensioned to extend down from a top edge of a first face (e.g., face 210(1) in
In the above examples, tape holder apparatus 220 and/or tape holder apparatus 200 may be held in the user's left hand while tape cartridges are pushed out from horizontal slot 206 by the user's right hand. In other examples, tape holder apparatus 220 and/or tape holder apparatus 200 may be designed with mirrored features to enable handle 208 to be held in the user's right hand while tape cartridges are pushed through horizontal slot 206 by the user's left hand. Determining whether such features are mirrored may depend on left-handed versus right-handed users or on tape libraries and/or racks that open from the left versus the right side.
As shown in
In some embodiments, a single tape cartridge may be loaded into a tape library slot, and the user may then move tape holder apparatus 200 to face a different tape library slot for the next tape cartridge. In other embodiments, multiple tape cartridges may be loaded into a single tape library slot, and the user may quickly load multiple tape cartridges in order from the bottom up into the same tape library slot. Additionally, after removing a tape cartridge from a tape library slot, the user may insert the tape cartridge back into tape holder apparatus 200 to be held for transfer to a different tape library slot or removal from the tape library.
In some examples, opening 212 may represent a trapezoidal opening, as illustrated in
In addition to protrusions 230(1)-(2), tape holder apparatus 200 and/or tape holder apparatus 220 may include alternative or additional structural features that improve the holding or dispensing of tape cartridges. For example, raised edges along the bottom of horizontal slot 206 may prevent accidental dispensing of a tape cartridge until the user forces the tape cartridge over the edge. As another example, beveled top edges of cubical tape holder 202, as shown in
As discussed throughout the present disclosure, the disclosed tape holder apparatus may provide various advantages over traditional methods of loading tape cartridges into a tape library or data-center rack. For example, the disclosed tape holder apparatus may hold multiple LTO cartridges that may be loaded into a tape library slot in quick succession. By increasing the number of cartridges that can be held in a single tape holder, the tape holder apparatus described herein may save time during the loading of multiple tape cartridges, which may be especially useful when installing a tape library with thousands of tape cartridges. Additionally, by improving the ease of holding multiple tape cartridges and the ease of dispensing a single tape cartridge at a time, the tape holder apparatus described herein may make the handling of tape cartridges easier for users. Furthermore, the disclosed tape holder apparatus may save money by reducing the number of damaged tape cartridges, which would otherwise need to be replaced, that is typically caused by user error in dropping tape cartridges during loading. For example, a handle attached to the tape holder apparatus may lead to a decreased likelihood of dropping and damaging tape cartridges, thereby also providing cost savings when installing the tape library. Thus, the tape holder apparatus may improve the speed and ease of loading tape cartridges into a tape library during initial installation of the tape library as well as for any future loading.
A tape holder apparatus may include: 1) a cubical tape holder, dimensioned to hold multiple tape cartridges in a stack, wherein a tape cartridge is inserted into an open top of the cubical tape holder from a horizontal orientation, 2) a horizontal slot, open along a bottom edge of two consecutive faces of the cubical tape holder, dimensioned to permit a single tape cartridge at a bottom of the stack to be pushed out from the cubical tape holder, and 3) a handle vertically oriented and extruded from a third face of the cubical tape holder.
The tape holder apparatus of Example 3, wherein an opening may be dimensioned to extend down from a top edge of a first face of the cubical tape holder, such that a portion of a side of at least one tape cartridge inserted into the cubical tape holder is exposed.
As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.
In some examples, the term “memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.
In some examples, the term “physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.
In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein may receive video data to be transformed, transform the video data into encoded video data, and output a result of the transformation to a transmitter. Additionally or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.
In some embodiments, the term “computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems.
The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.
The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.
Unless otherwise noted, the terms “connected to” and “coupled to” (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of.” Finally, for ease of use, the terms “including” and “having” (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.”
Number | Date | Country | |
---|---|---|---|
63232814 | Aug 2021 | US | |
63211183 | Jun 2021 | US |