Fast-speed DST-7

JP2025123329A5Pending Publication Date: 2026-06-03TENCENT AMERICA LLC

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
TENCENT AMERICA LLC
Filing Date
2025-06-12
Publication Date
2026-06-03

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a fast-speed DST-7.SOLUTION: A method and apparatus for decoding a video sequence using a discrete sine transform (DST) type-VII transform core includes generating a set of tuples of transform core elements associated with an n-point DST-VII transform core. A first sum of a first subset of transform core elements of a first tuple is equal to a second sum of a second subset of remaining transform core elements of the first tuple. The n-point DST-VII transform core is generated based on generating the set of tuples of transform core elements. A transform on a block is performed using the n-point DST-VII transform core.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority under 35 U.S.C. §119 to U.S. patent application Ser. No. 62 / 668,065, filed in the U.S. Patent and Trademark Office on May 7, 2018, the disclosure of which is incorporated by reference in its entirety.

[0002] [Technical field] This disclosure relates to next-generation video coding technologies beyond High Efficiency Video Coding (HEVC), such as Versatile Video Coding (VVC). More specifically, this disclosure is directed to a speed-up method for implementing Discrete Sine Transform Type VII (DST Type 7). [Background technology]

[0003] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) published the H.265 / HEVC (High Efficiency Video Coding) standard (version 1) in 2013, and provided updates in 2014 (version 2), 2015 (version 3), and 2016 (version 4). The ITU is studying the potential need for standardization of future video coding technologies with compression capabilities significantly exceeding the HEVC standard (including its extensions).

[0004] The ITU issued a Joint Call for Proposals on Video Compression with Capability beyond HEVC (CfP) in October 2017. By February 15, 2018, a total of 22 CfP responses for standard dynamic range (SDR), 12 for high dynamic range (HDR), and 12 for 360 video categories had been submitted.

[0005] In April 2018, all received CfP responses were evaluated at the 122 MPEG / 10th JVET (Joint Video Exploration Team - Joint Video Expert Team) meeting. After careful evaluation, the JVET officially launched the standardization of the next generation video coding beyond HEVC, namely the so-called VVC (Versatile Video Coding). The current version of this is the VVC Test Model (VTM), namely VTM 1.

[0006] Compared to the DCT-2, for which acceleration methods have been widely studied, the DST-7 implementation is still significantly less efficient than the DCT-2. For example, VTM 1 involves matrix multiplications.

[0007] In JVET-J0066, a method is proposed to approximate different types of DCTs and DSTs in JEM7 by applying a refinement step to transforms in the DCT-2 family, including DCT-2, DCT-3, DST-2 and DST-3, where the refinement step represents a matrix multiplication using sparse matrices, which requires a relatively small number of operations.

[0008] JVET-J001 proposes a method for implementing n-point DST-7 using a 2n+1-point Discrete Fourier Transform (DFT). Summary of the Invention

[0009] According to one aspect of the present disclosure, a method for decoding a video sequence using a Discrete Sine Transform (DST) Type VII transform core includes generating a set of tuples of transform core elements associated with an n-point DST-VII transform core, wherein a first sum of a first subset of the transform core elements of a first tuple is equal to a second sum of a second subset of the remaining transform core elements of the first tuple; generating the n-point DST-VII transform core based on generating the set of tuples of transform core elements; and performing a transform on a block using the n-point DST-VII transform core.

[0010] According to one aspect of the present disclosure, a device for decoding video sequences using a Discrete Sine Transform (DST) Type VII transform core includes at least one memory configured to store program code; and at least one processor configured to read the program code and operate according to instructions in the program code, the program code including: generation code configured to cause the at least one processor to generate a set of tuples of transform core elements associated with an n-point DST-VII transform core, wherein a first sum of a first subset of the transform core elements of a first tuple is equal to a second sum of a second subset of the remaining transform core elements of the first tuple; the generation code further configured to cause the at least one processor to generate the n-point DST-VII transform core based on generating the set of tuples of transform core elements; and execution code configured to cause the at least one processor to perform a transform on a block using the n-point DST-VII transform core.

[0011] According to one aspect of the present disclosure, a non-transitory computer-readable medium having stored thereon instructions, which when executed by one or more processors of a device, cause the one or more processors to perform the following steps: generating a set of tuples of transform core elements associated with an n-point DST-VII transform core, wherein a first sum of a first subset of the transform core elements of a first tuple is equal to a second sum of a second subset of the remaining transform core elements of the first tuple; generating the n-point DST-VII transform core based on generating the set of tuples of transform core elements; and performing a transform on a block using the n-point DST-VII transform core. [Brief explanation of the drawings]

