Multi-channel video encoding with cross-channel analysis

By integrating cross-channel analysis to adjust encoding parameters based on alpha channel data, the method improves video compression efficiency and quality for multi-channel videos, addressing the limitations of separate channel encoding.

WO2026156815A1PCT designated stage Publication Date: 2026-07-30INTEL CORP +3
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
INTEL CORP
Filing Date
2025-01-26
Publication Date
2026-07-30

AI Technical Summary

Technical Problem

Existing video compression methods fail to achieve high compression efficiency when encoding multi-channel videos, such as those with color and alpha channels, as they treat these channels separately, leading to suboptimal bandwidth usage and quality trade-offs.

Method used

Incorporate cross-channel analysis by leveraging information from the alpha channel to adjust encoding parameters for the color channel, such as quantization parameters, based on the contribution of color data frames to the rendered frame, allowing for improved compression efficiency and quality.

Benefits of technology

This approach achieves up to 20% bandwidth savings with no negative impact on video quality, by optimizing encoding parameters using alpha channel data to account for transparency and opacity in color frames, resulting in a composite bitstream with enhanced compression performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025075236_30072026_PF_FP_ABST
    Figure CN2025075236_30072026_PF_FP_ABST
Patent Text Reader

Abstract

Encoding color data frames of a color channel and data frames of an alpha channel separately and multiplexing the bitstreams together may not be able to achieve high compression efficiency. To improve compression efficiency, the information in the alpha channel can be used to adjust the encoding of the color channel. In particular, the information in the data frames can be used to classify whether a block in the color data frame is transparent, partially transparent, or opaque. The block classification can be used to adjust an encoding parameter for the block. For example, if the block is transparent, the encoding parameter can be set to a skip value to reduce the number of bits used for encoding the block.
Need to check novelty before this filing date? Find Prior Art

Description

MULTI-CHANNEL VIDEO ENCODING WITH CROSS-CHANNEL ANALYSISBackground

[0001] Video compression is a technique for making video files smaller and easier to transmit over the Internet. There are different methods and algorithms for video compression, with different performance and tradeoffs. Video compression involves encoding and decoding. Encoding is the process of transforming (uncompressed) video data into a compressed format. Decoding is the process of restoring video data from the compressed format. An encoder-decoder system is called a codec.Brief Description of the Drawings

[0002] Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.

[0003] FIG. 1 illustrates an encoding system and a plurality of decoding systems, according to some embodiments of the disclosure.

[0004] FIG. 2 illustrates an exemplary encoder to encode video frames and output an encoded bitstream, according to some embodiments of the disclosure.

[0005] FIG. 3 illustrates an exemplary decoder to decode an encoded bitstream and output a decoded video, according to some embodiments of the disclosure.

[0006] FIG. 4A illustrates a color data frame, according to some embodiments of the disclosure.

[0007] FIG. 4B illustrates an alpha data frame, according to some embodiments of the disclosure.

[0008] FIG. 5 illustrates an exemplary multi-channel encoding process, according to some embodiments of the disclosure.

[0009] FIG. 6 illustrates an exemplary multi-channel encoding process having cross-channel analysis, according to some embodiments of the disclosure.

[0010] FIG. 7 depicts cross-channel analysis, according to some embodiments of the disclosure.

[0011] FIG. 8 depicts an exemplary process for adjusting encoding parameter for a block, according to some embodiments of the disclosure.

[0012] FIG. 9 depicts an exemplary method for video encoding, according to some embodiments of the disclosure.

[0013] FIG. 10 depicts a block diagram of an exemplary computing device, according to some embodiments of the disclosure.Detailed DescriptionOverview

[0014] Video coding or video compression is the process of compressing video data for storage, transmission, and playback. Video compression may involve taking a large amount of raw video data and applying one or more compression techniques to reduce the amount of data needed to represent the video while maintaining an acceptable level of visual quality. In some cases, video compression can offer efficient storage and transmission of video content over limited bandwidth networks.

[0015] A video includes a temporal sequence of video frames, or color data frames. A frame (or data frame) may include an image, or a single still image. A frame may have millions of pixels. For example, a frame for an uncompressed 4K video may have a resolution of 3840x2160 pixels. Pixels may have luma / luminance and chroma / chrominance values as color data values. Pixels may have red-green-blue values as color data values. The terms “frame” and “picture” may be used interchangeably. The color data frames may form a color channel of the video, which represents light intensity or spectral information, encoding visual appearance of a pixel in terms of its color and brightness.

[0016] In some cases, a frame may be partitioned into one or more blocks to perform block-based video compression. The blocks of pixels resulting from partitioning may be referred to as partitions. Blocks may have sizes which are much smaller, such as 512x512 pixels, 256x256 pixels, 128x128 pixels, 64x64 pixels, 32x32 pixels, 16x16pixels, 8x8 pixels, 4x4 pixels, etc. A block may include a square or rectangular region of a frame. Various video compression techniques may use different terminology for the blocks or different partitioning structures for creating the blocks. In some video compression techniques, a frame may be partitioned into Coding Tree Units (CTUs) . A CTU may be divided (separately for luma and chroma components) into Coding Tree Blocks (CTBs) . A CTB can have a size of 64x64 pixels, 32x32 pixels, or 16x16 pixels. A CTB can be divided into Coding Units (CUs) . A CU can be divided into Prediction Units (PUs) and / or discrete cosine transforms (DCT) Transform Units (TUs) . CTUs, CTBs, CUs, PUs, and TUs may be considered blocks or partitions herein.

[0017] For certain kinds of video, such as computer graphics video, online streaming video, gaming video, video conferencing video, etc., the video may be a multi-channel video having channels that are associated with different modalities. In other words, the video may further include one or more temporal sequences of data frames. The data frames may form a further channel of the video, and individual data frames in the further channel may correspond or refer to the color data frames in the color channel. For instance, the further channel may be an alpha channel having alpha data frames as the data frames, where pixels of a data frame may have alpha data values. The data frames in the further channel may represent spatial transparency or opacity information, describing how much of the color data frames in the color channel should show through at each pixel position. A data frame can include a mask that controls visibility of the color data frame. The mask may be a binary mask. The mask may be a soft mask with values between 0 and 1.

[0018] When a frame is rendered for display, both the color data frame and the data frame are used to produce the rendered frame. The data frame can control the impact, contribution, priority, or weight of the color data frame at each pixel position to the rendered frame. The process of rendering the frame using the data frame of an alpha channel can be referred to as alpha compositing or alpha blending, where the data frame can operate as a multiplicative mask that scales the visibility of the color data frame. The process can create the appearance of partial or full transparency of the color data frame.

[0019] Modern codecs have treated the color channel and the further channel separately during encoding. In other words, the color data frames in the color channel are encoded into one bitstream (or layer) , and the data frames in the further channel are encoded independently into a further bitstream (or layer) . The bitstreams (or layers) are multiplexed together to form a final bitstream that encodes the multi-channel video. Encoding color data frames of a color channel and data frames of an alpha channel separately and multiplexing the bitstreams together may not be able to achieve high compression efficiency.

[0020] To improve compression efficiency, the information in the alpha channel (e.g., the data frames) can be used to adjust the encoding of the color channel (e.g., the color data frames) . The information in the further channel, which encodes the impact, contribution, priority, or weight of the color data frames, can be adopted and leveraged in the encoding process to improve compression efficiency. The information in the data frames of the further channel can be taken into consideration when compressing the color data frames in the color channel.

[0021] A contribution of a block of a color data frame of a color channel to a rendered frame can be determined. The contribution can be determined based on a corresponding block (at the same location of the frame) of a data frame of a further channel. The rendered frame can be generated by combining or blending the color data frame and the data frame. In some embodiments, the information in the data frames can be used to classify whether a block in the color data frame is transparent (no contribution) , partially transparent (partial contribution) , or opaque (full contribution) .

[0022] An encoding parameter to be used for encoding the block can be determined based on the contribution of the block of the color data frame to the rendered frame. The encoding parameter can be a parameter that impacts an encoding quality of the block (e.g., impacting compression level, impacting bitrate, impacting quantization level, impacting quality of a reconstructed block, impacting bit depth, impacting resolution, etc. ) . For example, the encoding parameter can be a quantization parameter.

[0023] In some embodiments, the block classification can be used to adjust an encoding parameter for the block. If the block is transparent, the encoding parameter can be set to a skip value to reduce the number of bits used for encoding the block. If the block is partially transparent, the encoding parameter can be set according to the amount of transparency. If the block is opaque, the encoding parameter can be set to a maximum quality value. Setting values for the encoding parameter can be performed according to a policy. The policy can be based on information about the color data frame (e.g., a frame type or picture type) . The policy can be based on information about the data frame (e.g., proportion of blocks in different classifications) . The policy can be based on whether to prioritize bandwidth savings or quality gains.

[0024] The process for determining the encoding parameter can be repeated for other blocks in the color data frame. The encoding parameters determined for various blocks can be used to encode the color data frame to generate a bitstream for the color channel. The data frames of the further channel can be encoded to generate a further bitstream. The bitstream for the color channel and the further bitstream for the further channel can be combined into a composite bitstream. The composite bitstream can result in higher compression efficiency and performance. In addition, the composite bitstream can achieve quality gain and bandwidth savings.

[0025] In one experiment, roughly 20%of bandwidth savings was observed, or quality gain for opaque regions can be achieved. No negative impact to quality of the rendered video was observed due to the transparent and partially transparent regions not being visible or fully visible in the rendered video.

