# US 10,123,038 B2 · Video coding / decoding with sub-block transform sizes and adaptive deblock filtering

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,123,038 B2
- Document ID: US10123038B2
- Status: Granted
- Kind: B2
- Application number: 15/250,597
- Filed: 2016-08-29
- Published: 2016-12-22
- Granted: 2018-11-06
- Earliest claimed: 2001-12-17
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Pohsiang Hsu; Chih-Lung Lin; Ming-Chieh Lee; Thomas W. Holcomb; Sridhar Srinivasan
- Web page: https://patentgrep.com/patent/US10123038B2

## CPC

- H04N 19/523: with sub-pixel accuracy
- G06T 3/40: Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T 7/0012: {Biomedical image inspection}
- H04N 19/105: Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
- H04N 19/115: Selection of the code volume for a coding unit prior to coding
- H04N 19/117: Filters, e.g. for pre-processing or post-processing (sub-band filter banks H04N19/635)
- H04N 19/119: Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
- H04N 19/122: Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
- H04N 19/124: Quantisation
- H04N 19/129: Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
- H04N 19/132: Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
- H04N 19/136: Incoming video signal characteristics or properties
- H04N 19/137: Motion inside a coding unit, e.g. average field, frame or block difference
- H04N 19/146: Data rate or code amount at the encoder output
- H04N 19/147: according to rate distortion criteria (rate-distortion as a criterion for motion estimation H04N19/567)
- H04N 19/15: by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
- H04N 19/154: Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion (use of rate-distortion criteria H04N19/147)
- H04N 19/172: the region being a picture, frame or field
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/18: the unit being a set of transform coefficients
- H04N 19/46: Embedding additional information in the video signal during the compression process (H04N19/517, H04N19/68, H04N19/70 take precedence)
- H04N 19/50: using predictive coding (H04N19/61 takes precedence)
- H04N 19/513: Processing of motion vectors
- H04N 19/52: by predictive encoding
- H04N 19/527: Global motion vector estimation
- H04N 19/533: Motion estimation using multistep search, e.g. two-dimensional [2D]-log search or one-at-a-time search [OTS]
- H04N 19/547: Motion estimation performed in a transform domain
- H04N 19/57: Motion estimation characterised by a search window with variable size or shape
- H04N 19/59: involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
- H04N 19/593: involving spatial prediction techniques
- H04N 19/61: in combination with predictive coding
- H04N 19/625: using discrete cosine transform [DCT]
- H04N 19/63: using sub-band based transform, e.g. wavelets
- H04N 19/70: characterised by syntax aspects related to video coding, e.g. related to compression standards
- H04N 19/80: Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation (H04N19/635, H04N19/86 take precedence)
- H04N 19/82: involving filtering within a prediction loop
- H04N 19/86: involving reduction of coding artifacts, e.g. of blockiness
- H04N 19/895: in combination with error concealment
- H04N 19/182: the unit being a pixel
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Techniques and tools for video coding/decoding with motion resolution switching and sub-block transform coding/decoding are described. For example, a video encoder adaptively switches the resolution of motion estimation and compensation between quarter-pixel and half-pixel resolutions; a corresponding video decoder adaptively switches the resolution of motion compensation between quarter-pixel and half-pixel resolutions. For sub-block transform sizes, for example, a video encoder adaptively switches between 8×8, 8×4, and 4×8 DCTs when encoding 8×8 prediction residual blocks; a corresponding video decoder switches between 8×8, 8×4, and 4×8 inverse DCTs during decoding.

## Claims

### Claim 1