[0012] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Figure 1] 1 is a flowchart of an example process of a method for decoding a video sequence using a Discrete Sine Transform (DST) Type VII transform core. [Figure 2] FIG. 1 is a simplified block diagram of a communication system according to one embodiment of the present disclosure. [Figure 3] FIG. 1 is a diagram of the arrangement of a video encoder and decoder in a streaming environment. [Figure 4] FIG. 2 is a functional block diagram of a video decoder according to one embodiment of the present disclosure. [Figure 5] FIG. 2 is a functional block diagram of a video encoder according to one embodiment of the present disclosure. [Figure 6] FIG. 1 is a diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0013] [Issues to be resolved] The lack of an efficient high-speed implementation of DST-7 limits the application of DST-7 for practical video codec implementations.

[0014] In different implementation scenarios, a matrix multiplication-based implementation is preferred because it involves more regular processing, but in some cases, an acceleration method that significantly reduces the number of operations is preferred. Therefore, it is highly desirable to identify an acceleration method that outputs substantially identical results compared to a matrix multiplication-based implementation, such as the DCT-2 design in HEVC, which supports both matrix multiplication and partial butterfly implementations.

[0015] Existing acceleration methods for DST-7, e.g., JVET-J0066 and JVET-J0017, cannot support all desirable features of transform design in video codecs, including 16-bit intermediate operations, integer operations, and / or cannot provide identical results between their implementation and matrix multiplication-based implementations.

[0016] [Detailed explanation] The present disclosure enables substantially similar results compared to matrix multiplication-based implementations based on the utilization of individual features / patterns in the DST-7 transform base. Thus, some implementations herein conserve computational resources and improve efficiency in the encoder and / or decoder.

[0017] The 16-point DST-7 integer transform core used in the forward transform can be expressed as {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}={8,17,25,33,41,48,55,62,67,73,77,81,84,87,88,89} as follows:

[0018] As mentioned above, the element values ​​of the DST-7 transform core include the properties a+j=l, b+i=m, c+h=n, d+g=o, and e+f=p.

[0019] According to one embodiment, the input vector for a 16-point transform is x={x0, x1, x2,..., x15} and the output transform coefficient vector is y={y0, y1, y2,..., y15}.

[0020] Based on the above relationships between the transform core elements, instead of implementing a·x0+j·x9+l·x11, which requires three multiplication operations, one embodiment implements a·(x0+x11)+j·(x9+x11), which requires two multiplication operations.

[0021] Thus, instead of performing the vector-wise operation y0=a·x0+b·x1+c·x2+d·x3+e·x4+f·x5+g·x6+h·x7+i·x8+j·x9+k·x10+l·x11+m·x12+n·x13+o·x14+p·x15, which requires 16 multiplication operations, to compute y0, one embodiment performs the operation y0=a·(x0+x11)+b·(x1+x12)+c·(x2+x13)+d·(x3+x14)+e·(x4+x15)+f·(x5+x15)+g·(x6+x14)+h·(x7+x13)+i·(x8+x12)+j·(x9+x11)+k·x10, which requires 11 multiplication operations, and derives a substantially similar result.

[0022] Furthermore, when calculating y2, y3, y6, y8, y9, y11, y12, y14, and y15, a similar implementation can be achieved, and the intermediate results of (x0+x11), (x1+x12), (x2+x13), (x3+x14), (x4+x15), (x5+x15), (x6+x14), (x7+x13), (x8+x12), (x9+x11), and k·10 can be reused, respectively.

[0023] According to one embodiment, each third transformation basis vector starting from the second basis vector includes some duplicated patterns. For example, the second basis vector can be expressed as follows:

[0024]

number

[0025] Furthermore, the calculations for calculating y1, y4, y7, y10, and y13 can be performed similarly, and the intermediate results of (x0+x9-x11), (x1+x8-x12), (x2+x7-x13), (x3+x6-x14), and (x4+x5-x15) can be reused.

[0026] For the inverse transform, the transform core matrix is ​​the transpose of the transform core matrix used for the forward transform, and the above two features are also applicable to the inverse transform. Furthermore, it should be noted that the tenth basis vector is {k, 0, -k, k, 0, -k, k, 0, -k, k, 0, -k, k, 0, -k, k}, which contains only a single unique absolute value (i.e., k). Thus, instead of calculating y10 using the vector-wise multiplication of y10=k·x0-k·x2+k·x3-k·x5+k·x6-k·x8+k·x9-k·x11+k·x12-k·x14+k·x15, which requires 11 multiplication operations, one embodiment may perform the operation y10=k·(x0-x2+x3-x5+x6-x8+x9-x11+x12-x14+x15), which requires a single multiplication operation while deriving a substantially similar result.

