Video coding using adaptive motion vector resolution
Abstract
This record has no abstract on file.
Term
5.8 yearsto projected expiry
Projected expiry 29 June 2032, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
14 claims: 3 independent, 11 dependent
- 1Patent claims Zastrzeżenia patentowe 1. A method (220; 320) of entropy coding of video data, the method comprising:1. Sposób (220;320) entropijnego kodowania danych wideo, przy czym sposób obejmuje: gdy wartość bezwzględna składowej x wartości różnicy wektora ruchu dla bieżącego bloku jest większa od zera (226;326), oraz gdy wartość bezwzględna składowej y wartości różnicy wektora ruchu dla bieżącego bloku jest większa od zera (228;328), kodowanie entropijne informacji wskazujących wartość różnicy wektora ruchu, przy czym kodowanie entropijne informacji wskazujących wartość różnicy wektora ruchu obejmuje: when the absolute value of the x component of the motion vector difference value for the current block is greater than zero (226;326), and when the absolute value of the y component of the motion vector difference value for the current block is greater than zero (228;328), entropy coding of information indicating the value motion vector difference, wherein the entropy coding of information indicating the value of the motion vector difference includes: interleaving information indicating whether the absolute value of the x component of the motion vector difference value for the current video data block is greater than zero, and information indicating whether the absolute value of the y component of the motion vector difference value is greater than zero;and interleaving information indicating the absolute value of the x component of the motion vector value, information indicating the absolute value of the y component of the motion vector difference value, the sign of the x component of the motion vector difference value (230;330), and the sign of the y component of the motion vector difference value (232;332) . przeplatanie informacji wskazujących, czy wartość bezwzględna składowej x wartości różnicy wektora ruchu dla bieżącego bloku danych wideo jest większa od zera, oraz informacji wskazujących, czy wartość bezwzględna składowej y wartości różnicy wektora ruchu jest wi ększa od zera;oraz przeplatanie informacji wskazujących wartość bezwzględną składowej x wartości różnicy wektora ruchu, informacji wskazujących wartość bezwzględną składowej y wartości różnicy wektora ruchu, znak składowej x wartości różnicy wektora ruchu (230;330), oraz znak składowej y wartości różnicy wektora ruchu (232;332).
- 78. A device (56; 70) for entropy coding of video data, the device comprising:8. Urządzenie (56;70) do kodowania entropijnego danych wideo, przy czym urządzenie zawiera: means for entropy coding information indicating the value of the motion vector difference, when the absolute value of the x component of the motion vector difference is greater środki do kodowania entropijnego informacji wskazujących wartość różnicy wektora ruchu, gdy wartość bezwzględna składowej x wartości różnicy wektora ruchu jest większa 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 from zero, and when the absolute value of the y component of the motion vector difference value is greater than zero, the entropy coding means of information indicating the value of the motion vector difference comprises: EP 2 727 353 B1 od zera, oraz gdy wartość bezwzględna składowej y wartości różnicy wektora ruchu jest większa od zera, przy czym środki do kodowania entropijnego informacji wskazujących wartość różnicy wektora ruchu zawierają: means for interleaving information indicating whether the absolute value of the x component of the motion vector difference value for the current video data block is greater than zero and information indicating whether the absolute value of the y component of the motion vector difference value is greater than zero;środki do przeplatania informacji wskazujących, czy wartość bezwzględna składowej x wartości różnicy wektora ruchu dla bieżącego bloku danych wideo jest większa od zera oraz informacji wskazujących, czy wartość bezwzględna składowej y wartości różnicy wektora ruchu jest większa od zera;means for interleaving information indicating the absolute value of the x component of the motion vector difference, information indicating the absolute value of the y component of the motion vector difference, the sign of the component x of the value of the difference of the vector of the motion, and the sign of the component y of the value motion differences vector. środki do przeplatania informacji wskazujących wartość bezwzględną składowej x warto ści różnicy wektora ruchu, informacji wskazują cych warto ść bezwzglę dną składowej y warto ści różnicy wektora ruchu, znak skł adowej x warto ś ci róż nicy wektora ruchu, oraz znak skł adowej y warto ś ci róż nicy wektora ruchu.
- 1415. A computer program product comprising a computer-readable storage medium having instructions written thereon that, when executed, causes one or more processors of the video encoding apparatus to implement the method according to any one of claims 1 to 15. Produkt w postaci programu komputerowego zawierający odczytywalny komputerowo nośnik pamięci, mający zapisane na nim instrukcje, które podczas wykonywania powodują, że jeden lub większa liczba procesorów urządzenia do kodowania danych wideo realizuje sposób według dowolnego z zastrzeżeń od 1 do 7. 7. Qualcomm Incorporated Pełnomocnik:Qualcomm Incorporated Proxy: 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 FIG. 2 FIG. 2 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 FIG.3 FIG.3 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 - "RESOLUTION MARKER _ MOTION == 1 -" ZNACZNIK ROZDZIELCZOŚCI _ RUCHU == 1 THRESHOLD VALUE == 1 WARTOŚĆ PROGOWA == 1 FINALLY W KONIEC FIG. 7 FIG. 7 -TAK -YES SO-d TAK—J 240 240 SIGNALING SYGNALIZOWANIE MEAN KAMVD x == o ZNACZN KAMVD x==o 244 244 MEAN KAMVD y == o ZNACZN KAMVD y==o SIGNALING THE MVD MARK SYGNALIZOWANIE ZNAKU MVD IF MVD X! = 0 JEŻELI MVD X != 0 NE NE 248 248 MARKER SIGNALING SYGNALIZOWANIE ZNACZNIKA CHAPTER FREQUENCY OF TRAFFIC ROZDZ ELCZOSC RUCHU TAK YES 252 252 SIGNAL ZOWAN E SYGNAŁ ZOWAN E ABS ABS MVD MVD Χ / 2 Χ/2 JEZEL Jezel MVD MVD 254 r 254 r TAK YES SIGNALING SYGNALIZOWANIE ABS ABS MVD MVD Y / 2 Y/2 IF JEŻELI MVD MVD 258 258 SIGNAL MARKED SYGNAŁ ZOWAN E ZNAKU MVD MVD JEZEL Jezel MVD MVD NIE χ262 NO χ262 SIGNAL ZOWAN E SYGNAŁ ZOWAN E ABS MVD EQUAL 2 ABS MVD EQUAL 2 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1 53 / 59P36759PL00 53/59P36759PL00 EP 2 727 353 B1 EP 2 727 353 B1
Independent claims3
251 paragraphs in 77 sections, as filed
TECHNICAL FIELD [0001] The present invention relates to video coding and in particular to video data coding for motion compensation in video coding.
BACKGROUND OF THE INVENTION [0002] Digital video capabilities can be contained in a wide range of devices, including digital television, digital direct broadcast systems, wireless broadcast systems, digital assistant (PDA) devices, laptops or desktops , digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radios, video teleconferencing equipment and the like. Digital video devices implement video compression techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263 or ITU-T H.264 / MPEG-4, Part 10, advanced video coding ( AVC) and extending such standards to more efficiently transmit and receive digital video information.
[0003] Video compression techniques implement spatial prediction and / or time prediction to reduce or remove the redundancy present in video sequences. For block-based video coding, the video frame or slice can be split into macroblocks. Each macroblock can be further divided. Macroblocks in an intra-picture coded (I) frame or slice are coded using spatial prediction with respect to neighboring macroblocks. Macroblocks in inter-picture coded
53 / 59P36759PL00
(P or B) a frame or slice may use spatial prediction with respect to adjacent macroblocks in the same frame or slice or time prediction with respect to other reference frames.
[0004] In the article "Context-based adaptive binary arithmetic coding in the H.264 / AVC video compression standard" by Marpe et al published in IEEE Transactions on Circuits and Systems, vol. 13 no. 7 pages 620 - 636, 1 July 2003 describes a technique for encoding the sign bit for the x or y component together with a value indicating the size of the mvd value for this x or y component.
[0005] US 2005/038837 describes a method and apparatus for binarizing and arithmetically coding data values.
[0006] In the document "CE12: Adaptive Motion Vector Resolution from Qualcomm" 4. JCT-VC Meeting; 95. MPEG Meeting, no. JCTVCD394, January 16, 2011 describes the adaptive motion vector resolution in the "core experiment 12" range that was established at meeting 3<sup>rd</sup> JCT-VC.
SUMMARY OF THE INVENTION [0007] The invention is defined in the claims to which reference is now made.
[0008] The details of one or more examples are provided in the accompanying drawings and the description below. Other features, objectives and advantages will become apparent based on the description and drawings, as well as the reservations.
BRIEF DESCRIPTION OF THE DRAWINGS [0009]
53 / 59P36759PL00
EP 2 727 353 B1
FIG. 1 is a block diagram illustrating one example of a video coding and decoding system in accordance with the techniques of the present invention.
FIG. 2 is a block diagram illustrating one example of a video encoder according to the techniques of the present invention.
FIG. 3 is a block diagram illustrating one example of a video decoder in accordance with the techniques of the present invention.
FIG. 4 is a flowchart illustrating an example method of jointly coding the x and y components of a motion vector difference value and the entropy coding of the current block.
FIG. 5 is a flowchart illustrating an example method of separately signaling motion vector difference values in accordance with the HEVC 3.0 (HM 3.0) test model.
FIG. 6 is a flowchart illustrating an example method of jointly coding the x and y components of a motion vector difference value.
FIG. 7 is a flowchart illustrating an example method of jointly coding the x and y components of a motion vector difference value and coding the resolution of the x and y components of a motion vector difference value.
FIG. 8 is a flowchart illustrating an example method of jointly decoding the x and y components of a motion vector difference value and decoding entropy coded data to form the current block. FIG. 9 is a flowchart illustrating an example of how to decode the x and y components of a motion vector difference value together.
DETAILED DESCRIPTION
53 / 59P36759PL00
[0010] In general, data coding techniques for the motion vector difference value during video coding are described in this document. Video data contains a sequence of frames (or images) played back at short intervals to simulate motion. Each video data frame can be divided into blocks. When encoding video, especially inter-picture prediction, a device such as a video encoder or video decoder may predict block pixel values. The video encoder or decoder may base block predictions on block pixel values from another frame or on neighbor pixel values.
[0011] For intra-picture prediction, the video encoder may indicate the reference block displacement using the motion vector. The motion vector may have the x and y components. The x and y components of the motion vector may indicate displacement with sub-pixel accuracy, such as one-second pixel accuracy, one-fourth pixel accuracy, or one-eighth pixel accuracy. To achieve sub-pixel accuracy, the video encoder or decoder may use a technique such as interpolation to determine the sub-pixel values at the locations indicated by the motion vector. After determining the x and y components of the motion vector, the video encoder can calculate the motion vector difference (MVD) values for the motion vector components relative to the motion vector predictor.
[0012] This document generally provides techniques for jointly coding MVD traffic values. In this document, combined coding may refer to coding techniques in which information about x and y components of the motion vector difference value is interleaved, as opposed to coding all information about one of the x or y components before coding any information about the other component
53 / 59P36759PL00
EP 2 727 353 B1 values of the motion vector difference. Combined coding may also refer to the use of one value to represent the values for both x and y components. In addition, techniques for coding motion vector differences that may have different sub-pixel accuracies are also described herein, e.g. one quarter pixel accuracy or one eighth pixel accuracy, and indicating the accuracy of differences in motion vector and motion vectors associated with motion vectors.
[0013]
The video sequence contains one or more
Each image can be divided into which each one can be are operations to frame or image one or more blocks, with individually coded. Developed a new coding standard, currently referred to as high performance video coding (HEVC), and sometimes referred to as ITU H.265. This upcoming standard refers to a coding unit (CU) as a specific pixel block containing luminance data and chrominance data, with luminance data having a resolution of 2Nx2N and chrominance data having a resolution of NxN. The coding unit can be divided into four square, non-overlapping coding subunits of equal sizes.
[0014] Each of the coding subunits may also be subdivided into further coding subunits in this way. A coding unit that is not divided into coding subunits is referred to as a node coding unit. Node-leaf coding units may contain prediction units (PU) and transformation units (TUs), with PU units representing prediction data and TU units representing residual data, i.e. coded differences of one pixel after another between the prediction and original data, uncoded data, for pixels corresponding to the TU unit. As an example, PU units can
53 / 59P36759PL00
EP 2 727 353 B1 is encoded using the inter-picture prediction mode in which the video encoder can calculate the motion vector for the PU unit using the motion estimation process. The video encoder may further signal the encoding mode for the PU unit and the motion vector difference values for the calculated motion vector as described herein.
[0015] Similarly, the video decoder may use information indicating the prediction mode included in the coded bit stream to create prediction data for the coded blocks. The data may further include the motion vector accuracy as well as an indication of the position of the partial pixel to which the motion vector indicates (e.g., the position of the eighth pixel of the reference frame or slice of the reference slice).
[0016] A video encoding device, such as a video encoder or video decoder, may determine the predictive motion vector for the encoding unit (such as a frame, slice or block). The video coding apparatus may use the x and y components of the predictive motion vector (also referred to as motion vector predictor) to calculate the motion vector difference value for the motion vector for the current block. The video coding apparatus may implement the techniques of the present invention to jointly encode motion vector difference values for motion vectors that may have sub-pixel accuracy.
[0017] As discussed above, PU prediction data for creating a predictor block may be based on pre-coded data of spatially adjacent CUs or CUs of temporally adjacent frames that have been previously coded. The video encoder may calculate the PU vector motion vector, which indicates the location of the predictor block for the corresponding CU in a time-separate, pre-coded frame. The video encoder may further calculate the value of the motion vector difference for the motion vector to encode the motion vector. The value of the difference in motion vector can basically
53 / 59P36759PL00
EP 2 727 353 B1 correspond to the difference between the calculated motion vector and the motion vector predictor. The motion vector for the current block may have an x component (MV_x) for horizontal shift, and a y component (MV_y) for horizontal shift. The motion vector predictor can have the x component in the form p_x and the y component in the form p_y. Then, the motion vector predictor can be defined as <MV_x - p_x, MV_y - p_y>.
[0018] This document provides techniques for jointly coding the x component and the y component of the motion vector difference value. In this document, combined coding may refer to coding techniques in which information regarding the x and y components of the motion vector difference value is interleaved. Information about motion vector differences may include a value that indicates whether the motion vector difference component is zero or not, one or more values that represent the value of the sign of the x and / or y component, and one or more values indicating the absolute value x and y components of the motion vector difference value as a few examples.
[0019] According to the techniques of the present invention, information regarding one or both components of the motion vector difference value may be encoded in an alternating manner such that all information regarding one component of the motion vector difference need not be encoded before encoding information regarding the other component of the motion vector difference. In other words, the x component, such as whether the x component is greater than zero, can be interleaved with the corresponding y component. The combined coding of the x component and the y component of the motion vector difference contrasts with the separate coding of all information regarding one of the x or y components of the motion vector difference value, e.g., in accordance with the convention in ITU-T H.264. The combined coding of the x and y components of the motion vector difference value may limit the complexity of the video coding bit stream, which may result in less
53 / 59P36759PL00
The bit rate for encoded video as well as may have other potential advantages described herein.
[0020] In video coding according to the traditional ITU-T H.264 standard, motion vectors may have a quarter pixel accuracy (i.e., a quarter pixel accuracy). In some cases, an accuracy of one eighth of a pixel (i.e. one eighth of a pixel) may provide certain advantages. The high performance video coding test (HM) model has the ability to create prediction units using motion vectors having an accuracy of one-eighth of the pixel. In particular, the HM model provides the ability to adaptively select either a quarter pixel accuracy or an eighth pixel accuracy. In this way, motion vectors can have adaptive accuracy, also referred to as motion vector resolution. This fractional or partial pixel accuracy can be used to determine a motion vector relative to a block of interpolated pixel values in a pre-coded frame.
[0021] This document also provides techniques for selecting suitable cases in which motion vectors can be used with quarter pixel accuracy or one eighth pixel accuracy, and how motion vector accuracy can be signaled for a particular motion vector. In particular, the techniques of the present invention relate to selecting motion vector resolution, and signaling resolution using a motion resolution tag in some cases. This document also provides techniques for jointly signaling the x and y components of a specific motion vector.
[0022] This document describes several techniques for coding motion vector such as jointly coding motion vector difference values and signaling the accuracy, amplitude and sign of one or more motion vector difference values. The techniques of the present invention may be
53 / 59P36759PL00
Implemented during the encoding process performed by the video encoding device, such as a video encoder or video decoder. As used herein, the term "encoding" refers to encoding that occurs at the encoder, or decoding that occurs at the decoder. Similarly, the term encoder refers to an encoder, decoder, or combined encoder / decoder (CODEC). All terms encoder, encoder, decoder and CODEC refer to specific constructions of devices for encoding (encoding and / or decoding) video data in accordance with the present invention.
[0023] FIG. 1 is a block diagram illustrating an exemplary video coding and decoding system 10 that can use techniques for jointly signaling motion vectors. Motion vectors can have subpixel accuracy. As shown in FIG. 1, circuit 10 includes a source device 12 that transmits the encoded video to the target device 14 via communication channel 16. Source 12 and target 14 may include any of a wide range of devices. In some cases, the source device 12 and the target device 14 may include wireless communication devices, such as wireless headsets, so-called cellular or satellite radios, or any wireless devices that can transmit video information via a communication channel 16 in which case communication channel 16 is wireless. Techniques of the present invention that relate to combined coding, e.g. combined signaling and / or interpreting the total signaled value, motion vector difference values that may have sub-pixel accuracy are not necessarily limited to wireless applications or settings. For example, these techniques may be used in over-the-air television broadcasting, cable broadcasts, satellite broadcasts, and internet broadcasts
53 / 59P36759PL00
Video transmissions, encoded digital video that is encoded on a storage medium, or in other scenarios. Accordingly, the communication channel 16 may include any combination of wireless, wired or storage media suitable for transmitting or storing encoded video data.
[0024] In the example of FIG. 1, source device 12 includes a video source 18, video encoder 20, modulator / demodulator (modem) 22 and transmitter 24. Target device 14 includes receiver 26, modem 28, video decoder 30 and display device 32. According to this document, encoder 20 the video of the source device 12 may be configured to use techniques for signaling motion vector differences that may have sub-pixel accuracy. In other examples, the source device and target device may include other components or settings. For example, the source device 12 may receive video data from an external video source 18, such as an external camera. Similarly, the target device 14 may be connected via an interface to an external display device instead of having an integrated display device.
[0025] System 10 illustrated in FIG. 1 is just one example. Techniques for jointly signaling the accuracy of motion vector differences can be implemented by any digital video encoding and / or decoding device. Although the techniques of the present invention are generally implemented by a video coding apparatus, the techniques may also typically be referred to as the present coding preprocessor, implemented by the video encoder / decoder, as "CODEC". In addition, the techniques of the invention may also be implemented by video. The source device 12 and the device are only examples of such devices wherein the source device 12 generates encoded video data for transmission to the target device
53 / 59P36759PL00
EP 2 727 353 B1
14. In some examples, the devices 12, 14 can operate in a substantially symmetrical manner such that each of the devices 12, 14 includes components for encoding and decoding video. Thus, the system 10 may support unidirectional or bidirectional video transmission between video devices 12, 14, e.g. for video streaming, video playback, video broadcast or video telephony.
[0026] The video source 18 of the source device 12 may include a video capture device, such as a video camera, video archive containing pre-captured video and / or video resources provided from the video content provider. As another alternative, the video source 18 can generate computer-based data as source video, or a combination of live video, archived video, and computer generated video. In some cases, if the video source 18 is a video camera, the source device 12 and the target device 14 may form so-called video cameras or video phones. However, as mentioned above, the techniques described in this document can be used essentially in video coding, and can be used in wireless and / or wired applications. In any case, the captured, previously captured or computer generated video can be encoded by the video encoder. The encoded video information may then be modulated by modem 22 in accordance with the communication standard, and transmitted to the target device 14 via the transmitter 24. Modem 22 may include various mixers, filters, amplifiers or other components designed to modulate the signals. The transmitter 24 may include systems for transmitting data, including amplifiers, filters and one or more antennas.
[0027] The receiver 26 of the target device 14 receives information via channel 16, and the modem 28 demodulates the information. In contrast, the video coding process can
53 / 59P36759PL00
Implement one or more of the techniques described herein to signal motion vector differences that may have sub-pixel accuracy. Information transmitted via channel 16 may include syntax information defined by the video encoder 20, which is also used by the video decoder 30 that includes syntax elements describing the characteristics and / or processing of macroblocks and other encoded entities, e.g., GOP image groups. The display device 32 displays decoded video data to the user, and can include any of a variety of display devices, such as a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or any other type of display device. .
[0028] In the example of FIG. 1, the communication channel 16 may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired carriers. The communication channel 16 may form part of a packet network, such as a local area network, wide area network, or a global network, such as the Internet. The communication channel 16 generally represents any suitable communication medium, or collection of different communications, for transmitting video data from the source 12 to the target device 14, including any suitable combination of wired or wireless carriers. The communication channel 16 may include routers, switches, base stations or any other equipment that may be useful to enable communication from the source device 12 to the target device 14. In other examples, the source device 12, instead of transmitting data, may write the encoded data to a storage medium.
device carriers
53 / 59P36759PL00
EP 2 727 353 B1
Similarly, the target device 14 may be configured to recover encoded data from a storage medium.
[0029] The video encoder 20 and the video decoder 30 may operate in accordance with a video compression standard, such as the upcoming ITU-T High Performance Video Encoding (HEVC) standard, also referred to as "H.264". The HEVC standard has not yet been completed, so the 20 video encoder and 30 video decoder can operate according to the most current HEVC standard design referred to as the high-performance video coding test (HM) model. However, the techniques of the present invention are not limited to any particular coding standard. Other examples include MPEG-2, ITU-T H.263 and ITU-T H.264. Although not shown in FIG. 1, in some aspects, both the video encoder 20 and the video decoder 30 may be integrated into the audio encoder and decoder, and may include appropriate MUX-DEMUX units, or other hardware and software, to support both audio and video encoding in a shared data stream or separate data streams. If applicable, MUXDEMUX units may be compatible with the ITU H.223 multiplexer protocol or other protocols such as user datagram protocol (UDP).
[0030] The HEVC standard is currently under development by the Video Coding Experts Group (VCEG) ITU-T together with the Moving Picture Experts Group (MPEG) ISO / IEC as a result of a collective partnership known as Joint collaborative Team on Video Coding (JCT-VC). The HM model assumes several video coding device capabilities relative to devices that comply with previous coding standards, such as ITU-T H.264 / AVC. For example, while H.264 provides nine intra-image prediction coding modes, the HM model provides thirty-four intra-image prediction coding modes.
53 / 59P36759PL00
[0031] Both the video encoder 20 and the video decoder 30 can be implemented as any of a wide variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSP), integrated circuits for special applications (ASIC), directly programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combination thereof. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, each of which may be integrated as part of a combined encoder / decoder (CODEC) in a respective camera, computer, mobile device, subscriber device, broadcasting device , set-top box, server and the like.
[0032] The video sequence usually includes a series of video frames. An image group (GOP) generally contains a series of one or more video frames. The GOP group may contain syntax data in the GOP header, the header of one or more GOP frames, or anywhere else that describe the number of frames contained in the GOP group. Each frame can contain frame syntax data that describes the encoding mode for the corresponding frame. The video encoder 20 typically operates on video blocks, also referred to as CUs, in individual video frames to encode video data. The video block may correspond to the LCU or division of the LCU. Video blocks can have fixed or variable sizes, and can vary in size according to a particular encoding standard. Each video frame can contain multiple slice slices. Each slice can contain multiple LCUs that can be organized into divisions, also known as CU subunits.
[0033] As an example, the ITU-T H.264 standard supports intra-image prediction in various block sizes, such as 16 by 16, 8 by 8 or 4 by 4 for the luminance components,
53 / 59P36759PL00
And 8x8 for chrominance components, as well as inter-image prediction in various block sizes such as 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 and 4x4 for luminance components and corresponding scaled sizes for chrominance components. In this document, the designations "NxN" and "N to N" may be used interchangeably to refer to the pixel dimensions of the block in terms of vertical and horizontal dimensions, e.g. 16x16 pixels or 16 by 16 pixels. Basically, a 16x16 block will have 16 pixels in the vertical direction (y = 16) and 16 pixels in the horizontal direction (x = 16). Similarly, the NxN block generally has N pixels in the vertical direction and N pixels in the horizontal direction, with N representing a non-negative integer value. Pixels in a block can be arranged in rows and columns. In addition, blocks do not necessarily have to have the same number of pixels in the horizontal and vertical directions. For example, blocks may contain NxM pixels, where M is not necessarily equal to N.
[0034] The HEVC standard refers to a video data block as a coding unit (CU), which may contain one or more prediction units (PU) and / or one or more transformation units (TU). The syntax data in the bit stream can define the largest coding unit (LCU), which is the largest coding unit in terms of the number of pixels. Basically, the CU unit has a similar purpose to the H.264 macroblock, except that the CU unit has no size distinction. Thus, the CU unit may be divided into CU subunits. In general, references in this document to a CU may refer to the largest image coding unit or CU subunit of the LCU. The LCU may be divided into CU subunits, and each CU subunit may be further divided into CU subunits. Syntax data for a bit stream can define the maximum number that specifies how many times the LCU can be divided,
53 / 59P36759PL00
EP 2 727 353 B1 referred to as the depth of the CU unit. Accordingly, the bit stream may also define the smallest coding unit (SCU). The term "block" is also used throughout this document to refer to any of the CU, PU or TU units.
[0035] The LCU may be associated with a quadruple tree data structure. Basically, the quadruple tree data structure contains one node per CU, with the root node corresponding to the LCU. If the CU is divided into four CU subunits, the node corresponding to the CU contains four leaf nodes, each corresponding to one of the CU subunits. Each node of the quadruple tree data structure can provide syntax data for the corresponding CU. For example, a node in a quad tree may contain a partition indicator indicating whether the CU unit corresponding to the node is divided into CU subunits. The syntax elements for a CU unit can be recursively defined, and may depend on whether the CU unit is divided into CU subunits. If the CU is not further subdivided, it is referred to as the CU leaf unit. In this document, the 4 CU subunits of the CU leaf unit will also be referred to as CU leaf units, although there is no clear division of the original CU leaf unit. For example, if a 16x16 CU unit is not further subdivided, the four 8x8 CU subunits will also be referred to as CU list units, although the 16x16 CU unit has never been split.
[0036] In addition, the TU units of the CU leaf units may also be associated with the respective quadruple tree data structures. That is, the CU leaf unit may contain a quadruple tree indicating how the CU leaf unit is divided into TU units. This document is for a quadruple tree showing how the LCU is divided
53 / 59P36759PL00
EP 2 727 353 B1 as a quadruple tree CU and a quadruple tree indicating how a CU leaf unit is divided into TU units as a quadruple tree TU. The root tree node TU essentially corresponds to the CU leaf unit, while the root tree node CU essentially corresponds to the LCU unit. The TU units of the TU quadruple tree that are not divided are referred to as TU leaf units.
[0037] The CU leaf unit may contain one or more prediction units (PU). Basically, the PU unit represents all or part of the corresponding CU unit, and may contain data for obtaining a reference sample for the PU unit. For example, when the PU unit is encoded in cross-picture mode, the PU unit may contain data defining a motion vector for the PU unit. The motion vector defining data may describe, for example, the horizontal vector of the motion vector, the horizontal vector of the motion vector, the resolution of the vector of motion (e.g. accuracy of one quarter pixel or the accuracy of one eighth of the pixel), a reference frame that indicates the motion vector and / or reference list (e.g. list 0 or list 1) for the motion vector. The CU leaf unit data defining the PU unit (s) may also describe, for example, dividing the CU unit into one or more PU units. Split modes may vary depending on whether the CU is uncoded, coded in intra-picture prediction mode, or coded in inter-picture prediction mode. For intra-image coding, the PU unit can be treated in the same way as the transformation-leaf unit described below.
[0038] A CU leaf unit may contain one or more transformation units (TU). The transformation units can be determined using the TU quad tree structure, as discussed above. That is, the split indicator may indicate whether the CU leaf unit is divided into four transformation units. Next,
53 / 59P36759PL00
Each transformation unit can be further divided into 4 TU subunits. When the TU unit is not further subdivided, it may be referred to as the TU leaf unit. Basically, for intra-image coding, all TU leaf units belonging to a CU leaf unit share the same intra-image prediction mode. That is, the same intra-image prediction mode is generally used to calculate predicted values for all TUs of a CU leaf unit. For intra-picture coding, the video encoder can calculate the residual value for each unit of TU using the intra-picture prediction mode as the difference between the portion of the predicted values corresponding to the TU unit and the original block. The residual value can be transformed, quantized and scanned. For cross-picture coding, the video encoder can make predictions at the PU unit level and can calculate the residual value for each PU unit. Residual values corresponding to the CU leaf unit can be transformed, quantized and scanned. For cross-image coding, the TU leaf unit may be larger or smaller than the PU unit. For in-picture coding, the PU unit may be co-allocated with the corresponding TU-leaf unit. In some examples, the maximum size of the TU leaf unit may be the size of the corresponding CU leaf unit.
[0039] In general, the terms CU unit and TU unit are used herein to refer to CU leaf unit and TU leaf unit, unless otherwise indicated. Basically, the techniques of the present invention relate to the transformation, quantization, scanning and entropy coding of CU unit data. As an example, the techniques of the present invention include the selection of a transformation to be used to transform the residual value of the block predicted in in-picture mode, based on the prediction mode
53 / 59P36759PL00
EP 2 727 353 B1 used for predicting a block. This document also uses the term "directional transformation," or "designed transformation," intra-image transformations to those for reference that depends on the direction of the prediction mode. This means that the video encoder can select the directional transform to apply to the transformation unit ( HERE). As indicated above, intra-image prediction includes predicting the TU of the current CU of the image based on pre-coded CUs and TUs of the same image. In particular, the video encoder may predict the current image TU within the image using a specific intra-image prediction mode.
[0040] During inter-picture prediction modes, the video encoder 20 may determine a resolution, such as a resolution of 1/4 (one quarter) or 1/8 (one eighth) pixel, for a specific motion vector for a PU unit. This resolution can be determined using a technique that aims to minimize the magnitude of the error between the motion vector predictor and the calculated motion vector for the PU of the CU, which may be the motion vector used to predict the displacement of the previously coded frame.
[0041] The video encoder 20 may determine the accuracy for the motion vector predictor as well as the vector displacement, which may include the x: p_x component, and the y: p_y component. The video encoder 20 may calculate the motion vector differences corresponding to the difference between the motion vector predictor and the calculated motion vector. Motion vector differences (referred to in MVD ") can also have the x: mvd_y component. Based on the size of the mvd_x and mvd_y components, the accuracy of the vectors (i.e. accuracy to a quarter of a pixel or accuracy to one of this document as mvd_x and the component y:
53 / 59P36759PL00
In the eighth pixel) and threshold value, the video encoder 20 may be configured to jointly encode one or more values regarding the x and y components of the motion vector difference value.
[0042] According to the techniques of the present invention, the video encoder 20 and / or the video decoder 30 may be configured to jointly encode information regarding motion vector differences for the block. Combined coding may refer to coding techniques in which information regarding the x and y components of the motion vector difference value is interleaved. The information may include information indicating whether a given quantity, e.g. the absolute value of the components is greater than zero, the sign for the components when the absolute value of the respective component is greater than zero, and information indicating the absolute value of the component when the absolute value is greater than zero. The combined coding of one or more motion vector difference values may limit the complexity of the video coding bit stream, which may provide the advantages described herein. Similar to the video encoder 20, the video decoder 30 may receive the bit stream of the encoded video and may operate in a substantially inverse manner relative to the video encoder 20. For example, the video decoder 30 may receive coded values for the MVD difference, decode the total coded values, and calculate the motion vector for the block as the sum of the difference MVD and the motion vector predictor for the block.
[0043] Generally, the x component of the motion vector difference value may be referred to as "MVD_x" while the y component of the motion vector difference value may be referred to as "MVD_y". The value of the motion vector difference for a video data block, e.g. PU unit, can be described by <MVD_x, MVD_y>. Basically, MVD_x corresponds to the difference between the x vector component of the motion vector for the block and the x component of the motion vector predictor selected for the block. Similarly, MVD_y corresponds to the difference between the y component of the motion vector for the block and the y component of the motion vector predictor
53 / 59P36759PL00
EP 2 727 353 B1 selected for the block. In this way, the video encoder 20 can calculate MVD_x by calculating the difference between the x component of the motion vector for the block and the x component of the motion vector predictor for the block, and MVD_y by calculating the difference between the y component of the motion vector for the block and the y component of the motion vector predictor for the block . Similarly, the video decoder 30 can reconstruct the motion vector for the block by adding MVD_x to the x component of the motion vector predictor, and by adding MVD_y to the y component of the motion vector predictor. In other words, MV_x and MV_y represent the x and y components of the motion vector, respectively:
MVD_x = MV_x - p_x; and (1)
MVD_y = MV_x - p_y; (2) [0044] In some examples, the video encoder 20 can encode, e.g., signal, information for the motion vector difference value for the block in a combined manner. For example, the video encoder 20 may encode information indicating whether the absolute value of MVD_x, i.e., | MVD_x |, is greater than zero, followed by information indicating whether the absolute value of MVD_y, i.e., | MVD_y |, is greater from zero. Such information may include, for example, tags indicating whether, respectively, the x and y components of the MVD difference are greater than zero. The video encoder 20 may also signal the value indicating the character for MVD_x after signaling the marker indicating whether MVD_y is greater than zero, assuming that the marker indicating whether MVD_x is greater than zero indicates that MVD_x is actually more than zero. The video encoder 20 need not signal the sign for MVD_x when | MVD_x | is zero.
[0045] After either the value indicating the sign for MVD_x (when signaled) or the indication information occurs,
53 / 59P36759PL00
EP 2 727 353 B1 or | MVD_y | is greater than zero (when the MVD_x character is not signaled), the video encoder 20 can signal the character for MVD_y, again assuming that | MVD_y | is greater than zero. In addition, the video encoder 20 may then signal information indicating the absolute values of MVD_x and / or MVD_y, depending on whether any or both of MVD_x and MVD_y have absolute values greater than zero. In contrast, information indicating the absolute values MVD_x and MVD_y need not be signaled when the previously signaled values indicate that the absolute values of any or both of MVD_x and MVD_y are zero.
[0046] In a similar manner, the video decoder 30 may encode (e.g., decode and interpret) data indicating whether MVD_x is an absolute value greater than zero followed by data indicating whether the MVD_y has an absolute value greater than zero. When the data indicates that the absolute value of MVD_x is greater than zero, the video decoder may be configured to then parse the information indicating the character for MVD_x. After parsing the information indicating the sign for MVD_x, or after determining that | MVD_x | is zero, the video decoder 30 may be configured to parse the information indicating the sign for MVD_y when the data indicate that the absolute value of MVD_y is greater than zero. Similarly, the video decoder 30 can then parse information indicating absolute values for MVD_x and MVD_y, respectively, again assuming that the absolute values MVD_x and MVD_y are greater than zero.
[0047] The video decoder 30 may be configured not to expect sign information and the absolute value of any component for which the data indicates that the component has an absolute value not greater than zero (i.e. equal to zero). That is, the video decoder 30 can be configured to parse other video data, e.g., other data for a block, without receiving or encoding data for
53 / 59P36759PL00
Characters and absolute values of the components of the MVD difference, which have an absolute value of zero, as indicated by earlier signaling of the information.
[0048] The combined encoding of the x and y components in this way can provide certain advantages over the data encoding separately for the x and y components. For example, the combined encoding of the x and y components can increase throughput during entropy coding. As one particular example, joint coding of a motion vector difference value can increase entropy coding throughput when the video encoder 20 or video decoder 30 uses CABAC coding to perform entropy coding. When information indicating the absolute value of the x and y components of the motion vector difference value is jointly encoded, the video encoder 20 or the video decoder 30 may be able to encode entropy of the x and y components of the motion vector difference value together, using CABAC encoding bypass mode. Bypass mode with CABAC coding can increase the entropy coding bandwidth. The entropy coding of the total encoded information indicating the x and y components may enable the video encoder 20 or the video decoder 30 entropy coding of both syntax elements in turn using the bypass mode with CABAC coding, which can increase the entropy coding efficiency relative to the separate entropy coding of the x and y components. Although in the previous example the description referred to CABAC coding, the combined coding of the x and y components of the motion vector difference value can also increase the entropy coding performance and / or bandwidth when using other entropy coding techniques such as VLC and CAVLC.
[0049] After intra-picture or inter-picture predictive coding to create predictive data and residual data, and after any transformations (such as 4x4 or 8x8 integer transformation used in H.264 / AVC or DCT discrete cosine transformation) to
53 / 59P36759PL00
To form transformation coefficients, transformation coefficient quantization can be performed. Quantization basically refers to a process in which transformation coefficients are quantized to reduce as much as possible the amount of data used to represent the coefficients. The quantization process may reduce the bit depth associated with some or all coefficients. For example, the n-bit value may be rounded down to the mbit value during quantization, where n is greater than m.
coding may be performed e.g. according to length coding (CAVLC), [0050] After quantization, entropy quantized data, content adaptive variable coding, context adaptive binary arithmetic coding (CABAC), or other entropy coding method. A processing unit configured for entropy coding, or another processing unit, may perform other processing functions, such as zero run length coding of quantized coefficients and / or generate syntax information, such as coded block pattern values (CBP), macroblock type, coding mode, maximum macroblock size for the coded unit (such as frame, slice, macroblock or sequence) or the like.
[0051] The video encoder 20 may further send syntax data, such as block-based syntax data, frame-based syntax data, GOP-based syntax data, to the video decoder 30, e.g. in frame header, block header, slice header type slice or GOP header. The GOP syntax data may describe multiple frames in the corresponding GOP, and the frame syntax data may indicate the coding / prediction mode used to encode the corresponding frame.
53 / 59P36759PL00
[0052] Both the video encoder 20 and the video decoder 30 may be implemented as any of a wide variety of suitable encoder or decoder circuits, according to an application such as one or more of: microprocessors, digital signal processors (DSP), integrated circuits for special applications (ASICs), directly programmable gate arrays (FPGAs), discrete logic circuits, software, hardware, firmware or any combination thereof. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined video encoder / decoder (CODEC). The device comprising the video encoder 20 and / or the video decoder 30 may include an integrated circuit, a microprocessor and / or a wireless communication device, such as a mobile phone.
[0053] FIG. 2 is a block diagram illustrating an example of a video encoder 20 that can implement techniques for jointly signaling motion vectors that may have sub-pixel accuracy. The video encoder 20 may perform in-video coding and inter-video coding of blocks within video frames, including CUs or CU subunits of CUs. Intra-image coding relies on spatial prediction to reduce or remove spatial redundancy in a video within a given video frame. Cross-picture coding relies on time prediction to reduce or remove temporal redundancy in video within adjacent video sequence frames. I-mode can refer to any of several spatial compression modes, and inter-picture modes such as unitary directional prediction (Pmode) or bi-directional prediction (B-mode) can refer to any of several temporal compression modes. Although in FIG. 2 shows components for cross-picture coding, it should be understood that the video encoder 20 can
53 / 59P36759PL00
EP 2 727 353 B1 further include components for encoding in the intra-picture mode. However, such components are not illustrated for the sake of brevity and transparency.
[0054] As shown in FIG. 2, the video encoder 20 receives the current video block within the video frame to be encoded. In the example of FIG. 2, the video encoder 20 includes motion compensation unit 44, motion estimation unit 42, memory 64 reference frames, adder 50, transformation processing unit 52, quantization unit 54 and entropy coding unit 56. To reconstruct the video block, the video encoder 20 also includes a quantization unit 58 of a reverse transform unit 60
A deblock filter may also be included as shown in FIG. 2) to filter block boundaries to remove block-related artifacts from the reconstructed video. If desired, a deblocking filter could typically filter the output from adder 62.
During the coding process, the video encoder 20 receives the video, slice or CU unit to be encoded. A slice frame or slice can be divided into many video blocks. The motion estimation unit 42 and the motion compensation unit 44 perform inter-picture predictive coding of the received video block relative to one or more blocks in one or more reference frames to provide time compression. The intra-picture prediction unit 46 can perform intra-picture predictive coding of the received video block relative to one or more adjacent blocks in the same frame or slice as a block to be compressed by the techniques described below, motion estimation may determine accuracy for the motion vector predictor , which can be determined based on the intra-picture or inter-picture prediction mode, which and (not inverse, adder 62 [0055] encoded frame, in line with spatial. unit 42
53 / 59P36759PL00
The mode selection unit 40 has previously determined. The motion estimation unit 42, or other video encoder unit 20, such as entropy coding unit 56, may further determine the motion vector differences corresponding to the difference between the motion vector predictor and the calculated motion vector for the PU unit of the received frame, slice, or CU unit. The entropy coding unit 56 may further encode information regarding the resolution, sign and amplitude of the motion vector difference as well as other information regarding the combined motion vector coding as described below.
[0056] Mode selection unit 40 may select one of the coding modes, intra-picture or inter-picture, e.g. based on error results, and provide the resulting inter-picture or in-picture coded block to adder 50 to generate the residual data block and to adder 62 to reconstruct the encoded block for use as a reference frame. In addition, mode selection unit 40 may select the motion vector accuracy for the motion vector. For example, mode selection unit 40 may select motion vector accuracy for a motion vector based on rate-distortion optimization (RDO) associated with motion vectors having a quarter pixel accuracy and a eighth pixel accuracy of one the fourth pixel has fewer bits to be encoded compared to one-eighth pixel motion vectors. However, the predictor block indicated in the motion vector encoded to a quarter of the pixel may result in more residual information compared to the predictor block coded to the one-eighth of the subpixel. The video encoder 20 may implement RDO optimization to optimize the number of bits (i.e., bit rates) used to encode the specific motion vector relative to the residual information (distortion) associated with the difference between
Motion vectors may require
53 / 59P36759PL00
EP 2 727 353 B1 to the predictive block indicated by the motion vector and the block currently being coded. Based on the result of the RDO optimization, the mode selection unit 40 can select a quarter of one-eighth pixel accuracy that between bit rate and motion vector accuracy, e.g. up to two pixels, or scale the resulting pixel or accuracy optimizes distortion compromise.
[0057] Motion compensation unit 44 may be needed to calculate sub-pixels, such as sub-pixels of reference frames, with different accuracy, e.g. up to one-eighth and up to one-quarter of the pixel. For interpolating sub-pixels, the motion compensation unit 44 may use many different techniques. As examples, motion compensation unit 44 may use bilinear interpolation or use N-order finite impulse response (FIR) filters to interpolate a sub-pixel. When a device, such as a motion compensation unit 44, calculates a value for a partial pixel by averaging sub-pixels, it can round and / or value. In some cases, the motion compensation unit 44 may average values for two sub-pixels that are the result of averaging to a partial pixel.
[0058] Motion compensation unit 44 may calculate values for more partial pixel positions, such as one-eighth pixel positions, by interpolation filters applied to booster sets. The term "assist" generally refers to values for one or more reference pixels, e.g., pixels in a common line or area. Pixels can correspond to full pixel positions or partial pixel positions that have been previously calculated. In some examples, the motion compensation unit 44 may calculate values for partial pixels using bilinear interpolation, and may use similar interpolation filters
53 / 59P36759PL00
To calculate values for two or more different partial pixel positions by applying one or more two-line interpolation filters to different support sets for respective partial pixel positions.
[0059] In some other cases, motion compensation unit 44 may use a N-order finite impulse response (FIR) filter to interpolate sub-pixel values. A FIR filter, such as a 6-row or 12-row Wiener filter, can use nearby assist pixel values to interpolate partial pixel values. The assist pixel is the pixel or sub-pixel value used as input for the FIR filter. A FIR filter can have one or more dimensions. In a one-dimensional FIR filter, a device, such as a motion compensation unit 44, may apply the filter to a plurality of supporting pixels or sub-pixels in a line, for example, horizontal, vertical or angled. Unlike the one-dimensional FIR filter, which can use booster pixels in a straight line, the two-dimensional FIR filter can use nearby pixels or booster sub-pixels that form a square or rectangle to calculate the interpolated pixel value.
[0060] The motion estimation unit 42 and the motion compensation unit 44 can be largely integrated but are illustrated separately for conceptual purposes.
Traffic estimation is the process of generating motion vectors that estimate traffic for video blocks. The motion vector may, for example, indicate the displacement of the predictor block within the predictive reference frame (or in another coded unit) relative to the current block being coded in the current frame (or in another coded unit). The predictor block is the block that turns out to be the best match for the block to be encoded in terms of
53 / 59P36759PL00
The difference of pixels, which can be determined by the sum of absolute differences (SAD), the sum of squares of differences (SSD) or other measures of differences. The motion vector may also indicate the displacements of the macroblock split part. Motion compensation may include downloading or generating a predictor block based on the motion vector determined by the motion estimation. In contrast, in some examples, the motion estimation unit 42 and the motion compensation unit 44 may be functionally integrated.
[0061] The motion estimation unit 42 calculates a motion vector for the inter-picture coded video block by comparing the video block with the video blocks of the reference frame in a memory of 64 reference frames. The motion compensation unit 44 may also interpolate partial pixels of the reference frame, e.g., I-frame or P-frame. As an example, motion vectors can be predicted from two lists of reference frames: list 0, which contains reference frames having a display order prior to the current encoding frame, and list 1, which contains reference frames having a display order later than the current encoded frame . Thus, data stored in the memory of 64 reference frames can be organized according to these lists. [0062] Motion estimation unit 42 compares blocks of one or more reference frames from a memory of 64 reference frames with a block of the current frame, e.g., the P-frame or B-frame to be encoded. When the reference frames in the memory of 64 reference frames contain values for partial pixels, the motion vector calculated by the motion estimation unit 42 may refer to the location of the partial pixel of one of the reference frames stored in the memory of 64 reference frames. The motion estimation unit 42 and / or the motion compensation unit 44 can also be configured to calculate values for the partial pixel positions of reference frames stored in the memory of 64 reference frames if in the memory of 64 frames
53 / 59P36759PL00
No reference values for partial pixel positions are recorded. The motion estimation unit 42 sends the calculated motion vector to the entropy coding unit 56 and the motion compensation unit 44. The reference frame block identified by the motion vector may be referred to as a predictor block. The motion vector that indicates the displacement of the predictor block relative to the current coding block in the current frame may have the x component in the form mvd_x and the y component in the form mvd_y.
[0063] Motion compensation unit 44 may calculate prediction data based on a predictor block. The video encoder 20 creates the residual video block by subtracting the prediction data from the motion compensation unit 44 from the original encoded video block. Adder 50 represents the component or components that perform this subtraction. Processing unit 52 applies a transformation, such as discrete cosine transformation (DCT) or conceptually similar transformation, relative to the residual block, to form a video block containing residual transform coefficient values. Transformation processing unit 52 may perform other transformations such as transformations unit 52 or other types, transformations defined by the H.264 standard, which are conceptually similar to DCT transformations. Wavelet and integer transformations, subband transformations of transformations could also be used. In any case, the transformation processing applies the transformation to the residual block, creating a block of residual transformation coefficients. The transformation can convert residual information from the domain of pixel values into transformations, such as the quantization frequency domain quantizes the residual transformation coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with the field
Unit
53 / 59P36759PL00
Context adaptive binary another coding technique for some or all coefficients. The degree of quantization can be modified by adjusting the quantization parameter. [0064] After quantization, entropy coding unit 56 codes for entropy quantized transformation coefficients. For example, entropy coding unit 56 may implement content adaptive variable length coding (CAVLC), arithmetic coding (CABAC) or entropy coding. The combined coding of the x and y components of the motion vector difference value may enable the entropy coding unit 56 to achieve greater entropy coding throughput when using CABAC coding. The entropy coding unit 56 may use a bypass mode with CABAC coding to increase the entropy coding throughput of the total encoded x and y components of the motion vector difference value compared to the entropy coding of the separately coded x and y components of the motion vector difference values. After the entropy coding performed by the entropy coding unit 56, the encoded video may be transmitted to another device or archived for later transmission or recovery. For context adaptive binary arithmetic coding, context can be based on neighboring macroblocks.
[0065] In some cases, the entropy coding unit 56 or other video encoder unit 20 may be configured to perform other coding functions in addition to entropy coding. For example, entropy coding unit 56 may be configured to determine CBP pattern values for macroblocks and partitions. In addition, in some cases, entropy coding unit 56 may perform group coding of coefficients in the macroblock or part thereof. In particular, entropy coding unit 56 may use a zig-zag scan or other scanning pattern to scan coefficients
53 / 59P36759PL00
Transformation into a macroblock or part of a partition and encode strings of zeros for additional compression. The entropy coding unit 56 may also create header information using appropriate syntax elements for the transmission in the bit stream of the encoded video.
[0066] In accordance with the techniques of the present invention, the quantization unit 54 and the entropy coding unit 56 may jointly encode motion vectors that may have sub-pixel accuracy as described below. In some examples, the quantization unit 45 and entropy coding unit 56 may signal one or more marker values that indicate whether the x and / or y component of the motion vector difference values are zero, one or more values that indicate the sign of the xi / component or y component when the components have absolute values that are not zero, and information, which indicate the absolute value of the x and y component values of the motion vector difference value when the components have absolute values that are not equal to zero. The quantization unit 45 and entropy coding unit 56 may also signal a motion resolution flag that may indicate the sub-pixel resolution of the motion vector as well as a threshold value relating to both the size and accuracy of the motion vector.
[0067] Inverse quantization unit 58 and inverse transformation unit 60 use inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain, e.g. for later use as a reference block. Motion compensation unit 44 may calculate the reference block by adding the residual block to the predictor block of one of the frames from the memory of the 64 reference frames. Motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate pixel partial values for use in estimation
53 / 59P36759PL00
EP 2 727 353 B1. Adder 62 adds the reconstructed residual block to the prediction block with the compensated motion created by the motion compensation unit 44 to create the reconstructed video block for storing 64 reference frames. The reconstructed video block can be used by the motion estimation unit 42 and the motion compensation unit 44 as a reference block for coding the inter-picture block in the next video frame.
[0068] The video encoder 20 is an example of a video encoder configured to encode video data indicating whether the absolute value of the x component of the motion vector difference value for the current video data block is greater than zero, and to encode video data indicating whether the absolute value of the y component difference value motion vector is greater than zero. The video encoder 20 may be configured to encode video data indicating the absolute value of the x component of the motion vector difference when the absolute value of the x component of the motion vector difference is greater than zero, and to encode video data indicating the absolute value of the y component of the motion vector difference value when the absolute value of the y component of the motion vector difference value is greater than zero. The video encoder 20 may also be configured to encode video data indicating the sign of the x component of the motion vector difference value when the absolute value of the x component of the motion vector difference value is greater than zero, and to encode the y component sign of the value of the motion vector difference value when the absolute value of the y component the motion vector difference value is greater than zero.
illustrating encoded [0069] FIG. 3 is a block diagram of an example of a video decoder 30 that decodes a video sequence. In the example of FIG, it includes entropy decoding unit 70, motion compensation unit 72, intra-image prediction unit 74,
3, 30 video decoder
53 / 59P36759PL00
Inverse quantization unit 76, inverse transformation unit 78, reference frame memory 82 and adder 80. The video decoder 30 may, in some examples, perform a decoding waveform being substantially the reverse of the coding waveform described with respect to the video encoder 20 (FIG. 2). Motion compensation unit 72 may generate prediction data based on motion vectors received from entropy decoding unit 70.
[0070] Motion compensation unit 72 may use motion vectors received in a bit stream, including motion vectors signaled according to the techniques described herein, to identify a prediction block in one of the reference frames stored in the memory of the reference frames 82. The intra-image prediction unit 74 may in na
Unit 76 dequantizes, in the decoding stream may include by standard use intra-imaging prediction modes received bit stream to form a prediction block based on spatially adjacent blocks.
inverse quantization inverse quantizes, i.e. quantized block coefficients provided by bits and decoded by entropy unit 70. Inverse quantization process is a traditional process, for example, specific H.264 decoding. The reverse quantization process may also involve using the QPY quantization parameter calculated by the encoder 50 for each macroblock to determine the degree of quantization and, likewise, the degree of inverse quantization that should be used.
[0071] The entropy coding unit 70 and the unit 76 may also reconstruct jointly the motion vector difference by the syntax elements including markers and other values in the encoded bit stream. As an example, entropy coding unit 70 and inverse quantization unit 76 may receive one or more inverse quantization coded values interpreting different
53 / 59P36759PL00
For values that indicate whether the x and / or y component of the motion vector difference are motion resolutions that are greater than zero, the marker may indicate the sub pixel resolution of the motion vector, and a threshold value that may indicate the maximum size and / or resolution motion vector difference values. coding entropy coding bypass
In one example, the unit 70 may decode the total encoded x and y components of the motion vector difference value using CABAC encoding in bypass mode. The use of CABAC coded mode may enable the unit 70 to entropy decode the total encoded motion vector difference values with increased throughput compared to the separate entropy decoding of the x and y components of the motion vector difference values. The entropy coding unit 70 and the inverse quantization unit 76 may also receive one or more values that indicate the sign of the x component and / or y component of the value difference value that each component of the motion vector. The entropy coding unit 70 and the inverse quantization unit 76 may use values that indicate whether the x and y components of the motion vector difference value are greater than zero, as well as values that indicate the absolute value of the magnitude of each component of the motion vector value in order to reconstruct the amplitude, accuracy of the x and y components motion vector difference values. [0072] Inverse transformation unit 58 uses an inverse transformation, e.g. DCT inverse transformation, inverse integer transformation or a conceptually similar inverse transformation process relative to transformation coefficients in a motion vector, and the absolute magnitude indicate the value of the sign difference difference, to create residual blocks in the pixel domain. Motion compensation unit 72 creates blocks with compensated motion, possibly performing interpolation based on interpolation filters.
53 / 59P36759PL00
EP 2 727 353 B1
Identifiers for interpolation filters to be used for estimating traffic with sub-pixel accuracy can be included in the syntax elements. Motion compensation unit 72 may use interpolation filters, which are used by the video encoder 20 when encoding the video block to calculate interpolated values for partial pixels of the reference block. Motion compensation unit 72 may determine the interpolation filters used by the video encoder 20 according to the received syntax information and use interpolation filters to form predictor blocks.
[0073] Motion compensation unit 72 uses some of the syntax information to determine the size of the macroblocks used to encode the frame (frames) of the encoded video sequence, split information that describes how each macroblock of the encoded video sequence frame is divided, modes indicating how each division is encoded, one or more reference frames (and reference frame lists) for each inter-picture coded macroblock or split, and other information to decode the encoded video sequence. As an example, motion compensation unit 72 may receive the MVD difference value and motion vector predictor. The motion compensation unit 72 may further determine the calculated vector for the current block as the sum of the MVD difference value and the motion vector predictor of the current block. The calculated motion vector for the current block may further indicate the location of the prediction block. In some examples, the motion compensation unit 72 may calculate pixel values for the prediction block, e.g., when the motion vector has a sub-pixel accuracy such as a quarter pixel or eighth pixel accuracy.
[0074] Adder 80 sums the residual blocks with the corresponding prediction blocks generated by the motion compensation unit 72 or the intra-image prediction unit to
53 / 59P36759PL00
To form decoded blocks. If desired, a deblock filter can also be used to filter decoded blocks to remove block related artifacts. The decoded video blocks are then stored in a reference frame memory 82, which provides reference blocks for the next motion compensation and also creates decoded video for presentation on the display device (such as display device 32 in FIG. 1).
[0075] Based on the motion vector for the current block, the motion compensation unit may determine a predictor block based on one or more frames stored in the memory of reference frames 82. Motion compensation unit 72 may be needed to calculate the subpixels of the predictor block that generates motion compensation unit 72. Prediction blocks, such as sub-pixels of reference frames, with different accuracy, e.g. up to one-eighth and one-quarter of the pixel. For interpolating sub-pixels, the motion compensation unit 72 may use many different techniques. As examples, the motion compensation unit 72 may use bilinear interpolation or use Nine Finite Impulse Response (FIR) filters to interpolate the sub-pixel. When a device, such as motion compensation unit 72, calculates a value for a partial pixel by averaging two pixels or subpixels, it can round and / or scale the resulting value. In some cases, the motion compensation unit 72 may average values for two subpixels that are the result of averaging to a partial pixel. [0076] Motion compensation unit 72 may calculate values for partial pixel positions, such as one-eighth pixel positions, by interpolation filters applied to sets support. The term "assist" generally refers to values for one or more reference pixels, e.g. pixels in a common line or
53 / 59P36759PL00
In the area. Pixels can correspond to full pixel positions or partial pixel positions that have been previously calculated. In some examples, the motion compensation unit 72 may calculate values for partial pixels using bilinear interpolation, and may use similar bilinear interpolation filters to calculate values for two or more different positions of partial pixel by applying one or more filters bilinear interpolation relative to different support sets for respective sub pixel positions.
[0077] In some other cases, the motion compensation unit 42 may use a N-order finite impulse response (FIR) filter to interpolate the sub-pixel values. A FIR filter, such as a 6-row or 12-row Wiener filter, can use nearby assist pixel values to interpolate partial pixel values. The assist pixel is the pixel or sub-pixel value used as input for the FIR filter. A FIR filter can have one or more dimensions. In a one-dimensional FIR filter, a device such as motion compensation unit 72 may apply a filter to a plurality of supporting pixels or sub-pixels in a line, for example, horizontal, vertical or at an angle. Unlike the one-dimensional FIR filter, which can use booster pixels in a straight line, the two-dimensional FIR filter can use nearby pixels or booster sub-pixels that form a square or rectangle to calculate the interpolated pixel value.
[0078] The video decoder 30 is an example of a video encoder configured to decode video data indicating whether the absolute value of the x component of the motion vector difference value for the current video data block is greater than zero and to decode video data indicating whether the absolute value
53 / 59P36759PL00
The y-component of the motion vector difference value is greater than zero. The video decoder 30 may be configured to decode video data indicating the absolute value of the x component of the motion vector difference when the absolute value of the x component of the motion vector difference is greater than zero, and to decode video data indicating the absolute value of the y component of the motion vector difference value when the absolute value of the y component of the motion vector difference value is greater than zero. The video decoder 30 may also be configured to decode video data indicating the sign of the x component of the motion vector difference value when the absolute value of the x component of the motion vector difference value is greater than zero, and to decode the y component sign of the motion vector difference value when the absolute value of the y component the motion vector difference value is greater than zero.
[0079] FIG. 4 is a flowchart illustrating an example method of jointly coding the x and y components of a motion vector difference value and the entropy coding of the current block. In method 150, the motion estimation unit 42 of the video encoder 20 can predict the current block (152). As part of the current block prediction, the motion estimation unit 42 may calculate a motion vector. The motion vector may indicate the displacement of the predictor block relative to the current block. The motion vector displacement can have x and y components: MV_x and MV_y. The predictor block can closely correspond to the current block in terms of pixel difference, which can be determined by the sum of absolute differences (SAD), the sum of squares of differences (SSD), or any other difference measure. In the case where the current frame is predicted between images, the predictor block may include a block of another frame, such as one of one or more reference frames in the memory of 64 reference frames in FIG. 2.
53 / 59P36759PL00
[0080] Motion compensation unit 44 or other video encoder unit 20 may then determine a motion vector predictor for the current block motion vector (154). The motion vector predictor is a motion vector that motion compensation unit 44 uses to calculate the motion vector difference value for the current block. In some examples, the motion vector predictor may be the motion vector of one of the plurality of blocks that are adjacent to the PU of the current block. The motion compensation unit 44 may also determine a motion vector predictor based on the co-blocked block of one of the reference frames stored in the memory of the 64 reference frames. The motion vector predictor can have the x component in the form p_x and the y component in the form p_y. The video encoder 20 may determine the motion vector predictor such that the motion vector predictor minimizes the difference of motion vector for the current block and motion vector predictor.
[0081] Based on the motion vector predictor, the motion compensation unit 44 of the video encoder 20, or other video encoder unit 20, such as the entropy coding unit 56, can calculate the value of the motion vector difference for the current block (156). The motion compensation unit 44 may calculate the motion vector differences for the current block as the motion vector difference for the current block and the motion vector predictor for the current block. Thus, motion compensation unit 44 may calculate the motion vector predictor for the current block as <p_x - MV_x, p_y - MV_y>, where p_x and p_y are the x and y components of the motion vector predictor, and MV_x and MV_y are the x and y components of the motion vector for the current block.
[0082] The entropy coding unit 56 may then jointly code the motion vector difference value elements for the current block (158). For example, entropy coding unit 56 may jointly encode motion vector difference value elements that include the x and y components of motion vector difference as explained in more detail with reference to
53 / 59P36759PL00
EP 2 727 353 B1
FIG. 6 and 7 below. Motion vector difference elements may also include one or more values indicating whether the x and y components of the motion vector difference are zero or not, a value indicating the value of the sign of the x and / or y component of the motion vector difference value, and a value indicating the absolute value of the vector difference value component traffic, as some non-limiting examples.
[0083] Transform processing unit 52 or motion compensation unit 44 may calculate a residual block for the current block (160). The residual block may contain pixel differences between the predictive video block that is indicated by the motion vector for the current block and the current video block. Transformation processing unit 52 may then apply a transformation, such as discrete cosine transformation (DCT), to the residual block for the current block, while quantization unit 54 may quantize transformation factors from transform processing unit 52 (162).
[0084] The entropy coding unit 56 may scan the transformed coefficients resulting from the transformation in block 162. In some cases, the entropy coding unit 56 may use a zig-zag scan or other scanning pattern to scan the transform coefficients of the transformed residual block (164). The entropy coding unit 56 may entropy encode coefficients containing zeros resulting from scanning 164, for example using burst length coding, for additional compression (166). The entropy coding unit 56 may then provide the entropy coded coefficients and the total encoded MVD difference value (168). That is, entropy coding unit 56 may provide combined encoded data for the x and y components of the MVD difference value, in addition to the entropy-coded quantized transformation coefficients.
53 / 59P36759PL00
[0085] The techniques in FIG 4 can generally be implemented by any processing unit or processor, whether implemented in hardware, in software, firmware or in a combination thereof, and when it is implemented in software or firmware , appropriate hardware may be provided for executing software or firmware instructions. For the purposes of example, the techniques in FIG. 4 are described with reference to a video encoding device that may include components substantially similar to the components of the video encoder (FIGS. 1 and 2), however, it should be understood that other devices may be configured to implement similar techniques. In addition, the steps illustrated in FIG. 4 may be performed in a different order or simultaneously, and additional steps may be added and some steps omitted without departing from the techniques of the present invention.
[0086] FIG. 5 is a flowchart illustrating a method for separately signaling the value of a motion vector difference in accordance with the techniques described in the HEVC 3.0 test model (HM3.0, also referred to as HM3). According to the method proposed in the HM3 model, and illustrated in FIG. 5, the mvd_x and mvd_y values, the corresponding x and y components of the motion vector difference value, are signaled separately. Method 180 illustrates how one or more mvd_x-related syntax elements can be signaled, and method 192 illustrates how one or more mvd_y-related syntax elements can be signaled.
[0087] In method 180, the video encoder unit 20, such as motion compensation unit 44 or entropy coding unit 56, may signal the flag mvd_x == 0 (182). The mvd_x == 0 tag indicates whether the difference between the x components of the calculated motion vector for the PU unit of the CU unit and the motion vector predictor for the motion vector are equal, and
53 / 59P36759PL00
Accordingly, whether the corresponding difference between the two components x is equal to zero.
[0088] If the mvd_x == 0 flag is set, then mvd_x, the MVD difference x component, is zero (branch "Yes" for block 184), and the method is terminated (190). However, if mvd_x is nonzero (the "No" branch for block 184), the video encoder 20 may signal abs_mvd_x-1 (186). Abs_mvd_x-1 may indicate the absolute value of mvd_x minus one. The video encoder 20 may further signal a value that indicates the sign for mvd_x (188). The sign can be, for example, positive or negative.
[0089] Similarly, in method 192, the video encoder, such as the video encoder in FIG. 1, can signal the mvd_y == 0 (194) tag. The mvd_y == 0 tag indicates whether the difference between the y components of the calculated motion vector for the PU unit of the CU unit and the motion vector predictor for the motion vector are equal, and accordingly, whether the corresponding difference between the two y components is equal to zero.
[0090] If the mvd_y == 0 flag is set, then mvd_y, the y-component of the MVD difference, is zero (branch "Yes" for block 196), and the method ends (202). However, if mvd_y is nonzero (the "No" branch for block 196), the video encoder 20 may signal abs_mvd_y-1 (198). Abs_mvd_y-1 can be a value that indicates the absolute value of mvd_y minus one. The video encoder 20 may further signal a value that indicates the sign for mvd_y (200). The sign can be, for example, positive or negative.
[0091] FIG. 6 is a flowchart illustrating an exemplary method 220 of jointly coding motion vector difference values for joint coding of x and y components of motion vector difference values. In general, method 220 in FIG. 6 corresponds to step 158 in FIG. 4. Thus, method 220 in FIG. 6 is an exemplary method of jointly encoding data of x and y components of a motion vector difference value. Also,
53 / 59P36759PL00
It is assumed that before performing the exemplary method of FIG. 6, video encoder 20 motion compensation unit 44, or other video encoder 20 unit, such as entropy coding unit 56 of video video encoder 20, can calculate the motion vector for the current video data block and calculate the motion vector difference value as the difference between the motion vector for the current block video data and motion vector predictor specified for the current video data block, e.g. as discussed in connection with step 156 in FIG. 4. In order to jointly encode the data for the x and y components of the motion vector difference value, entropy coding unit 56 may encode information indicating whether the absolute value of mvd_x, the x component of the motion vector difference value, is greater than zero (222). The entropy coding unit 56 may then encode information indicating whether the absolute value of the y component (mvd_y) of the motion vector difference value is greater than zero (224).
[0092] When the absolute value of the x component of the motion vector difference value is greater than zero, the entropy coding unit 56 may encode information indicating the absolute value of the x component of the motion vector difference value (226). And when the absolute value of the y component of the motion vector difference value is greater than zero, the entropy coding unit 56 may encode information indicating the absolute value of the y component of the motion vector difference value (228). In some examples, entropy coding unit 56 may encode information indicating the absolute value of the x and y components of the motion vector difference value as absolute values for mvd_x / 2 -1 and mvd_y / 2 -1, respectively.
[0093] When the absolute value of the x component of the motion vector difference value is greater than zero, the entropy coding unit 56 may encode the sign of the x component of the motion vector difference value (230). When the absolute value of the y component of the motion vector difference value is greater than zero, the unit
53 / 59P36759PL00
The entropy coding may encode the sign of the y component of the motion vector difference value (232).
[0094] The techniques in FIG 6 can generally be implemented by any processing unit or processor, whether implemented in hardware, in software, firmware or in a combination thereof, and when it is implemented in software or firmware, an appropriate hardware for executing software or firmware instructions. For the purposes of example, the techniques in FIG. 6 are described with reference to a video encoding device that may include components substantially similar to the components of the video encoder (FIGS. 1 and 2), however, it should be understood that other devices may be configured to implement similar techniques. In addition, the steps illustrated in FIG. 6 may be performed in a different order or simultaneously, and additional steps may be added and some steps omitted without departing from the techniques of the present invention.
[0095] In this way, the method of FIG. 6 is an example of a method comprising encoding information indicating whether the absolute value of the x component of the motion vector difference value for the current video data block is greater than zero, encoding information indicating whether the absolute value of the y component of the motion vector difference value is greater than zero when the absolute value of the x component the value of the motion vector difference is greater than zero, encoding information indicating the absolute value of the x component of the motion vector difference, when the absolute value of the y component of the motion vector difference value is greater than zero, encoding information indicating the absolute value of the y component of the motion vector difference value, when the absolute value of the x component of the motion vector difference value is greater than zeros, encoding the sign of the x component of the motion vector difference value, and when the absolute value of the y component of the value
53 / 59P36759PL00
The motion vector difference is greater than zero, encoding the sign of the y component of the motion vector difference value. Thus, the method of FIG. 6 is an example of the combined coding of the x and y components of the motion vector difference values calculated for the motion vector of the current video data block.
[0096] FIG. 7 is a flowchart illustrating a method of signaling values for the mvd_x and mvd_y values. In contrast to methods 180 and 192 in FIG. 5, which illustrate the separate coding of the x and y components of the MVD difference, and similar to the method of FIG. 6, the method of FIG. 7 may also enable the encoder to jointly encode the x and y components of the motion vector difference value, i.e., mvd_x and mvd_y. In this example, one syntax element signaled in the bit stream by an encoder, such as the video encoder in FIG. 1 and 2, may contain size, sign and / or other information regarding the x and y components of the motion vector difference value.
[0097] In the example of FIG. 7, as explained below, the video encoder 20 may encode a motion resolution flag, which is a value indicating whether the motion vector of the current video data block has a first sub-pixel accuracy, e.g., a quarter pixel accuracy, or a second sub-pixel accuracy, e.g., accuracy to one eighth pixel. In this example, the motion resolution marker has a value of one to indicate that the current block motion vector has a quarter pixel accuracy, and has a value of zero to indicate that the motion resolution marker has a pixel accuracy of one eighth. The video encoder 20 may also encode a value, "abs_mvd_equal_2", which indicates whether the magnitude of one or both components of the motion vector difference has an absolute value of two. The video encoder 20 can assign a value to abs_mvd_equal_2 based on the example in table 1 below.
[0098] In the example of method 240 in FIG. 7, motion compensation unit 44 or other video encoder unit 20 can
53 / 59P36759PL00
EP 2 727 353 B1 signal mvd_x == 0 (242), and mvd_y == 0 (244). These markers can be set when the corresponding mvd_x or mvd_y values are zero. If both mvd_y and mvd_x are zero ("Yes" branch for block 246), no additional data needs to be signaled and method 240 is terminated (266).
[0099] If either mvd_x or mvd_y is nonzero ("No" branch for block 246), the motion compensation unit 44 may signal or encode the motion resolution marker (246). The motion resolution tag (mvres_flag) is an example of a syntax element that can indicate the motion vector resolution (also referred to as the motion vector accuracy) for the motion vector, corresponding to the value of the motion vector difference. The motion resolution marker may indicate whether the motion vector of the current video data block has a first sub-pixel accuracy or a second sub-pixel accuracy, e.g., a quarter pixel accuracy or a eighth pixel accuracy.
[0100] The video encoder 20 may also specify a threshold value for the current frame, which is also associated with the motion vector for the current block, and which may be signaled in the header of the slice or other data structure, e.g., slice parameter set (slice parameter set) (SPS) or picture parameter set (PPS). The video encoder 20 may use the threshold value to limit the amplitude of the motion vector difference value to one-eighth pixel accuracy and may indicate that the motion vector has a first sub-pixel accuracy when both the x component of the motion vector difference values (mvd_x) and the y component of the difference value motion vector (mvd_y) are greater than the threshold value. For example, as shown below with reference to Table 1 below, a video encoder (e.g. video encoder 20) can limit the size of the x and y components of the motion vector difference value with an accuracy of one eighth of the pixel,
53 / 59P36759PL00
To values of one or two. The video encoder may signal the threshold using the threshold tag.
[0101] If the difference MVD calculated for the x component or y component of the motion vector for the PU unit is greater than the specified threshold value, the motion resolution flag may be set to true. If the motion resolution marker is set to true, a marker that indicates that the motion vector has a quarter pixel accuracy. If the MVD difference value is less than or equal to the selected threshold value, the video encoder may set the value for the motion resolution marker to indicate whether the corresponding motion vector is accurate to a quarter pixel or accurate to one octal pixel.
[0102] The method 240 may further include determining, by the video encoder 20, whether the traffic resolution marker is equal to one (250). The motion resolution marker may be one, for example, if the accuracy of the motion vector is a quarter pixel accuracy. If the motion resolution flag is set to one, the video encoder 20 may signal or encode a value indicating the value abs_mvd_x / 2 - 1 if mvd_x is nonzero, with abs_mvd_x being the value that indicates the absolute value of the MVD x component (252). The video encoder 20 may similarly encode the value indicating abs_mvd_y / 2 - 1 if mvd_x is nonzero, with abs_mvd_y being the absolute value of the y component of the MVD difference (254). In some examples, the video encoder 20 may signal abs_mvd_y / 2 - 1 if mvd_y is nonzero instead of if mvd_x is nonzero.
[0103] If the tag splits one (the "No" branch for the block to determine if the threshold value
<td colspan="2">movement loyalty</td><td>is not</td><td>equal</td>
<td> 250),</td><td>coder</td><td>20 videos</td><td>maybe</td>
<td>is</td><td>equal</td><td>one. IN</td><td>this</td>
<td>have</td><td>worth it</td><td>of</td><td>or</td>
53 / 59P36759PL00
One or two. In the example, the threshold value may have a value of two. Because the motion vector can only be accurate to one-eighth of the pixel when the mvd_x and mvd_y values do not exceed the threshold value, the mvd_x and mvd_y values in this example are limited to one or two. In addition, if the threshold is one (branch "Yes" for block 256) and the motion vector is accurate to a quarter pixel (as indicated by the motion resolution marker, which in this example must be true after step 250), video encoder does not need to signal any additional information for the mvd value. That is, the values mvd_x and mvd_y can be specified such that they indicate either zero or one using other information. In particular, whether mvd_x and mvd_y are zero or one can be indicated based on whether the sign values are signaled in steps 248 and 264. If the threshold value is two (branch "No" for block 256), the encoder 20 video can determine if any of the mvd_x or mvd_y values is zero. If mvd_x or mvd_y is equal to zero (branch "Yes" for block 260), the video encoder 20 may proceed to signal non-zero characters from among mvd_x and mvd_y (258, 264). In some examples, the video encoder 20 may additionally signal the value for the non-zero component of mvd_x and mvd_y, and thus, may go to step 252 instead of going to step 258.
[0104] However, if both mvd_x and mvd_y are nonzero, that is, neither mvd_x nor mvd_y is zero (branch "No" for block 260), then the video encoder 20 can signal the abs_mvd_equal_2 tag. The abs_mvd_equal_2 tag is an example of the combined encoded value for mvd_x and mvd_y. The video encoder can assign a value to the abs_mvd_equal_2 tag based on table 1 below.
53 / 59P36759PL00
EP 2 727 353 B1
TABLE 1
<td>abs mvd equal 2</td><td>abs mvd x</td><td>abs mvd y</td>
<td> 0</td><td> 1</td><td> 1</td>
<td> 1</td><td> 1</td><td> 2</td>
<td> 2</td><td> 2</td><td> 1</td>
[0105] Based on the values of abs_mvd_x and abs_mvd_y, the video encoder 20 may signal the value abs_mvd_equal_2 (262), e.g. according to table 1. The video encoder 20 may signal the value abs_mvd_equal_2 using unary binarization. The video encoder 20 may further signal a character for mvd_x if mvd_x is nonzero (258) and similarly signal a character for mvd_y if mvd_x is nonzero (264). In some examples, the video encoder 20 may signal the sign for mvd_y if mvd_y is nonzero.
[0106] In some examples, the motion resolution tag, mvd_x == 0 tag, and mvd_y == 0 tag are jointly encoded. Optionally, as one example, VLC codes may be used according to table 2 below:
TABLE 2
<td>mvd_x = 0</td><td>mvd_y == 0</td><td>motion resolution marker</td><td>code word VLC</td>
<td>truth</td><td>truth</td><td>x</td><td> 00</td>
<td>truth</td><td>falsehood</td><td> 1</td><td> 101</td>
<td>truth</td><td>falsehood</td><td> 0</td><td> 1110</td>
<td>falsehood</td><td>truth</td><td> 1</td><td> 100</td>
<td>falsehood</td><td>truth</td><td> 0</td><td> 110</td>
<td>falsehood</td><td>falsehood</td><td> 0</td><td> 1111</td>
<td>falsehood</td><td>falsehood</td><td> 1</td><td> 01</td>
[0107] The video encoder 20 may signal the motion resolution marker to indicate one of a quarter pixel accuracy and an accuracy of one
53 / 59P36759PL00
The eighth pixel for the motion vector. For example, the video encoder 20 may signal the resolution of the motion vector difference between 1/4 pixel or 1/8 pixel. The video encoder 20 may signal the motion resolution marker to indicate the difference between one quarter pixel accuracy and one eighth pixel accuracy for the motion vector when the MVD difference is less than the threshold value. The video encoder 20 may also signal a motion resolution marker to indicate the difference between one quarter pixel accuracy and one eighth pixel accuracy for the motion vector when one or both components of the MVD difference are greater than the threshold value.
[0108] A video decoding device, such as a video decoder 30, can operate in a substantially inverse way with the video encoder 20 to implement the techniques illustrated in FIG. 7. In this way, the video decoder 30 may adaptively select the accuracy of the motion vector for each motion vector, based on the receipt and decoding of a value that indicates a motion vector, such as a motion resolution marker. The video decoder 30 may also receive and decode a threshold value from the block (256). The video decoder 30 can receive and decode a threshold value for each reference frame to limit the amplitude of the difference value, with an accuracy of one eighth of the pixel, of the motion vector for the frame. The threshold value can be received in the slice header. The threshold value can have values of zero, one or two. The threshold is not limited, and can be extended to other values. By encoding information regarding the x and y components of the motion vector difference value, the complexity of the encoded video bit stream can be reduced, which may result in an overall lower bit rate for the encoded video data.
[0109] In an example, a video encoding device, such as a video encoder 20 or a video decoder 30, can encode a value,
53 / 59P36759PL00
Such as the motion resolution marker of FIG. 7, which indicates whether the motion vector of the current video data block has a first sub-pixel accuracy or a second sub-pixel accuracy, such as one-quarter or eighth-pixel accuracy. The second sub-pixel accuracy may be greater than the first sub-pixel accuracy. When the motion vector has a second sub-pixel accuracy, e.g. one eighth pixel accuracy, when the x-component of the motion vector difference value is not zero, and when the y-component of the motion vector difference value is not zero, the video encoder 20 or video decoder 30 can encode information indicating the absolute value of the x vector difference value and encode information indicating the absolute value of the y component of the motion vector difference value. The video encoder 20 or the video decoder 30 may encode together a coded value indicating both the x-component of the motion vector difference value and the y-component of the motion vector difference value.
[0110] The techniques in FIG. 7 may in principle be implemented by any processing unit or processor, whether implemented in hardware, in software, firmware or in a combination thereof, and when it is implemented in software or firmware, an appropriate hardware for executing instructions for software or firmware. For the purposes of example, the techniques in FIG. 7 are referring to the video encoding device, comprising components substantially similar to the video encoder components (FIGS. 1 and 2). The video decoder 30 in FIG. 1 and 3 may perform substantially the reverse described in which operations relative to the illustrated operations encoded described in FIG. 7 for decoding with stream techniques according to the bits illustrated in FIG. 7. It should also be understood that other devices may be configured to implement similar techniques. In addition, the steps illustrated in FIG. 7 can be
53 / 59P36759PL00
Sub-pixel data encoding is performed in a different order or simultaneously, and additional steps may be added and some steps omitted without departing from the techniques of the present invention.
[0111] The method in FIG. 7 is an example of a method comprising determining whether to use a motion vector having a first sub-pixel accuracy or a second sub-pixel accuracy to encode a video unit prediction unit, with a second accuracy greater than the first sub-pixel accuracy, calculating the x component and y component of the motion vector having or the first sub-pixel accuracy , or a second sub-pixel accuracy based on the determination, when the x and y components have a second sub-pixel accuracy, determining the value of the motion vector difference based on the x and y components of the motion vector and the predicted value of the x component and the predicted y component for the motion vector, and encoding the total coded value indicating the value of the motion vector difference for the x component and y component for the motion vector.
[0112] The inverse method may be implemented by the video decoder. The reverse method may, for example, include determining whether the motion vector of the prediction unit of the video data coding unit has a first sub-pixel accuracy or a second sub-pixel accuracy using the motion resolution marker value for the motion vector, wherein the second sub-pixel accuracy is greater than the first sub-pixel accuracy. when the motion vector has a second sub-pixel accuracy, decoding a jointly coded value indicating the value of the motion vector difference for the x component and the y component of the motion vector, and decoding the motion vector based on the value of the motion vector difference value of the predicted component x x predicted component y for the motion vector, and
53 / 59P36759PL00
The prediction data for a coding unit using a decoded motion vector.
[0113] The video encoder 20 or video decoder 30 may determine the motion vector resolution for the current block based on the threshold illustrated in FIG. 7. In particular, the video encoder 20 or video decoder 30 may determine whether the motion vector for the current block has a first sub-pixel accuracy or a second sub-pixel accuracy by determining a threshold associated with the motion vector. The video encoder 20 or the video decoder 30 may determine that the motion vector has a first sub-pixel accuracy when both the x component of the current block motion vector difference values and the y component of the motion vector difference values are greater than the threshold value.
[0114] When at least one of the x component of the motion vector difference value and the y component of the motion vector difference value is less than or equal to the threshold value, the video encoder or video decoder 30 can determine whether the motion vector has a first sub-pixel accuracy, sub-pixel accuracy based on the motion resolution vector value.
[0115] It should be noted that, depending on the example, some of the actions or events of any of the techniques described herein may occur in a different sequence, may be added, combined or omitted at all (e.g., not all of the described actions or events are necessary for techniques implementation). In addition, in some examples, actions or events may occur simultaneously, e.g. as a result of multi-threaded processing, intermittent processing, or multi-processor processing, not sequentially.
[0116] FIG. 8 is a flowchart illustrating an example method of jointly decoding the x and y components of a motion vector difference value and decoding entropy coded data to form the current block.
or second tag
53 / 59P36759PL00
EP 2 727 353 B1
<td>Method steps 280</td><td>on</td><td>FIG.</td><td>8 basically</td><td colspan="2">they are the opposite</td>
<td>way 150 on</td><td>FIG</td><td> . 4.</td><td>In the way</td><td> 280,</td><td>unit 72</td>
<td>traffic compensation</td><td>or</td><td>other</td><td colspan="2">decoder unit</td><td>30 video can</td>
<td colspan="2">predict current</td><td>Unit</td><td>(282). As</td><td>Hello</td><td>predictions</td>
of the current block, motion compensation unit 72 may decode jointly encoded components of the motion vector difference values (284). The video decoder may decode jointly encoded motion vector difference components according to the techniques of the method 320 illustrated in FIG. 9. The value of the motion vector difference for the current block can have the x component in the form mvd_x and the y component in the form mvd_y. In total, the encoded components of the motion vector difference values may include the x and y components of the motion vector difference values for the current block, as well as other information about the motion vector difference value, such as one or more values indicating whether the x and y components of the motion vector difference are zero or not, value indicating the value of the sign of the x and / or y component of the value of the motion vector difference, and a value indicating the absolute value of the motion vector difference value component as some non-limiting examples.
[0117] The motion compensation unit 44 of the video encoder 20 may also receive a motion vector predictor for the current vector of the current block (286). The motion vector predictor is a motion vector that motion compensation unit 72 uses to calculate the motion vector difference value for the current block. In some examples, the motion vector predictor may be a motion vector of one of the adjacent PU of the current motion compensation block may also determine a motion vector predictor based on the co-blocked block of one of the reference frames stored in the memory of the reference frames 82. The motion vector predictor can have the x component in the form p_x and the y component in the form p_y. The motion vector predictor may have been determined by the video encoder 20 during the coding phase such that the multi-block predictor Unit 72
53 / 59P36759PL00
The motion vector minimizes the difference of motion vector for the current block and motion vector predictor. Based on the motion vector predictor, the video compensation unit 72 of the video encoder 20 may calculate the motion vector for the current block (286). The video decoder 30 may calculate the motion vector as the sum of the motion vector and motion vector predictor components, <p_x + mvd_x, p_y + mvd_y> (288).
[0118] The entropy coding unit 70 may receive entropy coded data for the current block (290), and decode data such as transformed block coefficients with a coded length of the series to recover the transformed block coefficients (292). The entropy coding unit 70 can inversely scan the reproduced coefficients to reorganize the coefficients from one or more one-dimensional coefficient vectors into a two-dimensional transformed coefficient block (294).
[0119] Inverse quantization unit 76 may inverse quantize a two-dimensional transformation coefficient block, and inverse transformation unit 78 may convert inverse quantized coefficients to form a block of unconverted pixels (296). The residual block may contain pixel differences between the predictive video block that is indicated by the motion vector for the current block and the current video block. The video decoder 30 may then combine the residual block with the predictor block to form the current block of the current frame (298).
[0120] The techniques in FIG 8 can generally be implemented by any processing unit or processor, whether implemented in hardware, in software, firmware or in a combination thereof, and when it is implemented in software or firmware, an appropriate hardware for executing instructions for software or firmware. For the purposes of example, the techniques in FIG. 8 are described in
53 / 59P36759PL00
With reference to a video decoding device that may include components substantially similar to the video decoder components (FIGS. 1 and 3), it should be understood, however, that other devices may be configured to implement similar techniques. In addition, the steps illustrated in FIG. 8 may be performed in a different order or simultaneously, and additional steps may be added and some steps omitted without departing from the techniques of the present invention.
[0121] FIG. 9 is a flowchart illustrating an example of how to decode the x and y components of a motion vector difference value together. Steps of the method 320 in FIG. 9 are substantially the reverse of the steps of the method 220 in FIG. 6. Similarly, method 320 may substantially correspond to step 284 in FIG. 8. In method 320 in FIG. 9, the motion compensation unit 72 of the video decoder 30 or other video decoder unit 30 may receive a combined coded representation of the motion vector for the current video data block. The video decoder 30 may also specify a motion vector predictor that the video decoder, such as the video encoder 20, may have previously determined and encoded. The video decoder 30 may calculate the motion vector for the current block as the difference of the sum of the motion vector predictor for the current video data block and the motion vector predictor specified for the current video data block.
[0122] To determine the components of the motion vector difference values, the motion compensation unit 72 of the video decoder 30 may decode information indicating whether the absolute value of mvd_x, the component x of the value of the motion vector difference, is greater than zero (322). The motion compensation unit 72 may then decode information indicating whether the absolute value of the y component (mvd_y) of the motion vector difference value is greater than zero (324).
[0123] When the absolute value of the x component of the motion vector difference value is greater than zero, the motion compensation unit 72 may decode information indicating the absolute value
53 / 59P36759PL00
X 2 component of the motion vector difference value (326). And when the absolute value of the y component of the motion vector difference value is greater than zero, motion compensation unit 72 may decode information indicating the absolute value of the y component of the motion vector difference value (328). In some examples, the video decoder 30 may decode information indicating the absolute value of the x and y components of the motion vector difference value as the absolute values of mvd_x / 2 -1 and mvd_y / 2 -1, respectively.
[0124] When the absolute value of the x component of the motion vector difference value is greater than zero, the motion compensation unit 72 may decode the sign of the x component of the motion vector difference value (330). When the absolute value of the y component of the motion vector difference value is greater than zero, motion compensation unit 72 may decode the sign of the y component of the motion vector difference value (332).
[0125] The techniques in FIG 9 can generally be implemented by any processing unit or processor, whether implemented in hardware, in software, firmware or in a combination thereof, and when it is implemented in software or firmware, an appropriate hardware for executing software or firmware instructions. For the purposes of example, the techniques in FIG. 9 are described with reference to a video encoding device that may include components substantially similar to the components of a video decoder (FIGS. 1 and 3), however, it should be understood that other devices may be configured to implement similar techniques. In addition, the steps illustrated in FIG. 9 may be performed in a different order or simultaneously, and additional steps may be added and some steps omitted without departing from the techniques of the present invention.
[0126] Thus, the method of FIG. 9 is an example of a method comprising encoding information indicating whether a value
53 / 59P36759PL00
The absolute x component of the motion vector difference value for the current video data block is greater than zero, encoding information indicating whether the absolute value of the y component of the motion vector difference value is greater than zero when the absolute value of the x component of the motion vector difference value is greater than zero, coding information indicating the absolute value of the x component of the motion vector difference value, when the absolute value of the y component of the motion vector difference value is greater than zero, encoding information indicating the absolute value of the y component of the motion vector difference value, when the absolute value of the x component of the motion vector difference value is greater than zero, encoding the sign of the x component of the motion vector difference value, and when the absolute value of the y component of the motion vector difference value is greater than zero, encoding the sign of the y component of the motion vector difference value. Thus, the method of FIG. 9 is another example of a method of jointly encoding data of a motion vector difference value. In addition, the video decoder 30 may also be configured to perform the video decoding method substantially similar to the method in FIG. 7. Some of the techniques in this document have been experimentally evaluated. In particular, the techniques in this document for adaptive signaling of sub-pixel accuracy have been implemented for the HM3.0 model and were simulated under typical test conditions.
Performance is compared with the base HM3.0 model in terms of bit rate using the Bj0ntegaard Delta (BD) method. The simulation results showed an average of 0.4% throughput savings in the BD method in high-performance configurations and an average of 0.6% throughput savings in the BD method in low-complex configurations. Table 3 below summarizes the experimental results.
53 / 59P36759PL00
EP 2 727 353 B1
TABLE 3
<td rowspan="3"></td><td colspan="2" rowspan="2">Random configuration Access HE (direct access, high performance)</td><td colspan="3">Random configuration Access LC (direct access,</td>
<td>little</td><td colspan="2">complexity)</td>
<td>Y</td><td>UV</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td> 0, 0</td><td> -0,3 0,0</td><td> 0, 0</td><td> -0,4</td><td> -0,1</td>
<td>Class B</td><td> -0,3</td><td> -0,3 -0,4</td><td> -0,3</td><td> -0,2</td><td> -0,2</td>
<td>Class C</td><td> -0,5</td><td> -0,4 -0,3</td><td> -0,6</td><td> -0,7</td><td> -0,7</td>
<td>Class D</td><td> -0,9</td><td> -0,7 -1.0</td><td> -1,3</td><td> -0,9</td><td> -1,0</td>
<td>E class</td><td></td><td></td><td></td><td></td><td></td>
<td>altogether</td><td> -0,4</td><td> -0,4 -0,4</td><td> -0,6</td><td> -0,6</td><td> -0,5</td>
<td>Time</td><td></td><td> 110%</td><td></td><td> 116%</td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td> 101%</td><td></td><td> 102%</td><td></td>
<td>Decoding. [%]</td><td></td><td></td><td></td><td></td><td></td>
<td rowspan="3"></td><td colspan="2">Low delay configuration B HE</td><td colspan="3">Low delay B LC configuration</td>
<td>(small high</td><td>delay, performance)</td><td>(small</td><td colspan="2">delay, low complexity)</td>
<td>Y</td><td>UV</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td></td><td></td><td></td><td></td>
<td>Class B</td><td> -0,1</td><td> 0,1 -0,1</td><td> -0,1</td><td> -0,4</td><td> -0,4</td>
<td>Class C</td><td> -0,6</td><td> -0,6 -0,6</td><td> -0,8</td><td> -0,4</td><td> -0,5</td>
<td>Class D</td><td> -1,2</td><td> -1,4 -1.7</td><td> -1,8</td><td> 0,9</td><td> 2,2</td>
<td>E class</td><td> 0,4</td><td> -0,4 -0.8</td><td> 0,7</td><td> 1,1</td><td> 0,5</td>
<td>altogether</td><td> -0,4</td><td> -0,5 -0,8</td><td> -0,6</td><td> 0,2</td><td> 0,4</td>
<td>Time</td><td></td><td> 110%</td><td></td><td> 117%</td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td> 101%</td><td></td><td> 103%</td><td></td>
<td>Decoding. [%]</td><td></td><td></td><td></td><td></td><td></td>
[0127] It should be noted that depending on the example, some of the actions or events of any of the techniques described herein may occur in a different sequence, may be added, combined or omitted at all (e.g., not all of the described actions or events are necessary for the implementation of techniques). Furthermore, in some examples, actions or events may occur simultaneously, e.g. as a result
53 / 59P36759PL00
For multi-threaded processing, intermittent processing, or multiple processors, not sequentially.
[0128] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, functions may be recorded on or transmitted via a computer readable medium as one or more instructions or code, and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media that correspond to real media, such as data storage media, or communication media including any medium that allows the computer program to be transferred from one location to another, e.g., in accordance with a communication protocol. In this way, the computer-readable media may in principle correspond to (1) real computer-readable storage media that are non-transitive or (2) a communication medium, such as a signal or a carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to obtain instructions, code and / or data structures for implementing the techniques described in this document. A computer program product may include a computer-readable medium.
[0129] By way of example and not limitation, such computer readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical storage disk, magnetic storage disk or other magnetic storage devices, flash memory or any other storage media , which can be used to store the desired program code in the form of instructions or data structures and which can be accessed by a computer. In addition, any
53 / 59P36759PL00
Fiber optic, subscriber (DSL) or infrared, wave connection is correctly called computer-readable medium. For example, if the instructions are transmitted from a website, server or other remote source using a coaxial cable, twisted pair cable, digital wireless link such radio and microwaves, then coaxial cable, fiber optic cable, twisted pair, digital subscriber link (DSL) or wireless technologies such as infrared, radio waves and microwaves are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transitive media, but instead relate to non-transitive, real storage media. The disk and disc used in this document include a compact disc (CD), a laser disc, an optical disc, a universal digital disc (DVD), a floppy disk and a Blu-ray disc, with the disks typically playing magnetically while the discs playing optically using lasers. Combinations of the above should also be included in the field of computer-readable media.
[0130] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, special purpose integrated circuits (ASICs), directly programmable gate arrays (FPGAs) or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the above structure or any other structure suitable for implementing the techniques described herein. In addition, in some respects, the functionality described in this document may be provided in dedicated hardware and / or software modules
53 / 59P36759PL00
EP 2 727 353 B1 configured for encoding and decoding, or embedded in a combined coding and decoding system. In addition, the techniques could be fully implemented in one or more logic circuits or elements.
[0131] The techniques of the present invention may be implemented in a wide variety of devices or devices, including a wireless headset, integrated circuit (IC), or integrated circuit IC (e.g., chipset). Various components, modules or units are described in this document to emphasize the functional aspects of the devices configured to perform the techniques presented, but do not necessarily require implementation by other hardware units. Instead, as described above, the various units may be combined into a hardware coding decoding unit or provided by a set of cooperating hardware units, including one or more processors as described above, in conjunction with the respective software and / or firmware. [0132] Various examples have been described. These and other examples fall within the scope of the following claims.
Qualcomm Incorporated Proxy:
53 / 59P36759PL00
EP 2 727 353 B1
Contents77
31 members in 21 offices
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 201161504150 | United States of America | P | |
| 201161554398 | United States of America | P | |
| 201213536218 | United States of America | A | |
| 12733835 | European Patent Office (EPO) | A | |
| 2012045078 | United States of America | W | |
| EP20120733835 | – | – | – |
| US201161504150P | – | – | – |
| US201161554398P | – | – | – |
| US201213536218 | – | – | – |
| WO2012US45078 | – | – | – |
Members31
| Document | Office | Kind | |
|---|---|---|---|
| US2013003849A1 | United States of America | A1 | |
| CA2840728A1 | Canada | A1 | |
| WO2013006483A1 | World Intellectual Property Organization (WIPO) | A1 | |
| SG195279A1 | Singapore | A1 | |
| AU2012279234A1 | Australia | A1 | |
| MX2013014936A | Mexico | A | |
| CN103703781A | China | A | |
| KR20140043807A | Republic of Korea | A | |
| EP2727353A1 | European Patent Office (EPO) | A1 | |
| JP2014523714A | Japan | A | |
| US2014341297A1 | United States of America | A1 | |
| AU2012279234B2 | Australia | B2 | |
| EP2727353B1 | European Patent Office (EPO) | B1 | |
| RU2014103485A | Russian Federation | A | |
| ES2546678T3 | Spain | T3 | |
| DK2727353T3 | Denmark | T3 | |
| PT2727353E | Portugal | E | |
| PL2727353T3This record | Poland | T3 | |
| HUE025216T2 | Hungary | T2 | |
| UA110981C2 | Ukraine | C2 | |
| ZA201400760B | South Africa | B | |
| RU2580054C2 | Russian Federation | C2 | |
| KR101660133B1 | Republic of Korea | B1 | |
| JP6067694B2 | Japan | B2 | |
| BR112013033809A2 | Brazil | A2 | |
| CN103703781B | China | B | |
| CA2840728C | Canada | C | |
| IL230016A | Israel | A | |
| MY163990A | Malaysia | A | |
| US10536701B2 | United States of America | B2 | |
| BR112013033809B1 | Brazil | B1 |
Numbers
- Publication, DOCDB
- 2727353
- Publication, EPODOC
- PL2727353T
- Application
- 733835
- Application, DOCDB
- 12733835
- Application, EPODOC
- PL20120733835T
Titles2
- English
- VIDEO CODING USING ADAPTIVE MOTION VECTOR RESOLUTION
- Polish
- Kodowanie wideo z wykorzystaniem adaptacyjnej rozdzielczości wektora ruchu
Classification
- CPC, 8
- H04N19/13
- H04N19/513
- H04N19/517
- H04N19/52
- H04N19/523
- H04N19/61
- H04N19/70
- H04N19/91
- IPC, 8
- H04N19 52
- H04N19 13
- H04N19 513
- H04N19 517
- H04N19 523
- H04N19 61
- H04N19 70
- H04N19 91