In a computer system that implements a video decoder, a method comprising:
receiving, in a bitstream, encoded video data for a frame of a video sequence;
with the video decoder, reconstructing the frame, including, for each of multiple blocks of the frame, decoding a prediction residual for the block using a variable-block-size inverse frequency transform with support for switching of transform size at varying levels within the frame;
with the video decoder, adaptively filtering one or more boundaries between the multiple blocks in the reconstructed frame to reduce boundary discontinuities, wherein application of the filtering across a given boundary of the one or more boundaries includes:
computing a cross boundary discontinuity measure that quantifies pixel value discontinuity across the given boundary, wherein the cross boundary discontinuity measure is computed using at least one pixel value on a first side of the given boundary and at least one pixel value on a second side of the given boundary, the first side of the given boundary being opposite the second side of the given boundary;
computing a first side discontinuity measure that quantifies pixel value discontinuity on the first side of the given boundary, wherein the first side discontinuity measure is computed using multiple pixel values on the first side of the given boundary;
computing a second side discontinuity measure that quantifies pixel value discontinuity on the second side of the given boundary, wherein the second side discontinuity measure is computed using multiple pixel values on the second side of the given boundary; and
determining whether to filter the given boundary and, if so, filtering the given boundary, including adjusting the filtering the given boundary depending at least in part on the cross boundary discontinuity measure, the first side discontinuity measure, and the second side discontinuity measure; and
with the video decoder, storing the adaptively filtered, reconstructed frame in a frame buffer for use as a reference frame in subsequent motion compensation.

### Claim 2 (depends on 1)

The method of claim 1, wherein the bitstream includes switching information that indicates the transform size used for the prediction residual, and wherein format of the bitstream allows signaling of the switching information within the bitstream at frame level or at macroblock level.

### Claim 3 (depends on 1)

The method of claim 1, wherein the reconstructing the frame further includes, for each of the multiple blocks of the frame:
computing a motion-compensated prediction for the block using one or more motion vectors to predict pixel values of the block; and
reconstructing the block based upon the prediction residual and the motion-compensated prediction.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
receiving, in the bitstream, encoded video data for a previous frame of the video sequence; and
with the video decoder, reconstructing the previous frame, including, for each of multiple blocks of the previous frame:
computing a spatial extrapolation for the block;
reconstructing a spatial-extrapolation residual for the block, including applying an inverse re-oriented frequency transform to the spatial-extrapolation residual; and
combining the spatial-extrapolation residual and the spatial extrapolation.

### Claim 5 (depends on 1)

The method of claim 1, further comprising selectively disabling the filtering for a subsequent frame of the video sequence.

### Claim 6 (depends on 1)

The method of claim 1, wherein the application of the filtering further depends at least in a part upon a quantization level.

### Claim 7 (depends on 1)

The method of claim 1, wherein the one or more boundaries that are adaptively filtered are boundaries between 8×8 blocks, even when the transform size of the variable-block-size inverse frequency transform is smaller than 8×8.

### Claim 8 (depends on 1)

The method of claim 1, wherein the one or more boundaries are in a luminance plane of the reconstructed frame.

### Claim 9 (depends on 1)

The method of claim 1, wherein a single line of pixel values across the given boundary includes the multiple pixel values on the first side and the multiple pixel values on the second side.

### Claim 10

One or more computer-readable media storing computer-executable instructions for causing a computer system that implements a video decoder, when programmed thereby, to perform operations comprising:
receiving, in a bitstream, encoded video data for a frame of a video sequence;
with the video decoder, reconstructing the frame, including, for each of multiple blocks of the frame, decoding a prediction residual for the block using a variable-block-size inverse frequency transform with support for switching of transform size at varying levels within the frame;
with the video decoder, adaptively filtering one or more boundaries between the multiple blocks in the reconstructed frame to reduce boundary discontinuities, wherein application of the filtering across a given boundary of the one or more boundaries includes:
computing a cross boundary discontinuity measure that quantifies pixel value discontinuity across the given boundary, wherein the cross boundary discontinuity measure is computed using at least one pixel value on a first side of the given boundary and at least one pixel value on a second side of the given boundary, the first side of the given boundary being opposite the second side of the given boundary;
computing a first side discontinuity measure that quantifies pixel value discontinuity on the first side of the given boundary, wherein the first side discontinuity measure is computed using multiple pixel values on the first side of the given boundary;
computing a second side discontinuity measure that quantifies pixel value discontinuity on the second side of the given boundary, wherein the second side discontinuity measure is computed using multiple pixel values on the second side of the given boundary; and
determining whether to filter the given boundary and, if so, filtering the given boundary, including adjusting the filtering the given boundary depending at least in part on the cross boundary discontinuity measure, the first side discontinuity measure, and the second side discontinuity measure; and
with the video decoder, storing the adaptively filtered, reconstructed frame in a frame buffer for use as a reference frame in subsequent motion compensation.