[0027] For 64-point forward and backward DST-7, the above two features are also available, and therefore the same speed-up methods as above are also applicable.

[0028] For 32-point forward and inverse DST-7 transform cores, the second feature is available: duplicated or inverted segments exist in the basis vectors. Therefore, the same speed-up method described above based on the second feature can also be applied. The first feature can also be used in 32-point forward and inverse DST-7 transform cores, but with a different formulation, as described below.

[0029] The elements of a 32-point transform core contain 32 distinct numbers (not considering sign changes): {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}.

[0030] An example of element fixed point assignment is {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}={4,9,13,17,21,26,30,34,38,42,46,49,53,56,60,63,66,69,71,74,76,78,81,82,84,85,87,88,89,89,90,90}.

[0031] It should be noted that the element values ​​of the 32-point floating-point DST-7 transform core have the following properties: #0: a+l+A=n+y; #1: b+k+B=o+x; #2: c+j+C=p+w; #3: d+i+D=q+v; #4: e+h+E=r+u; and #5: f+g+F=s+t.

[0032] The elements in each of the six formulas above form a quintuple, for example {a,l,A,n,y} is quintuple #0 and {b,k,B,o,x} is another quintuple #1.

[0033] According to one embodiment, the input vector for a 32-point transform is x={x0, x1, x2,..., x31} and the output transform coefficient vector is y={y0, y1, y2,..., y31}.

[0034] Based on the above relationships between the transform core elements, instead of implementing a·x0+l·x11+n·x13+y·x24+A·x26, which requires five multiplication operations, one embodiment performs the operation a·x0+l·x11+n·x13+y·x24+(n+y a l)·x26 while deriving a substantially similar result, which can also be implemented as a·(x0−x26)+l·(x11−x26)+n·(x13+x26)+y·(x24+x26), which requires four multiplication operations.

[0035] Similarly, the above reduced form multiplication operation can be applied to the other five quintuples, e.g., the intermediate results for quintuples #0, (x0-x26), (x11-x26), (x13+x26), (x24+x26) can be pre-computed and reused to compute each of the transform coefficients.

[0036] However, it should be noted that the assignment of integer values ​​for elements {a,b,c,...,F} may not exactly follow the formula above due to rounding errors, for example {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}={4,9,13,17,21,26,30,34,38,42,46,49,53,56,60,63,66,69,71,74,76,78,81,82,84,85,87,88,89,89,90,90} assigned by scaling using 64 √32 and rounding to the nearest integer.

[0037] For quinary #1, b+k+B=9+46+88=143, but o+x=60+82=142.

[0038] Therefore, to achieve substantially similar results between the matrix multiplication and the acceleration method, one embodiment adjusts the elements of each quintuple to perform substantially similarly to the equations defined herein. For example, quintuple #1 is adjusted to be {b,k,o,x,B}={9,46,60,82,87}. Alternatively, quintuple #1 is adjusted to be {b,k,o,x,B}={9,46,60,83,88}. Alternatively, quintuple #1 is adjusted to be {b,k,o,x,B}={9,46,61,82,88}. Alternatively, quintuple #1 is adjusted to be {b,k,o,x,B}={9,45,60,82,88}. Alternatively, quintuple #1 is adjusted to be {b,k,o,x,B}={8,46,60,82,88}.

[0039] Compared to a matrix multiplication-based implementation requiring 256 multiplication operations and 256 addition / subtraction operations, or the JVET-J0066 implementation requiring 152 multiplication operations and 170 addition / subtraction operations, some implementations herein allow for 126 multiplication operations and 170 addition / subtraction operations while providing substantially similar results. Thus, some implementations herein allow for improved efficiency and conserve computational resources in the encoder and / or decoder.

[0040] 1 is a flowchart of an example process 100 of a method for decoding a video sequence using a Discrete Sine Transform (DST) Type VII transform core. In some implementations, one or more processing blocks of FIG. 1 may be performed by a decoder. In some implementations, one or more processing blocks of FIG. 1 may be performed by another device or group of devices separate from the decoder, such as an encoder, or another device or group of devices that includes the decoder.

[0041] As shown in FIG. 1 , process 100 may include generating a set of tuples of transform core elements associated with an n-point DST-VII transform core, where a first sum of a first subset of the transform core elements of a first tuple is equal to a second sum of a second subset of the remaining transform core elements of the first tuple (block 110).

[0042] As further shown in FIG. 1, the process 100 may include generating an n-point DST-VII transform core based on generating a set of tuples of transform core elements (block 120).

