Combined motion vector and reference index prediction for video encoding
Patent Information
- Application Number
- ES2009722899T
- Authority / Receiving Office
- ES · ES
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2009-03-18
- Publication Date
- 2026-10-08
- Estimated Expiration
- 2029-03-18
AI Technical Summary
Existing video coding systems face inefficiencies in encoding and decoding motion vector information, particularly in determining optimal motion vector predictors and reference indices, which affects coding efficiency and quality.
The proposed method improves motion vector prediction by selecting a motion vector predictor and reference index based on predefined rules and signaling, using a list of candidate vectors from neighboring blocks, and encoding these predictors efficiently in the bitstream.
Enhances coding efficiency by accurately selecting motion vector predictors, reducing the data required for encoding and improving the quality of decoded video frames.
Smart Images

Figure 00000011_0000 
Figure 00000012_0000 
Figure 00000013_0000
Abstract
Description
Combined motion vector and reference index prediction for video encoding Field of invention The present invention relates generally to the encoding and decoding of multimedia content. More particularly, the present invention relates to the encoding and decoding of digital video content. Background of the invention This section is intended to provide background or context to the invention listed in the claims. The description herein may include concepts that could be pursued, but are not necessarily those that have been previously conceived or pursued. Therefore, unless otherwise stated herein, what is described in this section is not prior art to the description and claims of this application and is not admitted as prior art by inclusion in this section. A digital video signal comprises a sequence of still images (also called "pictures" or "frames") in an uncompressed digital format. Each video frame is made up of an array of pixels. For example, in a digital image format known as Quarter Common Interchange Format (QCIF), a picture or frame comprises 25,344 pixels arranged in a 176 x 144 pixel array. The purpose of video encoding (encoding or compression) is to reduce the data needed to represent a video signal. In general, there is a significant degree of correlation between the values of neighboring pixels within a picture in a sequence of images. In practical terms, this is called spatial redundancy, meaning that the value of any pixel within a picture is substantially the same as the value of other pixels in its immediate vicinity. Furthermore, consecutive pictures in a picture sequence also tend to be quite similar.Therefore, the overall change between one image and the next is quite small. This means there is considerable temporal redundancy within a typical sequence of digital images. A video encoder transforms an input video into a compressed representation suitable for storage and / or transmission, and a video decoder decompresses the compressed content representation back into a viewable form. Existing, state-of-the-art video coding systems reduce the amount of data used to represent the video signal by leveraging spatial and temporal redundancies within the image sequence. These "hybrid" video coding methods, such as those used in ITU-T H.263 and H.264, encode video information in two stages. First, the pixel values in a given image area, or "block," are predicted using, for example, motion compensation mechanisms or spatial mechanisms. Motion compensation mechanisms might include, for instance, finding and indicating an area in a previously encoded video frame that closely corresponds to the block being encoded. Spatial mechanisms might include, for example, using the pixel values surrounding the block to encode it in a specific way.Second, the prediction error—the difference between the predicted pixel block and the original pixel block—is encoded. This is typically achieved by transforming the difference in pixel values using a transform specified as a Discrete Cosine Transform (DCT) or a variant thereof, quantizing the coefficients, and encoding the quantized coefficients by entropy. By varying the fidelity of the quantization process, the encoder can control the balance between the accuracy of the pixel representation (i.e., image quality) and the size of the resulting encoded video representation (e.g., file size or bitrate). The decoder reconstructs the output video by applying prediction mechanisms similar to those used by the encoder to form a predicted representation of the pixel blocks (using motion or spatial information created by the encoder and stored in the compressed representation) and performing prediction error decoding. Prediction error decoding is the inverse operation of prediction error encoding and is used to recover the prediction error signal quantized in a spatial pixel domain. After applying the prediction and prediction error decoding mechanisms, the decoder sums the prediction and prediction error signals (i.e., the pixel values) to form the output video frame.The decoder and encoder can also apply additional filtering mechanisms to improve the quality of the output video before passing it on for display and / or storing it as a prediction reference for the next frames in the video sequence. In some video codecs, motion information is indicated by motion vectors associated with each motion-compensated image block. Each motion vector represents the displacement of the image block in the image to be encoded (on the encoder side) or decoded (on the decoder side) and the prediction source block in one of the previously encoded or decoded images. In order to effectively represent motion vectors, they are often differentially encoded with respect to block-specific predicted motion vectors. In many video codecs, the predicted motion vectors are created in a predefined way, for example, by calculating the median of the encoded or decoded motion vectors of adjacent blocks. Several video encoders use Lagrangian cost functions to determine optimal encoding modes, for example, the desired macroblock mode and associated motion vectors. This type of cost function uses a weighting factor A to combine the exact or estimated image distortion due to lossy encoding methods with the exact or estimated amount of information required to represent the pixel values in an image area C = D + AR, where C is the Lagrangian cost to minimize, D is the image distortion (e.g., mean square error) with the considered mode and motion vectors, and AR is the number of bits needed to represent the data required to reconstruct the image block in the decoder (including the amount of data used to represent the candidate motion vectors). Summary of the invention The invention is defined by the independent claims. Further details of the present invention, along with its organization and mode of operation, will become apparent from the following detailed description when taken in conjunction with the accompanying drawings, in which similar elements are numbered accordingly. Brief description of the drawings Figure 1 is a graphical representation of a generic multimedia communication system within which various implementations can be implemented; Figure 2 is a block diagram of a representative video encoder; Figure 3 is a block diagram of a representative video decoder; Figure 4 is a flowchart that shows in general how a motion vector predictor can be selected according to various realizations; Figure 5(a) shows a first potential arrangement of individual blocks A, B, and C around an actual block P; and Figure 5(b) shows a second potential arrangement of individual blocks A, B and C around an actual block P; Figure 6 is a flowchart showing a detailed process by which a predictor can be selected according to various realizations; Figure 7 is a flowchart showing an example process for encoding an image according to various realizations; Figure 8 is a flowchart showing a process for selecting a predictor and a benchmark index for a block P according to various realizations; Figure 9 is a perspective view of an electronic device that can be used in conjunction with the implementation of various embodiments of the present invention; and Figure 10 is a schematic representation of the circuit that can be included in the electronic device of Figure 9. Detailed description of various achievements Figure 1 is a graphical representation of a generic multimedia communication system within which various implementations can be carried out. As shown in Figure 1, a data source (100) provides a source signal in an analog, uncompressed digital, or compressed digital format, or any combination thereof. An encoder (110) encodes the source signal into a coded media bitstream. It should be noted that a bitstream to be decoded can be received directly or indirectly from a remote device located within virtually any type of network. Furthermore, the bitstream can be received from local hardware or software. The encoder (110) may be capable of encoding more than one type of media, such as audio and video, or more than one encoder (110) may be required to encode different media types from the source signal.The 110 encoder can also accept synthetically produced inputs, such as graphics and text, or it may be capable of producing encoded bitstreams of synthetic media. The description below only considers the processing of a single encoded media bitstream of one type of media. However, it should be noted that real-time streaming services typically comprise multiple streams (usually at least one audio, one video, and one text subtitle stream). It should also be noted that the system may include many encoders, but only one 110 encoder is depicted in Figure 1 to simplify the description without sacrificing generality.It should also be understood that, although the text and examples contained in this document may specifically describe an encoding process, an expert in the technique would understand that the same concepts and principles also apply to the corresponding decoding process, and vice versa. The encoded media bitstream is transferred to storage 120. Storage 120 can comprise any type of mass storage for holding the encoded media bitstream. The format of the encoded media bitstream in storage 120 can be an elementary standalone bitstream format, or one or more encoded media bitstreams can be encapsulated in a container file. Some systems operate "in-the-voice," meaning they bypass storage and transfer the encoded media bitstream from encoder 110 directly to sender 130. The encoded media bitstream is then transferred to sender 130, also called the server, as needed. The format used in the transmission can be an elementary standalone bitstream format, a packet stream format, or one or more encoded media bitstreams can be encapsulated in a container file.The encoder 110, storage 120, and server 130 can reside on the same physical device or can be contained on separate devices. The encoder 110 and server 130 can operate with live, real-time content, in which case the encoded media bitstream is not normally stored permanently, but is temporarily stored for short periods of time on the content encoder 110 and / or server 130 to smooth out variations in processing delay, transfer delay, and encoded media bitrate. Server 130 sends the encoded media bitstream using a communication protocol stack. This stack may include, but is not limited to, the Real-Time Transport Protocol (RTP), the User Datagram Protocol (UDP), and the Internet Protocol (IP). When the communication protocol stack is packet-oriented, Server 130 encapsulates the encoded media bitstream into packets. For example, when using RTP, Server 130 encapsulates the encoded media bitstream into RTP packets according to an RTP payload format. Typically, each media type has a dedicated RTP payload format. It should be noted again that a system can contain more than one Server 130, but for simplicity, the following description considers only one Server 130. The server (130) may or may not be connected to a gateway (140) via a communication network. The gateway (140) can perform various functions, such as translating a packet stream from one protocol stack to another, merging and splitting data streams, and manipulating the data stream according to the downlink and / or receiver capabilities, such as controlling the bit rate of the forwarded stream based on the prevailing downlink network conditions. Examples of gateways (140) include MCUs, gateways between circuit-switched and packet-switched video telephony, Push-to-Talk over Cellular (PoC) servers, IP encapsulators in portable digital video broadcasting systems (DVB-H), and set-top boxes that forward broadcast transmissions locally to home wireless networks.When using RTP, the gateway 140 is called an RTP mixer or RTP translator and normally acts as an endpoint of an RTP connection. The system includes one or more receivers 150, typically capable of receiving, demodulating, and decapsulating the transmitted signal in an encoded media bitstream. The encoded media bitstream is transferred to a recording storage 155. The recording storage 155 may comprise any type of mass memory for storing the encoded media bitstream. The recording storage 155 may alternatively or additively comprise computational memory, such as random access memory. The format of the encoded media bitstream in the recording storage 155 may be an elementary standalone bitstream format, or one or more encoded media bitstreams may be encapsulated in a container file.If there are multiple encoded media bitstreams, such as an audio stream and a video stream, associated with each other, a container file is typically used, and the receiver 150 comprises or is connected to a container file generator that produces a container file from the input streams. Some systems operate "live," that is, they bypass the recording storage 155 and transfer the encoded media bitstream from the receiver 150 directly to the decoder 160. In some systems, only the most recent portion of the recorded stream, for example, the last 10-minute extract of the recorded sequence, is retained in the recording storage 155, while any previously recorded data is discarded from the recording storage 155. The encoded media bitstream is transferred from the recording storage 155 to the decoder 160. If there are many encoded media bitstreams, such as an audio stream and a video stream, associated with each other and encapsulated in a container file, a file analyzer (not shown in the Figure) is used to decapsulate each encoded media bitstream from the container file. The recording storage 155 or a decoder 160 may comprise the file analyzer, or the file analyzer may be connected to the recording storage 155 or the decoder 160. The encoded media bitstream is typically further processed by a decoder 160, which outputs one or more uncompressed media streams. Finally, a processor 170 can play back the uncompressed media streams to a speaker or display, for example. The receiver 150, recording storage 155, decoder 160, and renderer 170 may reside on the same physical device or may be contained in separate devices. A transmitter 130, according to various implementations, can be configured to select the transmitted layers for multiple reasons, such as responding to requests from the receiver 150 or the prevailing network conditions over which the bitstream is transmitted. A request from the receiver might be, for example, a request to change layers for display or a change to a playback device with different capabilities compared to the previous one. Figure 2 is a block diagram of a representative video encoder. More specifically, Figure 2 shows how an image to be encoded 200 undergoes pixel prediction 202, prediction error encoding 203, and prediction error decoding 204. For pixel prediction 202, the image 200 undergoes either interprediction 206 or intraprediction 208, which, after mode selection 210, results in the prediction representation of an image block 212. A preliminary reconstructed image 214 is also used for intraprediction 208. Once all image blocks have been processed, the preliminary reconstructed image 214 undergoes filtering in 216 to create a final reconstructed image 240, which is sent to a reference frame memory 218 and is also used for future frame interprediction 206. The prediction representation of image block 212, as well as the image 200 to be encoded, are used together to define a prediction error signal 220, which is used for prediction error coding 203. In prediction error coding 203, the prediction error signal 220 undergoes transformation 226 and quantization 228. Data describing the prediction error and the predicted representation of image block 212 (e.g., motion vectors, mode information, and quantized spatial DCT+ samples) are passed to entropic coding 230. Prediction error decoding 204 is substantially the opposite of prediction error coding 203, where prediction error decoding includes an inverse transform 234 and inverse quantization 236.The result of the prediction error decoding 204 is a reconstructed prediction error signal 238, which is used in combination with the predicted representation of image block 212 to create the preliminary reconstructed image 214. Figure 3 is a block diagram of a representative video decoder. As shown in Figure 3, entropic decoding 300 is followed by prediction error decoding 302 and pixel prediction 304. In prediction error decoding 302, an inverse transform 306 and inverse quantization 308 are performed, resulting in a reconstructed prediction error signal 312. For pixel prediction 304, intraprediction or interprediction occurs in 314 to create a predicted representation of a block of image 316. The predicted representation of image block 316 is used together with the reconstructed prediction error signal 312 to create a preliminary reconstructed image 318, which in turn can be used for prediction 314. Once all image blocks have been processed, the preliminary reconstructed image 318 is passed on for filtering 320.The filtered image can also be stored in reference frame memory 324, making it usable for prediction 314 as well. Various implementations provide a system and method for improving the encoding efficiency of motion vector information. Using the decoder depicted in Figure 3, in various implementations, a 16 x 16 macroblock is divided into up to four blocks. For each block, a motion vector is generated that sums the motion vector prediction and the delta motion vector indicated in the bitstream. A process used by the decoder to determine the motion vector prediction according to various implementations is generally depicted in Figure 4. To determine the motion vector prediction for a given motion block, a decoder first selects several candidate motion vector predictors from a pool of 400 based on parameters such as reference indices and encoding modes of the current block and neighboring blocks.From the number of candidate motion vectors, a set of the most probable candidate motion vector predictors (e.g., two candidate motion vector predictors in a particular implementation) is selected at 410 using a predefined motion vector predictor selection process. The final predictor can be selected at 430 based on information signaled in the bitstream indicating which motion vector prediction from the set of most probable candidates is used, if the set comprises more than one most probable candidate. If the above process results in only one most probable motion vector prediction, then no information is signaled in the bitstream, and the most probable prediction is used at 420. Various implementations can also be used to improve the performance of macroblocks encoded in SKIP mode. In SKIP mode, one or more macroblocks are encoded together without transmitting any residual information, and these macroblocks share the same motion vector. Various implementations serve to improve SKIP-mode encoding by updating the motion vector of each macroblock. This is achieved by performing the processes described above and signaling in the bitstream for each macroblock. The selected motion vector predictor is used as the actual motion vector for the SKIP-mode encoded macroblock. Reference is also made here to GUILLAUME LAROCHE ET AL: "Competition Based Prediction for Skip Mode Motion Vector Using Macroblock Classification for the H.264 JM KTA Software", ADVANCED CONCEPTS FOR INTELLIGENT VISION SYSTEMS; [LECTURE NOTES IN COMPUTER SCIENCE], SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, vol.4678, August 28, 2007 (28-08-2007), pages 789-799, ISBN: 978-3-540-74606-5, which describes a competition-based motion vector prediction scheme by generating an ordered list of selectable candidate motion vector predictors. Although the associated reference image index of a candidate motion vector is taken into account for scaling the candidate motion vector, it is not used to order the candidate list. In addition, JANI lA iNEMA ET AL.: "Improved Motion Vector Prediction for TML-4", ITU-T VCEG, ITU-T SG16 Q15, no. q15k34, August 16, 2000 (08-16-2000), pages 1-2, Portland, Oregon, USA, describes a motion vector prediction scheme that favors predictor candidates in case there is only one candidate that uses the same reference image as the block to be encoded.Or, if there are multiple candidates targeting the same reference frame, select a candidate by considering the use of rectangular block partitions. However, unlike the present invention, it does not apply to favoring the same candidates for reference image predictors to generate a ranking order in a list of candidate motion vector predictors. For the implementation of various realizations, it is useful to consider a situation in which a movement vector vecP is being decoded for a current block P, which also has a reference index refP (the reference index associated with a block indicates that the previously decoded image is used to predict the block). The candidate vectors vecA, vecB, and vecC and the reference indices refA, refB, and refC belong to the respective neighboring blocks A, B, and C. In Figures 5(a) and 5(b), two possible sets of locations for blocks A, B, and C with respect to block P are depicted. In the situation described above, the selection of the predictor for block P proceeds as follows, and as shown in Figure 6. If a block (A, B, or C) is intracoded or unavailable (which can occur, for example, if the block is at the image boundary), then the respective vector is set to 0 and the reference index is set to -1. This process is represented in Figure 600. It should be noted that -1 is chosen arbitrarily, and the reference index could be any symbol that distinguishes intracoded and unavailable blocks from other blocks. In one embodiment, a directional segmentation prediction condition is checked in the same way that a motion vector prediction is determined as discussed above. If the directional segmentation condition is met, the resulting motion vector is selected as the predictor. This process is represented in Figure 610. In step 620 of Figure 6, vectors with a reference index equal to refP are placed in the list of candidate motion vectors in the order vecA, vecB, vecC. In step 630, vectors with a reference index not equal to refP and not equal to -1 are added to the same list of candidate motion vectors based on the values of the reference indices. In one particular implementation, a lower reference index takes precedence over a higher reference index. If the list of candidate motion vectors is empty, the vector (0, 0) can be added to the list in step 640. In step 650, duplicates are removed from the list of candidate motion vectors. In one particular implementation, if the number of vectors in the list is 1, then the vector in the list is selected as the predictor at 660. If the number of vectors in the list is 2 or more, on the other hand, then at 670 the first or second vector is selected based on the information stored in the compressed bitstream. In one particular implementation, a bit is used to signal the selection of the predictor, with a bit value of 0 indicating the selection of the first candidate and a bit value of 1 indicating the selection of the second candidate. In one particular embodiment, the number of initial predictors is not restricted. However, it is possible to set a limit on the number of initial predictors. In such a case, when more than two predictors are used, the signaling is adapted to the maximum number of predictors that can be signaled. The signaling can be based, for example, on fixed-length codes, variable-length Huffman codes, arithmetic codes, or other codes. Regarding the implementation shown in Figure 6, this implementation can be modified in various ways. For example, the order of the motion vectors included in the list can be different from vecA, vecB, vecC. This order can also depend on factors such as the motion partition or the mode of the macroblock(s) in the neighboring macroblock(s). The order can also be signaled in the bitstream at different levels, such as in a segment header or an image header. Furthermore, instead of adding the vector (0, 0) to the list if the list is empty, another predefined or signaled vector could be used. Even more, motion vectors from different images can be used. For example, motion vectors from blocks located in the same space of previously decoded images can be used. Additionally, more candidate motion vectors could be generated from vecA, vecB, and so on.This can be achieved, for example, by averaging two vectors. Figure 7 is a flowchart showing an example process for encoding an image according to various embodiments. In step 700 of Figure 7, a plurality of predictors are ordered for a motion vector of a current image block. The rank order of each predictor can be determined based, at least in part, on the encoding mode of a block from which the predictor is derived. In certain embodiments, each of the predictors has distinct values. Furthermore, the encoding mode can indicate partitioning information for the block, and this partitioning information can represent the size and shape of the block. In certain embodiments, a block that has the same reference index as the current image block can have a lower rank order than a block with a different reference index. In 705, an additional predictor can be added to the predictors ordered in 700 if the value of the additional predictor was not represented in the original set. In 710, a predictor for the motion vector of the current image block is selected from the plurality of predictors. In 720, a representative indication of the predictor's rank can be provided in an encoded bitstream. The predictor's rank order can be based, at least in part, on a reference index of the block from which the predictor is derived. As mentioned earlier, this indication may not be provided in the encoded bitstream in certain situations, such as when it is determined that there is only one most likely predictor. With respect to the plurality of predictors that are ordered in 700, these predictors may comprise at least one of the movement vectors for the following blocks: a neighboring block of the current image block, a block in a second image, a block located jointly in a second image, a neighboring block of a block located jointly in a second image, a block in a second layer (in the case of encoding and decoding multiple layers of an image) and a block in a second view (when encoding and decoding multiple views of an image). The embodiments of the present invention also improve the encoding efficiency of a video codec by making the selection of a motion vector predictor more precise. According to various embodiments, a list of motion vector predictor candidates is provided according to predefined rules. Typically, the candidate vectors are sourced from neighboring blocks. Each motion vector also has an associated reference index. One of the motion vector candidates is then selected as the predictor based on predefined rules, or the selection is explicitly signaled in the bitstream. The reference index associated with the selected motion vector is used as the reference index for the current block. The reference index is predicted along with the motion vector.A process for encoding motion vector information according to these realizations is similar to the process depicted in Figure 7. In these realizations, however, each motion vector predictor includes a reference index associated with it. For a better understanding of various realizations, it is helpful to imagine a situation in which the movement vector vecP is decoded for a current block P. The candidate vectors vecA, vecB, and vecC and the associated reference indices refA, refB, and refC belong to the respective neighboring blocks A, B, and C, as shown in Figures 5(a) and 5(b). A process for selecting the predictor and reference index for block P proceeds as follows and is shown in Figure 8. First, it is determined whether a block (A, B, or C) is intracoded or unavailable. This might occur, for example, at an image boundary. If a block (A, B, or C) is intracoded or unavailable, then in step 800, the respective vector is set to 0 and the reference index is set to -1. However, it should be noted that the value -1 is chosen arbitrarily and can vary. In fact, the reference index could be set to any symbol that distinguishes intracoded and unavailable blocks from other blocks. In step 810, vectors with a reference index other than -1 are added to a list of candidate vectors. If the list of candidate motion vectors is empty, then the vector (0, 0) is added to the list in step 820. If the list of candidate vectors contains move vectors that are equal to each other, only one of those vectors remains in the list, and the others are removed in 830. Two move vectors are equal to each other when their values are equal and their associated reference indices are equal. If the number of vectors in the list is 1, the vector in the list is selected as the predictor, and its reference index is selected as the reference index of the current block. This is represented in 840. If the number of vectors in the list is 2 or more, the first or second vector is selected based on the information stored in the compressed bitstream, and the reference index of the selected move vector is used as a reference index of the current block. This is represented in 850. In one particular implementation, a bit is used to signal the selection of the predictor. In this implementation, a bit value of 0 indicates the selection of the first candidate, while a bit value of 1 indicates the selection of the second candidate. In an alternative implementation, the vector selection is not signaled in the bitstream. Instead, a vector can be selected based on a set of heuristics. However, the reference index associated with the selected vector is used for the current block. Several embodiments of the present invention may be particularly useful for blocks for which the motion vector differentials or reference indices are not stored in a bitstream. This can occur, for example, in the SKIP and DIRECT modes of the H.264 / AVC standard. However, these embodiments can also be used in other situations. For example, the entropic encoding of a reference index of the current block can be improved (if the reference index is encoded in the bitstream) by encoding the reference index differentially with respect to the predicted reference index. In one particular implementation, the number of initial predictors is 3. However, it is possible to select more initial predictors for potentially improved coding efficiency. Similarly, the maximum number of relevant predictors in the final list is restricted to a maximum of 2 in one implementation, but it is possible to use a larger number of predictors. If more predictors are used, the signaling adapts to the larger number of predictors that can be signaled. The signaling can be based, for example, on fixed-length codes, variable-length Huffman codes, arithmetic codes, or other codes. In addition to the above, several alternative implementations of various realizations are possible. For example, the order of the motion vectors placed in the list can be different from that of vecA, vecB, and vecC. The precise order can depend, for example, on the motion partition or the mode of the neighboring macroblock(s). The order can also be signaled in the bitstream at different levels, such as in the segment header or the image header. Furthermore, instead of adding a (0, 0) vector to the list if the list is empty, a different predefined or signaled vector can be used. Motion vectors from different images, such as pre-decoded spatial co-location blocks of images, can also be used. Additionally, further candidate motion vectors can be generated from vecA, vecB, and so on. This can be achieved, for example, by averaging two vectors. Figures 9 and 10 show a representative electronic device 12 within which the present invention can be implemented. It should be understood, however, that the present invention is not intended to be limited to any particular type of device. The electronic device 12 of Figures 9 and 10 includes a housing 30, a liquid crystal display 32, a keypad 34, a microphone 36, an earpiece 38, a battery 40, an infrared port 42, an antenna 44, a UICC-shaped smart card 46 according to one embodiment, a card reader 48, a radio interface circuit 52, a codec circuit 54, a controller 56, and a memory 58. The individual circuits and elements are all of a type well known in the art, for example, in the Nokia mobile phone range. The individual communication devices described herein may communicate using various transmission technologies, including but not limited to Code Division Multiple Access (CDMA), Global System for Mobile Communications (GSM), Universal Mobile Telecommunications System (UMTS), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Transmission Control Protocol / Internet Protocol (TCP / IP), Short Message Service (SMS), Multimedia Messaging Service (MMS), email, Instant Messaging Service (IMS), Bluetooth, IEEE 802.11, etc. A communication device involved in the implementation of various embodiments of the present invention may communicate using various media, including but not limited to radio, infrared, laser, wired connection, and the like. Various embodiments described herein are presented within the general context of the method's steps or processes, which can be implemented in a single embodiment using a computer program product embedded in a computer-readable medium, including computer-executable instructions such as program code, executed by computers in networked environments. A computer-readable medium may include removable and non-removable storage devices, including, but not limited to, read-only memory (ROM), random-access memory (RAM), compact discs (CDs), digital versatile discs (DVDs), etc. Generally, program modules may include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement specific abstract data types.The executable instructions, associated data structures, and program modules represent program code examples for executing steps of the methods described in this document. The particular sequence of such executable instructions or associated data structures represents examples of corresponding actions for implementing the functions described in those steps or processes. The embodiments of the present invention can be implemented in software, hardware, application logic, or a combination thereof. The software, application logic, and / or hardware may reside, for example, on a chipset, a mobile device, a desktop computer, a laptop computer, or a server. Software and web implementations of various embodiments can be achieved using standard programming techniques with rule-based logic and other logic to accomplish various database search steps or processes, correlation steps or processes, comparison steps or processes, and decision steps or processes. Various embodiments can also be implemented, in whole or in part, within network elements or modules.It should be noted that the words "component" and "module," as used herein and in the following claims, are intended to encompass implementations that use one or more lines of software code and / or hardware implementations and / or equipment to receive manual input. The individual, specific structures described in the preceding examples should be understood as representative structures of means for performing the specific functions described in the following claims, although the limitations in the claims should not be construed as limitations of "means plus function" in the event that the term "means" is not used therein. The foregoing description of embodiments has been presented for illustrative and descriptive purposes. The foregoing description is not intended to be exhaustive nor to limit the embodiments of the present invention to the precise form described, and modifications and variations are possible in light of prior learning or may be acquired from the practice of various embodiments. The embodiments discussed herein were chosen and described to explain the principles and nature of various embodiments and their practical application, enabling a person skilled in the art to use the present invention in various embodiments and with various modifications as suited to the particular intended use. The features of the embodiments described herein may be combined in all possible combinations of methods, apparatus, modules, systems, and software products.
Claims
1. A method for encoding an image, comprising: ordering a plurality of motion vector predictors from an actual image block, characterized in that the method further comprises: establishing a rank order for all of the plurality of motion vector predictors based at least in part on at least one of a coding mode of a block from which the respective motion vector predictor is derived and a reference image index of the block from which a motion vector predictor is derived,wherein each predictor has a different index that reflects the rank order and that can be selected and signaled to a decoder; and selecting a particular motion vector predictor from the current image block from the plurality of motion vector predictors; and providing at least selectively in an encoded bitstream a representative indication of the rank order of the selected motion vector predictor; wherein the motion vector predictor of each block that has the same reference image index as the current image block has a lower rank order than the motion vector predictor of each block with a reference image index different from the reference image index of the current image block.
2. The method according to claim 1,wherein the encoding mode indicates partitioning information for the block from which the respective motion vector predictor is derived.
3. The method according to claim 1, wherein the plurality of motion vector predictors comprises at least one motion vector for blocks selected from the group consisting of a neighboring block of the current image block, a block in a second image, a block co-located in the second image, a neighboring block of the co-located block in the second image, a block in a second layer, and a block in a second view.
4. The method according to claim 1, wherein the plurality of motion vector predictors comprises motion vector predictors, each of which has a distinct value.
5. A computer program product, incorporated in a computer-readable storage medium,comprising computer code configured to perform the processes according to claim 1 when executed on a computer.
6. An apparatus comprising: means for ordering a plurality of motion vector predictors from an actual image block, characterized in that the apparatus further comprises: means for establishing a rank order for all of the plurality of motion vector predictors based at least in part on at least one of a coding mode of a block from which the respective motion vector predictor is derived, and a reference image index of the block from which the respective motion vector predictor is derived.wherein each predictor has a different index reflecting the rank order and which can be selected and signaled to a decoder; means for selecting a particular motion vector predictor from the current image block from the plurality of motion vector predictors; and means for providing in an encoded bitstream a representative indication of the rank order of the selected motion vector predictor; wherein the motion vector predictor of each block having the same reference image index as the current image block has a lower rank order than the motion vector predictor of each block with a reference image index different from the reference image index of the current image block.
7. The apparatus according to claim 6,wherein the encoding mode indicates partitioning information for the block from which the respective motion vector predictor is derived.
8. The apparatus according to claim 6, wherein the plurality of motion vector predictors comprises at least one motion vector for blocks selected from the group consisting of a neighboring block of the current image block, a block in a second image, a block co-located in the second image, a neighboring block of the co-located block in the second image, a block in a second layer, and a block in a second view.
9. The apparatus according to claim 6, wherein the plurality of motion vector predictors comprises motion vector predictors, each of which has a distinct value.
10. A method for decoding an image, comprising: ordering a plurality of motion vector predictors from a current image block,characterized in that the method further comprises: establishing a rank order for all of the plurality of motion vector predictors based at least in part on at least one of a block encoding mode from which the respective motion vector predictor is derived and a reference image index of the block from which a motion vector predictor is derived, wherein each predictor has a different index that reflects the rank order and that can be selected and signaled to a decoder; and selecting a particular motion vector predictor from the current image block of the plurality of motion vector predictors for use in decoding,where the signaled information within a bit stream is used at least selectively to select the particular motion vector; using a predefined process to select a set of most probable motion vector predictors from the plurality of motion vector predictors; and in a case where the predefined process results in the selection of more than one most probable motion vector predictor,using the information signaled in the bitstream to select the particular motion vector from the set of most probable motion vector predictors; wherein the motion vector predictor for each block having the same reference image index as the current image block has a lower rank order than the motion vector predictor for each block with a reference image index different from the reference image index of the current image block.
11. The method according to claim 10, wherein the encoding mode indicates partitioning information for the block from which the respective motion vector predictor is derived.
12. The method according to claim 10, wherein the plurality of motion vector predictors comprises at least one motion vector for blocks selected from the group consisting of a neighboring block of the current image block, a block in a second image,A block located jointly in the second image, a neighboring block of the block located jointly in the second image, a block in a second layer, and a block in a second view.
13. A computer program product, incorporated in a computer-readable storage medium, comprising computer code configured to perform the processes according to claim 10 when executed on a computer.
14. An apparatus, comprising: means for ordering a plurality of motion vector predictors from a current image block, characterized in that the apparatus further comprises: means for establishing a rank order for all of the plurality of motion vector predictors based at least in part on at least one of a block encoding mode from which the respective motion vector predictor is derived, and a reference image index of the block from which the respective motion vector predictor is derived.wherein each predictor has a different index reflecting the rank order; and means for selecting a particular motion vector predictor from the current image block from the plurality of motion vector predictors for use in decoding, wherein the signaled information within a bitstream is used at least selectively to select the particular motion vector; means for using a predefined process to select a set of the most probable motion vector predictors from the plurality of motion vector predictors; and means for using the signaled information in the bitstream to select the particular motion vector from the set of the most probable motion vector predictors,if the predefined process results in the selection of more than one most probable motion vector predictor; wherein the motion vector predictor of each block having the same reference image index as the current image block has a smaller rank order than the motion vector predictor of each block with a reference image index different from the reference image index of the current image block; and means for decoding the indication of the selected motion vector.
15. The apparatus according to claim 14, wherein the encoding mode indicates partitioning information for the block from which the respective motion vector predictor is derived.
16. The apparatus according to claim 14,wherein the plurality of motion vector predictors comprises at least one motion vector for blocks selected from the group consisting of a neighboring block of the current image block, a block in a second image, a block co-located in the second image, a neighboring block of the co-located block in the second image, a block in a second layer, and a block in a second view.