### Claim 11 (depends on 10)

The one or more computer-readable media of claim 10, wherein the bitstream includes switching information that indicates the transform size used for the prediction residual, and wherein format of the bitstream allows signaling of the switching information within the bitstream at frame level or at macroblock level.

### Claim 12 (depends on 10)

The one or more computer-readable media of claim 10, wherein the reconstructing the frame further includes, for each of the multiple blocks of the frame:
computing a motion-compensated prediction for the block using one or more motion vectors to predict pixel values of the block; and
reconstructing the block based upon the prediction residual and the motion-compensated prediction.

### Claim 13 (depends on 10)

The one or more computer-readable media of claim 10, wherein the operations further comprise:
receiving, in the bitstream, encoded video data for a previous frame of the video sequence; and
with the video decoder, reconstructing the previous frame, including, for each of multiple blocks of the previous frame:
computing a spatial extrapolation for the block;
reconstructing a spatial-extrapolation residual for the block, including applying an inverse re-oriented frequency transform to the spatial-extrapolation residual; and
combining the spatial-extrapolation residual and the spatial extrapolation.

### Claim 14 (depends on 10)

The one or more computer-readable media of claim 10, wherein the operations further comprise selectively disabling the filtering for a subsequent frame of the video sequence.

### Claim 15 (depends on 10)

The one or more computer-readable media of claim 10, wherein the application of the filtering further depends at least in a part upon a quantization level.

### Claim 16 (depends on 10)

The one or more computer-readable media of claim 10, wherein the one or more boundaries that are adaptively filtered are boundaries between 8×8 blocks, even when the transform size of the variable-block-size inverse frequency transform is smaller than 8×8.

### Claim 17 (depends on 10)

The one or more computer-readable media of claim 10, wherein the one or more boundaries are in a luminance plane of the reconstructed frame.

### Claim 18 (depends on 10)

The one or more computer-readable media of claim 10, wherein a single line of pixel values across the given boundary includes the multiple pixel values on the first side and the multiple pixel values on the second side.

### Claim 19

A computer system comprising a processing unit and memory, wherein the computer system implements a video decoder configured to perform operations comprising:
receiving, in a bitstream, encoded video data for a frame of a video sequence;
with the video decoder, reconstructing the frame, including, for each of multiple blocks of the frame, decoding a prediction residual for the block using a variable-block-size inverse frequency transform with support for switching of transform size at varying levels within the frame;
with the video decoder, adaptively filtering one or more boundaries between the multiple blocks in the reconstructed frame to reduce boundary discontinuities, wherein application of the filtering across a given boundary of the one or more boundaries includes:
computing a cross boundary discontinuity measure that quantifies pixel value discontinuity across the given boundary, wherein the cross boundary discontinuity measure is computed using at least one pixel value on a first side of the given boundary and at least one pixel value on a second side of the given boundary, the first side of the given boundary being opposite the second side of the given boundary;
computing a first side discontinuity measure that quantifies pixel value discontinuity on the first side of the given boundary, wherein the first side discontinuity measure is computed using multiple pixel values on the first side of the given boundary;
computing a second side discontinuity measure that quantifies pixel value discontinuity on the second side of the given boundary, wherein the second side discontinuity measure is computed using multiple pixel values on the second side of the given boundary; and
determining whether to filter the given boundary and, if so, filtering the given boundary, including adjusting the filtering the given boundary depending at least in part on the cross boundary discontinuity measure, the first side discontinuity measure, and the second side discontinuity measure; and
with the video decoder, storing the adaptively filtered, reconstructed frame in a frame buffer for use as a reference frame in subsequent motion compensation.

### Claim 20 (depends on 19)

The computer system of claim 19, wherein the bitstream includes switching information that indicates the transform size used for the prediction residual, and wherein format of the bitstream allows signaling of the switching information within the bitstream at frame level or at macroblock level.