[0043] As further shown in FIG. 1, the process 100 may include performing a transform on the block using an n-point DST-VII transform core.

[0044] According to one embodiment, the distinct absolute element values ​​present in one transform core can be divided into multiple tuples together with some predetermined constants, and for each tuple, the sum of some of the absolute element values ​​is identical to the sum of the remaining absolute element values ​​in the same tuple.

[0045] For example, in an embodiment, the tuple is a triplet containing three elements, where the sum of the absolute values ​​of two elements is the same as the absolute value of the remaining element. Alternatively, the tuple is a quadruple containing four elements, where the sum of the absolute values ​​of two elements is the same as the sum of the absolute values ​​of the remaining two elements. Alternatively, the tuple is a quadruple containing four elements, where the sum of the absolute values ​​of three elements is the same as the sum of the absolute values ​​of the remaining element. Alternatively, the tuple is a quinary containing five elements, where the sum of the absolute values ​​of three elements is the same as the sum of the absolute values ​​of the remaining two elements.

[0046] According to one embodiment, in addition to the existing individual absolute element values ​​present in one transform core, predetermined constants that are powers of two (eg, 1, 2, 4, 8, 16, 32, 64, etc.) can also be considered as elements in the tuple.

[0047] According to one embodiment, the distinct absolute element values ​​present in the 16-point and 64-point DST-7 conversion cores are divided into multiple ternaries, each containing three elements. Additionally, or alternatively, the distinct absolute element values ​​present in the 32-point DST-7 conversion core are divided into multiple quinaries, each containing five elements.

[0048] According to one embodiment, for an integer transform core, the integer elements of the transform core may be further adjusted to exactly satisfy the above characteristic, i.e., the sum of the absolute values ​​of some of the elements in one tuple is the same as the sum of the absolute values ​​of the remaining elements in the same tuple, while maintaining good orthogonality of the transform core. For example, for a 32-point integer DST-7 core, the second tuple {b, k, o, x, B} is adjusted to {9, 46, 60, 82, 87}. Alternatively, for a 32-point integer DST-7 core, the second tuple {b, k, o, x, B} is adjusted to {9, 46, 60, 83, 88}. Alternatively, for a 32-point integer DST-7 core, the second tuple {b, k, o, x, B} is adjusted to {9, 46, 61, 82, 88}. Alternatively, for a 32-point integer DST-7 core, the second tuple {b,k,o,x,B} is adjusted to {9,45,60,82,88}. Alternatively, for a 32-point integer DST-7 core, the second tuple {b,k,o,x,B} is adjusted to {8,46,60,82,88}. Alternatively, for a 32-point integer DST-7 core, the sixth tuple {f,g,s,t,B} is adjusted to {26,30,71,74,89}. Alternatively, for a 32-point integer DST-7 core, the sixth tuple {b,k,o,x,B} is adjusted to {26,30,71,75,90}. Alternatively, for a 32-point integer DST-7 core, the sixth tuple {b,k,o,x,B} is adjusted to {26,30,72,74,90}. Alternatively, for a 32-point integer DST-7 core, the sixth tuple {b,k,o,x,B} is adjusted to {26,29,71,74,90}. Alternatively, for a 32-point integer DST-7 core, the sixth tuple {b,k,o,x,B} is adjusted to {25,30,71,74,90}.

[0049] According to one embodiment, the elements of the transform core may be further adjusted by only +1 or -1 relative to the element value derived by scaling by a predetermined constant and rounding to the nearest integer.

[0050] According to one embodiment, the elements of the transform core may be further adjusted by only +1, -1, +2 and -2 relative to the element value derived by scaling by a predetermined constant and rounding to the nearest integer.

[0051] According to one embodiment, the orthogonality of the adjusted transform cores is determined by the matrix A A T It is measured by the sum of the absolute values ​​of -s·I, where s is a predefined scaling factor for deriving the integer transform core, and I is the identity matrix.

[0052] 1 illustrates example blocks of process 100, in some implementations process 100 may include more, fewer, different, or differently arranged blocks than those illustrated in FIG 1. Additionally or alternatively, two or more of the blocks of process 100 may be performed in parallel.

[0053] FIG. 2 shows a simplified block diagram of a communication system (200) according to one embodiment of the present disclosure. The communication system (200) may include at least two terminals (210-220) interconnected via a network (250). For unidirectional data transmission, a first terminal (210) may encode video data at a local location for transmission to another terminal (220) via the network (250). The second terminal (220) may receive the other terminal's encoded video data from the network (250), decode the encoded data, and display the reconstructed video data. Unidirectional data transmission may be common in media delivery applications, etc.