[0026] Techniques for cross-channel analysis in multi-channel encoding described and illustrated herein may be used with a variety of block-based video compression codecs, such as AVC (Advanced Video Coding) , HEVC (High Efficiency Video Coding) , AV1 (AOMedia Video 1) , and VVC (Versatile Video Coding) . AVC, also known as “ITU-T H. 264” , was approved in 2003 and last revised in August 2024. HEVC, also known as "ITU-T H. 265” , was approved in 2013 and last revised in July 2024. AV1 is a video coding codec designed for video transmissions over the Internet. “AV1 Bitstream & Decoding Process Specification” version 1.1.1 with Errata was last modified in 2019. VVC, also known as “ITU-T H. 266” , was finalized in 2020 and last updated in September 2023.Related work

[0027] The various embodiments herein for determining the encoding parameter based on information in data frames of the further channel are distinguishable from other techniques involving adjustment of the quantization parameter in encoding.

[0028] For example, the embodiments described herein are distinguishable from content-adaptive quantization, where visual complexity of different regions are analyzed and used to adjust a quantization parameter (QP) . Higher QP is assigned to areas with high motion or texture where compression artifacts are less noticeable. Lower QP is assigned to smooth areas or regions of high interest (like faces) where artifacts would be more visible.

[0029] In another example, the embodiments described herein are distinguishable from region of interest quantization, where important image regions are classified and used to adjust QP. Lower QP are applied to important image regions to preserve quality, such as face regions in video conferencing.

[0030] In another example, the embodiments described herein are distinguishable from activity based quantization, where block activity is measured through variance or edge detection and used to adjust QP. Higher activity blocks get higher QP, since they mask compression artifacts better, and areas with less activity get lower QP to preserve details.

[0031] The embodiments described herein are different because these solutions do not involve using information in data frames of the further channel. Rather, visual complexity, important region of interests, and block activity information have to be extracted as part of the encoding process, which can add significant overhead to the encoding process. Also, in these solutions, the video does not involve a multi-channel video, and the rendered frame is not based on a color data frame in a channel and a data frame in a further channel. In addition, the video does not have channels associated with different modalities. Moreover, the videos do not have an alpha channel (or similar) as a further channel, which has information about the contribution of a block of the color data frame to the rendered frame.Video compression

[0032] FIG. 1 illustrates encoding system 130 and one or more decoding systems 1501... D, according to some embodiments of the disclosure.

[0033] Encoding system 130 may be implemented on computing device 1000 of FIG. 10. Encoding system 130 can be implemented in the cloud or in a data center. Encoding system 130 can be implemented on a device that is used to capture the video. Encoding system 130 can be implemented on a standalone computing system. Encoding system 130 may perform the process of encoding in video compression. Encoding system 130 may receive a video (e.g., uncompressed video, original video, raw video, etc. ) comprising a sequence of video frames 104. The video frames 104 may include image frames or images that make up the video. A video may have a frame rate or number of frames per second (FPS) , that defines the number of frames per second of video. The higher the FPS, the more realistic and fluid the video looks. Typically, FPS is greater than 24 frames per second for a natural, realistic viewing experience to a human viewer. Examples of video may include a television episode, a movie, a short film, a short video (e.g., less than 15 seconds long) , a video capturing gaming experience, computer-screen content, video conferencing content, live event broadcast content, sports content, a surveillance video, a video shot using a mobile computing device (e.g., a smartphone) , etc.

[0034] Encoding system 130 may include encoder 102 that receives video frames 104 and encodes video frames 104 into encoded bitstream 180. An exemplary implementation of encoder 102 is illustrated in FIG. 2.

[0035] Encoded bitstream 180 may be compressed, meaning that encoded bitstream 180 may be smaller in size than video frames 104. Encoded bitstream 180 may include a series of bits, e.g., having 0’s and 1’s. Encoded bitstream 180 may have header information, payload information, and footer information, which may be encoded as bits in the bitstream. Header information may provide information about one or more of: the format of encoded bitstream 180, the encoding process implemented in encoder 102, the parameters of encoder 102, and metadata of encoded bitstream 180. For example, header information may include one or more of: resolution information, frame rate, aspect ratio, color space, etc. Payload information may include data representing content of video frames 104, such as samples frames, symbols, syntax elements, etc. For example, payload information may include bits that encode one or more of motion predictors, transform coefficients, prediction modes, and quantization levels of video frames 104. Footer information may indicate an end of the encoded bitstream 180. Footer information may include other information including one or more of: checksums, error correction codes, and signatures. Format of encoded bitstream 180 may vary depending on the specification of the encoding and decoding process, i.e., the codec.

[0036] Encoded bitstream 180 may include packets, where encoded video data and signaling information may be packetized. One exemplary format is the Open Bitstream Unit (OBU) , which is used in AV1 encoded bitstreams. An OBU may include a header and a payload. The header can include information about the OBU, such as information that indicates the type of OBU. Examples of OBU types may include sequence header OBU, frame header OBU, metadata OBU, temporal delimiter OBU, and tile group OBU. Payloads in OBUs may carry quantized transform coefficients and syntax elements that may be used in the decoder to properly decode the encoded video data to regenerate video frames.

[0037] Encoded bitstream 180 may be transmitted to one or more decoding systems 1501... D, via network 140. Network 140 may be the Internet. Network 140 may include one or more of: cellular data networks, wireless data networks, wired data networks, cable Internet networks, fiber optic networks, satellite Internet networks, etc.

[0038] D number of decoding systems 1501... D are illustrated. At least one of the decoding systems 1501... D may be implemented on computing device 1000 of FIG. 10. Examples of systems 1501... D may include personal computers, mobile computing devices, gaming devices, augmented reality devices, mixed reality devices, virtual reality devices, televisions, etc. Each one of decoding systems 1501... D may perform the process of decoding in video compression. Each one of decoding systems 1501... D may include a decoder (e.g., decoder 1... D 1621... D) , and one or more display devices (e.g., display device 1... D 1641... D) . An exemplary implementation of a decoder, e.g., decoder 1 1621, is illustrated in FIG. 3.

[0039] For example, decoding system 1 1501, may include decoder 1 1621 and a display device 1 1641. Decoder 1 1621 may implement a decoding process of video compression. Decoder 1 1621 may receive encoded bitstream 180 and produce decoded video 1681. Decoded video 1681 may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device 1 1641 may output the decoded video 1681 for display to one or more human viewers or users of decoding system 1 1501.

[0040] For example, decoding system 2 1502, may include decoder 2 1622 and a display device 2 1642. Decoder 2 1622 may implement a decoding process of video compression. Decoder 2 1622 may receive encoded bitstream 180 and produce decoded video 1682. Decoded video 1682 may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device 2 1642 may output the decoded video 1682 for display to one or more human viewers or users of decoding system 2 1502.

[0041] For example, decoding system D 150D, may include decoder D 162D and a display device D 164D. Decoder D 162D may implement a decoding process of video compression. Decoder D 162D may receive encoded bitstream 180 and produce decoded video 168D. Decoded video 168D may include a series of video frames, which may be a version or reconstructed version of video frames 104 encoded by encoding system 130. Display device D 164D may output the decoded video 168D for display to one or more human viewers or users of decoding system D 150D.Video encoder

[0042] FIG. 2 illustrates encoder 102 to encode video frames 104 and output an encoded bitstream, according to some embodiments of the disclosure. Encoder 102 may include one or more of: signal processing operations and data processing operations, including inter and intra-prediction, transform, quantization, in-loop filtering, and entropy coding. Encoder 102 may include a reconstruction loop involving inverse quantization, and inverse transformation to guarantee that the decoder would see the same reference blocks and frames. Encoder 102 may receive video frames 104 and encodes video frames 104 into encoded bitstream 180. Encoder 102 may include one or more of partitioning 206, transform and quantization 214, inverse transform and inverse quantization 218, in-loop filter 228, motion estimation 234, inter-prediction 236, intra-prediction 238, and entropy coding 216.

[0043] In some embodiments, video frames 104 may be processed by pre-analysis 290 before encoder 102 applies an encoding process. Pre-analysis 290 and encoder 102 may form encoding system 130 as seen in FIG. 1. Pre-analysis 290 may analyze video frames 104 to determine picture statistics that may be used to inform one or more encoding processes to be performed by one or more components in encoder 102. Pre-analysis 290 may determine information that may be used for QP adaptation, scene cut detection, and frame type adaptation. Pre-analysis 290 may determine for each frame, a recommended frame type or picture type.

[0044] There are several frame types of picture types. I-frames or intra-frames may be least compressible and do not depend on other frames to decode. I-frames may include scene change frames. An I-frame may be a reference frame for one or more other frames. P-frames may depend on data from previous frames to decode and may be more compressible than I-frames. A P-frame may be a reference frame for one or more other frames. B-frames may depend on data from previous and forward frames to decode and may be more compressible than I-frames and P-frames. A B-frame can refer to two or more frames, such as one frame in the future and one frame in the past. Other frame types may include reference B-frame and non-reference B-frame. Reference B-frame can act as a reference for another frame. A non-reference B-frame is not used as a reference for any frame. Reference B-frames are stored in a decoded picture buffer whereas a non-reference B-frame does not need to be stored in the decoded picture buffer. P-frames and B-frames may be referred to as inter-frames. The order or encoding hierarchy in which I-frames, P-frames, and B-frames are arranged may be referred to as a group of pictures (GOP) . In some cases, a frame may be an instantaneous decoder refresh (IDR) frame within a GOP. An IDR-frame can indicate that no frame after the IDR-frame can reference any frame before the IDR-frame. Therefore, an IDR-frame may signal to a decoder that the decoder may clear the decoded picture buffer. Every IDR-frame may be an I-frame, but an I-frame may or may not be an IDR-frame. A closed GOP may begin with an IDR-frame.

