Method, device, computer program and computer-readable medium for processing configuration data
By adopting byte-byte processing and variable-length element technology in the signal processing system, the storage and transmission of configuration data are optimized, and the problems of large amount of information and high processing complexity in the signal reconstruction process in the prior art are solved, thereby achieving efficient signal processing and quality improvement.
Patent Information
- Application Number
- CN201980087201.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-31
- Filing Date
- 2019-10-30
- Publication Date
- 2025-05-13
- Estimated Expiration
- 2039-10-30
AI Technical Summary
The prior art is difficult to efficiently process configuration information during signal reconstruction, resulting in large amount of information and high processing complexity, which affects signal quality and efficiency.
By introducing byte-byte processing technology of configuration data in the signal processing system, variable-length elements and pre-positioning are used to optimize the storage and transmission of configuration data, reducing processing complexity and information volume.
It realizes the use of relatively small amount of information in the signal reconstruction process, which reduces the processing volume and complexity of the encoder and decoder, and improves the efficiency and quality of signal processing.
Smart Images

Figure CN113287312B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to methods, apparatus, computer programs and computer readable media. In particular, but not exclusively, the present invention relates to methods, apparatus, computer programs and computer readable media for processing configuration information relating to residual data that can be used to reconstruct a representation of an image at a relatively high quality level. Background Art
[0002] Compression and decompression of signals is a consideration in many known systems. Many types of signals, such as video, can be compressed and encoded for transmission, for example, over a data communications network. When decoding such a signal, it may be desirable to improve the quality level of the signal and / or to recover as much information as possible contained in the original signal.
[0003] Some known systems utilize scalable coding techniques. Scalable coding involves encoding a signal and information to allow reconstruction of the signal at one or more different quality levels, depending on the capabilities of the decoder and the available bandwidth, for example.
[0004] There are several considerations regarding signal reconstruction in scalable coding systems. One such consideration is the amount of information stored, used and / or transmitted. The amount of information may vary, for example, depending on the desired quality level of the reconstructed signal, the nature of the information used during reconstruction, and / or the manner in which such information is configured. Another consideration is the ability of an encoder and / or decoder to process information efficiently. The efficiency with which an encoder and / or decoder processes information may be a factor in the performance level of an encoder and / or decoder. Summary of the invention
[0005] Various aspects of the invention are set out in the accompanying claims.
[0006] Further features and advantages will become apparent from the following description of preferred embodiments, given by way of example only, with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Figure 1 A schematic block diagram showing an example of a signal processing system according to an embodiment of the present invention;
[0008] Figure 2A and Figure 2B A schematic block diagram showing another example of a signal processing system according to an embodiment of the present invention;
[0009] Figure 3 A schematic diagram showing an example of a data processing technique according to an embodiment of the present invention;
[0010] Figure 4is a flow chart depicting an example of a method according to an embodiment of the present invention;
[0011] Figure 5 a schematic diagram showing an example of a data processing technique according to an embodiment of the present invention; and
[0012] Figure 6 A schematic block diagram of an example of an apparatus according to an embodiment of the present invention is shown. DETAILED DESCRIPTION
[0013] refer to Figure 1 , shows an example of a signal processing system 100. The signal processing system 100 is used to process signals. Examples of signal types include, but are not limited to, video signals, image signals, audio signals, volumetric signals (such as those used in medical, scientific, or holographic imaging), or other multi-dimensional signals.
[0014] The signal processing system 100 includes a first device 102 and a second device 104. The first device 102 and the second device 104 may have a client-server relationship, wherein the first device 102 performs the function of a server device, and the second device 104 performs the function of a client device. The signal processing system 100 may include at least one additional device (not shown). The first device 102 and / or the second device 104 may include one or more components. One or more components may be implemented in hardware and / or software. One or more components may be located in the same location in the signal processing system 100 or may be remote from each other. Examples of device types include, but are not limited to, computerized devices, handheld or laptop computers, tablet computers, mobile devices, game consoles, smart TVs, set-top boxes, augmented and / or virtual reality headsets, etc.
[0015] The first device 102 is communicatively coupled to the second device 104 via a data communication network 106. Examples of the data communication network 106 include, but are not limited to, the Internet, a local area network (LAN), and a wide area network (WAN). The first device 102 and / or the second device 104 may have a wired and / or wireless connection to the data communication network 106.
[0016] The first device 102 includes an encoder 108. The encoder 108 is configured to encode data included in the signal, which is referred to as "signal data" hereinafter. For example, in the case where the signal is a video signal, the encoder 108 is configured to encode video data. The video data includes a sequence of multiple images or frames. The encoder 108 can perform one or more other functions in addition to encoding the signal data. The encoder 108 can be embodied in a variety of different ways. For example, the encoder 108 can be embodied as hardware and / or software.
[0017] Although in this example, the first device 102 includes the encoder 108, in other examples, the first device 102 is separate from the encoder 108. In such examples, the first device 102 is communicatively coupled to the encoder 108. The first device 102 can be embodied as one or more software functions and / or hardware modules.
[0018] The second device 104 includes a decoder 110. The decoder 110 is configured to decode signal data. The decoder 110 can perform one or more other functions in addition to decoding signal data. The decoder 110 can be embodied in various different ways. For example, the decoder 110 can be embodied as hardware and / or software.
[0019] Although in this example, the second device 104 includes the decoder 110, in other examples, the second device 104 is separate from the decoder 110. In such examples, the second device 104 is communicatively coupled to the decoder 110. The second device 104 may be embodied as one or more software functions and / or hardware modules.
[0020] The encoder 108 encodes the signal data and transmits the encoded signal data to the decoder 110 via the data communication network 106. The decoder 110 decodes the received encoded signal data and generates decoded signal data. The decoder 110 can output the decoded signal data or data derived using the decoded signal data. For example, the decoder 110 can output such data to be displayed on one or more display devices associated with the second device 104.
[0021] In some examples described herein, encoder 108 transmits a representation and information of a signal at a given quality level to decoder 110, which can use the information to reconstruct a representation of the signal at one or more higher quality levels. Such information can be referred to as "reconstructed data". In some examples, the "reconstruction" of a representation involves obtaining a representation that is not an exact copy of the original representation. The extent to which the representation is the same as the original representation may depend on various factors, including but not limited to the quantization level. The representation of a signal at a given quality level can be considered to be a reproduction, version or depiction of the data included in the signal at a given quality level. In some examples, the reconstruction data is included in the signal data encoded by encoder 108 and transmitted to decoder 110. For example, the reconstruction data can be in the form of metadata. In some examples, the reconstruction data is encoded and transmitted separately from the signal data.
[0022] The information used by the decoder 110 to reconstruct the representation of the signal at one or more higher quality levels may include residual data, as described in more detail below. Residual data is an example of reconstruction data. The information used by the decoder 110 to reconstruct the representation of the signal at one or more higher quality levels may also include configuration data related to the processing of the residual data. The configuration data may indicate the manner in which the residual data has been processed by the encoder 108 and / or the manner in which the residual data is to be processed by the decoder 110. The configuration data may be signaled to the decoder 110, for example, in the form of metadata.
[0023] refer to Figure 2A and Figure 2B , schematically illustrates an example of a signal processing system 200. The signal processing system 200 includes a first device 202 having an encoder and a second device 204 having a decoder. In each of the first device 202 and the second device 204, items are shown at two logical levels. The two levels are separated by a dotted line. The items on the highest first level are associated with data at a relatively high quality level. The items on the lowest second level are associated with data at a relatively low quality level. The relatively high and relatively low quality levels are associated with a hierarchical structure having multiple quality levels. In some examples, the hierarchical structure includes more than two quality levels. In such an example, the first device 202 and the second device 204 may include more than two different levels. There may be Figure 2A and Figure 2B One or more other levels above and / or below the levels depicted.
[0024] First reference Figure 2A , the first device 202 obtains a first representation 206 of an image at a relatively high quality level. The representation of a given image is a representation of the data included in the image. The image may be a given frame of a video. The first representation 206 of the image at a relatively high quality level will be referred to as "input data" hereinafter because, in this example, it is the data provided as input to an encoder in the first device 202. The first device 202 may receive the input data 206. For example, the first device 202 may receive the input data 206 from at least one other device. The first device 202 may be configured to receive consecutive portions of the input data 206, such as consecutive frames of a video, and to perform the operations described herein on each consecutive frame. For example, a video may include frames F1, F2, . . . , F T , and the first device 202 can process each of these frames in sequence.
[0025] The first device 202 derives data 212 based on the input data 206. In this example, the data 212 based on the input data 206 is a representation 212 of an image at a relatively low quality level. In this example, the data 212 is derived by performing a downsampling operation on the input data 206, and thus will be referred to as "downsampled data" hereinafter. In other examples, the data 212 is derived by performing an operation other than a downsampling operation on the input data 206.
[0026] In this example, the downsampled data 212 is processed at a relatively low quality level to generate processed data 213. In other examples, the downsampled data 212 is not processed at a relatively low quality level. In this way, the first device 202 can generate data at a relatively low quality level, wherein the data at the relatively low quality level includes the downsampled data 212 or the processed data 213.
[0027] In some examples, generating the processed data 213 involves encoding the downsampled data 212. Encoding the downsampled data 212 may produce an encoded image at a relatively low quality level. The first device 202 may output the encoded image, for example for transmission to the second device 204. For example, a series of encoded images that form an encoded video, as an output for transmission to the second device 204, may be referred to as a "basic" stream. The encoded image is not generated in the first device 202, but may be generated by an encoding device separate from the first device 202. The encoded image may be part of an H.264 encoded video. Generating the processed data 213 may, for example, include generating continuous frames of a video as an output of a separate encoding device such as an H.264 video encoder. In contrast to any intermediate data generated by a separate encoding device, an intermediate data set used to generate the processed data 213 may include the output of such an encoder.
[0028] Generating processed data 213 at a relatively low quality level may further involve decoding the encoded image at a relatively low quality level. As will become apparent below, a decoding operation may be performed to mimic a decoding operation at the second device 204. Decoding the encoded image may produce a decoded image at a relatively low quality level. In some examples, the first device 202 decodes the encoded image at a relatively low quality level to produce a decoded image at a relatively low quality level. In other examples, the first device 202 receives a decoded image at a relatively low quality level, for example, from an encoding and / or decoding device separated from the first device 202. The encoded image may be decoded using an H.264 decoder. Decoding by a separate decoding device may include: inputting an encoded video, such as an encoded data stream configured to be transmitted to a remote decoding device, into a separate black box decoder implemented with the first device 202 to generate continuous decoded frames of video. Thus, the processed data 213 may include frames of video data generated by a complex non-linear encoding and decoding process, wherein the encoding and decoding process may involve modeling spatiotemporal correlations according to a particular coding standard such as H.264. However, because the output of any encoder is fed to a corresponding decoder, this complexity is effectively hidden from the first device 202.
[0029] In an example, generating the processed data 213 at a relatively low quality level also involves obtaining correction data based on a comparison between the downsampled data 212 and the decoded image obtained by the first device 202, for example, based on the difference between the downsampled data 212 and the decoded image. The correction data can be used to correct errors introduced when encoding and decoding the downsampled data 212. In some examples, the first device 202 outputs the correction data and the encoded signal, and the correction data is used, for example, for transmission to the second device 204. This allows the recipient to correct errors introduced when encoding and decoding the downsampled data 212. The correction data may also be referred to as a "first enhancement" stream. Since the correction data may be based on the difference between the downsampled data 212 and the decoded image, it may be considered to be in the form of residual data (e.g., different from another set of residual data described later below).
[0030] In some examples, generating processed data 213 at a relatively low quality level also involves correcting the decoded image using correction data. For example, the correction data as output for transmission can be placed in a form suitable for combination with the decoded image and then added to the decoded image. This can be performed on a frame-by-frame basis. In other examples, the first device 202 uses downsampled data 212 instead of correcting the decoded image using correction data. For example, in some cases, only encoded and then decoded data can be used, while in other cases, other processing can be used instead of encoding and decoding.
[0031] In some examples, generating processed data 213 involves performing one or more operations in addition to the encoding, decoding, obtaining, and correcting actions described above.
[0032] The first device 202 obtains data 214 based on the data at the relatively low quality level. As described above, the data at the relatively low quality level may include processed data 213 or downsampled data 212, where the downsampled data 212 is not processed at a lower level. As described above, in some cases, the processed data 213 may include a reconstructed video stream corrected using correction data (e.g., from an encoding-decoding operation). Figure 2A and Figure 2B In the example of , data 214 is a second representation of an image at a relatively high quality level, and the first representation of the image at the relatively high quality level is input data 206. The second representation at the relatively high quality level can be considered to be an initial or predicted representation of the image at the relatively high quality level. In this example, the first device 202 derives data 214 by performing an upsampling operation on data at a relatively low quality level. Data 214 will be referred to as "upsampled data" hereinafter. However, in other examples, for example, in the case where data 212 is not derived by downsampling the input data 206, one or more other operations may be used to derive data 214. It should be noted that references to relatively high and relatively low quality levels may correspond to references to first and second quality levels, wherein the second quality level is higher than the first quality level. As described herein, in some cases, quality levels may correspond to different spatial resolutions.
[0033] Residual data 216 is obtained using input data 206 and upsampled data 214. Residual data 216 is associated with an image. Residual data 216 may be in the form of a set of residual elements. Residual elements in a set of residual elements 216 may be associated with corresponding image elements in input data 206. An example of an image element is a pixel.
[0034] In this example, a given residual element is obtained by subtracting the value of an image element in upsampled data 214 from the value of a corresponding image element in input data 206. As such, residual data 216 may be used in conjunction with upsampled data 214 to reconstruct input data 206. Residual data 216 may also be referred to as "reconstructed data" or "enhancement data." In one case, residual data 216 may form part of a "second enhancement" stream.
[0035] The first device 202 obtains configuration data related to the processing of the residual data 216. The configuration data indicates the manner in which the residual data 216 has been processed and / or generated by the first device 202 and / or the manner in which the residual data 216 is to be processed by the second device 204. The configuration data may include a set of configuration parameters. The configuration data may be used to control the manner in which the second device 204 processes data and / or reconstructs the input data 206 using the residual data 216. The configuration data may be related to one or more characteristics of the residual data 216. Different configuration data may result in different processing being performed on the residual data 216 and / or using the residual data 216. Therefore, the configuration data may be used to reconstruct the input data 206 using the residual data 216.
[0036] In this example, the first device 202 transmits data based on the downsampled data 212 , data based on the residual data 216 , and configuration data to the second device 204 to enable the second device 204 to reconstruct the input data 206 .
[0037] Now go to Figure 2B , the second device 204 receives data 220 based on the downsampled data 212 (e.g., derived from the downsampled data 212). The second device 204 also receives data based on the residual data 216. For example, the second device 204 may receive a "base" stream (data 220), a "first enhancement stream" (any correction data), and a "second enhancement stream" (residual data 216). The second device 204 also receives configuration data related to the processing of the residual data 216. The data 220 based on the downsampled data 212 may be the downsampled data 212 itself, the processed data 213, or data derived from the downsampled data 212 or the processed data 213. The data based on the residual data 216 may be the residual data 216 itself or data derived from the residual data 216.
[0038] In some examples, the received data 220 includes processed data 213, which may include coded images and / or correction data at a relatively low quality level. In some examples, the second device 204 processes the received data 220 to generate processed data 222, for example, when the first device 202 has processed the downsampled data 212 to generate the processed data 213. Such processing by the second device 204 may include decoding the coded images (e.g., coded images that form part of a "basic" coded video stream) to produce decoded images at a relatively low quality level. In some examples, the processing by the second device 204 includes correcting the decoded images using the obtained correction data. Therefore, the processed data 222 may include a first or relatively low quality level of correction data frame. In some examples, the coded images at the relatively low quality level are decoded by a decoding device separate from the second device 204. The coded images at the relatively low quality level can be decoded using an H.264 decoder.
[0039] In other examples, the received data 220 includes the downsampled data 212 and does not include the processed data 213. In some such examples, the second device 204 does not process the received data 220 to generate the processed data 222.
[0040] The second device 204 uses the data at the relatively low quality level to derive the upsampled data 214. As described above, the data at the relatively low quality level may include processed data 222 or received data 220, wherein the second device 204 does not process the received data 220 at the relatively low quality level. The upsampled data 214 is a preliminary representation of the image at a relatively high quality level. The upsampled data 214 may be derived by performing an upsampling operation on the data at the relatively low quality level.
[0041] The second device 204 obtains residual data 216. The residual data 216 may be used together with the upsampled data 214 to reconstruct the input data 206. The residual data 216 indicates a comparison between the input data 206 and the upsampled data 214.
[0042] The second device 204 also obtains configuration data related to processing of the residual data 216. The configuration data may be used by the second device 204 to reconstruct the input data 206. For example, the configuration data may indicate characteristics or attributes related to the residual data 216 that affect the manner in which the residual data 216 is to be used and / or processed, or whether the residual data 216 is to be used at all. In some examples, the configuration data includes the residual data 216.
[0043] There are several considerations regarding the use of such configuration data. One such consideration is the amount of information generated, stored, transmitted and / or processed. The more information that is used, the greater the amount of resources that may be involved in processing such information. Examples of such resources include transmission resources, storage resources, and processing resources. Compared to some known techniques, the examples described herein allow for the use of relatively small amounts of information. This can reduce the amount of data transmitted via the data communications network 106. The savings may be particularly significant in situations where the data is related to high-quality video data, where the amount of information transmitted in known systems may be particularly high.
[0044] Another consideration related to the use of such configuration data is the amount of processing and / or relative processing complexity involved at the encoder and / or decoder to process the configuration data. Compared to some known techniques, the examples described herein reduce the amount of processing and / or processing complexity performed by the encoder and / or decoder to obtain and / or process the configuration data. Simplifying the processing performed by the encoder and / or decoder will improve the efficiency of the encoder and / or decoder.
[0045] refer to Figure 3 , schematically illustrates an example of a data processing technique 300. The data processing technique 300 may be performed by a device including an encoder, such as the first device 102 described above. As described in more detail below, the data processing technique 300 involves performing byte-by-byte processing of configuration data.
[0046] Configuration data 310 is obtained. Configuration data 310 is related to the processing of residual data (eg, residual data 216 as described above).
[0047] Configuration data 310 includes a value for configuration parameter 320. In this example, configuration data 310 also includes values for other configuration parameters. The value for configuration parameter 320 has a variable bit length. Thus, the number of bits available to represent the value of configuration parameter 320 varies based on the value of configuration parameter 320.
[0048] In some examples, the value of configuration parameter 320 specifies a version number. The version may be a version of a grammar according to which configuration data 310 is arranged. A grammar may be considered a framework that defines the manner in which configuration data 310 is to be processed and / or defines configuration parameters to be included in configuration data 310. Encoder 108 and / or decoder 110 may be configured to operate according to the version of the grammar indicated by configuration parameter 320.
[0049] In some examples, configuration parameters 320 relate to the size of the payload portion of the configuration message. The configuration message may be generated by encoder 108 to include configuration data 310 and / or transmit configuration data 310 to decoder 110. The configuration message may include a header and a payload portion. The header may include configuration parameters specifying the size of the payload portion. The size of the payload portion has a variable bit length.
[0050] In some examples, the residual data 216 is encoded using one or both of a run-length encoding operation and a Huffman encoding operation. Encoding the residual data 216 results in encoded residual data. The encoded residual data may be output for processing by the decoder 110. In some examples, the configuration parameter 320 is related to the size of the encoded residual data. For example, the configuration parameter 320 may be related to the size of the run-length encoded data and / or the size of the Huffman encoded data.
[0051] Configuration data 310 is arranged into a byte sequence 330. Byte sequence 330 includes an integer number of bytes. In this example, configuration data 310 is arranged into a byte sequence including 5 bytes, but it will be understood that other byte numbers can be used in other examples. In this example, a given byte in byte sequence 330 includes 8 bits. Byte sequence 330 can be part of a larger byte sequence or byte-by-byte stream. Arranging configuration data 310 into byte sequence 330 enables byte-by-byte processing to be performed on configuration data 310. In byte-by-byte processing, data is processed on a byte-by-byte basis.
[0052] Processing configuration data 310 in a byte-by-byte manner may be more efficient than processing configuration data 310 in a bit-by-bit manner. Bit-by-bit processing may involve keeping track of which bit in a given byte is the next bit to be read or written. When a group of bits representing a given parameter crosses a byte boundary, additional processing may be performed to read the group of bits and obtain the given parameter. In the case of performing byte-by-byte processing, such processing may be reduced. In some examples, the number of execution cycles may be reduced when processing data in a byte-by-byte manner compared to a bit-by-bit manner.
[0053] In some examples, byte sequence 330 is written to memory. Byte sequence 330 may be written to memory for processing by a transport layer of a protocol stack. If configuration data 310 is processed in a byte-by-byte manner, less processing may be involved when storing configuration data 310 in memory and / or retrieving configuration data 310 from memory than when configuration data 310 is processed in a bit-by-bit manner. The smallest unit of addressable memory may contain one byte. In this way, information may be stored in memory in a byte-by-byte manner. Therefore, if configuration data 310 is packaged into a byte sequence, fewer steps may be involved when storing configuration data 310 in memory and / or retrieving configuration data 310 from memory. By providing configuration data 310 to memory in a byte-by-byte form, the amount of padding used to package configuration data 310 into addressable memory units may also be reduced.
[0054] In addition, if the configuration data 310 is arranged as a sequence of bytes, the transmission of the configuration data 310 via a network such as the Internet can be performed more efficiently. The data can be transmitted over the Internet via the Transmission Control Protocol (TCP). TCP operates in the transport layer of the protocol stack. TCP obtains data from the stream, packages the data into TCP segments, and transmits each TCP segment to a recipient via the Internet using an Internet module (e.g., Internet Protocol (IP)). The data stream can be obtained from a memory. The TCP segment can include an integer number of bytes. In this way, if TCP obtains the data to be packaged into the TCP segment from a byte-by-byte stream rather than from a bit-by-bit stream, less processing may be involved. By providing the data to TCP in a byte-by-byte form, the amount of padding used to package the data into the TCP segment can also be reduced.
[0055] In this example, arranging the configuration data 310 into a byte sequence 330 is performed at the application layer of the protocol stack. In this way, the application layer may process the configuration data 310 in a byte-by-byte manner rather than a bit-by-bit manner.
[0056] In this example, the byte sequence 330 includes a variable length element 340. The variable length element 340 includes an integer number of bytes in the byte sequence 330. In this example, the variable length element 340 includes two bytes. In other examples, the variable length element may include other numbers of bytes. The variable length element may be referred to as a "multi-byte" element, but in some examples, the variable length element includes a single byte. One or more bytes of the variable length element 340 may be continuous in the byte sequence 330. In some examples, one or more bytes of the variable length element 340 are discontinuous in the byte sequence 330.
[0057] The variable length element 340 is arranged to store the value of the configuration parameter 320 having a variable bit length.
[0058] At least one given byte of variable length element 340 has one or more predetermined positions, and the one or more predetermined positions are arranged to indicate whether variable length element 340 includes one or more additional bytes of at least one given byte. In this example, one or more predetermined positions include a single predetermined position. In other examples, one or more predetermined positions include more than one predetermined position. In some examples, each byte of variable length element 340 includes one or more predetermined positions. In other examples, at least one byte of variable length element 340 does not include one or more predetermined positions.
[0059] In the case where the one or more predetermined bits include a single predetermined bit, the single predetermined bit may be considered as a flag indicating whether one or more additional bytes are present in the variable length element 340. For example, if the variable length element 340 includes at least one additional byte of a given byte, the value of the predetermined bit may be set to 1. On the other hand, if the variable length element 340 does not include at least one additional byte of a given byte, the value of the predetermined bit may be set to 0. In other words, the predetermined bit indicates whether the variable length element 340 extends beyond at least one given byte.
[0060] Like this, variable length element 340 can be used to represent the value of configuration parameter 320, without considering the bit length of the value of configuration parameter 320.Variable length element 340 includes the minimum number of bytes that can be used to store the value of configuration parameter 320.Therefore, compared with the situation of using fixed length element, the information amount of storage, processing and / or transmission can be reduced by using variable length element 340, and the size of described fixed length element corresponds to the maximum possible bit length of the value of configuration parameter 320.Variable length element 340 makes the number of possible values that can be used to represent configuration parameter 320 increase as needed and in a flexible manner.Like this, variable length element 340 can be used to provide future development and / or modification to configuration data 310, for example, by allowing the bit length of the value of configuration parameter 320 to be increased, and relatively complex modification does not need to be carried out to data processing technology 300.
[0061] exist Figure 3In the example shown, variable length element 340 includes two bytes. In this example, the first byte of variable length element 340 includes a predetermined position indicating that the second byte is included in variable length element 340. The second byte of variable length element 340 includes a predetermined position indicating that the additional bytes of the first byte and the second byte are not included in variable length element 340. When byte sequence 330 is processed by decoder 110, the first byte of variable length element 340 can be read before the second byte of variable length element 340. Based on the indication provided by the predetermined position in the first byte of variable length element 340, decoder 110 determines that the second byte is also a part of variable length element 340. Then read the second byte. Based on the indication provided by the predetermined position in the second byte, decoder 110 determines that the next byte is not a part of variable length element 340, and therefore the reading of variable length element 340 is completed.
[0062] One or more predetermined positions may be arranged at the end of at least one given byte. For example, one or more predetermined positions may include one or more last positions of at least one given byte. In some examples, one or more predetermined positions include one or more first positions of at least one given byte. In some examples, each of at least one given byte includes seven positions arranged to store the value of configuration parameter 320 and one position arranged to indicate whether variable length element 340 includes one or more additional bytes of at least one given byte.
[0063] In response to determining that the value of configuration parameter 320 has a predetermined relationship with the predetermined threshold, the value of configuration parameter 320 can be stored in variable length element 340. In some examples, the predetermined relationship includes that the value of configuration parameter 320 is greater than or equal to the predetermined threshold. In some examples, if it is determined that the value of configuration parameter 320 does not have a predetermined relationship with the predetermined threshold, the value of configuration parameter 320 is stored in a fixed length element instead of variable length element 340. The fixed length element includes a predetermined integer number of bytes. In this way, variable length element 340 can be selectively included.
[0064] The predetermined threshold value may be related to the bit length of the fixed length element. For example, if the fixed length element includes a single bit, a value between 0 and 255 may be represented by the fixed length element. The predetermined threshold value in this case may be, for example, 255. Thus, if the value of a configuration parameter having a variable bit length is greater than 255, a variable length element 340 may be used to replace or supplement a fixed length element to store the value of the configuration parameter 320. In other words, a fixed length element and a variable length element may be used to store the value of the configuration parameter 320.
[0065] The byte sequence 330 including the variable length elements 340 is output for processing by the decoder 110 to enable the decoder 110 to reconstruct the input data 206 using the configuration data 310 .
[0066] refer to Figure 4 , an example of a method 400 for processing configuration data is shown. The method 400 may be performed by a device including an encoder (such as the first device 102 described above).
[0067] In some examples, residual data 216 is obtained. Residual data 216 may be used by decoder 110 to reconstruct input data 206 using upsampled data 214.
[0068] At item 410, configuration data is obtained. The configuration data is related to the processing of the residual data 216. The configuration data can be used by the decoder 110 to reconstruct the input data 206 using the upsampled data 214.
[0069] A value of a configuration parameter included in the obtained configuration data is determined. The value of the configuration parameter may have a variable bit length.
[0070] At item 430 , it is determined whether the value of the configuration parameter has a first predetermined relationship or a second predetermined relationship with a predetermined threshold.
[0071] In this example, the first predetermined relationship includes that the value of the configuration parameter is less than a predetermined threshold. In this example, the second predetermined relationship includes that the value of the configuration parameter is greater than or equal to the predetermined threshold.
[0072] In response to determining that the value of the configuration parameter has a first predetermined relationship with the predetermined threshold, at item 440, the value of the configuration parameter is stored in a first fixed length element. The first fixed length element is then output for processing by decoder 110. The first fixed length element may include an integer number of bytes. In some examples, the first fixed length element has a length of one byte. The length of the first fixed length element does not depend on the value of the configuration parameter.
[0073] In some examples, a reference to a lookup table storing possible values for the configuration parameter is stored in the first fixed length element.For example, the first fixed length element may include a value that can be used to obtain a value for the configuration parameter from the lookup table.
[0074] In response to determining that the value of the configuration parameter has a second predetermined relationship with the predetermined threshold, at item 450, the value of the configuration parameter is stored in at least one second fixed length element. The at least one second fixed length element includes an integer number of bytes. Each of the at least one second fixed length element can have a length of one byte. The at least one second fixed length element can be considered as a variable length element because the at least one second fixed length element is formed by a variable number of fixed length elements. The total length of the at least one second fixed length element depends on the value of the configuration parameter. The at least one second fixed length element includes a minimum number of bytes that can be used to store the value of the configuration parameter.
[0075] At item 460, data arranged to indicate that the value of the configuration parameter is stored in at least one second fixed length element is stored in the first fixed length element. In some examples, the data includes at least one predetermined bit of the first fixed length element. The data stored in the first fixed length element enables the decoder 110 to determine that the value of the configuration parameter is stored in at least one second fixed length element.
[0076] In this way, the value of the configuration parameter is selectively stored in the at least one second fixed length element. The at least one second fixed length element may be used only when the first fixed length element is insufficient to store the value of the configuration parameter. Compared with the case where the at least one second fixed length element is used without considering the value of the configuration parameter, the selective use of the at least one second fixed length element can reduce the amount of information used, stored and / or transmitted.
[0077] The first fixed length element and the at least one second fixed length element are output for processing by the decoder 110. The first fixed length element and the at least one second fixed length element when the value of the configuration parameter has a second predetermined relationship with the predetermined threshold value can be arranged into a byte sequence. The byte sequence can be output for processing by the decoder 110.
[0078] The decoder 110 receives a first fixed-length element and determines whether to store the value of the configuration parameter in the first fixed-length element or in at least one second fixed-length element based on the content of the first fixed-length element. In some examples, in response to a predetermined position of the first fixed-length element having a first value, the decoder 110 can determine that the value of the configuration parameter is stored in the first fixed-length element. In response to the predetermined position having a second value, the decoder 110 can determine that the value of the configuration parameter is stored in at least one second fixed-length element. In some examples, in response to the value of the configuration parameter having a first predetermined relationship with a predetermined threshold, the decoder 110 can determine that the value of the configuration parameter is stored in the first fixed-length element. In response to the value of the configuration parameter having a second predetermined relationship with a predetermined threshold, the decoder 110 can determine that the value of the configuration parameter is stored in at least one second fixed-length element. After determining whether the value of the configuration parameter is located in the first fixed-length element or in at least one second fixed-length element, the decoder 110 can then obtain the value of the configuration element.
[0079] refer to Figure 5 , schematically illustrating an example of a data processing technique 500. The data processing technique 500 may be performed by a device including an encoder, such as the first device 102 described above. Figure 5 Some of the items shown are Figure 3 The items shown are similar. Therefore, similar items have been given corresponding reference numerals (increased by 200).
[0080] Configuration data 510 is obtained. Configuration data 510 is related to the processing of residual data 216.
[0081] Configuration data 510 includes values for a plurality of configuration parameters 521, 522, 523, 524. Although four configuration parameters are depicted in this example, in other examples, other numbers of configuration parameters are included in configuration data 510. In this example, the values of configuration parameters 521, 522, 523, 524 are represented by different bit lengths. In other examples, some of the values of configuration parameters 521, 522, 523, 524 are represented by the same bit length. In this particular example, configuration parameter 521 has a value represented by a bit length of 3 bits, configuration parameter 522 has a value represented by a bit length of 6 bits, configuration parameter 523 has a value represented by a bit length of 5 bits, and configuration parameter 524 has a value represented by a bit length of 2 bits.
[0082] Configuration data 510 is packed into a byte sequence 530. Configuration data 510 is packed by arranging the values of configuration parameters 521, 522, 523, 524 in a predetermined order. The predetermined order may be an order different from the order in which configuration parameters 521, 522, 523, 524 are obtained. Therefore, configuration parameters 521, 522, 523, 524 may be rearranged.
[0083] The values of configuration parameters 521, 522, 523, 524 are arranged so that a given byte in byte sequence 530 is filled with values represented by different bit lengths. In this particular example, configuration parameter 522 and configuration parameter 524 are packed into first byte 532 in byte sequence 530. The combined bit length of the values of configuration parameter 522 and configuration parameter 524 is eight bits. Therefore, first byte 532 is completely filled with the combination of configuration parameter 522 and configuration parameter 524. Similarly, configuration parameter 521 and configuration parameter 523 are packed into second byte 534 in byte sequence 530. The combined bit length of the values of configuration parameter 521 and configuration parameter 523 is eight bits. Therefore, second byte 534 is completely filled with the combination of configuration parameter 521 and configuration parameter 523.
[0084] By padding a given byte in byte sequence 530 with values represented by different bit lengths arranged in a predetermined order, the amount of padding used in byte sequence 530 is reduced. In this way, data is more efficiently packed into byte sequence 530 than if the values represented by different bit lengths were not arranged in a predetermined order. Packing data more efficiently into byte sequence 530 can reduce the number of bytes used to store configuration data 510.
[0085] In the case of a comparison where the values represented by different bit lengths are not rearranged into a predetermined order, the first byte in the byte sequence 530 stores the value of configuration parameter 521 and 5 padding bits, because the combined bit length of the values of configuration parameter 521 and configuration parameter 522 is greater than 8 bits. The second byte in the byte sequence 530 stores the value of configuration parameter 522 and 2 padding bits, because the combined bit length of the values of configuration parameter 522 and configuration parameter 533 is greater than 8 bits. The third byte in the byte sequence 530 can then store the values of configuration parameter 523 and configuration parameter 524 and 1 padding bit. Therefore, in this comparison case, three bytes are used to store the values of the four configuration parameters 521, 522, 523, 524, compared to only two bytes when the values are rearranged into a predetermined order. Packing the configuration data 510 into the byte sequence 530 according to the predetermined order thus reduces the amount of information to be transmitted to the decoder 110.
[0086] refer to Figure 6 , a schematic block diagram of an example of a device 600 is shown.
[0087] In an example, the device 600 includes an encoder. In another example, the device 600 includes a decoder.
[0088] Examples of apparatus 600 include, but are not limited to, a mobile computer, a personal computer system, a wireless device, a base station, a telephone device, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a mainframe computer system, a handheld computer, a workstation, a network computer, an application server, a storage device, a consumer electronic device such as a camera, a camcorder, a mobile device, a video game console, a handheld video game device, or generally any type of computing or electronic device.
[0089] In this example, device 600 includes one or more processors 601 configured to process information and / or instructions. One or more processors 601 may include a central processing unit (CPU). One or more processors 601 are coupled to bus 602. The operations performed by one or more processors 601 may be performed by hardware and / or software. One or more processors 601 may include multiple processors located at the same location or multiple processors located at different locations.
[0090] In this example, device 600 includes computer usable volatile memory 603 configured to store information and / or instructions for one or more processors 601. Computer usable volatile memory 603 is coupled to bus 602. Computer usable volatile memory 603 may include random access memory (RAM).
[0091] In this example, device 600 includes computer usable non-volatile memory 604 configured to store information and / or instructions for one or more processors 601. Computer usable non-volatile memory 604 is coupled to bus 602. Computer usable non-volatile memory 604 may include read only memory (ROM).
[0092] In this example, device 600 includes one or more data storage units 605 configured to store information and / or instructions. One or more data storage units 605 are coupled to bus 602. One or more data storage units 605 may include, for example, magnetic or optical disks and disk drives or solid state drives (SSDs).
[0093] In this example, the device 600 includes one or more input / output (I / O) devices 606 configured to transmit information to and / or from one or more processors 601. The one or more I / O devices 606 are coupled to the bus 602. The one or more I / O devices 606 may include at least one network interface. The at least one network interface may enable the device 600 to communicate via one or more data communication networks. Examples of data communication networks include, but are not limited to, the Internet and a local area network (LAN). The one or more I / O devices 606 may enable a user to provide input to the device 600 via one or more input devices (not shown). The one or more input devices may include, for example, a remote control, one or more physical buttons, etc. The one or more I / O devices 606 may enable information to be provided to a user via one or more output devices (not shown). The one or more output devices may, for example, include a display screen.
[0094] Various other entities of the device 600 are depicted. For example, when present, an operating system 607, a data signal processing module 608, one or more additional modules 609, and data 610 are shown as residing in one or a combination of computer usable volatile memory 603, computer usable non-volatile memory 604, and one or more data storage units 605. The data signal processing module 608 may be implemented by computer program code stored in a memory location within the computer usable non-volatile memory 604, a computer readable storage medium within the one or more data storage units 605, and / or other tangible computer readable storage media. Examples of tangible computer readable storage media include, but are not limited to, optical media (e.g., CD-ROM, DVD-ROM, or Blu-ray), flash memory cards, floppy disks, or hard disks, or any other medium capable of storing computer readable instructions, such as firmware or microcode in at least one ROM or RAM or programmable ROM (PROM) chip, or as an application specific integrated circuit (ASIC).
[0095] The device 600 may thus include a data signal processing module 608, which may be executed by one or more processors 601. The data signal processing module 608 may be configured to include instructions to implement at least some of the operations described herein. During operation, the one or more processors 601 initiate, run, execute, interpret or otherwise perform the instructions in the signal processing module 608.
[0096] Although at least some aspects of the examples described herein with reference to the drawings include computer processes executed in a processing system or processor, the examples described herein also extend to computer programs, such as computer programs on or in a carrier suitable for putting the examples into practice. The carrier may be any entity or device capable of carrying the program.
[0097] It should be understood that the device 600 may include Figure 6 More, fewer and / or different components than those depicted.
[0098] Device 600 may be located at a single location or may be distributed across multiple locations. Such locations may be local or remote.
[0099] The techniques described herein may be implemented in software or hardware, or may be implemented using a combination of software and hardware. The techniques may include configuring a device to perform and / or support any or all of the techniques described herein.
[0100] It should be understood that any feature described with respect to any embodiment can be used alone, or in combination with other features described, and can also be used in combination with one or more features of any other embodiment, or in combination with any combination of any other embodiment. In addition, equivalents and modifications not described above can also be adopted without departing from the scope of the invention as defined in the appended claims.
Claims
1. A method for performing byte-by-byte processing of configuration data, the method comprising: obtaining configuration data usable by a decoder to reconstruct a first representation of an image at a first quality level using a second representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the second representation being obtained based on a representation of the image at a second quality level in the hierarchical structure, the second quality level being lower than the first quality level, the configuration data comprising a value of a configuration parameter, the value having a variable bit length; arranging the configuration data into a sequence of bytes, wherein the sequence of bytes comprises variable length elements arranged to store the value of the configuration parameter having the variable bit length, the variable length elements comprising at least one given byte, the at least one given byte having one or more predetermined bits, the one or more predetermined bits arranged to indicate whether the variable length element comprises one or more additional bytes, wherein the one or more additional bytes are bytes other than the at least one given byte; and The byte sequence is output for processing by the decoder to enable the decoder to reconstruct the first representation using the configuration data. The method according to claim 1 , wherein the one or more predetermined locations are a single predetermined location.
3. A method according to claim 1 or claim 2, wherein the one or more predetermined bits comprise one or more leading bits of the at least one given byte.
4. A method according to claim 1 or claim 2, wherein each of the at least one given byte comprises seven bits arranged to store the value of the configuration parameter having the variable bit length and one bit arranged to indicate whether the variable length element includes the one or more additional bytes.
5. A method according to claim 1 or claim 2, the method comprising, in response to the device determining that the value of the configuration parameter with the variable bit length has a predetermined relationship with a predetermined threshold, storing the value of the configuration parameter with the variable bit length in the variable length element, wherein the predetermined relationship includes that the value of the configuration parameter is greater than or equal to the predetermined threshold.
6. A method according to claim 1 or claim 2, wherein the configuration data relates to the processing of residual data derived based on the first representation and the second representation, the residual data being usable by the decoder to reconstruct the first representation using the second representation.
7. A method according to claim 6, comprising encoding the residual data using a run-length encoding operation and / or a Huffman encoding operation, wherein the configuration parameter having the value stored in the variable length element is related to the size of the encoded residual data.
8. A method according to claim 1 or claim 2, wherein the configuration parameter having the value stored in the variable length element relates to a version of a syntax according to which the configuration data is arranged.
9. The method of claim 1 or claim 2, wherein the configuration parameter having the value stored in the variable length element is related to the size of a payload portion of a configuration message, the configuration message containing the configuration data.
10. The method according to claim 1 or claim 2, comprising: deriving the representation at the second quality level; and The representation at the second quality level is output for processing by the decoder.
11. A method according to claim 1 or claim 2, wherein the representation of the image at the second quality level in the hierarchical structure is obtained by downsampling the first representation of the image at the first quality level, and wherein the second representation of the image at the first quality level is obtained by upsampling the representation of the image at the second quality level in the hierarchical structure.
12. A method of performing byte-by-byte processing of configuration data, the method comprising: receiving a byte sequence comprising configuration data, the configuration data being usable to reconstruct a first representation of an image at a first quality level using a second representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the second representation being obtained based on a representation of the image at a second quality level in the hierarchical structure, the second quality level being lower than the first quality level, the configuration data comprising a value of a configuration parameter, the value having a variable bit length; and processing the byte sequence to reconstruct the first representation using the configuration data, wherein the byte sequence comprises variable length elements arranged to store the value of the configuration parameter having the variable bit length, the variable length elements comprising at least one given byte, the at least one given byte having one or more predetermined bits, the one or more predetermined bits being arranged to indicate whether the variable length element comprises one or more additional bytes, wherein the one or more additional bytes are bytes other than the at least one given byte.
13. An encoder configured to: obtaining configuration data usable by a decoder to reconstruct a first representation of an image at a first quality level using a second representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the second representation being obtained based on a representation of the image at a second quality level in the hierarchical structure, the second quality level being lower than the first quality level, the configuration data comprising a value of a configuration parameter, the value having a variable bit length; arranging the configuration data into a sequence of bytes, wherein the sequence of bytes is arranged to store variable length elements of the value of the configuration parameter having the variable bit length, the variable length elements comprising at least one given byte, the at least one given byte having one or more predetermined bits, the one or more predetermined bits being arranged to indicate whether the variable length element comprises one or more additional bytes, wherein the one or more additional bytes are bytes other than the at least one given byte; and The byte sequence is output for processing by the decoder to enable the decoder to reconstruct the first representation using the configuration data.
14. A decoder configured to: receiving a byte sequence comprising configuration data, the configuration data being usable to reconstruct a first representation of an image at a first quality level using a second representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the second representation being obtained based on a representation of the image at a second quality level in the hierarchical structure, the second quality level being lower than the first quality level, the configuration data comprising a value of a configuration parameter, the value having a variable bit length; and processing the byte sequence to reconstruct the first representation using the configuration data, wherein the byte sequence comprises variable length elements arranged to store the value of the configuration parameter having the variable bit length, the variable length elements comprising at least one given byte, the at least one given byte having one or more predetermined bits, the one or more predetermined bits being arranged to indicate whether the variable length element comprises one or more additional bytes, wherein the one or more additional bytes are bytes other than the at least one given byte.
15. A computer program product comprising instructions which, when executed, cause an apparatus to perform the method of any one of claims 1 to 12.
16. A computer-readable medium comprising the computer program product of claim 15.
Citation Information
Patent Citations
Digital broadcasting system and method of processing data in digital broadcasting system
CN101796834A
Video encoding device, video decoding device, video encoding method, and video decoding method
US20150195582A1
Instruction set for variable length integer coding
US20180095760A1
Video compression using differences between a higher and a lower layer
WO2018046940A1