[0054] 2 illustrates a second pair of terminals (230, 240) configured to support two-way transmission of encoded video, such as may occur during a video conference. For the two-way transmission of data, each terminal (230, 240) may encode video data captured at a local location for transmission to the other terminal over the network (250). Each terminal (230, 240) may also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the reconstructed video data on a local display device.

[0055] In FIG. 2 , the terminals (210-240) may be depicted as servers, personal computers, and smartphones, although the principles of the present disclosure are not limited thereto. Embodiments of the present disclosure may find application in laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. The network (250) represents any number of networks that convey coded video data between the terminals (210-240), including, for example, wired and / or wireless communication networks. The communication network (250) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of the network (250) may not be important to the operation of the present disclosure, unless otherwise described below.

[0056] 3 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter, which is equally applicable to other video-enabled applications including, for example, video conferencing, digital TV, storage of compressed video on digital media (including CDs, DVDs, memory sticks, etc.), etc.

[0057] The streaming system may include a capture subsystem (313), which may include, for example, a video source (301) (e.g., a digital camera) that generates an uncompressed video sample stream (302). This sample stream (302), shown in bold to emphasize its high data volume compared to an encoded video bitstream, may be processed by an encoder (303) coupled to the camera (301). The encoder (303) may include hardware, software, or a combination thereof for enabling or implementing aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (304), shown in thin to emphasize its low data volume compared to the sample stream, may be stored on a streaming server (305) for future use. One or more streaming clients (306, 308) may access the streaming server (305) to obtain copies (307, 309) of the encoded video bitstream (304). The client (306) may include a video decoder (310) that decodes an input copy of the encoded video bitstream (307) and generates an output video sample stream (311) that can be rendered on a display (312) or other rendering device (not shown). In some streaming systems, the video bitstreams (304, 307, 309) may be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. The developing video coding standard is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.

[0058] FIG. 4 may be a functional block diagram of a video decoder (310) according to one embodiment of the present invention.

[0059] The receiver (410) may receive one or more coded video sequences to be decoded by the decoder (310), and in the same or other embodiments, may receive one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (412), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (410) may receive the coded video data along with other data (e.g., coded audio data and / or auxiliary data streams), which may be forwarded to respective using entities (not shown). The receiver (410) may separate the coded video sequences from the other data. To prevent network jitter, a buffer memory (415) may be coupled between the receiver (410) and the entropy decoder / parser (420) (hereinafter referred to as the "parser"). If the receiver 410 is receiving data from a store-and-forward device with sufficient bandwidth and controllability, or from an isochronous network, the buffer 415 may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer 415 may be needed and may be relatively large and advantageously adaptively sized.

[0060] The video decoder (310) may include a parser (420) for reconstructing symbols (421) from the entropy-coded video sequence. These symbol categories include information used to manage the operation of the decoder (310) and potential information for controlling a rendering device, such as a display (312). The rendering device may not be an integral part of the decoder, but may be coupled to the decoder, as shown in FIG. 4. The rendering device control information may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (420) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and other principles well known to those skilled in the art. The parser (420) may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The entropy decoder / parser may also extract information such as transform coefficients, quantizer parameter (QP) values, motion vectors, etc. from the coded video sequence.

[0061] The parser (420) may perform entropy decoding / parsing operations on the video sequence received from the buffer (415) to generate symbols (421). The parser (420) may receive the encoded data and selectively decode particular symbols (421). Additionally, the parser (420) may determine whether a particular symbol (421) should be provided to the motion compensated prediction unit (453), the scaler / inverse transform unit (451), the intra prediction unit (452), or the loop filter (456).

[0062] The reconstruction of the symbols (421) may involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter-picture and intra-picture, inter-block and intra-block) and other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and the following units is not shown for clarity.

[0063] In addition to the functional blocks described above, the decoder (310) may be conceptually subdivided into multiple functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may even be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, a conceptual subdivision into the following functional units is appropriate:

[0064] The first unit is the scalar / inverse transform unit (451), which receives the quantized transform coefficients as symbols (621) from the parser (420) along with control information (including which transform to use, block size, quantization coefficients, quantization scaling matrix, etc.) The scalar / inverse transform unit (451) may output blocks containing sample values ​​that can be input to the aggregator (455).

[0065] In some cases, the output samples of the scaler / inverse transform (451) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (452). In some cases, the intra-picture prediction unit (452) uses surrounding already reconstructed information taken from the current picture (partially reconstructed picture) (456) to generate blocks of the same size and shape as the block being reconstructed. In some cases, the aggregator (455) adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451).