[0045] Partitioning 206 may divide a frame in video frames 104 (or filtered version of video frames 104 from pre-analysis 290) into blocks or blocks of pixels. Different codecs may allow different variable range of block sizes. In one codec, a frame may be partitioned by partitioning 206 into blocks of size 128x128 or 64x64 pixels. In some cases, a frame may be partitioned by partitioning 206 into blocks of 256x256 or 512x512 pixels. In some cases, a frame may be partitioned by partitioning 206 into blocks of 32x32 or 16x16 pixels. Large blocks may be referred to as superblocks, macroblocks, or CTBs. Partitioning 206 may further divide each large block using a multi-way partition tree structure. In some cases, a partition of a superblock can be recursively divided further by partitioning 206 using the multi-way partition tree structure (e.g., down to 4x4 size blocks / partitions) . In another codec, a frame may be partitioned by partitioning 206 into CTUs of size 128x128 pixels. Partitioning 206 may divide a CTU using a quadtree partitioning structure into four CUs. Partitioning 206 may further recursively divide a CU using the quadtree partitioning structure. Partitioning 206 may (further) subdivide a CU using a multi-type tree structure (e.g., a quadtree, a binary tree, or ternary tree structure) . A smallest CU may have a size of 4x4 pixels. A CU may be referred to herein as a block or a partition. Partitioning 206 may output original samples 208, e.g., as blocks of pixels, or partitions. In some cases, one or more operations in partitioning 206 may be implemented in intra-prediction 238 and / or inter-prediction 236.

[0046] Intra-prediction 238 may predict samples of a block or partition from reconstructed predicted samples of previously encoded spatial neighboring / reference blocks of the same frame. Intra-prediction 238 may receive reconstructed predicted samples 226 (of previously encoded spatial neighbor blocks of the same frame) . Reconstructed predicted samples 226 may be generated by summer 222 from reconstructed predicted residues 224 and predicted samples 212. Intra-prediction 238 may determine a suitable predictor for predicting the samples from reconstructed predicted samples of previously encoded spatial neighboring / reference blocks of the same frame (thus making an intra-prediction decision) . Intra-prediction 238 may generate predicted samples 212 generated using the suitable predictor. Intra-prediction 238 may output or identify the neighboring / reference block and a predictor used in generating the predicted samples 212. The identified neighboring / reference block and predictor may be encoded in the encoded bitstream 180 to enable a decoder to reconstruct a block using the same neighboring / reference block and predictor. In one codec, intra-prediction 238 may support a number of diverse predictors, e.g., 56 different predictors. In one codec, intra-prediction 238 may support a number of diverse predictors, e.g., 95 different predictors. Some predictors, e.g., directional predictors, may capture different spatial redundancies in directional textures. Pixel values of a block can be predicted using a directional predictor in intra-prediction 238 by extrapolating pixel values of a neighboring / reference block along a certain direction. Intra-prediction 238 of different codecs may support different sets of predictors to exploit different spatial patterns within the same frame. Examples of predictors may include direct current (DC) , planar, Paeth, smooth, smooth vertical, smooth horizontal, recursive-based filtering modes, chroma-from-luma, IBC, color palette or palette coding, multiple-reference line, intra sub-partition, matrix-based intra-prediction (matrix coefficients may be defined by offline training using neural networks) , angular prediction, wide-angle prediction, cross-component linear model, template matching, etc. IBC works by copying a reference block within the same frame to predict a current block. Palette coding or palette mode works by using a color palette having a few colors (e.g., 2-8 colors) , and encoding a current block using indices to the color palette. In some cases, intra-prediction 238 may perform block-prediction, where a predicted block may be produced from a reconstructed neighboring / reference block of the same frame using a vector. Optionally, an interpolation filter of a certain type may be applied to the predicted block to blend pixels of the predicted block. Pixel values of a block can be predicted using a vector compensation process in intra-prediction 238 by translating a neighboring / reference block (within the same frame) according to the vector (and optionally applying an interpolation filter to the neighboring / reference block) to produce predicted samples 212. Intra-prediction 238 may output or identify the vector applied in generating predicted samples 212. In some codecs, intra-prediction 238 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information that identifies the vector predictor candidate, rather than encoding the applied vector itself. Intra-prediction 238 may output or identify an interpolation filter type applied in generating predicted samples 212.

[0047] Motion estimation 234 and inter-prediction 236 may predict samples of a block from samples of previously encoded frames, e.g., reference frames in decoded picture buffer 232. Motion estimation 234 and inter-prediction 236 may perform operations to make inter-prediction decisions or inter-prediction decisions. Motion estimation 234 may perform motion analysis and determine motion information for a current frame. Motion estimation 234 may determine a motion field for a current frame. A motion field may include motion vectors for blocks of a current frame. Motion estimation 234 may determine an average magnitude of motion vectors of a current frame. Motion estimation 234 may determine motion information, which may indicate how much motion is present in a current frame (e.g., large motion, very dynamic motion, small / little motion, very static) .

[0048] Motion estimation 234 and inter-prediction 236 may perform motion compensation, which may involve identifying a suitable reference block and a suitable motion predictor (or motion vector predictor) for a block and optionally an interpolation filter to be applied to the reference block. Motion estimation 234 may receive original samples 208 from partitioning 206. Motion estimation 234 may receive samples from decoded picture buffer 232 (e.g., samples of previously encoded frames or reference frames) . Motion estimation 234 may use a number of reference frames for determining one or more suitable motion predictors. A motion predictor may include a reference block and a motion vector that can be applied to generate a motion compensated block or predicted block. Motion predictors may include motion vectors that capture the movement of blocks between frames in a video. Motion estimation 234 may output or identify one or more reference frames and one or more suitable motion predictors. Inter-prediction 236 may apply the one or more suitable motion predictors determined in motion estimation 234 and one or more reference frames to generate predicted samples 212. The identified reference frame (s) and motion predictor (s) may be encoded in the encoded bitstream 180 to enable a decoder to reconstruct a block using the same reference frame (s) and motion predictor (s) . In one codec, motion estimation 234 may implement single reference frame prediction mode, where a single reference frame with a corresponding motion predictor is used for inter-prediction 236. Motion estimation 234 may implement compound reference frame prediction mode where two reference frames with two corresponding motion predictors are used for inter-prediction 236. In one codec, motion estimation 234 may implement techniques for searching and identifying good reference frame (s) that can yield the most efficient motion predictor. The techniques in motion estimation 234 may include searching for good reference frame (s) candidates spatially (within the same frame) and temporally (in previously encoded frames) . The techniques in motion estimation 234 may include searching a deep spatial neighborhood to find a spatial candidate pool. The techniques in motion estimation 234 may include utilizing temporal motion field estimation mechanisms to generate a temporal candidate pool. The techniques in motion estimation 234 may use a motion field estimation process. After temporal and spatial candidates may be ranked and a suitable motion predictor may be determined. In one codec, inter-prediction 236 may support a number of diverse motion predictors. Examples of predictors may include geometric motion vectors (complex, non-linear motion) , warped motion compensation (affine transformations that capture non-translational object movements) , overlapped block motion compensation, advanced compound prediction (compound wedge prediction, difference-modulated masked prediction, frame distance-based compound prediction, and compound inter-intra-prediction) , dynamic spatial and temporal motion vector referencing, affine motion compensation (capturing higher-order motion such as rotation, scaling, and sheering) , adaptive motion vector resolution modes, geometric partitioning modes, bidirectional optical flow, prediction refinement with optical flow, bi-prediction with weights, extended merge prediction, etc. Optionally, an interpolation filter of a certain type may be applied to the predicted block to blend pixels of the predicted block. Pixel values of a block can be predicted using the motion predictor / vector determined in a motion compensation process in motion estimation 234 and inter-prediction 236 and optionally applying an interpolation filter. In some cases, inter-prediction 236 may perform motion compensation, where a predicted block may be produced from a reconstructed reference block of a reference frame using the motion predictor / vector. Inter-prediction 236 may output or identify the motion predictor / vector applied in generating predicted samples 212. In some codecs, inter-prediction 236 may encode (1) a residual vector generated from the applied vector and a vector predictor candidate, and (2) information that identifies the vector predictor candidate, rather than encoding the applied vector itself. Inter-prediction 236 may output or identify an interpolation filter type applied in generating predicted samples 212.

[0049] Mode selection 230 may be informed by components such as motion estimation 234 to determine whether inter-prediction 236 or intra-prediction 238 may be more efficient for encoding a block (thus making an encoding decision) . Inter-prediction 236 may output predicted samples 212 of a predicted block. Inter-prediction 236 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate the predicted block. Intra-prediction 238 may output predicted samples 212 of a predicted block. Intra-prediction 238 may output a selected predictor and a selected interpolation filter (if applicable) that may be used to generate the predicted block. Regardless of the mode, predicted residues 210 may be generated by subtractor 220 by subtracting original samples 208 by predicted samples 212. In some cases, predicted residues 210 may include residual vectors from inter-prediction 236 and / or intra-prediction 238.

