Method and system for combined lossless and lossy encoding
By dividing video frames into sub-pictures and applying lossless and lossy encoding techniques, the method addresses the inefficiencies of UHD video encoding, achieving improved resource utilization and quality in video compression.
Patent Information
- Application Number
- JP2022560404
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-04-13
- Filing Date
- 2021-04-13
- Publication Date
- 2025-10-06
- Estimated Expiration
- 2041-04-13
AI Technical Summary
Conventional video coding schemes face challenges in efficiently encoding and decoding ultra-high definition (UHD) video due to large image sizes, which require significant memory and processing resources, and lossy encoding often compromises video quality.
The proposed method divides video frames into sub-pictures based on quality and computational requirements, allowing for combined lossless and lossy encoding, where each sub-picture is coded independently using techniques like block differential pulse code modulation (BDPCM) and transform skip residual coding, optimizing resource utilization.
This approach enhances encoding efficiency by leveraging all available computational resources, achieving better compression performance than lossless coding alone, while maintaining or improving video quality where needed.
Smart Images

Figure 0007749580000005 
Figure 0007749580000006 
Figure 0007749580000007
Abstract
Description
[Technical Field]
[0001] (Related Applications) This application claims the benefit of priority to U.S. Non-Provisional Application No. 17 / 229,210, filed April 13, 2021, entitled "METHODS AND SYSTEMS FOR COMBINED LOSSLESS AND LOSSY CODING," which is incorporated herein by reference in its entirety, and to U.S. Provisional Application No. 63 / 009,370, filed April 13, 2020, entitled "METHODS AND SYSTEMS FOR COMBINED LOSSLESS AND LOSSY CODING," which is incorporated herein by reference in its entirety.
[0002] The present invention relates generally to the field of video compression, and more particularly to a method and system for combined lossless and lossy encoding. [Background technology]
[0003] A video codec may include electronic circuitry or software that compresses or decompresses digital video. It may convert uncompressed video into a compressed format, or vice versa. In the context of video compression, a device that compresses video (and / or performs some of the functions) may typically be called an encoder, and a device that decompresses video (and / or performs some of the functions) may be called a decoder.
[0004] The format of the compressed data may conform to standard video compression specifications. The compression may be lossy, in that the compressed video lacks some information present in the original video. Consequences of this may include that the decompressed video may have lower quality than the original uncompressed video, because there is insufficient information to accurately reconstruct the original video.
[0005] There can be a complex relationship between video quality, the amount of data used to represent the video (e.g., as determined by bitrate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, end-to-end delay (e.g., latency), etc.
[0006] Motion compensation may involve an approach to predicting a video frame or a portion thereof given a reference frame, such as a previous and / or future frame, by considering the motion of the camera and / or objects in the video. It may be employed in encoding and decoding video data for video compression, such as encoding and decoding using the Motion Picture Experts Group (MPEG) advanced video coding (AVC) standard (also known as H.264). Motion compensation may describe a picture in terms of a transformation from a reference picture to a current picture. The reference picture may be temporally earlier than the current picture or may be from a future date compared to the current picture. Compression efficiency may be improved when an image can be accurately synthesized from previously transmitted and / or stored images. Summary of the Invention
[0007] In one aspect, a decoder includes circuitry configured to receive an encoded video bitstream; identify a current frame in the bitstream, the current frame including a first region, a second region, and a third region; detect in the bitstream that the first region is coded using block differential pulse code modulation; detect in the bitstream that the second region is coded using transform skip residual coding; and detect in the bitstream that the third region is coded using lossy coding, the lossy coding including at least one of inter prediction and intra prediction.
[0008] In another aspect, a method of combined lossless and lossy encoding includes receiving, by a decoder, an encoded video bitstream; identifying, by the decoder and in the bitstream, a current frame, the current frame including a first region, a second region, and a third region; detecting, by the decoder and in the bitstream, that the first region is encoded using block differential pulse code modulation; detecting, by the decoder and in the bitstream, that the second region is encoded using transform skip residual coding; and detecting, by the decoder and in the bitstream, that the third region is encoded using lossy coding, the lossy coding including at least one of inter prediction and intra prediction.
[0009] In another aspect, a decoder includes circuitry configured to receive an encoded bitstream; identify a current frame in the bitstream, the current frame including a first subpicture and a second subpicture; detect an indication in the bitstream that the first subpicture is encoded according to a lossless encoding protocol; and decode the current frame, wherein decoding the current frame further includes decoding the first subpicture using a lossless decoding protocol corresponding to the lossless encoding protocol.
[0010] In another aspect, a method of combined lossless and lossy encoding includes receiving, at a decoder, a bitstream; identifying, by the decoder and in the bitstream, a current frame, the current frame including a first sub-picture and a second sub-picture; detecting, by the decoder and in the bitstream, an indication that the first sub-picture is encoded according to a lossless encoding protocol; and decoding, by the decoder, the current frame, wherein decoding the current frame further includes decoding the first sub-picture using a lossless decoding protocol corresponding to the lossless encoding protocol.
[0011] These and other aspects and features of non-limiting embodiments of the present invention will become apparent to those of ordinary skill in the art upon review of the following description of specific non-limiting embodiments of the present invention in conjunction with the accompanying drawings. [Brief explanation of the drawings]
[0012] For the purpose of illustrating the invention, the drawings show aspects of one or more embodiments of the invention, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown in the drawings. [Figure 1] FIG. 1 is a block diagram illustrating an exemplary embodiment of a frame having multiple sub-pictures. [Figure 2] FIG. 2 is a diagram illustrating an example embodiment of a frame having two sub-pictures. [Figure 3] FIG. 3 is a process flow diagram illustrating an exemplary process for decoding video according to some implementations of the present subject matter. [Figure 4] FIG. 4 is a system block diagram illustrating an exemplary decoder capable of decoding a bitstream in accordance with some implementations of the present subject matter. [Figure 5]FIG. 5 is a process flow diagram illustrating an exemplary process for encoding video, consistent with some implementations of the present subject matter. [Figure 6] FIG. 6 is a block diagram of a computing system that may be used to implement any one or more of the methodologies disclosed herein, and any one or more portions thereof.
[0013] The drawings are not necessarily to scale and may be illustrated by phantom lines, diagrammatic representations, and partial views. In some cases, details that are not necessary for understanding the embodiments or that make other details difficult to grasp may be omitted. DETAILED DESCRIPTION OF THE INVENTION
[0014] In conventional video coding schemes, a video sequence is divided into Group-of-Pictures (GOPs). Each GOP is self-contained in terms of temporal and spatial prediction. Typically, the first picture in a group is used as a reference picture for subsequent pictures. The temporal and spatial relationships between pictures allow for very efficient compression using predictive coding.
[0015] Typically, past encoding systems have operated using lossy encoding, in which some information from an encoded frame is omitted during the encoding process and not restored during decoding. Such lossy processing may sacrifice some detail and / or resolution of the decoded frame and / or video to achieve greater efficiency by, for example, but not limited to, reducing the amount of data transmitted in a bitstream from an encoder to a decoder, the processing time and / or memory resources used to encode and / or decode a frame or group of pictures, etc.
[0016] An alternative approach to the above process can include lossless encoding, in which frames are encoded and decoded with no or negligible loss of information. This can result in higher resolution and / or other detail in the output frame and / or video. However, as discussed in more detail below, lossless encoding and decoding can sometimes be more efficient for certain types of image processing, and lossless encoding can also be very expensive in terms of memory resources and processing time. This is particularly evident in Ultra High Definition (UHD) video encoding, where picture or image sizes can rise to 8K x 4K (7680 x 4320). Large image sizes can pose significant challenges to chip and / or module design. One reason for this is that UHD requires a larger search range in motion estimation and on-chip or other processing memory for buffering reference blocks for motion estimation and compensation. UHD processing can also present challenges for lossy encoding and decoding due to the larger image sizes required.
[0017] The embodiments disclosed herein enable more efficient signaling, decoding, and encoding using combined lossless and lossy video compression coding. In one embodiment, a picture may first be divided into sub-pictures based on quality and computational requirements. The encoder may create as many sub-pictures as there are processing cores (or hardware threads) on the CPU or other device, circuit, or component performing the encoding and / or decoding of the picture and / or GOP. Because each sub-picture may be coded independently, this form of task division may enable efficient encoding and / or decoding by efficiently using all available computational resources. Furthermore, lossless coding may provide better compression than lossy coding using transform and quantization, for example, for a particular sub-picture of an entire frame. As a result, combined lossless and lossy coding may result in better performance than lossless coding alone.
[0018]
[0014] Referring now to Figure 1, an exemplary embodiment of a current frame divided into multiple sub-pictures is described. A sub-picture can include any portion of the current frame that is smaller than the current frame, and the sub-pictures of a current frame can be combined to cover all of the current frame. While Figure 1 illustrates an exemplary current frame divided into two or four sub-pictures, those skilled in the art will understand, upon viewing this disclosure in its entirety, that any number of sub-pictures may be used as needed with respect to resolution, efficiency, or any other considerations.
[0019] Also, referring to FIG. 1 , a subpicture may have any suitable shape, including, but not limited to, a square and / or rectangular shape, a shape defined by a combination of two or more blocks having square and / or rectangular shapes, etc. Each block may be identified and / or signaled using coordinates of one or more portions and / or features of the block, where the coordinates may indicate a number of pixels across the frame and / or picture measured from one or more corners and / or sides of the frame and / or picture. For example, but not limited to, a block may be identified using vertex coordinates, such as two x-coordinates and two y-coordinates for identifying a rectangular block. Alternatively or additionally, a subpicture and / or portion thereof may be identified using any suitable geometric description of points, lines, and / or shapes, including, but not limited to, a geometric division using one or more line segments defined by a linear equation or a mathematically equivalent equation, such as the endpoints of a line segment using one or more curved edges, defined using an exponential curve or other curve, etc.
[0020] Continuing with reference to FIG. 1 , sub-pictures may be coded separately from one another. For example, without limitation, a first region of multiple sub-pictures may be coded and / or decoded using a first processor thread, while elements of a third region may be decoded using a second processor thread. As used herein, a “processor thread” may include any processor core and / or other hardware element capable of executing threads of multi-threaded parallel processing that would occur to one of ordinary skill in the art upon review of this disclosure in its entirety. In one embodiment in which each sub-picture is coded independently, this form of task division may enable efficient coding by efficiently using all available computational resources.
[0021] Also, referring to FIG. 1 , lossless coding may be selectively applied to a subset of blocks of a picture where lossless preservation of the source video is desirable for one or more of the reasons described above. As a non-limiting example, the selection of a subset of pictures for lossless coding may be made for coding efficiency reasons. In such a case, the decision on the lossless coding mode may be made after evaluating the rate-distortion (RD) cost of encoding the CTU in lossy and lossless modes. In certain use cases, a portion of a video may be selected by a user to be coded in lossless mode for reasons dictated by the application. A non-limiting example may include a situation where there is a portion of a frame where preservation of source quality is desirable to the user. When such a user selection is made, the entire region may be marked for use with lossless coding without performing RD analysis.
[0022] Still referring to FIG. 1 , alternatively or additionally, sub-pictures may be identified by an encoder and / or other hardware and / or software components and / or processes as areas, regions, and / or subdivisions of a picture where greater amounts of motion are detected and / or present. Such regions may be identified as sub-pictures, considered significant, and may be encoded using lossy coding, while sub-pictures with little or no motion may be encoded using lossy coding. One embodiment is shown in FIG. 2 , where a picture 200 is divided into two sub-pictures: a first region 204 with motion and a third region 208 with no motion. As discussed above, in some cases, lossless coding may provide better compression than lossy coding using transform and quantization. In an alternative or additional embodiment, the picture 200 may be divided into a first region 204 coded using a first lossless protocol, a second region (not shown) using a second lossless protocol, and a third region using a lossy protocol.
[0023] Referring again to FIG. 1 , a picture may be divided into sub-pictures, slices, and tiles. A block (CTU) may be a coding unit that can be coded in intra- or inter-coding mode. A sub-picture may include a single CTU and / or multiple CTUs. In one embodiment, each CTU in a subset of CTUs may signal whether lossless coding is used in the CTU. Alternatively or additionally, a set of CTUs, such as, but not limited to, a set of contiguously located CTUs, may be signaled together. Lossless and / or lossy coding may be signaled in one or more headers provided in the bitstream. For example, but not limited to, a CTU may be coded in a lossless coding mode by signaling the lossless and / or lossy coding mode in the CTU header. Alternatively or additionally, the selective use of lossless coding of a subset of blocks (CTUs) may be signaled in a higher-level syntactic unit. For example, a tile, slice, and / or sub-picture header may signal the use of a lossless coding mode for all CTUs of that syntactic unit. The sub-picture header may either be explicitly present or may be included by referencing it using a mechanism such as an identifier of another header, such as a previously signaled picture header.
[0024] 1 , as one non-limiting example, the data and / or logic within the sub-picture header, CTU header, and / or other header may include, but is not limited to, a first bit indicating whether lossless mode signaling is enabled, or in other words, whether the encoder and / or decoder should signal and / or receive a signal indicating whether lossless and / or lossy mode is used for the associated CTU, sub-picture, etc. The data and / or logic within the sub-picture header, CTU header, and / or other header may include, but is not limited to, a second bit indicating lossless and / or lossy mode, where lossless mode is the mode in which the associated CTU, sub-picture, etc. is encoded and decoded using a lossless encoding and decoding protocol as described above. The following are non-limiting, illustrative examples of logic and data that may be employed: Sub_picture_header{ ... ...... ...... ...lossless_mode_signaling [1-bit] if(lossless_mode_signaling){ lossless_mode [1 bit]; } ... ...... ...... } Alternatively or additionally, lossy or lossless mode may be signaled in the header of PPS, SPS, block, sub-block, etc. using lossless_coding_contraint_flag, etc.
[0025] 1, an encoder and / or decoder configured to perform the processes described in this disclosure may be configured to signal and / or detect the lossless encoding protocol used, for example, using an identifier and / or bits corresponding to the lossless encoding protocol. Alternatively or additionally, the encoder and / or decoder may be configured to operate a particular lossless encoding and decoding protocol, for example, to conform to a given standard, release, or other approach that adopts a unified standard. There may be more than one standard protocol, and the selection may be signaled in the bitstream using a number of bits sufficient to encode two or more potential choices.
[0026] Continuing to refer to FIG. 1 , a lossless coding protocol may include any protocol for lossless coding of an image, video, frame, picture, subpicture, etc. As one non-limiting example, an encoder and / or decoder may achieve lossless coding by bypassing the transform coding stage and directly coding the residual. This approach, which may be referred to in this disclosure as “transform-skip residual coding,” may be achieved by skipping the transformation of the residual from the spatial to the frequency domain by applying a transform from the discrete cosine transform (DCT) family, as performed, for example, in some forms of block-based hybrid video coding, as described in more detail below. The lossless encoding and decoding may be performed according to one or more alternative processes and / or protocols, including, but not limited to, those proposed in Core Experiment CE3-1 of JVET-Q00069 regarding regular and TS residual coding (RRC, TSRC) for lossless coding and modifications of RRC and TSRC for lossless and lossy modes of operation, Core Experiment CE3-2 of JVET-Q0080 regarding block differential pulse code modulation (BDPCM) for lossless coding and enabling high level techniques and combinations of different RRC / TSRC techniques and BDPCM, etc.
[0027] With further reference to FIG. 1 , an encoder as described in this disclosure may be configured to encode one or more fields using TS residual coding, where the one or more fields may include, but are not limited to, any picture, subpicture, coding unit, coding tree unit, tree unit, block, slice, tile, and / or any combination thereof. A decoder as described in this disclosure may be configured to decode one or more fields according to and / or using TS residual coding. In transform skip mode, the residual of a field may be coded in non-overlapping sub-blocks or other subdivision units of a predetermined size, such as, but not limited to, a size of 4 pixels by 4 pixels. The quantization index for each scan position of a transformed field may be coded instead of coding the last significant scan position, and the position of the last sub-block and / or subdivision may be inferred based on the level of the previous subdivision. TS residual coding may perform diagonal scanning in a forward direction rather than backward. A forward scan order may be applied to scan sub-blocks within a transform block, as well as the position of the sub-block and / or subdivision. In one embodiment, there may be no signaling of the last (x,y) position. As one non-limiting example, coded_sub_block_flag may be coded for every sub-block except the last sub-block when all previous flags are equal to 0. The context model for sig_coeff_flag may use a reduced template. The context model for sig_coeff_flag may depend on the values of the neighboring sig_coeff_flag above and to the left, and the context model for abs_level_gt1_flag may also depend on the values of the sig_coeff_flag to the left and above.
[0028] 1 , as one non-limiting example, during the first scan pass in the TS residual coding process, a significance flag (sig_coeff_flag), a sign flag (coeff_sign_flag), an absolute value greater than 1 flag (abs_level_gtx_flag[0]), and parity (par_level_flag) may be coded. For a given scan position, if sig_coeff_flag is equal to 1, then coeff_sign_flag may be coded, followed by abs_level_gtx_flag[0] (which specifies whether the absolute value is greater than 1). If abs_level_gtx_flag[0] is equal to 1, then par_level_flag is further coded, specifying the parity of the absolute value. During the second or subsequent scan pass, for each scan location where the absolute value is greater than 1, up to four abs_level_gtx_flag[i], for i=1...4, may be encoded to indicate whether the absolute value at the given location is greater than 3, 5, 7, or 9, respectively. During the third or final "remainder" scan pass, the remainder, which may be stored as abs_remainder of the absolute value, may be encoded in bypass mode. The remainder of the absolute value may be binarized using a fixed Rice parameter value of 1.
[0029] With further reference to FIG. 1 , bins of the first scan pass and the second or “greater than x” scan pass may be context coded until the maximum number of context coding bins in a field, such as, but not limited to, TU, is exhausted. In one non-limiting example, the maximum number of context coding bins for a residual block may be limited to 1.75*block_width*block_hight, or equivalently, 1.75 context coding bins per sample position on average. As described above, bins of the last scan pass, such as the remainder scan pass, may be bypass coded. A variable, such as, but not limited to, RemCcbs, may initially be set to the maximum number of context coding bins for a block or other field and may be decremented by 1 each time a context coding bin is coded. In one non-limiting example, while RemCcbs is greater than or equal to 4, syntax elements of the first coding pass, which may include sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, and par_level_flag, may be coded using the context coding bins. In some embodiments, during the first pass encoding, if RemCcbs becomes less than 4, the remaining coefficients not yet encoded in the first pass may be encoded in the remainder scan pass and / or the third pass.
[0030] Also, referring to FIG. 1 , after the completion of the first-pass encoding, if RemCcbs is greater than or equal to 4, the syntax elements for the second encoding pass may include abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, and abs_level_gt9_flag, and may be coded using context coding bins. If RemCcbs becomes less than 4 during the second-pass encoding, the remaining coefficients not yet coded in the second pass may be coded in the residual and / or third scan pass. In some embodiments, blocks coded using TS residual coding may not be coded using BDPCM coding. For blocks not coded in BDPCM mode, a level mapping mechanism may be applied to transform-skip residual coding until the maximum number of context coding bins is reached. Level mapping may use the neighboring coefficient levels above and to the left to predict the current coefficient level to reduce signaling costs. For a given residual position, absCoeff may be denoted as the absolute coefficient level before mapping, and absCoeffMod may be denoted as the coefficient level after mapping. As a non-limiting example, if X0 denotes the absolute coefficient level of the left adjacent position and X1 denotes the absolute coefficient level of the above adjacent position, level mapping may be performed as follows:
number
[0031] Also, referring to FIG. 1 , in some embodiments, when transform skip mode is used for large blocks, the entire block may be used without zeroing values. Furthermore, transform shifts may be eliminated in transform skip mode. The statistical characteristics of the signal for TS residual coding may differ from the statistical characteristics of the transform coefficients. Transform skip mode residual coding may specify a maximum luma and / or chroma block size. As a non-limiting example, a setting may allow transform skip mode to use luma blocks of a maximum size of MaxTsSize×MaxTsSize, where the value of MaxTsSize may be signaled in PPS and may have a global maximum possible value, such as, but not limited to, 32. When a CU is coded in transform skip mode, its prediction residual may be quantized and coded using a transform skip residual coding process.
[0032] Continuing with reference to FIG. 1 , an encoder as described in this disclosure may be configured to encode one or more fields using BDPCM, where the one or more fields may include, but are not limited to, any picture, subpicture, coding unit, coding tree unit, tree unit, block, slice, tile, and / or any combination thereof. A decoder as described in this disclosure may be configured to decode one or more fields in accordance with and / or using BDPCM. BDPCM may maintain full reconstruction at the pixel level. As one non-limiting example, the prediction process for each pixel with BDPCM may include four main steps: (1) intrablock pixel prediction, (2) residual calculation, (3) residual quantization, and (4) pixel reconstruction, which predict each pixel using intrablock references and then reconstruct it for use as an intrablock reference for subsequent pixels in the remainder of the block.
[0033] Also, referring to Figure 1, intra-block pixel prediction may use multiple reference pixels to predict each pixel. As a non-limiting example, the multiple reference pixels may include a pixel α to the left of the predicted pixel p, a pixel β above p, and a pixel γ above p and to the left of p. The predicted value of p may be formulated, without limitation, as follows:
number
[0034] 1, pixel-level independence may be achieved by skipping the residual transform and integrating spatial domain quantization, which may be performed by a linear quantizer Q to compute a quantized residual value r as follows:
number
[0035] Also, referring to FIG. 1, another state of BDPCM may include pixel reconstruction using p and r from the previous step, which may be performed at or by the decoder, for example, but not limited to, as follows:
number
[0036] The prediction scheme of the BDPCM algorithm may be used when there is a relatively large residual error when the original pixel value deviates from its predicted value. In screen content, this may occur when the intra-block reference belongs to the background layer and the current pixel belongs to the foreground layer, or vice versa. This situation is sometimes called a "layer transition" situation, and the information available in the reference may not be sufficient for accurate prediction. At the sequence level, a BDPCM enable flag may be signaled in the SPS. This flag may be signaled only when, for example, but not limited to, transform skip mode is enabled in the SPS, as described above. When BDPCM is enabled, a flag may be sent at the CU level if the CU size in terms of luma samples is less than or equal to MaxTsSize × MaxTsSize, where MaxTsSize is the maximum block size for which transform skip mode is allowed. This flag may indicate whether regular intra coding or BDPCM is used. If BDPCM is used, a BDPCM prediction direction flag may be sent to indicate whether the prediction is horizontal or vertical. The block may then be predicted using a normal horizontal or vertical intra-prediction process using unfiltered reference samples.
[0037] Referring now to FIG. 3, an exemplary embodiment of a method 300 for combined lossless and lossy encoding is described. At step 305, a decoder receives a bitstream. At step 310, the decoder identifies a current frame in the bitstream. The current frame may include a first region, a second region, and a third region, any of which may include any region as described above. The regions may be flagged using frame header information and / or described using coordinates, geometric information, identification of blocks and / or CTUs contained in each region, or otherwise described. In one embodiment, the decoder may identify only two regions of the current frame: the first region, the second region, and the third region, and the remaining regions may be identified as remaining tiles, slices, blocks, CTUs, etc. of the current frame. There may be more than two regions, and method 300 may include any processing steps as described in this disclosure performed with respect to any additional regions.
[0038] Continuing with reference to FIG. 3, at step 315, the decoder detects in the bitstream an indication that the first region is coded according to block differential pulse code modulation. This may be performed as, but is not limited to, described above with reference to FIGS. 1-2. The detection may include and / or be preceded by, for example, detecting that block differential pulse code modulation is enabled, as described above. In one embodiment, the bitstream may include a sub-picture header corresponding to the first region. The detection may include detecting an indication that at least the first region is coded according to block differential pulse code modulation in a sub-picture and / or region-specific header. The sub-picture header may be explicitly included in the data corresponding to the current frame. For example, but not limited to, if bdpcm is enabled for the sequence, sps_bdpcm_enabled_flag may be set to 1 in the SPS and / or other header. sps_bdpcm_enabled_flag equal to 1 may specify that intra_bdpcm_luma_flag and / or intra_bdpcm_chroma_flag may be present in the coding unit and / or other field-specific syntax for intra coding units and / or other fields. sps_bdpcm_enabled_flag equal to 0 may specify that intra_bdpcm_luma_flag and / or intra_bdpcm_chroma_flag are not present in the coding unit and / or other field-specific syntax for intra coding units and / or other fields. When not present, the value of sps_bdpcm_enabled_flag may be inferred to be equal to 0. In one embodiment, gci_no_bdpcm_constraint_flag equal to 1 may specify that sps_bdpcm_enabled_flag of all pictures in a given set, which may be defined, but is not limited to, by the OlsInScope parameter, shall be equal to 0. gci_no_bdpcm_constraint_flag equal to 0 may impose no such constraint.As a further non-limiting example, intra_bdpcm_luma_flag equal to 1 may specify that BDPCM may be applied to the current luma coding block at position (x0, y0) and / or other fields, i.e., transform is skipped. The luma intra prediction mode may be specified by intra_bdpcm_luma_dir_flag. For example, without limitation, intra_bdpcm_luma_flag equal to 0 may specify that BDPCM is not applied to the current luma coding block at position (x0, y0) and / or other fields. The variable BdpcmFlag[x][y][cIdx] may be set equal to intra_bdpcm_luma_flag for x=x0...x0+cbWidth-1, y=y0...+cbHeight-1, cIdx=0. intra_bdpcm_luma_dir_flag equal to 0 may indicate that the BDPCM prediction direction is horizontal. intra_bdpcm_luma_dir_flag equal to 1 may indicate that the BDPCM prediction direction is vertical. The variable BdpcmDir[x][y][cIdx] may be set equal to intra_bdpcm_luma_dir_flag for x=x0..x0+cbWidth-1, y=y0..y0+cbHeight-1, cIdx=0. Subpictures and / or regions may be included by referencing identifiers in the subpicture header corresponding to the third subpicture and / or other elements of the current frame.
[0039] Continuing with reference to FIG. 3, at step 320, the decoder detects, in the bitstream, an indication that the second region is coded according to transform skip residual coding. This may be performed, without limitation, as described above with reference to FIGS. 1-2. The detection may include and / or be preceded by, for example, detecting that transform skip residual coding is enabled, as described above. In one embodiment, the bitstream may include a sub-picture header corresponding to the first region. The detection may include detecting an indication that at least the first region is coded according to a transform skip residual coding protocol in the sub-picture header. This may include a transform skip enable flag. For example, without limitation, sh_ts_residual_coding_disabled_flag may specify that a syntax structure of residual_coding equal to 1 may be used to analyze residual samples of transform skip blocks of the current slice and / or other fields. sh_ts_residual_coding_disabled_flag equal to 0 may specify that the residual_ts_coding syntax structure may be used to analyze residual samples of transform skip blocks of the current slice. When sh_ts_residual_coding_disabled_flag is not present, it may be inferred to be equal to 0. transform_skip_flag[x0][y0][cIdx] may specify whether a transform may be applied to the associated transform block. The array indexes x0, y0 may specify the position (x0, y0) of the top-left luma sample of the considered transform block relative to the top-left luma sample of the picture. The array index cIdx may specify a color component indicator. For example, it may be equal to 0 for Y, 1 for Cb, and 2 for Cr. transform_skip_flag[x0][y0][cIdx] equal to 1 may specify that a transform may not be applied to the associated transform block.transform_skip_flag[x0][y0][cIdx] equal to 0 may specify that the determination of whether the transform is applied to the associated transform block depends on other syntax elements. Alternatively or additionally, the transform skip mode may be signaled implicitly. For example, if transform_skip_flag[x0][y0][cIdx] is not present, it may be inferred as follows: if BdpcmFlag[x0][y0][cIdx] is equal to 1, then transform_skip_flag[x0][y0][cIdx] may be inferred to be equal to 1. Otherwise, if BdpcmFlag[x0][y0][cIdx] is equal to 0, then transform_skip_flag[x0][y0][cIdx] may be inferred to be equal to 0. Sub-picture headers and / or region-specific headers may be explicitly included in the data corresponding to the current frame. Sub-pictures and / or regions may be included by referencing identifiers in the sub-picture headers that correspond to third sub-pictures and / or other elements of the current frame.
[0040] Continuing with reference to FIG. 3 , at step 325, the decoder detects that the third region is encoded according to a lossy encoding protocol and decodes the third region according to a lossy decoding protocol corresponding to the lossless encoding protocol. This may be performed according to any lossy decoding process described herein, including DCT and other processes, as described below. The bitstream may include a sub-picture and / or region-specific header corresponding to the third region, and the detecting may include an indication in the sub-picture header that the third region is encoded according to a lossy encoding protocol. The sub-picture and / or region-specific header may be explicitly included in the data corresponding to the current frame. The sub-picture and / or region-specific header may be included by referencing an identifier of a sub-picture and / or region-specific header corresponding to the third sub-picture, for example, as described above. In one embodiment, the decoder may be configured to decode the first region using a first processor thread and decode elements of the third region using a second processor thread, as defined above.
[0041] Continuing with reference to FIG. 3, the decoder may decode the current frame. Decoding the current frame may include decoding the first region using a BDPCM decoding protocol corresponding to the BDPCM encoding protocol. Decoding the current frame may include decoding the second region using a transform skip residual decoding protocol corresponding to the transform skip residual encoding protocol. Decoding the current frame may include decoding the third region using a lossy decoding protocol corresponding to the lossy encoding protocol.
[0042] Also, referring to FIG. 3, the decoder may include an entropy decoder processor configured to receive a bitstream and decode the bitstream into quantized coefficients, an inverse quantization and inverse transform processor configured to process the quantized coefficients including performing inverse discrete cosine, a deblocking filter, a frame buffer, and an intra-prediction processor. At least one of the first region, the second region, and the third region may form part of a quadtree plus binary decision tree. At least one of the first region, the second region, and the third region may include a coding tree unit. In some implementations, at least one of the first region, the second region, and the third region may include a coding tree unit (CTU), a coding unit (CU), or a prediction unit (PU).
[0043] 4 is a system block diagram illustrating an example decoder 400 capable of decoding a bitstream 428 using a combined lossy and lossless coding protocol. The decoder 400 may include an entropy decoder processor 404, an inverse quantization and inverse transform processor 408, a deblocking filter 412, a frame buffer 416, a motion compensation processor 420, and / or an intra-prediction processor 424.
[0044] Also referring to FIG. 4, in operation, a bitstream 428 may be received by the decoder 400 and input to the entropy decoder processor 404, which may entropy decode a portion of the bitstream into quantized coefficients. The quantized coefficients may be provided to the inverse quantization and inverse transform processor 408, which may perform inverse quantization and inverse transform to generate a residual signal, which may be added to the output of the motion compensation processor 420 or the intra-prediction processor 424, depending on the processing mode. The output of the motion compensation processor 420 and the intra-prediction processor 424 may include a block prediction value based on a previously decoded block. The sum of the prediction value and the residual may be processed by the deblocking filter 412 and stored in the frame buffer 416.
[0045] Continuing with reference to FIG. 4 , decoder 400 may be designed and / or configured to perform any method, method step, or sequence of method steps in any embodiment described in this disclosure in any order and with any degree of repetition. For example, decoder 400 may be configured to repeatedly perform a single step or sequence until a desired or ordered result is achieved. The repetition of a step or sequence of steps may be performed iteratively and / or recursively, using the output of a previous iteration as input to a subsequent iteration, aggregating the inputs and / or outputs of an iteration to generate an aggregate result, reducing or decrementing one or more variables, such as global variables, and / or dividing a larger processing task into a set of smaller processing tasks that are addressed iteratively. Decoder 400 may also perform any step or sequence of steps in parallel as described in this disclosure, such as performing a step two or more times simultaneously and / or substantially simultaneously using two or more parallel threads, processor cores, etc. The division of tasks among parallel threads and / or processes may be performed according to any protocol suitable for dividing tasks among iterations. Those skilled in the art will recognize, upon reviewing this disclosure in its entirety, the various ways in which steps, sequences of steps, processing tasks, and / or data can be subdivided, shared, or otherwise handled using iterative, recursive, and / or parallel processing.
[0046] 5 is a system block diagram illustrating an example embodiment of a video encoder 500 capable of constructing a motion vector candidate list that includes adding a single global motion vector candidate to the motion vector candidate list. The example video encoder 500 can receive an input video 504, which may be initially segmented and / or divided according to a processing scheme, such as a tree-structured macroblock partition scheme (e.g., a quadtree plus binary tree). One example of a tree-structured macroblock partition scheme may include dividing a picture frame into large block elements called coding tree units (CTUs). In some implementations, each CTU may be further divided one or more times into multiple sub-blocks called coding units (CUs). The end result of this division may include a group of sub-blocks, which may be called a prediction unit (PU). Transform units (TUs) may also be utilized.
[0047] 5, the exemplary video encoder 500 may include an intra-prediction processor 508, a motion estimation / compensation processor 512 (also referred to as an inter-prediction processor) that can construct a motion vector candidate list, including adding a single global motion vector candidate to the motion vector candidate list, a transform / quantization processor 516, an inverse quantization / inverse transform processor 520, an in-loop filter 524, a decoded picture buffer 528, and / or an entropy coding processor 532. Bitstream parameters may be input to the entropy coding processor 532 and included in an output bitstream 536.
[0048] Continuing to refer to FIG. 5, in operation, for each block of a frame of input video 504, it may be determined whether to process the block via intra-picture prediction or to process the block using motion estimation / compensation. The block may be provided to intra-prediction processor 508 or motion estimation / compensation processor 512. If the block is to be processed via intra-prediction, intra-prediction processor 508 may perform processing and output a predictor. If the block is to be processed via motion estimation / compensation, motion estimation / compensation processor 512 may perform processing including constructing a motion vector candidate list, including adding a single global motion vector candidate to the motion vector candidate list, if applicable.
[0049] 5, a residual may be formed by subtracting a predictor from the input video. The residual may be received by a transform / quantization processor 516, which may perform a transform operation (e.g., a discrete cosine transform (DCT)) to generate coefficients that may be quantized. The quantized coefficients and any associated signaling information may be provided to an entropy coding processor 532 for entropy coding and included in an output bitstream 536. The entropy coding processor 532 may also support encoding of signaling information related to encoding the current block. Further, the quantized coefficients may be provided to an inverse quantization / inverse transform processor 520, which may regenerate pixels, which may be combined with a predictor and processed by an in-loop filter 524, the output of which may be stored in a decoded picture buffer 528 for use by a motion estimation / compensation processor 512, which may construct a motion vector candidate list, including adding a single global motion vector candidate to the motion vector candidate list.
[0050] 5, although several variations have been described in detail above, other modifications or additions are possible. For example, in some implementations, the current block may include any asymmetric block (8x4, 16x8, etc.), as well as any symmetric block (8x8, 16x16, 32x32, 64x64, 128x128, etc.).
[0051] Also, referring to FIG. 5, in some implementations, a quad-tree plus binary decision tree (QTBT) may be implemented. In QTBT, at the coding tree unit level, partition parameters of the QTBT may be dynamically derived to adapt to local characteristics without transmitting any overhead. Then, at the coding unit level, a joint classifier decision tree structure may eliminate unnecessary repetitions and control the risk of erroneous predictions. In some implementations, an LTR frame block update mode may be available as an additional selection available at each leaf node of the QTBT.
[0052] Also, referring to Figure 5, in some implementations, additional syntax elements may be signaled at different hierarchical levels of the bitstream. For example, a flag may be valid for the entire sequence by including an enable flag coded in the sequence parameter set (SPS). Furthermore, a CTU flag may be coded at the coding tree unit (CTU) level.
[0053] Continuing with reference to FIG. 5, a non-transitory computer program product (i.e., a physically embodied computer program product) may store instructions that, when executed by one or more data processors of one or more computing systems, cause at least one data processor to perform the operations and / or steps thereof described herein, including, but not limited to, may be configured to perform any of the operations of 400 and / or encoder 500 described above. Similarly, a computer system is also described that may include one or more data processors and a memory coupled to the one or more data processors. The memory may temporarily or permanently store instructions that cause at least one processor to perform one or more operations described herein. Furthermore, the method may be implemented either by one or more data processors in a single computing system or by one or more data processors distributed among two or more computing systems. Such computing systems may be connected to exchange data and / or commands or other instructions, etc., via one or more connections, including, for example, via a direct connection between one or more of the computing systems, or via a network (e.g., the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, etc.).
[0054] 5, the encoder 500, the decoder 400, and / or their circuits may be designed and / or configured to perform any method, method step, or sequence of method steps in any embodiment described in this disclosure in any order and with any degree of repetition. For example, the encoder 500, the decoder 400, and / or their circuits may be configured to repeatedly perform a single step or sequence until a desired or commanded result is achieved. The repetition of a step or sequence of steps may be performed iteratively and / or recursively, using the output of a previous iteration as input to a subsequent iteration, aggregating the inputs and / or outputs of an iteration to produce an aggregate result, reducing or decrementing one or more variables, such as global variables, and / or dividing a larger processing task into a set of smaller processing tasks that are addressed iteratively. The encoder 500, decoder 400, and / or circuitry thereof may perform any step or sequence of steps in parallel as described in this disclosure, such as performing a step two or more times simultaneously and / or substantially simultaneously using two or more parallel threads, processor cores, etc. The division of tasks among parallel threads and / or processes may be performed according to any protocol suitable for dividing tasks among iterations. Those skilled in the art will recognize, upon reviewing this disclosure in its entirety, various ways in which steps, sequences of steps, processing tasks, and / or data may be subdivided, shared, or otherwise handled using iterations, recursion, and / or parallel processing.
[0055] Embodiments disclosed herein include a decoder, the decoder including circuitry configured to: receive an encoded video bitstream; identify a current frame in the bitstream, the current frame including a first region, a second region, and a third region; detect, in the bitstream, that the first region is coded using block differential pulse code modulation; detect, in the bitstream, that the second region is coded using transform skip residual coding; and detect, in the bitstream, that the third region is coded using lossy coding, the lossy coding including at least one of inter prediction and intra prediction.
[0056] In some embodiments, the bitstream further includes a sub-picture header corresponding to the first region, and detecting that the first region is encoded using block differential pulse code modulation further includes detecting an indication in the sub-picture header that at least the first region is encoded using block differential pulse code modulation. In some embodiments, the sub-picture header is explicitly included in the data corresponding to the current frame. In some embodiments, the sub-picture is included by referencing an identifier of a sub-picture header corresponding to a third sub-picture.
[0057] In some embodiments, the bitstream further includes a sub-picture header corresponding to the second region, and the decoder is further configured to detect an indication in the sub-picture header that the second region is encoded using transform skip residual coding. In some embodiments, the sub-picture header is explicitly included in the data corresponding to the current frame. In some embodiments, the decoder is further configured to decode the first region using a first processor thread and to decode elements of the second region using a second processor thread. The decoder may be further configured to decode the current frame, where decoding the current frame further includes decoding the first region using a decoding protocol corresponding to block differential pulse code modulation. The decoder may be further configured to decode the current frame, where decoding the current frame further includes decoding the second region using a decoding protocol corresponding to using transform skip residual coding. The decoder may be further configured to decode the current frame, where decoding the current frame further includes decoding the third region using a decoding protocol corresponding to the lossy encoding protocol.
[0058] In some embodiments, a method of combined lossless and lossy encoding includes receiving, by a decoder, an encoded video bitstream; identifying, by the decoder and in the bitstream, a current frame, the current frame including a first region, a second region, and a third region; detecting, by the decoder and in the bitstream, that the first region is encoded using block differential pulse code modulation; detecting, by the decoder and in the bitstream, that the second region is encoded using transform skip residual coding; and detecting, by the decoder and in the bitstream, that the third region is encoded using lossy coding, the lossy coding including at least one of inter prediction and intra prediction.
[0059] In some embodiments, the bitstream further includes a sub-picture header corresponding to the first region, and detecting that the first region is coded using block differential pulse code modulation further includes detecting an indication in the sub-picture header that at least the first region is coded using block differential pulse code modulation. In some embodiments, the sub-picture header is explicitly included in the data corresponding to the current frame. The sub-picture may be included by referencing an identifier of a sub-picture header corresponding to a third sub-picture. The bitstream may include a sub-picture header corresponding to a second region, and the decoder may be further configured to detect an indication in the sub-picture header that the second region using transform skip residual coding is coded using transform skip residual coding. The sub-picture header may be explicitly included in the data corresponding to the current frame.
[0060] The method may include decoding a first region using a first processor thread and decoding elements of a third region using a second processor thread. The method may include decoding a current frame, where decoding the current frame further includes decoding the first region using a decoding protocol corresponding to block differential pulse code modulation. The method may include decoding the current frame, where decoding the current frame further includes decoding the second region using a decoding protocol corresponding to using transform skip residual coding. The method may include decoding the current frame, where decoding the current frame further includes decoding the third region using a decoding protocol corresponding to a lossy coding protocol.
[0061] In some embodiments, the decoder includes circuitry configured to receive an encoded bitstream; identify a current frame in the bitstream, the current frame including a first sub-picture and a second sub-picture; detect an indication in the bitstream that the first sub-picture is encoded according to a lossless encoding protocol; and decode the current frame, wherein decoding the current frame further includes decoding the first sub-picture using a lossless decoding protocol corresponding to the lossless encoding protocol.
[0062] In some embodiments, the bitstream may include a sub-picture header corresponding to the first sub-picture, and the detecting may include detecting an indication in the sub-picture header that at least the first sub-picture is encoded according to a lossless encoding protocol. The sub-picture header may be explicitly included in the data corresponding to the current frame. The sub-picture may be included by referencing an identifier of a sub-picture header corresponding to a third sub-picture. The decoder may be further configured to detect that the second sub-picture is encoded according to a lossy encoding protocol and to decode the second sub-picture according to a lossy decoding protocol corresponding to the lossless encoding protocol. The bitstream may include a sub-picture header corresponding to the second sub-picture, and the decoder may be further configured to detect an indication in the sub-picture header that the second sub-picture is encoded according to a lossy encoding protocol. The sub-picture header may be explicitly included in the data corresponding to the current frame. The sub-picture header may be included by referencing an identifier of a sub-picture header corresponding to the third sub-picture. The decoder may be further configured to decode the first subpicture using a first processor thread and to decode elements of the second subpicture using a second processor thread. The decoder may include an entropy decoder processor configured to receive a bitstream and decode the bitstream into quantized coefficients, an inverse quantization and inverse transform processor configured to process the quantized coefficients including performing inverse discrete cosine, a deblocking filter, a frame buffer, and an intra-prediction processor. At least one of the first subpicture and the second subpicture may form part of a quadtree-plus-binary decision tree. At least one of the first subpicture and the second subpicture may include a coding tree unit. At least one of the first subpicture and the second subpicture may include a coding unit.At least one of the first sub-picture and the second sub-picture may include a prediction unit.
[0063] In some embodiments, a method of combined lossless and lossy encoding includes receiving, at a decoder, a bitstream; identifying, by the decoder and in the bitstream, a current frame, the current frame including a first sub-picture and a second sub-picture; detecting, by the decoder and in the bitstream, an indication that the first sub-picture is encoded according to a lossless encoding protocol; and decoding, by the decoder, the current frame, wherein decoding the current frame further includes decoding the first sub-picture using a lossless decoding protocol corresponding to the lossless encoding protocol.
[0064] In some embodiments, the bitstream may further include a sub-picture header corresponding to the first sub-picture, and detecting may include detecting an indication in the sub-picture header that at least the first sub-picture is encoded according to a lossy encoding protocol. The sub-picture header may be explicitly included in the data corresponding to the current frame. The sub-picture header may be included by referencing an identifier of a sub-picture header corresponding to a third sub-picture. The method may include detecting that the second sub-picture is encoded according to a lossy encoding protocol and decoding the second sub-picture according to a lossy decoding protocol corresponding to the lossless encoding protocol. In some embodiments, the bitstream may include a sub-picture header corresponding to the second sub-picture, and detecting may include detecting an indication in the sub-picture header that the second sub-picture is encoded according to a lossy encoding protocol. The sub-picture header may be explicitly included in the data corresponding to the current frame. The sub-picture header may be included by referencing an identifier of a sub-picture header corresponding to the third sub-picture. The decoder may be further configured to decode the first sub-picture using a first processor thread and to decode elements of the second sub-picture using a second processor thread.
[0065] In some embodiments, the decoder may include an entropy decoder processor configured to receive a bitstream and decode the bitstream into quantized coefficients, an inverse quantization and inverse transform processor configured to process the quantized coefficients including performing inverse discrete cosine, a deblocking filter, a frame buffer, and an intra-prediction processor. At least one of the first subpicture and the second subpicture may form part of a quadtree plus binary decision tree. At least one of the first subpicture and the second subpicture may include a coding tree unit. At least one of the first subpicture and the second subpicture may include a coding unit. At least one of the first subpicture and the second subpicture may include a prediction unit.
[0066] It should be noted that any one or more aspects and embodiments described herein may be conveniently implemented using one or more machines (e.g., one or more computing devices utilized as user computing devices for electronic documents, one or more server devices, such as document servers, etc.) programmed in accordance with the teachings herein, as would be apparent to those skilled in the computer arts. Appropriate software coding may be readily produced by skilled programmers based on the teachings of the present disclosure, as would be apparent to those skilled in the software arts. Aspects and implementations described above employing software and / or software modules may also include appropriate hardware to support the implementation of the machine-executable instructions of the software and / or software modules.
[0067] Such software may be a computer program product employing a machine-readable storage medium. A machine-readable storage medium may be any medium capable of storing and / or encoding sequences of instructions for execution by a machine (e.g., a computing device) and causing the machine to perform any one of the methodologies and / or embodiments described herein. Examples of machine-readable storage media include, but are not limited to, magnetic disks, optical disks (e.g., CDs, CD-Rs, DVDs, DVD-Rs, etc.), magneto-optical disks, read-only memory "ROM" devices, random-access memory "RAM" devices, magnetic cards, optical cards, solid-state memory devices, EPROMs, EEPROMs, and any combination thereof. As used herein, machine-readable media is intended to include a single medium as well as a collection of physically separate media, such as, for example, a collection of compact discs or one or more hard disk drives in combination with computer memory. As used herein, machine-readable storage media does not include a transitory form of signal transmission.
[0068] Such software may also include information (e.g., data) carried in a data signal on a data carrier, such as a carrier wave. For example, machine-executable information may be included in a data carrier signal embodied in a data carrier, which signal encodes sequences of instructions, or portions thereof, for execution by a machine (e.g., a computing device), and any associated information (e.g., data structures and data) that cause the machine to perform any one of the methodologies and / or embodiments described herein.
[0069] Examples of computing devices include, but are not limited to, e-book reading devices, computer workstations, terminal computers, server computers, mobile devices (e.g., tablet computers, smartphones, etc.), web appliances, network routers, network switches, network bridges, any machine capable of executing a sequence of instructions that specify actions to be taken by that machine, and any combination thereof. In one embodiment, a computing device may include and / or be included in a kiosk.
[0070] 6 shows a diagrammatic representation of one embodiment of a computing device in the exemplary form of a computer system 600 upon which a set of instructions for causing a control system to perform any one or more aspects and / or methodologies of the present disclosure may be executed. It is also contemplated that multiple computing devices may be utilized to execute a set of instructions specifically configured to cause one or more devices to perform any one or more aspects and / or methodologies of the present disclosure. Computer system 600 includes a processor 604 and a memory 608, which communicate with each other and with other components via a bus 612. Bus 612 may include any of several types of bus structures, including, but not limited to, a memory bus, a memory controller, a peripheral bus, a local bus, and any combination thereof, using any of a variety of bus architectures.
[0071] Processor 604 may include any suitable processor, such as, but not limited to, a processor incorporating logic circuitry for performing arithmetic and logical operations, such as an arithmetic and logic unit (ALU), which may be regulated by a state machine and directed by operational inputs from memory and / or sensors. As one non-limiting example, processor 604 may be organized according to a von Neumann and / or Harvard architecture. Processor 604 may include, incorporate, and / or be incorporated into, but not limited to, a microcontroller, a microprocessor, a digital signal processor (DSP), a field programmable gate array (FPGA), a complex programmable logic device (CPLD), a graphics processing unit (GPU), a general-purpose GPU, a tensor processing unit (TPU), an analog or mixed-signal processor, a trusted platform module (TPM), a floating-point unit (FPU), and / or a system-on-chip (SoC).
[0072] Memory 608 may include a variety of components (e.g., machine-readable media), including, but not limited to, random-access memory components, read-only components, and any combination thereof. In one example, a basic input / output system 616 (BIOS), containing the basic routines that help to transfer information between elements within computer system 600, such as during start-up, may be stored in memory 608. Memory 608 may also include (e.g., stored on one or more machine-readable media) instructions (e.g., software) 620 that embody any one or more aspects and / or methodologies of the present disclosure. In another example, memory 608 may further include any number of program modules, including, but not limited to, an operating system, one or more application programs, other program modules, program data, and any combination thereof.
[0073] Computer system 600 may also include a storage device 624. Examples of a storage device (e.g., storage device 624) include, but are not limited to, a hard disk drive, a magnetic disk drive, an optical disk drive combined with optical media, a solid-state memory device, and any combination thereof. Storage device 624 may be connected to bus 812 by an appropriate interface (not shown). Exemplary interfaces include, but are not limited to, SCSI, Advanced Technology Attachment (ATA), Serial ATA, Universal Serial Bus (USB), IEEE 1394 (FIREWIRE), and any combination thereof. In one embodiment, storage device 624 (or one or more components thereof) may be removably interfaced with computer system 600 (e.g., via an external port connector (not shown)). In particular, storage device 624 and associated machine-readable media 628 may provide non-volatile and / or volatile storage of machine-readable instructions, data structures, program modules, and / or other data for computer system 600. In one embodiment, software 620 may reside, completely or partially, within machine-readable medium 628. In another embodiment, software 620 may reside, completely or partially, within processor 604.
[0074] Computer system 600 may also include input devices 632. In one embodiment, a user of computer system 600 may input commands and / or other information into computer system 600 via input devices 632. Examples of input devices 632 include, but are not limited to, an alphanumeric input device (e.g., a keyboard), a pointing device, a joystick, a gamepad, an audio input device (e.g., a microphone, a voice response system, etc.), a cursor control device (e.g., a mouse), a touchpad, an optical scanner, a video capture device (e.g., a still camera, a video camera), a touch screen, and any combination thereof. Input devices 632 may be interfaced to bus 612 via various interfaces (not shown), including, but not limited to, a serial interface, a parallel interface, a game port, a USB interface, a FIREWIRE interface, a direct interface to bus 612, and any combination thereof. Input devices 632 may include a touch screen interface, which may be part of or separate from display 636, as discussed further below. The input device 632 may be utilized as a user selection device for selecting one or more graphical representations in the graphical interface, as described above.
[0075] A user may also input commands and / or other information into computer system 600 via storage device 624 (e.g., a removable disk drive, flash drive, etc.) and / or network interface device 640. A network interface device, such as network interface device 640, may be utilized to connect computer system 600 to one or more various networks, such as network 644, and one or more remote devices 648 connected thereto. Examples of network interface devices include, but are not limited to, a network interface card (e.g., a mobile network interface card, a LAN card), a modem, and any combination thereof. Examples of networks include, but are not limited to, a wide area network (e.g., the Internet, an enterprise network), a local area network (e.g., a network associated with an office, building, campus, or other relatively small geographic space), a telephone network, a data network associated with a telephone / voice provider (e.g., a mobile communications provider's data and / or voice network), a direct connection between two computing devices, and any combination thereof. A network, such as network 644, may employ wired and / or wireless modes of communication. In general, any network topology may be used. Information (eg, data, software 620 , etc.) may be communicated to and / or from computer system 600 via network interface device 640 .
[0076] Computer system 600 may further include a video display adapter 652 for communicating images displayable on a display device, such as display device 636. Examples of display devices include, but are not limited to, a liquid crystal display (LCD), a cathode ray tube (CRT), a plasma display, a light emitting diode (LED) display, and any combination thereof. Display adapter 652 and display device 636 may be utilized in combination with processor 604 to provide graphical representations of aspects of the present disclosure. In addition to a display device, computer system 600 may include one or more other peripheral output devices, including, but not limited to, audio speakers, a printer, and any combination thereof. Such peripheral output devices may be connected to bus 612 via a peripheral interface 656. Examples of peripheral interfaces include, but are not limited to, a serial port, a USB connection, a FIREWIRE connection, a parallel connection, and any combination thereof.
[0077] The foregoing is a detailed description of exemplary embodiments of the present invention. Various modifications and additions may be made without departing from the spirit and scope of the present invention. Features of each of the various embodiments described above may be combined with features of other described embodiments as needed to provide various combinations of features in related new embodiments. Moreover, the foregoing describes multiple separate embodiments, and what has been described herein is merely illustrative of the application of the principles of the present invention. Furthermore, certain methods herein may be described and / or illustrated as being performed in a particular order, which order is highly variable within the ordinary skill in the art for achieving methods, systems, and software according to the present disclosure. Accordingly, the present description is to be taken by way of example only and is not intended to otherwise limit the scope of the present invention.
[0078] Exemplary embodiments are disclosed above and illustrated in the accompanying drawings. It will be understood by those skilled in the art that various modifications, omissions, and additions may be made to what is specifically disclosed herein without departing from the spirit and scope of the present invention.
Claims
1. receiving coded pictures in a bitstream, the receiving, wherein the picture includes a first region, a second region, and a third region; Detecting in the bitstream that the first region is encoded using block differential pulse code modulation; Detecting in the bitstream that the second region is coded using a transform skip mode that is not block differential pulse code modulation; detecting, in the bitstream, that the third region is coded using lossy coding, the lossy coding including at least one of inter or intra prediction, a discrete cosine transform of residual pixel values, and quantization of transform coefficients; [0023] including circuitry configured to: The decoder, wherein the first region is an independently coded sub-picture.
2. The decoder of claim 1 , wherein the second region is an independently coded sub-picture.
3. The decoder of claim 1 , wherein the first region is an independently coded first sub-picture and the second region is an independently coded second sub-picture.
4. the bitstream further includes a sub-picture header corresponding to the second region; 2. The decoder of claim 1, wherein the decoder is further configured to detect an indication in the sub-picture header that the second region is coded using transform skip residual coding.
5. Decoding the first region using a first processor thread; 2. The decoder of claim 1, further configured to: decode elements of the second region using a second processor thread.
6. 2. The decoder of claim 1, further configured to: decode the picture, wherein decoding the picture further comprises decoding the first region using a decoding protocol corresponding to block differential pulse code modulation.
7. 2. The decoder of claim 1, further configured to decode the picture, wherein the third region is encoded using a lossy encoding protocol, and wherein decoding the picture further comprises decoding the third region using a decoding protocol corresponding to the lossy encoding protocol.
8. A method for combined lossless and lossy encoding, comprising: receiving, by a decoder comprising circuitry, a picture encoded in a bitstream, the picture including a first region, a second region, and a third region; detecting, by the decoder and in the bitstream, that the first region is encoded using block differential pulse code modulation; detecting, by the decoder and in the bitstream, that the second region is coded using a transform skip mode that is not block differential pulse code modulation; detecting, by the decoder and in the bitstream, that the third region is coded using lossy coding, the lossy coding including at least one of inter or intra prediction, a discrete cosine transform of residual pixel values, and quantization of transform coefficients; Including, A method wherein the first region is an independently coded sub-picture.
9. 2. The decoder of claim 1, wherein the first region is an independently coded first sub-picture, the second region is an independently coded second sub-picture, and the third region is the remainder of the picture.
10. 10. The decoder of claim 9, wherein the first sub-picture includes a first group of one or more coding tree units, the second sub-picture includes a second group of one or more coding tree units, and the remainder of the picture includes a third group of coding tree units.
11. The decoder of claim 9 , wherein a position of the first sub-picture in the picture is signaled in the bitstream and a position of the second sub-picture in the picture is signaled in the bitstream.
12. The decoder of claim 1 , wherein the first region includes a first plurality of coding units, the second region includes a second plurality of coding units, and the third region includes the remainder of the picture.
13. 1. A decoder comprising circuitry configured to decode coded pictures received in a bitstream, the coded pictures comprising: a first region encoded using BDPCM; a second region encoded using a transform skip mode that is not BDPCM; a third region that is coded using lossy coding, the lossy coding including at least one of inter or intra prediction, transformation of residual pixel values, and quantization of transform coefficients; Including, The decoder, wherein the first region is an independently coded sub-picture.
Citation Information
Patent Citations
Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans
US20140362917A1
Differential Pulse Code Modulation Intra Prediction for High Efficiency Video Coding
US20160112720A1