Video Encoder Segment Padding for Byte Boundary Alignment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional video coding systems face challenges in parallel decoding of video data due to segments not starting at byte boundaries, leading to increased complexity and inefficiency in memory addressing and processing.

Innovation Solution

A video encoder divides a picture into non-overlapping picture partitions such as tiles or wavefront parallel processing (WPP) waves, generating a coded slice Network Abstraction Layer (NAL) unit where each segment begins on a byte boundary, allowing for simpler parallel decoding by ensuring byte alignment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If segments are generated without byte boundary alignment, then the video coding can maintain simpler structure, but parallel decoding complexity increases and processing efficiency decreases

Engineering Contradiction:
Improveparallel decoding efficiencyVSAvoidmemory addressing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the coded slice NAL unit into multiple segments based on picture partitions (tiles or WPP waves), where each segment contains coded treeblocks from a specific partition. This segmentation allows independent processing of each segment by different decoding threads, enabling parallel decoding while maintaining byte boundary alignment for simple memory addressing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The video encoder performs preliminary padding of segments to ensure each segment begins on a byte boundary before the actual decoding process. This preliminary action of byte alignment preparation eliminates the need for complex memory addressing during parallel decoding, as the byte boundary alignment is already established in advance.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If segments are padded to begin on byte boundaries, then parallel decoding processing becomes simpler and more efficient, but the data structure becomes more complex

Engineering Contradiction:
Improvedecoding processing simplicityVSAvoidsegment structure complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent changes the structural parameter of segments by introducing byte boundary alignment through padding. By ensuring each segment starts at a byte boundary, the decoding process can use simple byte-addressed memory access instead of complex bit-aligned access, significantly simplifying the decoding operation while the padding overhead is minimal.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If picture partitions are used to group coded treeblocks, then parallel decoding can be enabled, but encoding complexity increases

Engineering Contradiction:
Improveparallel decoding capabilityVSAvoidencoding structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent uses picture partitions (tiles or WPP waves) that serve multiple functions: they define the spatial or temporal structure of the video data, enable parallel decoding by creating independent segments, and provide a framework for byte boundary alignment. This multi-functionality reduces the need for separate encoding mechanisms, as the same structure serves multiple purposes.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentEP2774369B1Padding of segments in coded slice NAL units
Publication Date: 2022.09.21 QUALCOMM INC
  • EP2774369B1 patent drawingFigure 1
  • EP2774369B1 patent drawingFigure 2
  • EP2774369B1 patent drawingFigure 3

AI summary

A video encoder divides a picture into a plurality of picture partitions, such as tiles or wavefront parallel processing (WPP) waves. The picture partitions are associated with non-overlapping subsets of the treeblocks of the picture. The video encoder generates a coded slice network abstraction layer (NAL) unit that includes encoded representations of the treeblocks associated with a slice of the picture. The coded treeblocks are grouped within the coded slice NAL unit into segments associated with different ones of the picture partitions. The video encoder pads one or more of the segments such that each of the segments begins on a byte boundary.