[0050] Transform and quantization 214 may receive predicted residues 210. Predicted residues 210 may be generated by subtractor 220 that takes original samples 208 and subtracts predicted samples 212 to output predicted residues 210. Predicted residues 210 may be referred to as prediction error of the intra-prediction 238 and inter-prediction 236 (e.g., error between the original samples and predicted samples 212) . Prediction error has a smaller range of values than the original samples and can be coded with fewer bits in encoded bitstream 180. Transform and quantization 214 may include one or more of transforming and quantizing. Transforming may include converting the predicted residues 210 from the spatial domain to the frequency domain. Transforming may include applying one or more transform kernels. Examples of transform kernels may include horizontal and vertical forms of DCT, asymmetrical discrete sine transform (ADST) , flip ADST, and identity transform (IDTX) , multiple transform selection, low-frequency non-separatable transform, subblock transform, non-square transforms, DCT-VIII, discrete sine transform VII (DST-VII) , discrete wavelet transform (DWT) , etc. Transforming may convert the predicted residues 210 into transform coefficients. Quantizing may quantize the transformed coefficients, e.g., by reducing the precision of the transform coefficients. Quantizing may include using quantization matrices (e.g., linear and non-linear quantization matrices) . The elements in the quantization matrix can be larger for higher frequency bands and smaller for lower frequency bands, which means that the higher frequency coefficients are more coarsely quantized, and the lower frequency coefficients are more finely quantized. Quantizing may include dividing each transform coefficient by a corresponding element in the quantization matrix and rounding to the nearest integer. Effectively, the quantization matrices may implement different QPs for different frequency bands and chroma planes and can use spatial prediction. A suitable quantization matrix can be selected and signaled for each frame and encoded in encoded bitstream 180. Transform and quantization 214 may output quantized transform coefficients and syntax elements 278 that indicate the coding modes and parameters used in the encoding process implemented in encoder 102.

[0051] A QP used in transform and quantization 214 controls how much detail or precision is preserved during video compression. A QP scales down the values of transform coefficients, making them smaller numbers that require fewer bits to encode. The quantization process is lossy, meaning that some details or information would be lost, which can impact the quality of a reconstructed block. QP determines how the transform coefficients are divided (scaled down) and rounded. Higher QP values mean more aggressive division, resulting in more loss of detail, smaller file size, and lower quality. Lower QP values mean less aggressive division, resulting in, better preservation of detail, larger file size, and higher quality. Mathematically, if a coefficient is C and quantization step (derived from QP) is Q, a quantized value = round (C / Q) . The larger the Q (derived from QP) , the more values get rounded to zero. Larger Q creates more opportunities for compression but loses more detail. QP can range from 0 to 51 in H.264 / H. 265. The relationship is logarithmic, where each increase of 6 in QP roughly doubles the quantization step size, doubling the level of compression / quality reduction. With a low QP (0-15) , the result is nearly lossless, very high quality. With a medium QP (16-30) , the result is of good quality, having visible compression only in complex areas. With a high QP (31-45) , the result has noticeable compression artifacts. With a very high QP (46-51) , the result has severe quality degradation.

[0052] Inverse transform and inverse quantization 218 may apply the inverse operations performed in transform and quantization 214 to produce reconstructed predicted residues 224 as part of a reconstruction path to produce decoded picture buffer 232 for encoder 102. Inverse transform and inverse quantization 218 may receive quantized transform coefficients and syntax elements 278. Inverse transform and inverse quantization 218 may perform one or more inverse quantization operations, e.g., applying an inverse quantization matrix, to obtain the unquantized / original transform coefficients. Inverse transform and inverse quantization 218 may perform one or more inverse transform operations, e.g., inverse transform (e.g., inverse DCT, inverse DWT, etc. ) , to obtain reconstructed predicted residues 224. A reconstruction path is provided in encoder 102 to generate reference blocks and frames, which are stored in decoded picture buffer 232. The reference blocks and frames may match the blocks and frames to be generated in the decoder. The reference blocks and frames are used as reference blocks and frames by motion estimation 234, inter-prediction 236, and intra-prediction 238.

[0053] In-loop filter 228 may implement filters to smooth out artifacts introduced by the encoding process in encoder 102 (e.g., processing performed by partitioning 206 and transform and quantization 214) . In-loop filter 228 may receive reconstructed predicted samples 226 from summer 222 and output frames to decoded picture buffer 232. Examples of in-loop filters may include constrained low-pass filter, directional deringing filter, edge-directed conditional replacement filter, loop restoration filter, Wiener filter, self-guided restoration filters, constrained directional enhancement filter (CDEF) , LMCS filter, Sample Adaptive Offset (SAO) filter, Adaptive Loop Filter (ALF) , cross-component ALF, low-pass filter, deblocking filter, etc. For example, applying a deblocking filter across a boundary between two blocks can resolve blocky artifacts caused by the Gibbs phenomenon. In some embodiments, in-loop filter 228 may fetch data from a frame buffer having reconstructed predicted samples 226 of various blocks of a video frame. In-loop filter 228 may determine whether to apply an in-loop filter or not. In-loop filter 228 may determine one or more suitable filters that achieve good visual quality and / or one or more suitable filters that suitably remove the artifacts introduced by the encoding process in encoder 102. In-loop filter 228 may determine a type of an in-loop filter to apply across a boundary between two blocks. In-loop filter 228 may determine one or more strengths of an in-loop filter (e.g., filter coefficients) to apply across a boundary between two blocks based on the reconstructed predicted samples 226 of the two blocks. In some cases, in-loop filter 228 may take a desired bitrate into account when determining one or more suitable filters. In some cases, in-loop filter 228 may take a specified QP into account when determining one or more suitable filters. In-loop filter 228 may apply one or more (suitable) filters across a boundary that separates two blocks. After applying the one or more (suitable) filters, in-loop filter 228 may write (filtered) reconstructed samples to a frame buffer such as decoded picture buffer 232.

[0054] Entropy coding 216 may receive quantized transform coefficients and syntax elements 278 (e.g., referred to herein as symbols) and perform entropy coding. Entropy coding 216 may generate and output encoded bitstream 180. Entropy coding 216 may exploit statistical redundancy and apply lossless algorithms to encode the symbols and produce a compressed bitstream, e.g., encoded bitstream 180. Entropy coding 216 may implement some version of arithmetic coding. Different versions may have different pros and cons. In one codec, entropy coding 216 may implement (symbol to symbol) adaptive multi-symbol arithmetic coding. In another codec, entropy coding 216 may implement context-based adaptive binary arithmetic coder (CABAC) . Binary arithmetic coding differs from multi-symbol arithmetic coding. Binary arithmetic coding encodes only a bit at a time, e.g., having either a binary value of 0 or 1. Binary arithmetic coding may first convert each symbol into a binary representation (e.g., using a fixed number of bits per-symbol) . Handling just binary value of 0 or 1 can simplify computation and reduce complexity. Binary arithmetic coding may assign a probability to each binary value (e.g., a chance of the bit having a binary value of 0 and a chance of the bit having a binary value of 1) . Multi-symbol arithmetic coding performs encoding for an alphabet having at least two or three symbol values and assigns a probability to each symbol value in the alphabet. Multi-symbol arithmetic coding can encode more bits at a time, which may result in a fewer number of operations for encoding the same amount of data. Multi-symbol arithmetic coding can require more computation and storage (since probability estimates may be updated for every element in the alphabet) . Maintaining and updating probabilities (e.g., cumulative probability estimates) for each possible symbol value in multi-symbol arithmetic coding can be more complex (e.g., complexity grows with alphabet size) . Multi-symbol arithmetic coding is not to be confused with binary arithmetic coding, as the two different entropy coding processes are implemented differently and can result in different encoded bitstreams for the same set of quantized transform coefficients and syntax elements 278.Video decoder

[0055] FIG. 3 illustrates decoder 1 1621 to decode an encoded bitstream and output a decoded video, according to some embodiments of the disclosure. Decoder 1 1621 may include one or more of: signal processing operations and data processing operations, including entropy decoding, inverse transform, inverse quantization, inter and intra-prediction, in-loop filtering, etc. Decoder 1 1621 may have signal and data processing operations that mirror the operations performed in the encoder. Decoder 1 1621 may apply signal and data processing operations that are signaled in encoded bitstream 180 to reconstruct the video. Decoder 1 1621 may receive encoded bitstream 180 and generate and output decoded video 1681 having a plurality of video frames. The decoded video 1681 may be provided to one or more display devices for display to one or more human viewers. Decoder 1 1621 may include one or more of entropy decoding 302, inverse transform and inverse quantization 218, in-loop filter 228, inter-prediction 236, and intra-prediction 238. Some of the functionalities are previously described and used in the encoder, such as encoder 102 of FIG. 2.

[0056] Entropy decoding 302 may decode the encoded bitstream 180 and output symbols that were coded in the encoded bitstream 180. The symbols may include quantized transform coefficients and syntax elements 278. Entropy decoding 302 may reconstruct the symbols from the encoded bitstream 180.

[0057] Inverse transform and inverse quantization 218 may receive quantized transform coefficients and syntax elements 278 and perform operations which are performed in the encoder. Inverse transform and inverse quantization 218 may output reconstructed predicted residues 224. Summer 222 may receive reconstructed predicted residues 224 and predicted samples 212 and generate reconstructed predicted samples 226. Inverse transform and inverse quantization 218 may output syntax elements 278 having signaling information for informing / instructing / controlling operations in decoder 1 1621 such as mode selection 230, intra-prediction 238, inter-prediction 236, and in-loop filter 228.

[0058] Depending on the prediction modes signaled in the encoded bitstream 180 (e.g., as syntax elements in quantized transform coefficients and syntax elements 278) , intra-prediction 238 or inter-prediction 236 may be applied to generate predicted samples 212.

