US10104376B2 - Nested entropy encoding - Google Patents

Nested entropy encoding Download PDF

Info

Publication number
US10104376B2
US10104376B2 US15/906,582 US201815906582A US10104376B2 US 10104376 B2 US10104376 B2 US 10104376B2 US 201815906582 A US201815906582 A US 201815906582A US 10104376 B2 US10104376 B2 US 10104376B2
Authority
US
United States
Prior art keywords
motion vector
block
motion vectors
candidate
current block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US15/906,582
Other versions
US20180192055A1 (en
Inventor
Yeping Su
Christopher A. Segall
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dolby International AB
Original Assignee
Dolby International AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US15/906,582 priority Critical patent/US10104376B2/en
Application filed by Dolby International AB filed Critical Dolby International AB
Assigned to DOLBY INTERNATIONAL AB reassignment DOLBY INTERNATIONAL AB ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHARP KABUSHIKI KAISHA
Assigned to SHARP KABUSHIKI KAISHA reassignment SHARP KABUSHIKI KAISHA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHARP LABORATORIES OF AMERICA, INC.
Assigned to SHARP LABORATORIES OF AMERICA, INC reassignment SHARP LABORATORIES OF AMERICA, INC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SEGALL, CHRISTOPHER A., SU, YEPING
Publication of US20180192055A1 publication Critical patent/US20180192055A1/en
Priority to US16/130,875 priority patent/US10397578B2/en
Publication of US10104376B2 publication Critical patent/US10104376B2/en
Application granted granted Critical
Priority to US16/522,232 priority patent/US10757413B2/en
Priority to US16/999,612 priority patent/US11457216B2/en
Priority to US17/952,725 priority patent/US11973949B2/en
Priority to US18/618,697 priority patent/US20240244210A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6076Selection between compressors of the same type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • Modern video transmission and display systems and particularly those systems that present high-definition content, require significant data compression in order to produce a visually acceptable motion picture, because transmission media simply cannot transmit an uncompressed sequence of video frames at a fast enough rate to appear as continuous motion to the human eye.
  • the compression technique used should not unduly sacrifice image quality by discarding too much frame data.
  • video compression and encoding standards such as MPEG and H.264 take advantage of temporal redundancy in the sequence of video frames.
  • adjacent frames typically show the same objects or features, which may move slightly from one frame to another due either to the movement of the object in the scene being shot (producing local motion in a frame), the movement of the camera shooting the scene (producing global motion), or both.
  • Video compression standards employ motion estimation to define regions in an image, which may correspond to objects, and associate with those regions a motion vector that describes the inter-frame movement of the content in each region so as to avoid redundant encoding and transmission of objects or patterns that appear in more than one sequential frame, despite appearing at slightly different locations in sequential frames.
  • Motion vectors may be represented by a translational model or many other models that approximate the motion of a real video camera, such as rotation, translation, or zoom. Accordingly, motion estimation is the process of calculating and encoding motion vectors as a substitute for duplicating the encoding of similar information in sequential frames.
  • motion vectors may relate to the whole image, more often they relate to small regions if the image, such as rectangular blocks, arbitrary shapes, boundaries of objects, or even individual pixels.
  • One of the popular methods is block-matching, in which the current image is subdivided into rectangular blocks of pixels, such as 4.times.4 pixels, 4.times.8 pixels, 8.times.8 pixels, 16.times.16 pixels, etc., and a motion vector (or displacement vector) is estimated for each block by searching for the closest-matching block in the reference image, within a pre-defined search region of a subsequent frame.
  • MVC motion vector competition
  • the coding of motion vectors can exploit redundancies in situations where motion vectors between sequential frames do not change drastically, by identifying an optimal predictor, from a limited set of previously-encoded candidates, so as to minimize the bit length of the differential.
  • the predictor set usually contains both spatial motion vector neighbors and temporally co-located motion vectors, and possibly spatiotemporal vectors.
  • FIGS. 1A and 1B generally illustrate motion vector competition.
  • FIG. 2 shows an exemplary system for encoding and decoding motion vectors.
  • FIG. 3 shows a nested entropy encoding structure.
  • FIG. 4 shows a system using the nested entropy encoding structure depicted in FIG. 3 .
  • FIG. 5A shows an exemplary encoder capable of trimming a candidate set of motion vectors.
  • FIG. 5B shows an exemplary method of trimming a candidate set of motion vectors used by the encoder of FIG. 5 .
  • FIG. 6 generally illustrates an alternate embodiment of encoding a temporally co-located motion vector in a candidate set of motion vectors.
  • This motion vector may be encoded with reference to a candidate set of motion vectors V.sub.a, V.sub.X, V.sub.y, and V.
  • FIG. 1A also shows the blocks A′, X′, Y′, and Z′ that the respective motion vectors would point to if used when encoding the candidate block.
  • motion vector V.sub.Z would be selected to minimize the code length of the differential V.sub.d, which in that instance, would only require a value of “1” in a single component (down) of the vector. All other differential motion vectors either would require encoding two components or would have a larger value for a single component.
  • MVC motion vector competition
  • each block may represent a single pixel, and many more motion vectors could be included in the candidate set.
  • all motion vectors previously calculated in the current frame could be included in the candidate set, as well as any motion vectors calculated for preceding frames.
  • the candidate set may include a desired number of arbitrary motion vectors useful to capture large and sudden motions in the scene.
  • the selected motion vector Vz will need to be encoded.
  • One straightforward approach is for an encoder 10 to assign a value to each candidate motion vector in a table 14 of symbols, which assuming a variable-length entropy encoding method such as Huffman or arithmetic encoding, might look something like:
  • the encoder and decoder will preferably collect statistics as the bitstream is encoded and decoded and rearrange the assignments of symbols to the motion vector candidates, in the respective tables 14 and 16, so that at any given time the motion vector having the highest frequency receives the shortest symbol, etc.
  • This process is generally referred to as entropy coding, and will usually result in significant, lossless compression of the bitstream.
  • the encoder 10 and the decoder 12 use the same methodology to construct and update the tables 14 and 16 initialized from the beginning of the bitstream, respectively, so that for every symbol, the table 16 used to encode that symbol is identical to the table used to decode the symbol.
  • the system shown in FIG. 2 can result in significant overhead when signaling which predictor is chosen from the set of candidate motion vectors. This is particularly true if the number of predictors is large. However, the more predictors used, the more efficiency is gained when encoding the differential motion vector. In order to further reduce the overhead of signaling which predictor is chosen, additional techniques may be employed.
  • the set of candidate motion vector predictors may be trimmed to eliminate duplicate vectors.
  • the vectors V.sub.x, V.sub.y are identical, hence one of the motion vectors cam be trimmed, and as a result, the largest symbol 1110 in the table above can be eliminated.
  • knowing the size of the trimmed motion predictor set means that the last bit of the last symbol in the trimmed set can be omitted, e.g.
  • this symbol may simply be encoded as 11 give that this bit sequence distinguishes over all the previous symbols in the table, and the decoder knows from the size of the trimmed set that there are no further symbols.
  • coding efficiency gains could theoretically be achieved by signaling a selected one of a group of ordered candidate sets. This gain in coding efficiency could work, not only in tandem with techniques such as motion vector trimming and using truncated unary codes, but actually as a substitute for those techniques, i.e. preserving spatial and temporal independence when parsing the bitstream by not trimming duplicate candidate motion vectors and not truncating the highest-bit-length symbol.
  • an encoder or a decoder may utilize a nested entropy encoding structure where one of a plurality of coded symbols 18 is assigned to each of a plurality of entropy-coded candidate set of motion vectors, shown as separate VLC tables 20 .
  • any particular one of the VLC tables 20 may include a motion vector set that differs from that another VLC table 20 , meaning that a particular motion vector that appears in one VLC table 20 does not need to appear in all VLC tables 20 .
  • the encoder may signal one of the symbols 18 that corresponds to that one of the VLC tables 20 (candidate sets) for which the signaled motion vector has the highest frequency and therefore the smallest code length. Coded symbols 18 identifying a respective candidate set can themselves be entropy-coded, if desired, or may alternatively be encoded with a fixed length code, or any other appropriate coding technique.
  • Implicit in the foregoing discussion is the assumption that there is some non-random distribution among the plurality of all possible candidate sets of motion vectors. If, for example, the respective individual candidate sets simply comprise all permutations of the symbols included in each, randomly distributed with respect to each other, there would be no reason to expect a net gain in coding efficiency because the number of candidate sets of motion vectors, needed to guarantee that a sufficient number of candidate motion vectors appear in a candidate set high enough in the table to benefit from a reduced code length, would be too large. Essentially, what efficiency gained in coding the selected one of the candidate motion vector is lost in the overhead of coding the symbol associated with the particular candidate set.
  • the disclosed nested entropy encoding structure would be expected to further compress the bitstream only if some of the possible permutations of symbols in the candidate set are more likely than others, such that the higher-code-length candidate sets are not used as often as the lower-code-length candidate sets.
  • an encoder 10 may have access to syntax symbols from a syntax model 24 that defines a set of syntax elements in the encoded data to be used to differentiate multiple VLC tables of candidate sets of motion vectors, and therefore also defines a set of syntax elements used by the encoder and decoder to determine the VLC table with which to encode the selected ones of the candidate motion vectors with code symbols.
  • an encoder 10 (and hence a decoder 12 ) will include a learning agent that tries different combinations of syntax elements so as to intelligently maximize coding efficiency. Stated differently, the encoder 10 intelligently optimizes coding efficiency by iteratively choosing different combinations of available said syntax elements, measuring a change in coding efficiency following each chosen combination, and responding accordingly by replacing one or more syntax elements in the combination.
  • the encoder 10 may then use an applicable motion vector symbol for the selected motion vector for the current block from a VLC table 28 a, 28 b, 28 c, 28 d, etc, and encode the motion vector symbol in a bitstream to the decoder 12 .
  • the encoder 10 also updates the order of the motion vector symbols in the VLC table used based on the selected symbol. In one embodiment, any change in the frequency distribution of symbols in a table results in the symbols being reordered.
  • the encoder 10 (and the decoder 12 ) keeps track of the most frequently-occurring symbol in the un-reordered set and ensures that that symbol is at the top of the table, i.e.
  • the encoder need not encode the syntax symbol along with the motion vector symbol, so long as the decoder 12 uses the same syntax model to determine the particular VLC table 30 a, 30 b, 30 c, and 30 d, from which to extract the received motion vector symbol.
  • the encoder 10 uses the syntax of the previously-encoded data to differentiate the VLC tables, updating the order of symbols in those tables in the process, a very high degree of coding efficiency can be achieved.
  • the decoder 12 When the decoder 12 receives a coded bitstream from the encoder 10 , the decoder parses the bitstream to determine the relevant VLC table for a received symbol, using a syntax model 26 if available, to decode the received symbols to identify the selected motion vector from the candidate set. The decoder also updates the respective VLC tables in the same manner as does the encoder 10 .
  • the motion vector predictor set may contain candidate motion vectors spatially predictive of a selected motion vector (i.e. candidates in the same frame as the current block), candidate motion vectors temporally predictive of a selected motion vector (i.e. candidates at the co-located block in the frame preceding the current block), and candidate motion vectors spatiotemporally predictive of a selected motion vector (i.e. candidates in the frame preceding the current block spatially offset from the co-located block).
  • the disclosed nested entropy encoding structure permits a decoder to parse a bitstream without trimming candidate motion vectors or truncating code symbols, thereby preserving spatial and temporal independence in the parsing process, and preserving error resilience while at the same time achieving significant coding efficiencies.
  • the nested entropy encoding structure can be used in tandem with the techniques of trimming candidate motion vectors or truncating code symbols, while at least partially preserving error resilience.
  • an encoder 10 may include a candidate motion vector set construction module 40 that retrieves from one or more buffers 28 the full set of candidate motion vectors applicable to a current block being encoded.
  • a candidate motion vector set trimming module 42 then selectively trims the set of candidate motion vectors according to predefined rules, by applying a syntax model 24 to the set of candidate motion vectors, prior to encoding a selected motion vector with an encoding module 44 , which in turn selects a symbol based on the trimmed set of candidates.
  • One potential predefined rule may prevent the candidate motion vector set module 42 from trimming motion vector predictors derived from previously reconstructed/transmitted frames.
  • the two motion vector predictors are both included in the trimmed set. This preserves temporal independence.
  • a predefined rule may prevent the candidate motion vector set trimming module 42 from trimming motion vector predictors derived from regions that are located in different slices, so as to preserve spatial independence.
  • a predefined rule may prevent the candidate motion vector set trimming module 42 from trimming motion vector predictors derived from regions that are located in different entropy slices, where an entropy slice is a unit of the bit-stream that may be parsed without reference to other data in the current frame.
  • FIG. 5B shows a generalized technique for applying any one of a wide variety of trimming rule sets that are signaled using a novel flag.
  • an encoder 10 receives a candidate set of motion vector predictors from a buffer 28 , for example.
  • a flag is signaled by the encoder (or received by the decoder) that is used at decision step 53 to indicate whether trimming is applied, and optionally a trimming rule set as well that may be used to define which vectors will be trimmed. If the flag indicates that no trimming is to occur, the technique proceeds to step 60 and encodes the selected motion vector using the full set of candidate motion vectors.
  • the subset of duplicate motion vectors is identified in step 54 .
  • the subset of duplicate motion vectors can be considered in one embodiment as a maximized collection of motion vectors for which each member of the subset has an identical motion vector not included in the subset.
  • the subset may be seen as one that excludes from the subset any motion vector in the full set of candidates that has no duplicate an also excludes from the subset exactly one motion vector in a collection of identical duplicates.
  • selected candidate motion vectors may be selectively removed from the subset of duplicates. It is this step that enables spatial and/or temporal independence to be preserved.
  • candidate motion vectors can also be added to the subset of duplicate motion vectors, for reasons explained in more detail below.
  • the purpose of steps 54 and 56 is simply to apply a rule set to identify those motion vectors that will be trimmed from the full candidate set. Once this subset has been identified, the candidate motion vectors in this subset is trimmed at step 58 and the encoder then encodes the selected motion vector, from those remaining, based on the size of the trimmed set at step 60 .
  • temporal_mvp_flag used by the encoder to signal into the bitstream a true/false condition of whether the selected motion vector, from the candidate set, is a temporally-located motion vector.
  • the applicable rule set for this flag is intended to preserve temporal independence. If the temporal_mvp_flag indicates that a temporal predictor is selected by the encoder, the temporal predictor subset in the candidate set will not be trimmed, because to do so would create temporal dependency. However, the spatial predictor subset of the candidate set can be trimmed because the decoder 12 has foreknowledge of the size of the temporal predictor subset.
  • the candidate set can not only be trimmed of duplicates, but in some embodiments can also be trimmed of temporal predictors, resulting in a drastically diminished candidate set that needs to be encoded. It should also be recognized that, if an applicable rule set permits both temporal and spatial dependencies, the a temporal_mvp_flag can be used, regardless of its value, to trim duplicates of the temporal or spatial subset signaled by the flag and to trim the entire subset not signaled by the flag.
  • the inventors have determined that there is a reasonable correlation between the value of the disclosed temporal_mvp_flag and the value of a constrained_intra_pred_flag, associated with a frame, and often used in an encoded video bit stream. Specifically, the inventors have determined that there is a strong correlation between these two flags when the value of the constrained_intrapred_flag is 1, and a substantially less strong correlation when the value of the constrained_intra_pred_flag is 0.
  • the encoder may optionally be configured to not encode the disclosed temporal_mvp_flag when the constrained_intrapred_flag is set to 1 for the frame of a current pixel, such that the decoder will simply insert or assume an equal value for the temporal_mvp_flag in that instance, and to otherwise encode the temporal_mvp_flag.
  • the disclosed temporal_mvp_flag may simply be assigned a value equal to the constrained_intra_pred_flag, but preferably in this latter circumstance the value of a 0 should be associated in the defined rule set as causing the result of simply trimming duplicate vectors in the candidate set.
  • the disclosed nested entropy encoding structure can be additionally applied to this temporal_mvp_flag syntax.
  • top and left neighboring flags are used to determine the predictor set template used in the entropy coding of temporal_mvp_flag. This may be beneficial if, as is the usual case, the encoder and decoder exclusively assigns entropy symbols to coded values, and also where the temporal_mvp_flag may take on many values.
  • the predictor set template for the coding of the selected motion vector for the candidate set is made depending on the temporal_mvp_flag of the current block.
  • another embodiment of the invention signals if the motion vector predictor is equal to motion vectors derived from the current frame or motion vectors derived from a previously reconstructed/transmitted frame, as was previously described with respect to the temporal_mvp_flag.
  • the flag is sent indexed by the number of unique motion vector predictors derived from the current frame.
  • a predictor set template in this embodiment could distinguish all possible combinations of a first code value that reflects the combination of flags in the two blocks to the left and above the current block, e.g. 00, 01, 10, 11 (entropy coded as 0, 10, 110, and 1110) as indexed by a second code value reflective of the number of unique motion vectors in the candidate set.
  • a context template in this embodiment could identify all possible combinations of a first code value that reflects whether the flags in the two blocks to the left and above the current block are identical or not, e.g. 00 and 11 entropy coded as 0 and 01 and 10 entropy coded as 10, for example, and a second code value reflective of the number of unique motion vectors in the candidate set.
  • An encoding scheme may include a candidate set of motion vectors that includes a large number of temporally co-located motion vectors from each of a plurality of frames, such as the one illustrated in FIG. 6 .
  • the smallest-sized block of pixels used in the encoding scheme e.g.
  • a 2.times.2 block may be grouped in larger blocks 62 , where the motion vectors stored in the buffer, and later used as co-located motion vectors when encoding subsequent blocks, may instead be the average motion vector 66 of all the selected vectors in the respective group.
  • a vector median operation or a component-wise medial operation may be used, as can any other standard operation such as maximum, minimum, or a combination of maximum and minimum operations, commonly called a dilate, erode, open, or close operation.
  • the operation used to group smaller-sized blocks of pixels into larger blocks may be signaled in a bit-stream from an encoder to a decoder.
  • the operation may be signaled in a sequence parameter set, or alternatively, the operation may be signaled in the picture parameter set, slice header, or for any defined group of pixels.
  • the operation can be determined from a level or profile identifier that is signaled in the bit-stream.
  • the number of smallest sized blocks that are grouped to larger blocks may be signaled in a bit-stream from an encoder to a decoder.
  • said number may signaled in the sequence parameter set, or alternatively the number may be signaled in the picture parameter set, slice header, or for any defined group of pixels.
  • the number may be determined from a level or profile identifier that is signaled in the bit-stream.
  • the number may be expressed as a number of rows of smallest-sized blocks and a number of column of smallest-sized blocks.
  • an encoder and/or a decoder may be used in any one of a number of hardware, firmware, or software implementations.
  • an encoder may be used in a set-top recorder, a server, desktop computer, etc.
  • a decoder may be implemented in a display device, a set-top cable box, a set-top recorder, a server, desktop computer, etc.
  • firmware and/or software the various components of the disclosed encoder and decoder may access any available processing device and storage to perform the described techniques.

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Methods and systems for improving coding decoding efficiency of video by providing a syntax modeler, a buffer, and a decoder. The syntax modeler may associate a first sequence of symbols with syntax elements. The buffer may store tables, each represented by a symbol in the first sequence, and each used to associate a respective symbol in a second sequence of symbols with encoded data. The decoder decodes the data into a bitstream using the second sequence retrieved from a table.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of co-pending U.S. application Ser. No. 15/623,627, filed Jun. 15, 2017, which is a continuation of U.S. application Ser. No. 15/189,307, filed Jun. 22, 2016, now issued as U.S. Pat. No. 9,794,570, which is a continuation of U.S. application Ser. No. 14/824,305, filed Aug. 12, 2015, now issued as U.S. Pat. No. 9,414,092, which is a continuation of U.S. application Ser. No. 12/896,795, filed Oct. 1, 2010. The contents of the foregoing applications are hereby incorporated by reference in their entirety.
BACKGROUND OF THE INVENTION
Modern video transmission and display systems, and particularly those systems that present high-definition content, require significant data compression in order to produce a visually acceptable motion picture, because transmission media simply cannot transmit an uncompressed sequence of video frames at a fast enough rate to appear as continuous motion to the human eye. At the same time, and again to produce a visually-acceptable picture, the compression technique used should not unduly sacrifice image quality by discarding too much frame data.
To achieve these dual, and conflicting goals, video compression and encoding standards such as MPEG and H.264 take advantage of temporal redundancy in the sequence of video frames. In other words, in the vast majority of video sequences of interest to a person, adjacent frames typically show the same objects or features, which may move slightly from one frame to another due either to the movement of the object in the scene being shot (producing local motion in a frame), the movement of the camera shooting the scene (producing global motion), or both.
Video compression standards employ motion estimation to define regions in an image, which may correspond to objects, and associate with those regions a motion vector that describes the inter-frame movement of the content in each region so as to avoid redundant encoding and transmission of objects or patterns that appear in more than one sequential frame, despite appearing at slightly different locations in sequential frames. Motion vectors may be represented by a translational model or many other models that approximate the motion of a real video camera, such as rotation, translation, or zoom. Accordingly, motion estimation is the process of calculating and encoding motion vectors as a substitute for duplicating the encoding of similar information in sequential frames.
Though motion vectors may relate to the whole image, more often they relate to small regions if the image, such as rectangular blocks, arbitrary shapes, boundaries of objects, or even individual pixels. There are various methods for finding motion vectors. One of the popular methods is block-matching, in which the current image is subdivided into rectangular blocks of pixels, such as 4.times.4 pixels, 4.times.8 pixels, 8.times.8 pixels, 16.times.16 pixels, etc., and a motion vector (or displacement vector) is estimated for each block by searching for the closest-matching block in the reference image, within a pre-defined search region of a subsequent frame.
As implied by this discussion, the use of motion vectors improves coding efficiency for any particular block of an image by permitting a block to be encoded only in terms of a motion vector pointing to a corresponding block in another frame, and a “residual” or differential between the target and reference blocks. The goal is therefore to determine a motion vector for a block in a way that minimizes the differential that needs to be encoded. Accordingly, numerous variations of block matching exist, differing in the definition of the size and placement of blocks, the method of searching, the criterion for matching blocks in the current and reference frame, and several other aspects.
With conventional motion compensation, an encoder performs motion estimation and signals the motion vectors as part of the bitstream. The bits spent on sending motion vectors can account for a significant portion of the overall bit budget, especially for low bit rate applications. Recently, motion vector competition (MVC) techniques have been proposed to reduce the amount of motion information in the compressed bitstream. MVC improves the coding of motion vector data by differentially encoding the motion vectors themselves in terms of a motion vector predictor and a motion vector differential, where the motion vector predictor is usually selected by the encoder from a number of candidates so as to optimize rate distortion, where the candidate motion vectors consist of previously encoded motion vectors for either adjacent blocks in the same frame and/or a subset of motion vectors in a preceding frame. In other words, just as the use of a motion vector and a differential improves coding efficiency of block data by eliminating redundancies between information in sequential frames, the coding of motion vectors can exploit redundancies in situations where motion vectors between sequential frames do not change drastically, by identifying an optimal predictor, from a limited set of previously-encoded candidates, so as to minimize the bit length of the differential. The predictor set usually contains both spatial motion vector neighbors and temporally co-located motion vectors, and possibly spatiotemporal vectors.
Even using motion vector competition techniques when encoding video, however, the necessary bit rate to preserve a desired quality is often too high for the transmission medium used to transmit the video to a decoder. What is needed, therefore, is an improved encoding system for video transmission.
The foregoing and other objectives, features, and advantages of the invention will be more readily understood upon consideration of the following detailed description of the invention taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE SEVERAL DRAWINGS
FIGS. 1A and 1B generally illustrate motion vector competition.
FIG. 2 shows an exemplary system for encoding and decoding motion vectors.
FIG. 3 shows a nested entropy encoding structure.
FIG. 4 shows a system using the nested entropy encoding structure depicted in FIG. 3.
FIG. 5A shows an exemplary encoder capable of trimming a candidate set of motion vectors.
FIG. 5B shows an exemplary method of trimming a candidate set of motion vectors used by the encoder of FIG. 5.
FIG. 6 generally illustrates an alternate embodiment of encoding a temporally co-located motion vector in a candidate set of motion vectors.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
Referring to FIGS. 1A and 1B, a motion vector for a candidate block (shown in cross-hatch) in a current frame at T=0 points to the cross-hatched block in subsequent frame at t=1. This motion vector may be encoded with reference to a candidate set of motion vectors V.sub.a, V.sub.X, V.sub.y, and V. In this example, motion vector V.sub.a is a co-located motion vector in the preceding frame at t=−1 and points to block A in the current frame. Motion vectors V.sub.X, V.sub.y, and V.sub.Z are previously-encoded motion vectors in the current frame and point to blocks X, Y, and Z, respectively, in the subsequent frame at T=1. FIG. 1A also shows the blocks A′, X′, Y′, and Z′ that the respective motion vectors would point to if used when encoding the candidate block.
As can be seen in FIG. 1B, using the motion vector competition (MVC) procedure, motion vector V.sub.Z would be selected to minimize the code length of the differential V.sub.d, which in that instance, would only require a value of “1” in a single component (down) of the vector. All other differential motion vectors either would require encoding two components or would have a larger value for a single component.
It should be understood that the foregoing illustration was simplified in that different block sizes may be used, each block may represent a single pixel, and many more motion vectors could be included in the candidate set. For example, all motion vectors previously calculated in the current frame could be included in the candidate set, as well as any motion vectors calculated for preceding frames. Moreover, the candidate set may include a desired number of arbitrary motion vectors useful to capture large and sudden motions in the scene.
Referring to FIG. 2, and continuing with the preceding example, the selected motion vector Vz will need to be encoded. One straightforward approach is for an encoder 10 to assign a value to each candidate motion vector in a table 14 of symbols, which assuming a variable-length entropy encoding method such as Huffman or arithmetic encoding, might look something like:
Motion Vector Candidate Symbol
Va 0
Vx 10
Vy 110
V z 1110
Note that none of the symbols are a prefix of another symbol, so that the decoder 12 can correctly parse the received bitstream by, in this example, stopping at a received zero and decode the received bitstream with reference to a corresponding table 16. Moreover, the encoder and decoder will preferably collect statistics as the bitstream is encoded and decoded and rearrange the assignments of symbols to the motion vector candidates, in the respective tables 14 and 16, so that at any given time the motion vector having the highest frequency receives the shortest symbol, etc. This process is generally referred to as entropy coding, and will usually result in significant, lossless compression of the bitstream. The encoder 10 and the decoder 12 use the same methodology to construct and update the tables 14 and 16 initialized from the beginning of the bitstream, respectively, so that for every symbol, the table 16 used to encode that symbol is identical to the table used to decode the symbol.
Even with entropy coding, the system shown in FIG. 2 can result in significant overhead when signaling which predictor is chosen from the set of candidate motion vectors. This is particularly true if the number of predictors is large. However, the more predictors used, the more efficiency is gained when encoding the differential motion vector. In order to further reduce the overhead of signaling which predictor is chosen, additional techniques may be employed.
First, the set of candidate motion vector predictors may be trimmed to eliminate duplicate vectors. For example, in FIG. 1A, the vectors V.sub.x, V.sub.y are identical, hence one of the motion vectors cam be trimmed, and as a result, the largest symbol 1110 in the table above can be eliminated. Second, knowing the size of the trimmed motion predictor set means that the last bit of the last symbol in the trimmed set can be omitted, e.g. in the previous example where one of V.sub.X, V.sub.y was trimmed, leaving 110 as the last symbol, this symbol may simply be encoded as 11 give that this bit sequence distinguishes over all the previous symbols in the table, and the decoder knows from the size of the trimmed set that there are no further symbols.
These two additional techniques may significantly reduce the overhead of signaling the selected motion vector predictor. However, the consequence of these techniques is that the entropy decoding of the motion vector predictor will depend on the motion predictor set. That is, a bitstream cannot be correctly parsed before the complete set of motion predictors are available and correctly constructed. Such a constraint has severe impact on the decoder's error resilience, resulting in two types of disadvantages. First is temporal dependency; if a picture is corrupted or lost, decoding of subsequent pictures could fail in the parsing stage. Second is spatial dependency; if certain area of a picture is corrupted, decoding of subsequent areas in the same picture could fail in the parsing stage.
This may be a significant disadvantage. If motion vector data from either a prior frame or a current frame is lost, but needed to reconstruct the full candidate set of motion vectors, then the decoder will be unable to even parse the bitstream until an independently-coded frame is reached. This is a more severe consequence than the mere inability to decode correctly parsed data due to the loss of information used to code motion vectors, differential motion vectors, and residuals, because in this latter circumstance any parsed data, subsequently received in the bitstream and that does not rely on the missing data, can be decoded. Once the decoder cannot parse the bitstream, however, it has no way of decoding any subsequent symbols.
Though counterintuitive, the tradeoff between error resilience and overhead reduction is not intractable. The present inventors further realized that, just as coding efficiency gains are realized by signaling a selected one from a candidate set of motion vectors, coding efficiency gains could theoretically be achieved by signaling a selected one of a group of ordered candidate sets. This gain in coding efficiency could work, not only in tandem with techniques such as motion vector trimming and using truncated unary codes, but actually as a substitute for those techniques, i.e. preserving spatial and temporal independence when parsing the bitstream by not trimming duplicate candidate motion vectors and not truncating the highest-bit-length symbol.
Specifically, referring to FIG. 3, an encoder or a decoder may utilize a nested entropy encoding structure where one of a plurality of coded symbols 18 is assigned to each of a plurality of entropy-coded candidate set of motion vectors, shown as separate VLC tables 20. It should be understood that any particular one of the VLC tables 20 may include a motion vector set that differs from that another VLC table 20, meaning that a particular motion vector that appears in one VLC table 20 does not need to appear in all VLC tables 20. The encoder may signal one of the symbols 18 that corresponds to that one of the VLC tables 20 (candidate sets) for which the signaled motion vector has the highest frequency and therefore the smallest code length. Coded symbols 18 identifying a respective candidate set can themselves be entropy-coded, if desired, or may alternatively be encoded with a fixed length code, or any other appropriate coding technique.
Implicit in the foregoing discussion is the assumption that there is some non-random distribution among the plurality of all possible candidate sets of motion vectors. If, for example, the respective individual candidate sets simply comprise all permutations of the symbols included in each, randomly distributed with respect to each other, there would be no reason to expect a net gain in coding efficiency because the number of candidate sets of motion vectors, needed to guarantee that a sufficient number of candidate motion vectors appear in a candidate set high enough in the table to benefit from a reduced code length, would be too large. Essentially, what efficiency gained in coding the selected one of the candidate motion vector is lost in the overhead of coding the symbol associated with the particular candidate set. This makes sense; just as the entropy coding of motion vectors works due to the predictable spatial and temporal relationship between the motion vectors, making some candidate motion vectors more likely than others, the disclosed nested entropy encoding structure would be expected to further compress the bitstream only if some of the possible permutations of symbols in the candidate set are more likely than others, such that the higher-code-length candidate sets are not used as often as the lower-code-length candidate sets.
Upon investigation, the present inventors discovered that, not only does the disclosed nested entropy encoding structure in fact improve coding efficiency, but the syntax elements of neighboring pixels or blocks of pixels are correlated with the probabilities of the ordering of candidate motion vectors in a set. Referring to FIG. 4, for example, an encoder 10 may have access to syntax symbols from a syntax model 24 that defines a set of syntax elements in the encoded data to be used to differentiate multiple VLC tables of candidate sets of motion vectors, and therefore also defines a set of syntax elements used by the encoder and decoder to determine the VLC table with which to encode the selected ones of the candidate motion vectors with code symbols. These syntax elements could for example, relate to selected candidate motion vectors in spatially or temporally neighboring blocks of pixels, relate to combinations of such selected candidate motion vectors, or alternatively relate to any factor determined to have a relationship to the probability distribution of selected motion vectors in a candidate set. In one embodiment, an encoder 10 (and hence a decoder 12) will include a learning agent that tries different combinations of syntax elements so as to intelligently maximize coding efficiency. Stated differently, the encoder 10 intelligently optimizes coding efficiency by iteratively choosing different combinations of available said syntax elements, measuring a change in coding efficiency following each chosen combination, and responding accordingly by replacing one or more syntax elements in the combination.
With the syntax symbol from the syntax model 24, the encoder 10 may then use an applicable motion vector symbol for the selected motion vector for the current block from a VLC table 28 a, 28 b, 28 c, 28 d, etc, and encode the motion vector symbol in a bitstream to the decoder 12. The encoder 10 also updates the order of the motion vector symbols in the VLC table used based on the selected symbol. In one embodiment, any change in the frequency distribution of symbols in a table results in the symbols being reordered. In an alternate embodiment, the encoder 10 (and the decoder 12) keeps track of the most frequently-occurring symbol in the un-reordered set and ensures that that symbol is at the top of the table, i.e. that it has the smallest code length. Note that, in this example, because the syntax symbol is determined solely by the syntax of previously-encoded data, the encoder need not encode the syntax symbol along with the motion vector symbol, so long as the decoder 12 uses the same syntax model to determine the particular VLC table 30 a, 30 b, 30 c, and 30 d, from which to extract the received motion vector symbol. In other words, when the encoder 10 uses the syntax of the previously-encoded data to differentiate the VLC tables, updating the order of symbols in those tables in the process, a very high degree of coding efficiency can be achieved.
When the decoder 12 receives a coded bitstream from the encoder 10, the decoder parses the bitstream to determine the relevant VLC table for a received symbol, using a syntax model 26 if available, to decode the received symbols to identify the selected motion vector from the candidate set. The decoder also updates the respective VLC tables in the same manner as does the encoder 10.
The motion vector predictor set may contain candidate motion vectors spatially predictive of a selected motion vector (i.e. candidates in the same frame as the current block), candidate motion vectors temporally predictive of a selected motion vector (i.e. candidates at the co-located block in the frame preceding the current block), and candidate motion vectors spatiotemporally predictive of a selected motion vector (i.e. candidates in the frame preceding the current block spatially offset from the co-located block). As noted previously, the disclosed nested entropy encoding structure permits a decoder to parse a bitstream without trimming candidate motion vectors or truncating code symbols, thereby preserving spatial and temporal independence in the parsing process, and preserving error resilience while at the same time achieving significant coding efficiencies. Alternatively, the nested entropy encoding structure can be used in tandem with the techniques of trimming candidate motion vectors or truncating code symbols, while at least partially preserving error resilience.
For example, referring to FIG. 5A, an encoder 10 may include a candidate motion vector set construction module 40 that retrieves from one or more buffers 28 the full set of candidate motion vectors applicable to a current block being encoded. A candidate motion vector set trimming module 42 then selectively trims the set of candidate motion vectors according to predefined rules, by applying a syntax model 24 to the set of candidate motion vectors, prior to encoding a selected motion vector with an encoding module 44, which in turn selects a symbol based on the trimmed set of candidates. One potential predefined rule, for example, may prevent the candidate motion vector set module 42 from trimming motion vector predictors derived from previously reconstructed/transmitted frames. In other words, in the case that two motion vector predictors have the same value but one motion vector predictor corresponds to data in a current frame and a second motion vector predictor corresponds to data in a second frame, the two motion vector predictors are both included in the trimmed set. This preserves temporal independence.
As another example, a predefined rule may prevent the candidate motion vector set trimming module 42 from trimming motion vector predictors derived from regions that are located in different slices, so as to preserve spatial independence. As an additional embodiment, a predefined rule may prevent the candidate motion vector set trimming module 42 from trimming motion vector predictors derived from regions that are located in different entropy slices, where an entropy slice is a unit of the bit-stream that may be parsed without reference to other data in the current frame.
These two rules are stated for purposes of illustration only, as additional rules may be created as desired. FIG. 5B, for example, shows a generalized technique for applying any one of a wide variety of trimming rule sets that are signaled using a novel flag. At step 50, an encoder 10 receives a candidate set of motion vector predictors from a buffer 28, for example. At step 52 a flag is signaled by the encoder (or received by the decoder) that is used at decision step 53 to indicate whether trimming is applied, and optionally a trimming rule set as well that may be used to define which vectors will be trimmed. If the flag indicates that no trimming is to occur, the technique proceeds to step 60 and encodes the selected motion vector using the full set of candidate motion vectors. If, however, the flag indicates that, under a given rule set, trimming is to occur, then the subset of duplicate motion vectors is identified in step 54. Thus, the subset of duplicate motion vectors can be considered in one embodiment as a maximized collection of motion vectors for which each member of the subset has an identical motion vector not included in the subset. In other words, the subset may be seen as one that excludes from the subset any motion vector in the full set of candidates that has no duplicate an also excludes from the subset exactly one motion vector in a collection of identical duplicates.
At step 56, according to predefined rules of the rule set, selected candidate motion vectors may be selectively removed from the subset of duplicates. It is this step that enables spatial and/or temporal independence to be preserved. Optionally, candidate motion vectors can also be added to the subset of duplicate motion vectors, for reasons explained in more detail below. Stated on a conceptual level, the purpose of steps 54 and 56 is simply to apply a rule set to identify those motion vectors that will be trimmed from the full candidate set. Once this subset has been identified, the candidate motion vectors in this subset is trimmed at step 58 and the encoder then encodes the selected motion vector, from those remaining, based on the size of the trimmed set at step 60.
To illustrate the functionality of the generalized technique shown in FIG. 5A, consider the example of a temporal_mvp_flag used by the encoder to signal into the bitstream a true/false condition of whether the selected motion vector, from the candidate set, is a temporally-located motion vector. Also, initially assume that the applicable rule set for this flag is intended to preserve temporal independence. If the temporal_mvp_flag indicates that a temporal predictor is selected by the encoder, the temporal predictor subset in the candidate set will not be trimmed, because to do so would create temporal dependency. However, the spatial predictor subset of the candidate set can be trimmed because the decoder 12 has foreknowledge of the size of the temporal predictor subset.
If, on the other hand, the temporal_mvp_flag signals that a temporal predictor is not selected by the encoder, the candidate set can not only be trimmed of duplicates, but in some embodiments can also be trimmed of temporal predictors, resulting in a drastically diminished candidate set that needs to be encoded. It should also be recognized that, if an applicable rule set permits both temporal and spatial dependencies, the a temporal_mvp_flag can be used, regardless of its value, to trim duplicates of the temporal or spatial subset signaled by the flag and to trim the entire subset not signaled by the flag.
As it happens, the inventors have determined that there is a reasonable correlation between the value of the disclosed temporal_mvp_flag and the value of a constrained_intra_pred_flag, associated with a frame, and often used in an encoded video bit stream. Specifically, the inventors have determined that there is a strong correlation between these two flags when the value of the constrained_intrapred_flag is 1, and a substantially less strong correlation when the value of the constrained_intra_pred_flag is 0. Accordingly, to save overhead in signaling a selected motion vector, the encoder may optionally be configured to not encode the disclosed temporal_mvp_flag when the constrained_intrapred_flag is set to 1 for the frame of a current pixel, such that the decoder will simply insert or assume an equal value for the temporal_mvp_flag in that instance, and to otherwise encode the temporal_mvp_flag. Alternatively, the disclosed temporal_mvp_flag may simply be assigned a value equal to the constrained_intra_pred_flag, but preferably in this latter circumstance the value of a 0 should be associated in the defined rule set as causing the result of simply trimming duplicate vectors in the candidate set.
The disclosed nested entropy encoding structure can be additionally applied to this temporal_mvp_flag syntax. In one embodiment, top and left neighboring flags are used to determine the predictor set template used in the entropy coding of temporal_mvp_flag. This may be beneficial if, as is the usual case, the encoder and decoder exclusively assigns entropy symbols to coded values, and also where the temporal_mvp_flag may take on many values. In another embodiment, the predictor set template for the coding of the selected motion vector for the candidate set is made depending on the temporal_mvp_flag of the current block.
Also, another embodiment of the invention signals if the motion vector predictor is equal to motion vectors derived from the current frame or motion vectors derived from a previously reconstructed/transmitted frame, as was previously described with respect to the temporal_mvp_flag. In this particular embodiment, however, the flag is sent indexed by the number of unique motion vector predictors derived from the current frame. For example, a predictor set template in this embodiment could distinguish all possible combinations of a first code value that reflects the combination of flags in the two blocks to the left and above the current block, e.g. 00, 01, 10, 11 (entropy coded as 0, 10, 110, and 1110) as indexed by a second code value reflective of the number of unique motion vectors in the candidate set. Alternatively, a context template in this embodiment could identify all possible combinations of a first code value that reflects whether the flags in the two blocks to the left and above the current block are identical or not, e.g. 00 and 11 entropy coded as 0 and 01 and 10 entropy coded as 10, for example, and a second code value reflective of the number of unique motion vectors in the candidate set.
An encoding scheme may include a candidate set of motion vectors that includes a large number of temporally co-located motion vectors from each of a plurality of frames, such as the one illustrated in FIG. 6. This means that, to encode the blocks 64 of a current frame, the encoder may have to access one or more buffers that contains a history of all the selected motion vectors in each of the prior frames from which a candidate motion vector is extracted. This can require an extensive amount of memory. As an alternative, the smallest-sized block of pixels used in the encoding scheme, e.g. a 2.times.2 block, may be grouped in larger blocks 62, where the motion vectors stored in the buffer, and later used as co-located motion vectors when encoding subsequent blocks, may instead be the average motion vector 66 of all the selected vectors in the respective group. This trades memory requirements for coding efficiency, as the averaging procedure tends to produce a larger differential to be encoded whenever the co-located motion vector is selected. Having said that, the reduction in coding efficiency is not all that great given that the averaged co-located vector will only be chosen if it is more efficient to use that vector than any of the alternatives in the candidate set. In addition to using an average of adjacent blocks, a vector median operation or a component-wise medial operation may be used, as can any other standard operation such as maximum, minimum, or a combination of maximum and minimum operations, commonly called a dilate, erode, open, or close operation.
In some embodiments, the operation used to group smaller-sized blocks of pixels into larger blocks may be signaled in a bit-stream from an encoder to a decoder. For example, the operation may be signaled in a sequence parameter set, or alternatively, the operation may be signaled in the picture parameter set, slice header, or for any defined group of pixels. Furthermore, the operation can be determined from a level or profile identifier that is signaled in the bit-stream.
In some embodiments, the number of smallest sized blocks that are grouped to larger blocks may be signaled in a bit-stream from an encoder to a decoder. For example, said number may signaled in the sequence parameter set, or alternatively the number may be signaled in the picture parameter set, slice header, or for any defined group of pixels. The number may be determined from a level or profile identifier that is signaled in the bit-stream. In some embodiments, the number may be expressed as a number of rows of smallest-sized blocks and a number of column of smallest-sized blocks.
It should be understood that the preceding embodiments of an encoder and/or a decoder may be used in any one of a number of hardware, firmware, or software implementations. For example, an encoder may be used in a set-top recorder, a server, desktop computer, etc., while a decoder may be implemented in a display device, a set-top cable box, a set-top recorder, a server, desktop computer, etc. These examples are illustrative and not limiting. If implemented in firmware and/or software, the various components of the disclosed encoder and decoder may access any available processing device and storage to perform the described techniques.
The terms and expressions that have been employed in the foregoing specification are used therein as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding equivalents of the features shown and described or portions thereof, it being recognized that the scope of the invention is defined and limited only by the claims which follow.

Claims (2)

What is claimed is:
1. A non-transitory computer-readable medium storing encoded image data, the encoded image data comprising:
a first block adjacent to a current block in a picture;
a second block adjacent to the current block in the picture;
a motion vector differential;
a residual block of the current block; and
a flag indicating whether a temporally-located motion vector can be used as a motion vector predictor,
wherein when a motion vector of the first block is not equal to a motion vector of the second block, a motion vector predictor candidate set for the current block includes the motion vector of the first block and the motion vector of the second block,
when the motion vector of the first block is equal to the motion vector of the second block and the flag indicates that a temporally-located motion vector can be used as a motion vector predictor, the motion vector predictor candidate set for the current block includes the motion vector of the first block and the temporally-located motion vector,
when the flag indicates that a temporally-located motion vector cannot be used as a motion vector predictor, the motion vector of the block in another picture is excluded from the motion vector predictor candidate set,
wherein a motion vector for the current block is based on the selected motion vector predictor and the motion vector differential, and
wherein the residual block is a difference between the current block and a reference block identified by the motion vector for the current block.
2. An apparatus comprising:
a non-transitory computer-readable medium storing encoded image data, the encoded image data comprising:
a first block adjacent to a current block in a picture;
a second block adjacent to the current block in the picture;
a motion vector differential;
a residual block of the current block; and
a flag indicating whether a temporally-located motion vector can be used as a motion vector predictor,
wherein when a motion vector of the first block is not equal to a motion vector of the second block, a motion vector predictor candidate set for the current block includes the motion vector of the first block and the motion vector of the second block,
when the motion vector of the first block is equal to the motion vector of the second block and the flag indicates that a temporally-located motion vector can be used as a motion vector predictor, the motion vector predictor candidate set for the current block includes the motion vector of the first block and the temporally-located motion vector,
when the flag indicates that a temporally-located motion vector cannot be used as a motion vector predictor, the motion vector of the block in another picture is excluded from the motion vector predictor candidate set,
wherein a motion vector for the current block is based on the selected motion vector predictor and the motion vector differential, and
wherein the residual block is a difference between the current block and a reference block identified by the motion vector for the current block; and
a processing unit for signaling a bitstream including the encoded image data to a decoder.
US15/906,582 2010-10-01 2018-02-27 Nested entropy encoding Active US10104376B2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US15/906,582 US10104376B2 (en) 2010-10-01 2018-02-27 Nested entropy encoding
US16/130,875 US10397578B2 (en) 2010-10-01 2018-09-13 Nested entropy encoding
US16/522,232 US10757413B2 (en) 2010-10-01 2019-07-25 Nested entropy encoding
US16/999,612 US11457216B2 (en) 2010-10-01 2020-08-21 Nested entropy encoding
US17/952,725 US11973949B2 (en) 2010-10-01 2022-09-26 Nested entropy encoding
US18/618,697 US20240244210A1 (en) 2010-10-01 2024-03-27 Nested entropy encoding

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/896,795 US20120082228A1 (en) 2010-10-01 2010-10-01 Nested entropy encoding
US14/824,305 US9414092B2 (en) 2010-10-01 2015-08-12 Nested entropy encoding
US15/189,307 US9794570B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/623,627 US10057581B2 (en) 2010-10-01 2017-06-15 Nested entropy encoding
US15/906,582 US10104376B2 (en) 2010-10-01 2018-02-27 Nested entropy encoding

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/623,627 Continuation US10057581B2 (en) 2010-10-01 2017-06-15 Nested entropy encoding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/130,875 Continuation US10397578B2 (en) 2010-10-01 2018-09-13 Nested entropy encoding

Publications (2)

Publication Number Publication Date
US20180192055A1 US20180192055A1 (en) 2018-07-05
US10104376B2 true US10104376B2 (en) 2018-10-16

Family

ID=45889820

Family Applications (12)

Application Number Title Priority Date Filing Date
US12/896,795 Abandoned US20120082228A1 (en) 2010-10-01 2010-10-01 Nested entropy encoding
US14/824,305 Active US9414092B2 (en) 2010-10-01 2015-08-12 Nested entropy encoding
US15/189,504 Active US9584813B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/189,433 Active US9544605B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/189,307 Active 2030-10-03 US9794570B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/623,627 Active US10057581B2 (en) 2010-10-01 2017-06-15 Nested entropy encoding
US15/906,582 Active US10104376B2 (en) 2010-10-01 2018-02-27 Nested entropy encoding
US16/130,875 Active US10397578B2 (en) 2010-10-01 2018-09-13 Nested entropy encoding
US16/522,232 Active US10757413B2 (en) 2010-10-01 2019-07-25 Nested entropy encoding
US16/999,612 Active US11457216B2 (en) 2010-10-01 2020-08-21 Nested entropy encoding
US17/952,725 Active US11973949B2 (en) 2010-10-01 2022-09-26 Nested entropy encoding
US18/618,697 Pending US20240244210A1 (en) 2010-10-01 2024-03-27 Nested entropy encoding

Family Applications Before (6)

Application Number Title Priority Date Filing Date
US12/896,795 Abandoned US20120082228A1 (en) 2010-10-01 2010-10-01 Nested entropy encoding
US14/824,305 Active US9414092B2 (en) 2010-10-01 2015-08-12 Nested entropy encoding
US15/189,504 Active US9584813B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/189,433 Active US9544605B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/189,307 Active 2030-10-03 US9794570B2 (en) 2010-10-01 2016-06-22 Nested entropy encoding
US15/623,627 Active US10057581B2 (en) 2010-10-01 2017-06-15 Nested entropy encoding

Family Applications After (5)

Application Number Title Priority Date Filing Date
US16/130,875 Active US10397578B2 (en) 2010-10-01 2018-09-13 Nested entropy encoding
US16/522,232 Active US10757413B2 (en) 2010-10-01 2019-07-25 Nested entropy encoding
US16/999,612 Active US11457216B2 (en) 2010-10-01 2020-08-21 Nested entropy encoding
US17/952,725 Active US11973949B2 (en) 2010-10-01 2022-09-26 Nested entropy encoding
US18/618,697 Pending US20240244210A1 (en) 2010-10-01 2024-03-27 Nested entropy encoding

Country Status (4)

Country Link
US (12) US20120082228A1 (en)
JP (8) JP2013543285A (en)
MY (2) MY190332A (en)
WO (1) WO2012043884A1 (en)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120082228A1 (en) 2010-10-01 2012-04-05 Yeping Su Nested entropy encoding
US10104391B2 (en) 2010-10-01 2018-10-16 Dolby International Ab System for nested entropy encoding
GB2486901B (en) * 2010-12-29 2014-05-07 Canon Kk Video encoding and decoding with improved error resilience
GB2487200A (en) 2011-01-12 2012-07-18 Canon Kk Video encoding and decoding with improved error resilience
CN107071464A (en) * 2011-01-19 2017-08-18 寰发股份有限公司 For the method and device of motion vector derive motion vector prediction of current block
KR101484171B1 (en) * 2011-01-21 2015-01-23 에스케이 텔레콤주식회사 Motion Information Generating Apparatus and Method using Motion Vector Predictor Index Coding, and Image Encoding/Decoding Apparatus and Method using the Same
JP5988071B2 (en) * 2011-02-07 2016-09-07 ソニー株式会社 Image processing apparatus and method, and program
ES2685945T3 (en) 2011-04-12 2018-10-15 Sun Patent Trust Motion video coding procedure, and motion video coding apparatus
US9485518B2 (en) 2011-05-27 2016-11-01 Sun Patent Trust Decoding method and apparatus with candidate motion vectors
EP4007276B1 (en) 2011-05-27 2023-07-05 Sun Patent Trust Apparatus, method and program for coding moving pictures
CN103548351B (en) 2011-05-31 2017-07-11 太阳专利托管公司 Dynamic image decoding method and moving image decoding apparatus
EP2741499A4 (en) * 2011-08-03 2014-12-10 Panasonic Ip Corp America Video encoding method, video encoding apparatus, video decoding method, video decoding apparatus, and video encoding/decoding apparatus
IN2014CN02602A (en) 2011-10-19 2015-08-07 Panasonic Corp
FR3029055B1 (en) * 2014-11-24 2017-01-13 Ateme IMAGE ENCODING METHOD AND EQUIPMENT FOR IMPLEMENTING THE METHOD
CN105681807B (en) * 2016-01-06 2018-11-02 福州瑞芯微电子股份有限公司 It is a kind of to divide pixel motion vector computational methods and device based on H264 agreements
CN110662074B (en) * 2018-06-28 2021-11-23 杭州海康威视数字技术股份有限公司 Motion vector determination method and device
US11381833B2 (en) * 2018-07-19 2022-07-05 Tencent America LLC Method and apparatus for video coding
CN109068140B (en) * 2018-10-18 2021-06-22 北京奇艺世纪科技有限公司 Method and device for determining motion vector in video coding and decoding equipment
JP7418687B2 (en) 2018-12-28 2024-01-22 株式会社Jvcケンウッド Video encoding device, video encoding method, and video encoding program
CN109889833B (en) * 2019-03-04 2021-04-16 中科院成都信息技术股份有限公司 Image compression method based on improved binary firework algorithm
CN110061813B (en) * 2019-04-09 2022-10-04 惠州市仲恺Tcl智融科技小额贷款股份有限公司 Data encoding method, data decoding method and related devices
SG11202111757YA (en) 2019-04-25 2021-11-29 Op Solutions Llc Adaptive motion vector prediction candidates in frames with global motion
JP7323220B2 (en) 2019-04-25 2023-08-08 オーピー ソリューションズ, エルエルシー Candidates in frames with global motion
BR112021021348A2 (en) * 2019-04-25 2022-01-18 Op Solutions Llc Selective motion vector prediction candidates in frames with global motion

Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469226A (en) 1992-03-31 1995-11-21 Sony United Kingdom Limited Video signal processing to derive motion vectors representing motion between successive fields or frames
US5731840A (en) 1995-03-10 1998-03-24 Kabushiki Kaisha Toshiba Video coding/decoding apparatus which transmits different accuracy prediction levels
JPH10224800A (en) 1997-02-07 1998-08-21 Matsushita Electric Ind Co Ltd Motion vector coding method and decoding method
US20040114689A1 (en) * 2002-12-13 2004-06-17 Huipin Zhang Wavelet based multiresolution video representation with spatially scalable motion vectors
US20040190615A1 (en) * 2002-05-22 2004-09-30 Kiyofumi Abe Moving image encoding method, moving image decoding method, and data recording medium
US20040213468A1 (en) * 2003-04-28 2004-10-28 Samsung Electronics Co., Ltd. Method for determining reference picture and motion compensation method and apparatus thereof
US20040233076A1 (en) 2001-02-20 2004-11-25 Minhua Zhou Variable length decoding system and method
US20040263361A1 (en) * 2003-06-25 2004-12-30 Lsi Logic Corporation Video decoder and encoder transcoder to and from re-orderable format
US20050062885A1 (en) 2002-11-25 2005-03-24 Shinya Kadono Motion compensation method, picture coding method and picture decoding method
US20050226335A1 (en) * 2004-04-13 2005-10-13 Samsung Electronics Co., Ltd. Method and apparatus for supporting motion scalability
US20060008006A1 (en) * 2004-07-07 2006-01-12 Samsung Electronics Co., Ltd. Video encoding and decoding methods and video encoder and decoder
US20060013310A1 (en) * 2004-07-15 2006-01-19 Samsung Electronics Co., Ltd. Temporal decomposition and inverse temporal decomposition methods for video encoding and decoding and video encoder and decoder
US20060126962A1 (en) 2001-03-26 2006-06-15 Sharp Laboratories Of America, Inc. Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US20060165301A1 (en) * 2005-01-21 2006-07-27 Samsung Electronics Co., Ltd. Video coding method and apparatus for efficiently predicting unsynchronized frame
US20070014358A1 (en) * 2002-06-03 2007-01-18 Microsoft Corporation Spatiotemporal prediction for bidirectionally predictive(B) pictures and motion vector prediction for multi-picture reference motion compensation
US7199735B1 (en) * 2005-08-25 2007-04-03 Mobilygen Corporation Method and apparatus for entropy coding
US20070268964A1 (en) * 2006-05-22 2007-11-22 Microsoft Corporation Unit co-location-based motion estimation
US20080043832A1 (en) * 2006-08-16 2008-02-21 Microsoft Corporation Techniques for variable resolution encoding and decoding of digital video
US20080043845A1 (en) * 2006-08-17 2008-02-21 Fujitsu Limited Motion prediction processor with read buffers providing reference motion vectors for direct mode coding
US20080181308A1 (en) * 2005-03-04 2008-07-31 Yong Wang System and method for motion estimation and mode decision for low-complexity h.264 decoder
US20090060036A1 (en) 2007-08-29 2009-03-05 Kotaka Naohiko Coding Apparatus, Coding Method, Decoding Apparatus, and Decoding Method
US20090168878A1 (en) * 2007-12-26 2009-07-02 Kabushiki Kaisha Toshiba Moving picture coding device, moving picture coding method, and recording medium with moving picture coding program recorded thereon
US20090304084A1 (en) * 2008-03-19 2009-12-10 Nokia Corporation Combined motion vector and reference index prediction for video coding
US20100027663A1 (en) * 2008-07-29 2010-02-04 Qualcomm Incorporated Intellegent frame skipping in video coding based on similarity metric in compressed domain
US20100232507A1 (en) * 2006-03-22 2010-09-16 Suk-Hee Cho Method and apparatus for encoding and decoding the compensated illumination change
US20100290530A1 (en) * 2009-05-14 2010-11-18 Qualcomm Incorporated Motion vector processing
US8116578B2 (en) * 2004-10-21 2012-02-14 Samsung Electronics Co., Ltd. Method and apparatus for effectively compressing motion vectors in video coder based on multi-layer
US20120082229A1 (en) 2010-10-01 2012-04-05 Yeping Su System for nested entropy encoding
US8271293B2 (en) * 2004-09-17 2012-09-18 Digital Rise Technology Co., Ltd. Audio decoding using variable-length codebook application ranges
US8290055B2 (en) * 2004-06-28 2012-10-16 Google Inc. Video compression and encoding method
US20130027230A1 (en) * 2010-04-13 2013-01-31 Detlev Marpe Entropy coding
JP5996728B2 (en) 2010-10-01 2016-09-21 ドルビー・インターナショナル・アーベー Method for generating motion vector candidate set

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5996728A (en) 1982-11-25 1984-06-04 Fujitsu Ltd Method for formation of resist pattern
JPS5996728U (en) 1982-12-21 1984-06-30 オムロン株式会社 photoelectric switch
JPH0263557U (en) 1988-11-01 1990-05-11
US6141446A (en) 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US7020671B1 (en) 2000-03-21 2006-03-28 Hitachi America, Ltd. Implementation of an inverse discrete cosine transform using single instruction multiple data instructions
JP3597107B2 (en) 2000-03-29 2004-12-02 沖電気工業株式会社 Motion vector detection circuit and motion vector detection method
JP4536325B2 (en) * 2003-02-04 2010-09-01 ソニー株式会社 Image processing apparatus and method, recording medium, and program
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7599438B2 (en) 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
KR20050045746A (en) 2003-11-12 2005-05-17 삼성전자주식회사 Method and device for motion estimation using tree-structured variable block size
CN100469146C (en) 2004-11-17 2009-03-11 展讯通信(上海)有限公司 Video image motion compensator
US8913660B2 (en) 2005-04-14 2014-12-16 Fastvdo, Llc Device and method for fast block-matching motion estimation in video encoders
KR101356735B1 (en) 2007-01-03 2014-02-03 삼성전자주식회사 Mothod of estimating motion vector using global motion vector, apparatus, encoder, decoder and decoding method
KR20100027384A (en) 2008-09-02 2010-03-11 삼성전자주식회사 Method and apparatus for determining a prediction mode
KR101279573B1 (en) 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 Motion Vector Encoding/Decoding Method and Apparatus and Video Encoding/Decoding Method and Apparatus
BRPI1011885A2 (en) 2009-06-19 2016-04-12 France Telecom methods for encoding and decoding a signal from images, encoding and decoding devices, signal and corresponding computer programs.
US9036692B2 (en) * 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
KR20120016991A (en) 2010-08-17 2012-02-27 오수미 Inter prediction process
US20120183047A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with inverse transform clipping
EP3481066B1 (en) * 2011-06-28 2021-05-19 LG Electronics Inc. Method for deriving a motion vector predictor
RU2577181C2 (en) * 2011-10-21 2016-03-10 Нокиа Текнолоджиз Ой Method and device for video signal encoding
US9525861B2 (en) * 2012-03-14 2016-12-20 Qualcomm Incorporated Disparity vector prediction in video coding
US9503720B2 (en) * 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
JP6454468B2 (en) 2013-12-26 2019-01-16 日東電工株式会社 Method for producing stretched laminate, stretched laminate obtained by the production method, method for producing polarizing film using stretched laminate, and stretching apparatus

Patent Citations (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469226A (en) 1992-03-31 1995-11-21 Sony United Kingdom Limited Video signal processing to derive motion vectors representing motion between successive fields or frames
US5731840A (en) 1995-03-10 1998-03-24 Kabushiki Kaisha Toshiba Video coding/decoding apparatus which transmits different accuracy prediction levels
JPH10224800A (en) 1997-02-07 1998-08-21 Matsushita Electric Ind Co Ltd Motion vector coding method and decoding method
US20040233076A1 (en) 2001-02-20 2004-11-25 Minhua Zhou Variable length decoding system and method
US20060126962A1 (en) 2001-03-26 2006-06-15 Sharp Laboratories Of America, Inc. Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US20040190615A1 (en) * 2002-05-22 2004-09-30 Kiyofumi Abe Moving image encoding method, moving image decoding method, and data recording medium
US20070014358A1 (en) * 2002-06-03 2007-01-18 Microsoft Corporation Spatiotemporal prediction for bidirectionally predictive(B) pictures and motion vector prediction for multi-picture reference motion compensation
US20050062885A1 (en) 2002-11-25 2005-03-24 Shinya Kadono Motion compensation method, picture coding method and picture decoding method
US20040114689A1 (en) * 2002-12-13 2004-06-17 Huipin Zhang Wavelet based multiresolution video representation with spatially scalable motion vectors
US20040213468A1 (en) * 2003-04-28 2004-10-28 Samsung Electronics Co., Ltd. Method for determining reference picture and motion compensation method and apparatus thereof
US20040263361A1 (en) * 2003-06-25 2004-12-30 Lsi Logic Corporation Video decoder and encoder transcoder to and from re-orderable format
US20050226335A1 (en) * 2004-04-13 2005-10-13 Samsung Electronics Co., Ltd. Method and apparatus for supporting motion scalability
US8290055B2 (en) * 2004-06-28 2012-10-16 Google Inc. Video compression and encoding method
US20060008006A1 (en) * 2004-07-07 2006-01-12 Samsung Electronics Co., Ltd. Video encoding and decoding methods and video encoder and decoder
US20060013310A1 (en) * 2004-07-15 2006-01-19 Samsung Electronics Co., Ltd. Temporal decomposition and inverse temporal decomposition methods for video encoding and decoding and video encoder and decoder
US8271293B2 (en) * 2004-09-17 2012-09-18 Digital Rise Technology Co., Ltd. Audio decoding using variable-length codebook application ranges
US8116578B2 (en) * 2004-10-21 2012-02-14 Samsung Electronics Co., Ltd. Method and apparatus for effectively compressing motion vectors in video coder based on multi-layer
US20060165301A1 (en) * 2005-01-21 2006-07-27 Samsung Electronics Co., Ltd. Video coding method and apparatus for efficiently predicting unsynchronized frame
US20080181308A1 (en) * 2005-03-04 2008-07-31 Yong Wang System and method for motion estimation and mode decision for low-complexity h.264 decoder
US7281771B1 (en) 2005-08-25 2007-10-16 Mobilygen Corporation Method and apparatus for entropy coding
US7199735B1 (en) * 2005-08-25 2007-04-03 Mobilygen Corporation Method and apparatus for entropy coding
US20100232507A1 (en) * 2006-03-22 2010-09-16 Suk-Hee Cho Method and apparatus for encoding and decoding the compensated illumination change
US20070268964A1 (en) * 2006-05-22 2007-11-22 Microsoft Corporation Unit co-location-based motion estimation
US20080043832A1 (en) * 2006-08-16 2008-02-21 Microsoft Corporation Techniques for variable resolution encoding and decoding of digital video
US20080043845A1 (en) * 2006-08-17 2008-02-21 Fujitsu Limited Motion prediction processor with read buffers providing reference motion vectors for direct mode coding
US20090060036A1 (en) 2007-08-29 2009-03-05 Kotaka Naohiko Coding Apparatus, Coding Method, Decoding Apparatus, and Decoding Method
JP2009055519A (en) 2007-08-29 2009-03-12 Sony Corp Encoding processing apparatus, encoding processing method, decoding processing apparatus, and decoding processing method
US20090168878A1 (en) * 2007-12-26 2009-07-02 Kabushiki Kaisha Toshiba Moving picture coding device, moving picture coding method, and recording medium with moving picture coding program recorded thereon
US20090304084A1 (en) * 2008-03-19 2009-12-10 Nokia Corporation Combined motion vector and reference index prediction for video coding
US20100027663A1 (en) * 2008-07-29 2010-02-04 Qualcomm Incorporated Intellegent frame skipping in video coding based on similarity metric in compressed domain
US20100290530A1 (en) * 2009-05-14 2010-11-18 Qualcomm Incorporated Motion vector processing
US8675736B2 (en) 2009-05-14 2014-03-18 Qualcomm Incorporated Motion vector processing
US20130027230A1 (en) * 2010-04-13 2013-01-31 Detlev Marpe Entropy coding
US20120082229A1 (en) 2010-10-01 2012-04-05 Yeping Su System for nested entropy encoding
JP5996728B2 (en) 2010-10-01 2016-09-21 ドルビー・インターナショナル・アーベー Method for generating motion vector candidate set

Non-Patent Citations (30)

* Cited by examiner, † Cited by third party
Title
Bossen et al. "Simplified motion vector coding method," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 2nd Meeting: Geneva, CH, Jul. 21-28, 2010 (Document: JCTVC-8094), 5 pgs.
Election/Restriction Requirement in U.S. Appl. No. 12/896,795, dated Jan. 29, 2013.
Final Office Action in U.S. Appl. No. 12/896,795, dated Apr. 30, 2013.
Final Office Action in U.S. Appl. No. 12/896,800, dated Sep. 27, 2013.
Final Office Action issued by the United States Patent and Trademark Office for U.S. Appl. No. 12/896,795, dated Dec. 16, 2014.
Final Office Action issued by the United States Patent and Trademark Office for U.S. Appl. No. 12/896,795, dated Mar. 27, 2014.
Final Office Action issued in U.S. Appl. No. 12/896,800, dated Aug. 6, 2014.
G. Laroche et al. article A Spatio-Temporal Competing Scheme for the Rate-Distortion Optimized Selection and Coding of Motion Vectors, 14th European Signal Processing Conference (EUSIPCO 2006), Florence, Italy, Sep. 4-8, 2006, 5 pgs.
Guillo et al. "Test Model under Consideration," JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 2nd Meeting: Geneva, CH, Jul. 21-28, 2010 (Document: JCTVC-B205).
International Search Report dated Jan. 17, 2012, International Patent Application No. PCT/JP2011/073149, Sharp Kabushiki Kaisha, 10 pages.
International Search Report, dated Jan. 17, 2012, International Pal. App. No. PCT/JP2011/073153, Sharp Kabushiki Kaisha, 9 pgs.
Jung et al. "Competition-Based Scheme for Motion Vector Selection and Coding," ITU-Telecommunications Standardization Sector Study Group 16 Question 6 Video Coding Experts Group (VCEG) 29th Meeting: Klagenfurt, Austria, Jul. 17-17, 2006 (Document: VCEG-AC06), 7 pgs.
Jung et al. "Competition-Based Scheme for Motion Vector Selection and Coding," ITU—Telecommunications Standardization Sector Study Group 16 Question 6 Video Coding Experts Group (VCEG) 29th Meeting: Klagenfurt, Austria, Jul. 17-17, 2006 (Document: VCEG-AC06), 7 pgs.
Nonfinal Office Action issued by the United States Patent and Trademark Office for U.S. Appl. No. 12/896,795, dated Jul. 25, 2014.
Nonfinal Office Action issued in U.S. Appl. No. 12/896,795, dated Aug. 21, 2013.
Nonfinal Office Action issued in U.S. Appl. No. 12/896,795, dated Mar. 11, 2013.
Nonfinal Office Action issued in U.S. Appl. No. 12/896,800, dated Apr. 29, 2013.
Nonfinal Office Action issued in U.S. Appl. No. 12/896,800, dated Feb. 6, 2014.
Nonfinal Office Action issued in U.S. Appl. No. 12/896,800, dated Jan. 20, 2015.
Notice of Noncompliant Amendment issued in U.S. Appl. No. 121896,795, dated Jan. 31, 2014.
Office Action issued by the Patent Office of Japan for corresponding JP Application No. 2013-514449, dated May 7, 2015.
Office Action issued by the Patent Office of Japan for corresponding JP Application No. 2016-163849, dated Jan. 16, 2018.
Office Action issued by the United States Patent and Trademark Office for U.S. Appl. No. 12/896,795, dated Apr. 20, 2015.
Office Action issued in Japanese Application No. 2013-514449 dated Aug. 18, 2015, 13 pages (with English translation).
Office Action issued in U.S. Appl. No. 12/896,800 dated Feb. 26, 2016, 7 pages.
Office Action issued in U.S. Appl. No. 14/882,586 dated Mar. 23, 2016, 10 pages.
Puri et al., "Video coding using the H.264/MPEG-4 AVC compression standard," Signal Processing: Image Communication 19 (2004) pp. 793-849.
Richardson, rain E.G. H.264 and MPEG-4 Video Compression: Video Coding for next Generation Multimedia. Chichester: Wiley, 2003, pp. vii-281.
U.S. Appl. No. 12/896,795, filed Oct. 1, 2010.
U.S. Appl. No. 12/896,800, filed Oct. 1, 2010.

Also Published As

Publication number Publication date
JP2021048622A (en) 2021-03-25
US20230105786A1 (en) 2023-04-06
JP6360528B2 (en) 2018-07-18
JP6280597B2 (en) 2018-02-14
US20120082228A1 (en) 2012-04-05
JP7025517B2 (en) 2022-02-24
US20160309150A1 (en) 2016-10-20
JP2022069448A (en) 2022-05-11
US20160309151A1 (en) 2016-10-20
JP2019216435A (en) 2019-12-19
JP2016195467A (en) 2016-11-17
JP2016195466A (en) 2016-11-17
US20240244210A1 (en) 2024-07-18
US9544605B2 (en) 2017-01-10
US10757413B2 (en) 2020-08-25
US20190014323A1 (en) 2019-01-10
JP2013543285A (en) 2013-11-28
US11457216B2 (en) 2022-09-27
US9414092B2 (en) 2016-08-09
JP2015216656A (en) 2015-12-03
MY180135A (en) 2020-11-23
US20170289549A1 (en) 2017-10-05
US20160309152A1 (en) 2016-10-20
JP2018139442A (en) 2018-09-06
US20210044801A1 (en) 2021-02-11
US10057581B2 (en) 2018-08-21
US9584813B2 (en) 2017-02-28
MY190332A (en) 2022-04-15
US9794570B2 (en) 2017-10-17
WO2012043884A1 (en) 2012-04-05
US10397578B2 (en) 2019-08-27
US20200014929A1 (en) 2020-01-09
US20150350689A1 (en) 2015-12-03
US20180192055A1 (en) 2018-07-05
US11973949B2 (en) 2024-04-30
JP6563557B2 (en) 2019-08-21
JP6806855B2 (en) 2021-01-06
JP5996728B2 (en) 2016-09-21

Similar Documents

Publication Publication Date Title
US12081789B2 (en) System for nested entropy encoding
US11973949B2 (en) Nested entropy encoding
US20220368925A1 (en) Method for encoding/decoding image and device using same
US20040013200A1 (en) Advanced method of coding and decoding motion vector and apparatus therefor

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: SHARP LABORATORIES OF AMERICA, INC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SU, YEPING;SEGALL, CHRISTOPHER A.;SIGNING DATES FROM 20101026 TO 20101027;REEL/FRAME:046179/0431

Owner name: DOLBY INTERNATIONAL AB, NETHERLANDS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHARP KABUSHIKI KAISHA;REEL/FRAME:046179/0771

Effective date: 20150701

Owner name: SHARP KABUSHIKI KAISHA, JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHARP LABORATORIES OF AMERICA, INC.;REEL/FRAME:046179/0636

Effective date: 20130725

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4