[0066] In other cases, the output samples of the scalar / inverse transform unit (451) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (453) may access a reference picture memory (457) to retrieve samples used for prediction. After motion-compensating the retrieved samples according to the symbols (421) associated with the block, these samples may be added by the aggregator (455) to the output of the scalar / inverse transform unit (451) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (457) available to the motion-compensated prediction unit (453) from which the motion-compensated prediction unit retrieves prediction samples may be controlled by a motion vector, e.g., in the form of a symbol (421) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​retrieved from the reference picture memory when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0067] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in a loop filter unit (456). The video compression techniques may include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), which may be responsive to meta-information obtained during decoding of previous portions of the coded picture or coded video sequence (in decoding order), as well as to previously reconstructed loop-filtered sample values.

[0068] The output of the loop filter unit (456) may be a sample stream that may be output to a rendering device (312) and stored in a reference picture memory (457) for use in future inter-picture prediction.

[0069] Once a particular coded picture is fully reconstructed, it may be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (420)), the current reference picture (656) may become part of the reference picture buffer (457), and a new current picture memory may be reallocated before beginning reconstruction of a subsequent coded picture.

[0070] The video decoder (310) may perform decoding operations according to a given video compression technology, which may be documented in a standard such as ITU-T Rec. H.265. A coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence conforms to the syntax of the video compression technology or standard as specified in the video compression technology document or standard, and in particular as specified in its profile document. Compliance also requires that the complexity of the coded video sequence be within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level may be further constrained through a hypothetical reference decoder (HRD) specification and metadata about HRD buffer management conveyed in the coded video sequence.

[0071] In one embodiment, the receiver (410) may receive additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (310) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0072] FIG. 5 may be a functional block diagram of a video encoder (303) according to one embodiment of the present invention.

[0073] The video encoder (303) may receive video samples from a video source (301) (not part of the encoder), which may capture video images to be encoded by the encoder (303).

[0074] The video source (301) may provide a source video sequence to be encoded by the encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media presentation system, the video source (301) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (303) may be a camera that captures local image information as a video sequence. Video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, and each pixel may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following discussion will focus on samples.

[0075] According to one embodiment, the encoder (303) may encode and compress pictures of a source video sequence into a coded video sequence (543) in real time or under any other time constraint required by the application. Achieving an appropriate coding rate is one function of the controller (550). The controller controls and is operatively coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller may include rate control-related parameters (e.g., picture skip, quantization, lambda value for rate-distortion optimization techniques), picture size, group-of-picture (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily recognize other functions of the controller (550) associated with a video encoder (303) optimized for a particular system design.

[0076] Some video encoders operate in what those skilled in the art would recognize as a "coding loop." As a highly simplified description, the encoding loop may include an encoder (530) (referred to herein as a "source coder") (e.g., responsible for generating symbols based on an input picture to be encoded and reference pictures) and a (local) decoder (533) embedded in the encoder (303). The decoder (533) reconstructs the symbols to generate sample data similar to what a (remote) decoder would generate (so that any compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). This reconstructed sample stream is input to a reference picture memory (534). Because decoding of the symbol stream yields bit-for-bit accurate results independent of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-for-bit accurate between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchronization (including the resulting drift when synchronization cannot be maintained, for example, due to channel errors) is well known to those skilled in the art.

[0077] The operation of the "local" decoder (533) may be the same as the "remote" decoder (310), as already described in detail above in connection with Figure 4. However, with brief reference to Figure 5, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the decoder (310), including the channel (412), receiver (410), buffer (415), and parser (420), may not be fully implemented in the local decoder (533).

[0078] An observation that can be made at this point is that any decoder technology, other than analysis / entropy decoding, that exists in the decoder must necessarily exist in substantially the same functional form in the corresponding encoder. A description of the encoder technology can be omitted, as it is the reverse of the decoder technology, which is described generically. Only in certain areas is a more detailed description necessary, and is provided below.

[0079] As part of its operation, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence designated as “reference frames.” In this manner, the coding engine (532) codes differences between pixel blocks of the input frame and pixel blocks of reference frames that can be selected as predictive references for the input frame.

[0080] The local video decoder (533) may decode the encoded video data of frames that may be designated as reference frames based on symbols generated by the source coder (530). The operation of the encoding engine (532) may advantageously be a lossy process. When the encoded video data can be decoded by a video decoder (not shown in FIG. 5), the reconstructed video sequence may typically be a replica of the source video sequence, with some errors. The local video decoder (533) may replicate the decoding process that may be performed by the video decoder on the reference frames and store the reconstructed reference frames in a reference picture cache (534). In this way, the encoder (303) may locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures (without transmission errors) obtained by a far-end video decoder.

[0081] The predictor (535) may perform a predictive search for the coding engine (532). That is, for a new frame to be coded, the predictor (535) may search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or specific metadata (reference picture motion vectors, block shapes, etc.), which may serve as suitable prediction references for the new picture. The predictor (535) may operate sample block-by-pixel block to find suitable prediction references. In some cases, the input picture determined by the search results obtained by the predictor (535) may have prediction references drawn from multiple reference pictures stored in the reference picture memory (534).

[0082] The controller (550) may manage the encoding operations of the video coder (530), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0083] The output of all the above functional units may undergo entropy coding in an entropy coder (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0084] The transmitter (540) may buffer the coded video sequence produced by the entropy coder (545) and prepare it for transmission over a communication channel (560), which may be a hardware or software link to a storage device that stores the coded video data. The transmitter (540) may merge the coded video data from the video coder (303) with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (not shown).