[0059] Summer 222 may sum predicted samples 212 of a decoded reference block and reconstructed predicted residues 224 to produce reconstructed predicted samples 226 of a reconstructed block. For intra-prediction 238, the decoded reference block may be in the same frame as the block that is being decoded or reconstructed. For inter-prediction 236, the decoded reference block may be in a different (reference) frame in decoded picture buffer 232.

[0060] Intra-prediction 238 may determine a reconstructed vector based on a residual vector and a selected vector predictor candidate. Intra-prediction 238 may apply a reconstructed predictor or vector (e.g., in accordance with signaled predictor information) to the reconstructed block, which may be generated using a decoded reference block of the same frame. Intra-prediction 238 may apply a suitable interpolation filter type (e.g., in accordance with signaled interpolation filter information) to the reconstructed block to generate predicted samples 212.

[0061] Inter-prediction 236 may determine a reconstructed vector based on a residual vector and a selected vector predictor candidate. Inter-prediction 236 may apply a reconstructed predictor or vector (e.g., in accordance with signaled predictor information) to a reconstructed block, which may be generated using a decoded reference block of a different frame from decoded picture buffer 232. Inter-prediction 236 may apply a suitable interpolation filter type (e.g., in accordance with signaled interpolation filter information) to the reconstructed block to generate predicted samples 212.

[0062] In-loop filter 228 may receive reconstructed predicted samples 226. In-loop filter 228 may apply one or more filters signaled in the encoded bitstream 180 to the reconstructed predicted samples 226. In-loop filter 228 may output decoded video 1681.Multi-channel videos

[0063] A multi-channel video has channels that are associated with different modalities. The video can include a channel, such as a color channel, that includes color data frames. The video can include a further channel, such as an alpha channel, that includes data frames. The multiple channels can be used together to generate rendered frames.

[0064] FIG. 4A illustrates color data frame 460, according to some embodiments of the disclosure. Color data frame 460 may include an image. Color data frame 460 may depict a beaver (labeled 404) , and a flower (labeled 406) in a foreground of a scene. Color data frame 460 may depict the foreground in front of a background (labeled 402) .

[0065] FIG. 4B illustrates alpha data frame 480, according to some embodiments of the disclosure. Alpha data frame 480 may correspond to color data frame 460 of FIG. 4A. Alpha data frame 480 may have pixel values which specify the impact, contribution, priority, or weight of color data frame 460 at each pixel position to a rendered frame. Alpha data frame 480 can specify spatial transparency or opacity information, controlling how much of color data frame 460 should show through at each pixel position. Alpha data frame 480 can include a mask, e.g., a multiplicative mask. A mask controls whether a pixel in color data frame 460 is visible and or not visible. In some cases, the mask is a binary mask, which has values of 0 and 1to indicate not visible and visible respectively. In some cases, the mask is a soft mask, which has continuous values between 0 and 1 to indicate a degree of visibility. In some cases, the mask is a selection map, which has values that selects or indicates whether a pixel in color data frame 460 is visible or not in the rendered frame.

[0066] The values of the mask controls contribution of color data frame 460 to the rendered frame. Full visibility at a pixel means full contribution to the rendered frame, or that the pixel is opaque. Partial visibility at a pixel means partial contribution to the rendered frame, or that the pixel is partially transparent. No visibility at a pixel means no contribution to the rendered frame, or that the pixel is fully transparent. Pixels in 412 corresponding to the background may have values that indicate no contribution to the rendered frame. The rendering process may render a different background for the beaver. Pixels in 414 corresponding to the beaver may have values that indicate full contribution to the rendered frame. The rendering process may render the beaver with full visibility. Pixels in 416 corresponding to the flower may have values that indicate partial contribution to the rendered frame. The rendering process may render the flower with partial visibility. Values in alpha data frame 480 can be multiplied with corresponding values in color data frame 460 to control visibility and contribution of color data frame 460 to the rendered frame.

[0067] There are other data frames (similar to alpha data frame 480) which indicate pixels’ contribution to the rendered frame. In one example, the further channel is a depth channel or a Z-channel. A depth channel can represent a distance of each pixel within the scene from the camera. The depth channel can have depth data frames, where a depth data frame can have distance values. The distance values can be generated based on data from sensors. The sensor data can be used to deduce or infer depth of objects in the scene. Examples of sensors include cameras, light detection and ranging sensors, and radio detection and ranging sensors. When rendering a frame, a depth data frame in the depth channel can impact a depth-aware image rendering process that may render a pixel of color data frame 460 differently depending on the depth information in the data frame. Examples of depth-aware image rendering processes may include simulating camera focus by blurring based on depth, creation of atmospheric fog, volumetric lighting, scene manipulation based on depth, relighting based on depth, depth guided filters, etc.

[0068] A multi-channel video can include one or more color channels, each channel having color data frames. The multi-channel video can include one or more further channels, each further channel having data frames that have a different modality from the one or more color channels. Examples of further channels include an alpha channel and a depth channel.Multi-channel video encoding and cross-channel analysis

[0069] FIG. 5 illustrates exemplary multi-channel encoding process 500, according to some embodiments of the disclosure. Color data frames 502 of a channel may be encoded using encoder 102. In some cases, color data frames 502 may be analyzed by pre-analysis 290 to better inform decisions in encoder 102. Encoder 102 can generate color channel bitstream 512 based on color data frames 502. Alpha data frames 504 of a further channel may be encoded using encoder 102. In some cases, alpha data frames 504 may be analyzed by pre-analysis 290 to better inform decisions in encoder 102. Encoder 102 can generate alpha channel bitstream 514 based on alpha data frames 504. Color channel bitstream 512 and alpha channel bitstream 514 can be combined, stitched, multiplexed together by combine 520 to generate a multi-channel bitstream 540 (or a composite bitstream) . Combine 520 may arrange color channel bitstream 512 and alpha channel bitstream 514 as separate layers. At a decoder, the layers in multi-channel bitstream 540 can be separated and decoded separately. The decoded color data frames and the decoded alpha data frames can be used together to render frames, e.g., for display. As discussed previously, encoding the channels separately can result in inefficient compression.

[0070] In some implementations, color data frames 502 and alpha data frames 504 are generated by separating or splitting color channel information and alpha channel information from multi-channel data frames.

[0071] FIG. 6 illustrates exemplary multi-channel encoding process 600 having cross-channel analysis 602, according to some embodiments of the disclosure. Encoder 102 is augmented to include cross-channel analysis 602. Specifically, cross-channel analysis 602 may take information from alpha data frames 504 and use the information to influence one or more encoding parameters used in encoder 102 to encode color data frames 502. As a result, encoder 102 can improve compression efficiency and / or increase quality of multi-channel bitstream 540.

[0072] To illustrate the impact of cross-channel analysis 602, the encoding process of color data frame 460 of FIG. 4A leveraging information from alpha data frame 480 of FIG. 4B is described. Alpha data frame 480 may indicate that pixels in 404 (the beaver) are opaque or has full contribution to the rendered frame, pixels in 406 (the flower) are partially transparent or has partial contribution to the rendered frame, and pixels in 402 (the background) are fully transparent or has no contribution to the rendered frame. The beaver could be an opaque object, and the beaver will appear in the rendered frame (e.g., a final blended frame) with 100%or full weight. The encoded quality for the beaver is very important. Blocks which depict the beaver can be encoded with the best or highest quality. One or more encoding parameters can be set to ensure that the blocks are encoded with the best or highest quality. The flower can be partially transparent, and the flower will appear in the rendered frame having less than 100%weight and more than 0%weight. The encoded quality of the flower may not be as important as the encoding quality of the beaver. Blocks which depict the flower can be encoded with moderate quality. One or more encoding parameters can be set to ensure that the blocks are encoded with moderate quality. The background can be fully transparent, and the background will not appear in the rendered frame at all, or at 0%weight. The encoded quality of the background is not important at all. Blocks which depict the background can be skipped to accelerate the encoding process and save bitstream size. One or more encoding parameters can be set to ensure that the blocks are skipped.

[0073] FIG. 7 depicts cross-channel analysis 602, according to some embodiments of the disclosure. Cross-channel analysis 602 can include block analysis 704 and encoding parameter adjustment 706. In some cases, cross-channel analysis 602 may be implemented at least partially in encoder 102 as illustrated in FIG. 6. In some cases, cross-channel analysis 602 may be implemented within encoder 102. In some cases, cross-channel analysis 602 may be implemented outside of encoder 102. Encoder 102 as illustrated in FIG. 6 can use the encoding parameter set by encoding parameter adjustment 706 to encode one or more color data frames to generate a bitstream (color channel bitstream 512 in FIG. 6) .

[0074] Block analysis 704 can determine a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame. The rendered frame is rendered based on the color data frame and the data frame. Block analysis 704 can evaluate one or more data values of the corresponding block of the data frame. The one or more data values in the corresponding block can indicate the impact, weight, priority, or contribution of the block of the color data frame to the rendered frame. Block analysis 704 can calculate a statistic based on the one or more data values of the corresponding block. Block analysis 704 can compare the one or more data values of the corresponding block against a threshold. Block analysis 704 can compare a statistic derived from the one or more data values of the corresponding block against a threshold. In some embodiments, block analysis 704 may classify whether the block has no contribution to the rendered frame, partial contribution to the rendered frame, or full contribution to the rendered frame.

[0075] Encoding parameter adjustment 706 can determine an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame. The encoding parameter can impact an encoding quality of the block (e.g., controlling an amount of loss of the encoded block, controlling a quality of a reconstructed block, etc. ) . The encoding parameter can be a quantization parameter for the block. It is envisioned that other types of encoding parameters which may impact the compression performance and / or efficiency can be determined by encoding parameter adjustment 706.

[0076] Encoding parameter adjustment 706 can adjust or change a value for the encoding parameter in response to the contribution of the block to the rendered frame. In some embodiments, encoding parameter adjustment 706 may set the encoding parameter such that that a quality of the block increases when the contribution of the block to the rendered frame increases. In some embodiments, encoding parameter adjustment 706 may set the encoding parameter such that that a quality of the block decreases when the contribution of the block to the rendered frame decreases. In some embodiments, encoding parameter adjustment 706 may set the encoding parameter to a skip value (e.g., a quantization parameter can be set to the largest allowed value, or infinity) when the contribution of the block to the rendered frame is at a minimum value or a lowest value within a range of possible contribution values. In some embodiments, encoding parameter adjustment 706 may set the encoding parameter to a maximum quality value (e.g., a quantization parameter can be set to the smallest allowed value or 0) when the contribution of the block to the rendered frame is at a maximum value or a highest value within a range of possible contribution values.

[0077] In some embodiments, cross-channel analysis 602 can include determine global policy 702. Global policy 702 can determine a policy which governs how the encoding parameter can be adjusted based on the contribution. Encoding parameter adjustment 706 can set the encoding parameter based on a policy determined in determine global policy 702. The policy can specify a relationship between different contribution values to different values for the encoding parameter. For example, the policy can specify how aggressively to increase or decrease the quality of encoding. The policy can specify specific values to be used for the encoding parameter, or range of values to be used for the encoding parameter. Determine global policy 702 may determine a policy based on one or more factors or considerations. In some cases, the policy may take the one or more factors or considerations into account when specifying the relationship between different contribution values to different values for the encoding parameter

[0078] The policy can be dependent on or take into account information about the color data frame (e.g., frame type, picture type, complexity, amount of motion, etc. ) . The information about the color data frame can impact how the encoding parameter is adjusted in encoding parameter adjustment 706. The information about the color data frame may influence the range of values to be used for the encoding parameter, or how aggressively to increase / decrease the quality of the block based on the contribution of the block.

[0079] The policy can be dependent on or take into account information about the data frame (e.g., proportion of transparent pixels, proportion of partially transparent pixels, proportion of opaque pixels, etc. ) . The information about the data frame can impact how the encoding parameter is adjusted in encoding parameter adjustment 706. The information about the data frame may influence the range of values to be used for the encoding parameter, or how aggressively to increase / decrease the quality of the block based on the contribution of the block. If the information about the data frame indicates that there are not many pixels that have a high contribution to the rendered frame (which presents an opportunity to achieve significant bit savings) , the quality of the block may be aggressively decreased (to use fewer bits to encode the block) when the contribution is low or not very high.

[0080] In some embodiments, the policy can be set by determine global policy 702 based on whether to prioritize bandwidth savings or quality gains. Prioritizing bandwidth savings may influence the range of values to be used for the encoding parameter to reduce bit usage. Prioritizing bandwidth savings may cause the quality of the block to decrease more aggressively when the contribution of the block is low. Prioritizing quality gains may influence the range of values to be used for the encoding parameter to increase encoding quality. Prioritizing quality gains may cause the quality of the block to increase aggressively when the contribution of the block is high.

[0081] FIG. 8 depicts exemplary process 800 for adjusting encoding parameter for a block, according to some embodiments of the disclosure. Process 800 can be carried out by encoder 102 and cross-channel analysis 602 of FIG. 6. Process 800 can be performed by computing device 1000 of FIG. 10.

[0082] For a given block, encoder 102 may optimize encoding for the block in 802. Optimizing encoding for the block may include determining the mode (intra-prediction or inter-prediction) and a predictor to be used for the block. Optimizing encoding for the block may include determining a reference block to be used for the predictor. Optimizing encoding for the block may include determining one or more encoding parameters for encoding the block, where the one or more encoding parameters are set to one or more initial values.

[0083] Cross-channel analysis 602 may perform block classification. In 804, cross-channel analysis 602 may determine whether the block has no contribution to the rendered frame. In 806, cross-channel analysis 602 may determine whether the block has partial contribution to the rendered frame. In 808, cross-channel analysis 602 may determine whether the block has full contribution to the rendered frame.

[0084] If 804 determines that the block has no contribution to the rendered frame, process 800 may proceed to 812, where cross-channel analysis 602 may set an encoding parameter to force the block to be skipped in the encoding process.

[0085] In some embodiments, process 800 may include an optional check in 810 to determine whether the block with no contribution to the rendered frame is reference by one or more other blocks (e.g., neighboring blocks for intra-prediction or blocks in other frames for inter-prediction) . If 810 determines that the block with no contribution to the rendered frame is reference by one or more other blocks, process 800 may proceed to 830, where cross-channel analysis 602 may set an encoding parameter to maintain quality of the block while optionally reducing the number of bits used to encode the block.

[0086] If 806 determines that the block has partial contribution to the rendered frame, process 800 may proceed to 814, where cross-channel analysis 602 may set an encoding parameter according to the contribution.

[0087] If 808 determines that the block has full contribution to the rendered frame, process 800 may proceed to 816, where cross-channel analysis 602 may set an encoding parameter according to maximize quality of the block.

[0088] In 818, a color data frame is encoded based on the encoding parameters set in 812, 830, 814, or 816 for various blocks of the color data frame.

[0089] FIG. 9 depicts exemplary method 900 for video encoding, according to some embodiments of the disclosure. Method 900 can be carried out by encoder 102 and cross-channel analysis 602 of FIG. 6. Method 900 can be performed by computing device 1000 of FIG. 10. In 902, a contribution of a block of a color data frame to a rendered frame is determined based on a corresponding block of a data frame. The rendered frame is rendered based on the color data frame and the data frame. In 904, an encoding parameter for the block of the color data frame is determined based on the contribution of the block to the rendered frame. In 906, the color data frame is encoded using the encoding parameter for the block to generate a bitstream.Exemplary computing device

[0090] FIG. 10 is a block diagram of an apparatus or a system, e.g., an exemplary computing device 1000, according to some embodiments of the disclosure. One or more computing devices 1000 may be used to implement the functionalities described with the FIGS. and herein. A number of components are illustrated in the FIGS. can be included in the computing device 1000, but any one or more of these components may be omitted or duplicated, as suitable for the application. In some embodiments, some or all of the components included in the computing device 1000 may be attached to one or more motherboards. In some embodiments, some or all of these components are fabricated onto a single system on a chip (SoC) die. Additionally, in various embodiments, the computing device 1000 may not include one or more of the components illustrated in FIG. 10, and the computing device 1000 may include interface circuitry for coupling to the one or more components. For example, the computing device 1000 may not include a display device 1006, and may include display device interface circuitry (e.g., a connector and driver circuitry) to which a display device 1006 may be coupled. In another set of examples, the computing device 1000 may not include an audio input device 1018 or an audio output device 1008 and may include audio input or output device interface circuitry (e.g., connectors and supporting circuitry) to which an audio input device 1018 or audio output device 1008 may be coupled.

[0091] The computing device 1000 may include a processing device 1002 (e.g., one or more processing devices, one or more of the same type of processing device, one or more of different types of processing device) . The processing device 1002 may include processing circuitry or electronic circuitry that process electronic data from data storage elements (e.g., registers, memory, resistors, capacitors, quantum bit cells) to transform that electronic data into other electronic data that may be stored in registers and / or memory.Examples of processing device 1002 may include a CPU, a GPU, a quantum processor, a machine learning processor, an artificial intelligence processor, a neural network processor, an artificial intelligence accelerator, an application specific integrated circuit (ASIC) , an analog signal processor, an analog computer, a microprocessor, a digital signal processor, a field programmable gate array (FPGA) , a tensor processing unit (TPU) , a data processing unit (DPU) , etc.

[0092] The computing device 1000 may include a memory 1004, which may itself include one or more memory devices such as volatile memory (e.g., DRAM) , nonvolatile memory (e.g., read-only memory (ROM) ) , high bandwidth memory (HBM) , flash memory, solid state memory, and / or a hard drive. Memory 1004 includes one or more non-transitory computer-readable storage media. In some embodiments, memory 1004 may include memory that shares a die with the processing device 1002.

[0093] In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform operations described herein, such as operations illustrated in FIGS. 6-9, process 600, process 800, and method 900. In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform one or more operations of encoder 102. In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform one or more operations of pre-analysis 290. In some embodiments, memory 1004 includes one or more non-transitory computer-readable media storing instructions executable to perform one or more operations of cross-channel analysis 602. The instructions stored in memory 1004 may be executed by processing device 1002.

[0094] In some embodiments, memory 1004 may store data, e.g., data structures, binary data, bits, metadata, files, blobs, etc., as described with the FIGS. and herein. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of:input frames to the encoder (e.g., video frames 104, color data frames 502, and alpha data frames 504) , intermediate data structures computed by the encoder, bitstream generated by the encoder (e.g., encoded bitstream 180, color channel bitstream 512, alpha channel bitstream 514) , bitstream received by a decoder (e.g., encoded bitstream 180, multi-channel bitstream 540) , intermediate data structures computed by the decoder, and reconstructed frames generated by the decoder. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by pre-analysis 290. Memory 1004 may include one or more non-transitory computer-readable media storing one or more of: data received and / or data generated by cross-channel analysis 602.