[0085] A controller (550) may manage the operation of the encoder (303). During encoding, the controller (550) may assign each coded picture a particular coding picture type. The coding picture type may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following frame types:

[0086] An intra picture (I-picture) may be one that can be coded and decoded without using other pictures in the sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh pictures. Those skilled in the art will recognize these variations of I-pictures and their respective uses and characteristics.

[0087] A predicted picture (P picture) may be coded and decoded using intra- or inter-prediction, using at most one motion vector and reference index to predict the sample values ​​of each block.

[0088] Bidirectionally predicted pictures (B-pictures) may be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multi-predicted pictures may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0089] In general, a source picture may be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the respective picture of the blocks. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial or temporal prediction with reference to a reference picture coded one step earlier. Blocks of a B-picture may be predictively coded via spatial or temporal prediction with reference to a reference picture coded one or two steps earlier.

[0090] The video coder (303) may perform encoding operations according to a predetermined video encoding technique or standard, such as ITU-T Rec. H.265. In doing so, the video encoder (303) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard being used.

[0091] In one embodiment, the transmitter (540) may transmit additional data along with the coded video. The video coder (530) may include such data as part of the coded video sequence. The additional data may include other types of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0092] Additionally, the proposed methods may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a non-transitory computer-readable medium to perform one or more of the proposed methods.

[0093] The techniques described above may be implemented as computer software using computer-readable instructions or may be physically stored on one or more computer-readable media. For example, Figure 6 illustrates a computer system 1200 suitable for implementing certain embodiments of the disclosed subject matter.

[0094] Computer software may be encoded using any suitable machine code or computer language, which may be subjected to assembly, compilation, linking, or similar mechanisms to generate code including instructions, which may be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., either directly or through an interpreter, microcode execution, etc.

[0095] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.

[0096] 6 for computer system 1200 are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components shown in the exemplary embodiment of computer system 1200.

[0097] Computer system 1200 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users, for example, through tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still camera), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic pictures).

[0098] The input human interface devices may include one or more of a keyboard 601 , a mouse 602 , a trackpad 603 , a touch screen 610 , a data glove 1204 , a joystick 605 , a microphone 606 , a scanner 607 , and a camera 608 .

[0099] The computer system 1200 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 610, data gloves 1204, or joystick 605, although there may also be haptic feedback devices that do not function as input devices), audio output devices (speakers 609, headphones (not shown), etc.), visual output devices (including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light emitting diode (OLED) screens 610, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), each of which may or may not have touchscreen input capability, each of which may or may not have haptic feedback capability, and some of which may be capable of outputting two-dimensional visual output or three-dimensional or higher-dimensional output through means such as stereoscopic output), and printers (not shown).

[0100] The computer system 1200 may also include human-accessible storage devices and associated media such as optical media including CD / DVD ROM / RW 620 with CD / DVD or similar media 621, thumb drives 622, removable hard drives or solid state drives 623, legacy magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD based devices such as security dongles (not shown), etc.

[0101] Additionally, those skilled in the art should understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other non-transitory signals.

[0102] Computer system 1200 may also include interfaces to one or more communications networks. Networks may be, for example, wireless, wired, or optical. Networks may be local, wide-area, metropolitan, vehicular, and industrial, real-time, delay-tolerant, and the like. Examples of networks include Ethernet, wireless LANs, cellular networks (including global systems for mobile communications (GSM), third-generation (3G), fourth-generation (4G), fifth-generation (5G), long-term evolution (LTE), and the like), TV wired or wireless wide-area digital networks (including cable TV, satellite TV, and terrestrial broadcast TV), vehicular, and industrial networks (including CAN Bus), and the like. Particular networks typically require external network interface adapters (e.g., Universal Serial Bus (USB) ports on computer system 1200) attached to particular general-purpose data ports or peripheral buses 649, while other network interface adapters are typically integrated into the core of computer system 1200 by being attached to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network to a smartphone computer system) as described below. Using any of these networks, computer system 1200 can communicate with other entities. Such communication may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or bidirectional to other computer systems using, for example, local or wide area digital networks. Specific protocols and protocol stacks may be used in each of these networks and network interfaces.