[0095] In some embodiments, the computing device 1000 may include a communication device 1012 (e.g., one or more communication devices) . For example, the communication device 1012 may be configured for managing wired and / or wireless communications for the transfer of data to and from the computing device 1000. The term "wireless" and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communications channels, etc., that may communicate data through the use of modulated electromagnetic radiation through a nonsolid medium. The term does not imply that the associated devices do not contain any wires, although in some embodiments they might not. The communication device 1012 may implement any of a number of wireless standards or protocols, including but not limited to Institute for Electrical and Electronic Engineers (IEEE) standards including Wi-Fi (IEEE 802.10 family) , IEEE 802.16 standards (e.g., IEEE 802.16-2005 Amendment) , Long-Term Evolution (LTE) project along with any amendments, updates, and / or revisions (e.g., advanced LTE project, ultramobile broadband (UMB) project (also referred to as "3GPP2" ) , etc. ) . IEEE 802.16 compatible Broadband Wireless Access (BWA) networks are generally referred to as WiMAX networks, an acronym that stands for worldwide interoperability for microwave access, which is a certification mark for products that pass conformity and interoperability tests for the IEEE 802.16 standards. The communication device 1012 may operate in accordance with a Global System for Mobile Communication (GSM) , General Packet Radio Service (GPRS) , Universal Mobile Telecommunications System (UMTS) , High Speed Packet Access (HSPA) , Evolved HSPA (E-HSPA) , or LTE network. The communication device 1012 may operate in accordance with Enhanced Data for GSM Evolution (EDGE) , GSM EDGE Radio Access Network (GERAN) , Universal Terrestrial Radio Access Network (UTRAN) , or Evolved UTRAN (E-UTRAN) . The communication device 1012 may operate in accordance with Code-division Multiple Access (CDMA) , Time Division Multiple Access (TDMA) , Digital Enhanced Cordless Telecommunications (DECT) , Evolution-Data Optimized (EV-DO) , and derivatives thereof, as well as any other wireless protocols that are designated as 4G, 4G, 5G, and beyond. The communication device 1012 may operate in accordance with other wireless protocols in other embodiments. The computing device 1000 may include an antenna 1022 to facilitate wireless communications and / or to receive other wireless communications (such as radio frequency transmissions) . Computing device 1000 may include receiver circuits and / or transmitter circuits. In some embodiments, the communication device 1012 may manage wired communications, such as electrical, optical, or any other suitable communication protocols (e.g., the Ethernet) . As noted above, the communication device 1012 may include multiple communication chips. For instance, a first communication device 1012 may be dedicated to shorter-range wireless communications such as Wi-Fi or Bluetooth, and a second communication device 1012 may be dedicated to longer-range wireless communications such as global positioning system (GPS) , EDGE, GPRS, CDMA, WiMAX, LTE, EV-DO, or others. In some embodiments, a first communication device 1012 may be dedicated to wireless communications, and a second communication device 1012 may be dedicated to wired communications.

[0096] The computing device 1000 may include power source  / power circuitry 1014. The power source  / power circuitry 1014 may include one or more energy storage devices (e.g., batteries or capacitors) and / or circuitry for coupling components of the computing device 1000 to an energy source separate from the computing device 1000 (e.g., DC power, AC power, etc. ) .

[0097] The computing device 1000 may include a display device 1006 (or corresponding interface circuitry, as discussed above) . The display device 1006 may include any visual indicators, such as a heads-up display, a computer monitor, a projector, a touchscreen display, a liquid crystal display (LCD) , a light-emitting diode display, or a flat panel display, for example.

[0098] The computing device 1000 may include an audio output device 1008 (or corresponding interface circuitry, as discussed above) . The audio output device 1008 may include any device that generates an audible indicator, such as speakers, headsets, or earbuds, for example.

[0099] The computing device 1000 may include an audio input device 1018 (or corresponding interface circuitry, as discussed above) . The audio input device 1018 may include any device that generates a signal representative of a sound, such as microphones, microphone arrays, or digital instruments (e.g., instruments having a musical instrument digital interface (MIDI) output) .

[0100] The computing device 1000 may include a GPS device 1016 (or corresponding interface circuitry, as discussed above) . The GPS device 1016 may be in communication with a satellite-based system and may receive a location of the computing device 1000, as known in the art.

[0101] The computing device 1000 may include a sensor 1030 (or one or more sensors) . The computing device 1000 may include corresponding interface circuitry, as discussed above) . Sensor 1030 may sense physical phenomenon and translate the physical phenomenon into electrical signals that can be processed by, e.g., processing device 1002. Examples of sensor 1030 may include: capacitive sensor, inductive sensor, resistive sensor, electromagnetic field sensor, light sensor, camera, imager, microphone, pressure sensor, temperature sensor, vibrational sensor, accelerometer, gyroscope, strain sensor, moisture sensor, humidity sensor, distance sensor, range sensor, time-of-flight sensor, pH sensor, particle sensor, air quality sensor, chemical sensor, gas sensor, biosensor, ultrasound sensor, a scanner, etc.

[0102] The computing device 1000 may include another output device 1010 (or corresponding interface circuitry, as discussed above) . Examples of the other output device 1010 may include an audio codec, a video codec, a printer, a wired or wireless transmitter for providing information to other devices, haptic output device, gas output device, vibrational output device, lighting output device, home automation controller, or an additional storage device.

[0103] The computing device 1000 may include another input device 1020 (or corresponding interface circuitry, as discussed above) . Examples of the other input device 1020 may include an accelerometer, a gyroscope, a compass, an image capture device, a keyboard, a cursor control device such as a mouse, a stylus, a touchpad, a bar code reader, a Quick Response (QR) code reader, any sensor, or a radio frequency identification (RFID) reader.

[0104] The computing device 1000 may have any desired form factor, such as a handheld or mobile computer system (e.g., a cell phone, a smart phone, a mobile Internet device, a music player, a tablet computer, a laptop computer, a netbook computer, a personal digital assistant (PDA) , an ultramobile personal computer, a remote control, wearable device, headgear, eyewear, footwear, electronic clothing, etc. ) , a desktop computer system, a server or other networked computing component, a printer, a scanner, a monitor, a set-top box, an entertainment control unit, a vehicle control unit, a digital camera, a digital video recorder, an Internet-of-Things device, or a wearable computer system. In some embodiments, the computing device 1000 may be any other electronic device that processes data.Select examples

[0105] Example 1 provides a method, including determining a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, where the rendered frame is rendered based on the color data frame and the data frame; determining an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; and encoding the color data frame using the encoding parameter for the block to generate a bitstream.

[0106] Example 2 provides the method of example 1, where the data frame is an alpha data frame.

[0107] Example 3 provides the method of example 1, where the data frame is a depth data frame.

[0108] Example 4 provides the method of any one of examples 1-3, where the data frame includes a mask.

[0109] Example 5 provides the method of any one of examples 1-4, where determining the contribution includes classifying whether the block has no contribution to the rendered frame, partial contribution to the rendered frame, or full contribution to the rendered frame.

[0110] Example 6 provides the method of any one of examples 1-5, where determining the contribution includes evaluating one or more data values of the corresponding block of the data frame.

[0111] Example 7 provides the method of any one of examples 1-6, where the encoding parameter impacts an encoding quality of the block.

[0112] Example 8 provides the method of any one of examples 1-7, where the encoding parameter is a quantization parameter for the block.

[0113] Example 9 provides the method of any one of examples 1-8, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block increases when the contribution of the block to the rendered frame increases.

[0114] Example 10 provides the method of any one of examples 1-9, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block decreases when the contribution of the block to the rendered frame decreases.

[0115] Example 11 provides the method of any one of examples 1-10, where determining the encoding parameter includes setting the encoding parameter to a skip value when the contribution of the block to the rendered frame is at a minimum value.

[0116] Example 12 provides the method of any one of examples 1-11, where determining the encoding parameter includes setting the encoding parameter to a maximum quality value when the contribution of the block to the rendered frame is at a maximum value.

[0117] Example 13 provides the method of any one of examples 1-12, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the color data frame.

[0118] Example 14 provides the method of any one of examples 1-13, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the data frame.

[0119] Example 15 provides the method of any one of examples 1-14, further including encoding the data frame to generate a further bitstream; and combining the bitstream and the further bitstream into a composite bitstream.

[0120] Example 16 provides one or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to: determine a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, where the rendered frame is rendered based on the color data frame and the data frame; determine an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; and encode the color data frame using the encoding parameter for the block to generate a bitstream.

[0121] Example 17 provides the one or more non-transitory computer-readable media of example 16, where the data frame is an alpha data frame.

[0122] Example 18 provides the one or more non-transitory computer-readable media of example 16, where the data frame is a depth data frame.

[0123] Example 19 provides the one or more non-transitory computer-readable media of any one of examples 16-18, where the data frame includes a mask.

[0124] Example 20 provides the one or more non-transitory computer-readable media of any one of examples 16-19, where determining the contribution includes classifying whether the block has no contribution to the rendered frame, partial contribution to the rendered frame, or full contribution to the rendered frame.

[0125] Example 21 provides the one or more non-transitory computer-readable media of any one of examples 16-20, where determining the contribution includes evaluating one or more data values of the corresponding block of the data frame.

[0126] Example 22 provides the one or more non-transitory computer-readable media of any one of examples 16-21, where the encoding parameter impacts an encoding quality of the block.

[0127] Example 23 provides the one or more non-transitory computer-readable media of any one of examples 16-22, where the encoding parameter is a quantization parameter for the block.

[0128] Example 24 provides the one or more non-transitory computer-readable media of any one of examples 16-23, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block increases when the contribution of the block to the rendered frame increases.

[0129] Example 25 provides the one or more non-transitory computer-readable media of any one of examples 16-24, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block decreases when the contribution of the block to the rendered frame decreases.

[0130] Example 26 provides the one or more non-transitory computer-readable media of any one of examples 16-25, where determining the encoding parameter includes setting the encoding parameter to a skip value when the contribution of the block to the rendered frame is at a minimum value.

[0131] Example 27 provides the one or more non-transitory computer-readable media of any one of examples 16-26, where determining the encoding parameter includes setting the encoding parameter to a maximum quality value when the contribution of the block to the rendered frame is at a maximum value.

[0132] Example 28 provides the one or more non-transitory computer-readable media of any one of examples 16-27, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the color data frame.

[0133] Example 29 provides the one or more non-transitory computer-readable media of any one of examples 16-28, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the data frame.

[0134] Example 30 provides the one or more non-transitory computer-readable media of any one of examples 16-29, where the instructions further cause the one or more processors to:encode the data frame to generate a further bitstream; and combine the bitstream and the further bitstream into a composite bitstream.

[0135] Example 31 provides an apparatus, including one or more processors; and one or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: determine a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, where the rendered frame is rendered based on the color data frame and the data frame; determine an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; and encode the color data frame using the encoding parameter for the block to generate a bitstream.

[0136] Example 32 provides the apparatus of example 31, where the data frame is an alpha data frame.

[0137] Example 33 provides the apparatus of example 31, where the data frame is a depth data frame.

[0138] Example 34 provides the apparatus of any one of examples 31-33, where the data frame includes a mask.

[0139] Example 35 provides the apparatus of any one of examples 31-34, where determining the contribution includes classifying whether the block has no contribution to the rendered frame, partial contribution to the rendered frame, or full contribution to the rendered frame.

[0140] Example 36 provides the apparatus of any one of examples 31-35, where determining the contribution includes evaluating one or more data values of the corresponding block of the data frame.

[0141] Example 37 provides the apparatus of any one of examples 31-36, where the encoding parameter impacts an encoding quality of the block.

[0142] Example 38 provides the apparatus of any one of examples 31-37, where the encoding parameter is a quantization parameter for the block.

[0143] Example 39 provides the apparatus of any one of examples 31-38, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block increases when the contribution of the block to the rendered frame increases.

[0144] Example 40 provides the apparatus of any one of examples 31-39, where determining the encoding parameter includes setting the encoding parameter such that that a quality of the block decreases when the contribution of the block to the rendered frame decreases.

[0145] Example 41 provides the apparatus of any one of examples 31-40, where determining the encoding parameter includes setting the encoding parameter to a skip value when the contribution of the block to the rendered frame is at a minimum value.

[0146] Example 42 provides the apparatus of any one of examples 31-41, where determining the encoding parameter includes setting the encoding parameter to a maximum quality value when the contribution of the block to the rendered frame is at a maximum value.

[0147] Example 43 provides the apparatus of any one of examples 31-42, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the color data frame.

[0148] Example 44 provides the apparatus of any one of examples 31-43, where determining the encoding parameter includes setting the encoding parameter based on a policy, the policy being dependent on information about the data frame.

[0149] Example 45 provides the apparatus of any one of examples 31-44, where the instructions further cause the one or more processors to: encode the data frame to generate a further bitstream; and combine the bitstream and the further bitstream into a composite bitstream.

[0150] Example A provides an apparatus comprising means to perform any one of the methods in Examples 1-15.

[0151] Example B provides a computer program product comprising instructions to perform any one of the methods in Examples 1-15.

[0152] Example C provides an encoder having cross-channel analysis as described herein.

[0153] Example D provides cross-channel analysis as described herein.Variations and other notes

[0154] Although the operations of the example method shown in and described with reference to FIGS. 6-9 are illustrated as occurring once each and in a particular order, it will be recognized that some operations may be performed in any suitable order and repeated as desired. Additionally, one or more operations may be performed in parallel. Furthermore, the operations illustrated in FIGS. 6-9 or other FIGS. may be combined or may include more or fewer details than described.

[0155] The above description of illustrated implementations of the disclosure, including what is described in the Abstract, is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. While specific implementations of, and examples for, the disclosure are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. These modifications may be made to the disclosure in Iight of the above detailed description.

[0156] For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the illustrative implementations. However, it will be apparent to one skilled in the art that the present disclosure may be practiced without the specific details and / or that the present disclosure may be practiced with only some of the described aspects. In other instances, well known features are omitted or simplified in order not to obscure the illustrative implementations.

[0157] Further, references are made to the accompanying drawings that form a part hereof, and in which are shown, by way of illustration, embodiments that may be practiced. It is to be understood that other embodiments may be utilized, and structural or Iogical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense.

[0158] Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the disclosed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order from the described embodiment. Various additional operations may be performed or described operations may be omitted in additional embodiments.

[0159] For the purposes of the present disclosure, the phrase “A or B” or the phrase "A and / or B" means (A) , (B) , or (A and B) . For the purposes of the present disclosure, the phrase “A, B, or C” or the phrase "A, B, and / or C" means (A) , (B) , (C) , (A and B) , (A and C) , (B and C) , or (A, B, and C) . The term "between, " when used with reference to measurement ranges, is inclusive of the ends of the measurement ranges.

[0160] For the purposes of the present disclosure, “A is less than or equal to a first threshold” is equivalent to “A is less than a second threshold” provided that the first threshold and the second thresholds are set in a manner so that both statements result in the same logical outcome for any value of A. For the purposes of the present disclosure, “B is greater than a first threshold” is equivalent to “B is greater than or equal to a second threshold” provided that the first threshold and the second thresholds are set in a manner so that both statements result in the same logical outcome for any value of B.

[0161] The description uses the phrases "in an embodiment" or "in embodiments, " which may each refer to one or more of the same or different embodiments. The terms "comprising, " "including, " "having, " and the like, as used with respect to embodiments of the present disclosure, are synonymous. The disclosure may use perspective-based descriptions such as "above, " "below, " "top, " "bottom, " and "side" to explain various features of the drawings, but these terms are simply for ease of discussion, and do not imply a desired or required orientation. The accompanying drawings are not necessarily drawn to scale. Unless otherwise specified, the use of the ordinal adjectives “first, ” “second, ” and “third, ” etc., to describe a common object, merely indicates that different instances of like objects are being referred to and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking or in any other manner.

[0162] In the following detailed description, various aspects of the illustrative implementations will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art.

[0163] The terms “substantially, ” “close, ” “approximately, ” “near, ” and “about, ” generally refer to being within + / -20%of a target value as described herein or as known in the art. Similarly, terms indicating orientation of various elements, e.g., “coplanar, ” “perpendicular, ” “orthogonal, ” “parallel, ” or any other angle between the elements, generally refer to being within + / -5-20%of a target value as described herein or as known in the art.

[0164] In addition, the terms “comprise, ” “comprising, ” “include, ” “including, ” “have, ” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a method, process, or device, that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such method, process, or device. Also, the term “or” refers to an inclusive “or” and not to an exclusive “or. ”

[0165] The systems, methods and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for all desirable attributes disclosed herein. Details of one or more implementations of the subject matter described in this specification are set forth in the description and the accompanying drawings.

Claims

1.A method, comprising:determining a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, wherein the rendered frame is rendered based on the color data frame and the data frame;determining an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; andencoding the color data frame using the encoding parameter for the block to generate a bitstream.2.The method of claim 1, wherein the data frame is an alpha data frame.3.The method of claim 1, wherein the data frame is a depth data frame.4.The method of claim 1, wherein the data frame comprises a mask.5.The method of claim 1, wherein determining the contribution comprises:classifying whether the block has no contribution to the rendered frame, partial contribution to the rendered frame, or full contribution to the rendered frame.6.The method of claim 1, wherein determining the contribution comprises:evaluating one or more data values of the corresponding block of the data frame.7.The method of claim 1, wherein the encoding parameter impacts an encoding quality of the block.8.The method of claim 1, wherein the encoding parameter is a quantization parameter for the block.9.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter such that that a quality of the block increases when the contribution of the block to the rendered frame increases.10.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter such that that a quality of the block decreases when the contribution of the block to the rendered frame decreases.11.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter to a skip value when the contribution of the block to the rendered frame is at a minimum value.12.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter to a maximum quality value when the contribution of the block to the rendered frame is at a maximum value.13.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter based on a policy, the policy being dependent on information about the color data frame.14.The method of claim 1, wherein determining the encoding parameter comprises:setting the encoding parameter based on a policy, the policy being dependent on information about the data frame.15.The method of claim 1, further comprising:encoding the data frame to generate a further bitstream; andcombining the bitstream and the further bitstream into a composite bitstream.16.One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to:determine a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, wherein the rendered frame is rendered based on the color data frame and the data frame;determine an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; andencode the color data frame using the encoding parameter for the block to generate a bitstream.17.The one or more non-transitory computer-readable media of claim 16, wherein determining the encoding parameter comprises:setting the encoding parameter based on a policy, the policy being dependent on information about the color data frame.18.The one or more non-transitory computer-readable media of claim 16, wherein determining the encoding parameter comprises:setting the encoding parameter based on a policy, the policy being dependent on information about the data frame.19.An apparatus, comprising:one or more processors; andone or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to:determine a contribution of a block of a color data frame to a rendered frame based on a corresponding block of a data frame, wherein the rendered frame is rendered based on the color data frame and the data frame;determine an encoding parameter for the block of the color data frame based on the contribution of the block to the rendered frame; andencode the color data frame using the encoding parameter for the block to generate a bitstream.20.The apparatus of claim 19, wherein the instructions further cause the one or more processors to:encode the data frame to generate a further bitstream; andcombine the bitstream and the further bitstream into a composite bitstream.