[0103] The above-mentioned human interface devices, human-accessible storage devices and network interfaces may be attached to core 640 of computer system 1200 .

[0104] The core 640 may include one or more central processing units (CPUs) 641, graphics processing units (GPUs) 642, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 643, hardware accelerators for particular tasks 644, etc. These devices may be connected through a system bus 1248, along with read-only memory (ROM) 645, random access memory (RAM) 646, and internal mass storage (such as an internal non-user-accessible hard drive, solid-state drive (SSD)) 647. In some computer systems, the system bus 1248 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 1248 or through a peripheral bus 649. Peripheral bus architectures include Peripheral Component Interconnect (PCI), USB, etc.

[0105] The CPU 641, GPU 642, FPGA 643, and accelerator 644 may execute specific instructions, which in combination may constitute the above-mentioned computer code. The computer code may be stored in ROM 645 or RAM 646. Also, temporary data may be stored in RAM 646, while persistent data may be stored in, for example, internal mass storage device 647. Fast storage and retrieval from any of the memory devices may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU 641, GPU 642, mass storage device 647, ROM 645, RAM 646, etc.

[0106] The computer-readable medium may include computer code for performing various computer-implemented operations, and the medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0107] By way of example and not limitation, architecture 1200, and specifically, a computer system having core 640, can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage devices such as those mentioned above, as well as specific storage of core 640 that is non-transitory in nature, such as core internal mass storage 647 or ROM 645. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by core 640. Computer-readable media may include one or more memory devices or chips according to particular needs. Software may cause core 640, and specifically, the processor therein (including a CPU, GPU, FPGA, etc.) to perform particular processes or portions of particular processes herein, including defining data structures stored in RAM 646 and modifying such data structures according to software-defined operations. Additionally, or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator 644), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure includes any appropriate combination of hardware and software.

[0108] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be recognized that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.

Claims

1. A method for transmitting a video bitstream encoded by an encoder, The steps include obtaining the video bitstream encoded using a Discrete Sine Transform (DST) Type VII transform core, The steps of transmitting the video bitstream and Includes, A set of tuples of transformation core elements associated with n-point DST-VII transformation cores is generated such that the first sum of the first subset of transformation core elements of the first tuple is equal to the second sum of the second subset of the remaining transformation core elements of the first tuple. The video bitstream conversion is performed using the set of tuples of the generated conversion core elements associated with the n-point DST-VII conversion cores. The set of tuples is represented as {a,l,A,n,y}, {b,k,B,o,x}, {c,j,C,p,w}, {d,i,D,q,v}, {e,h,E,r,u} and {f,g,F,s,t}, and the n-point DST-VII transformation core is a 32-point DST-VII transformation core including the transformation core elements included in the set of tuples, as well as elements m and z, and the transformation vector of the 32-point DST-VII transformation core is represented as {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}, in this method.

2. The method according to Claim 1, wherein a+l+A=n+y, b+k+B=o+x, c+j+C=p+w, d+i+D=q+v, e+h+E=r+u and f+g+F=s+t.

3. A device for transmitting an encoded video sequence, At least one memory configured to store program code, At least one processor configured to read the program code and operate according to the instructions in the program code, A device comprising, wherein the program code causes the at least one processor to execute the method according to claim 1 or 2.

4. A computer program that, when executed by one or more processors of a device, causes one or more processors to execute the method according to claim 1 or 2.

5. A video encoding method in an encoder, The steps include generating a bitstream and The steps include storing the generated bitstream and Includes, The bitstream is encoded using a Discrete Sine Transform (DST) Type VII transform core, The set of tuples of transformation core elements associated with n-point DST-VII transformation cores includes such that the first sum of the first subset of transformation core elements of the first tuple is equal to the second sum of the second subset of the remaining transformation core elements of the first tuple, A video encoding method in which the set of tuples is represented as {a,l,A,n,y}, {b,k,B,o,x}, {c,j,C,p,w}, {d,i,D,q,v}, {e,h,E,r,u} and {f,g,F,s,t}, the n-point DST-VII conversion core is a 32-point DST-VII conversion core including the conversion core elements included in the set of tuples, as well as elements m and z, and the conversion vector of the 32-point DST-VII conversion core is represented as {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}.