Method for processing configuration data and method for processing image representation
By using configuration data to process residual data in the signal processing system, the problems of information amount and processing complexity in the signal reconstruction process are solved, and a more efficient and reliable signal reconstruction effect is achieved.
Patent Information
- Application Number
- CN201980085848.X
- 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-09
- Estimated Expiration
- 2039-10-30
AI Technical Summary
The prior art is difficult to effectively process the amount of information during signal reconstruction, ensure the accuracy and reliability of the decoder, and the processing efficiency of the encoder and the decoder is low.
By introducing configuration data into the signal processing system, indicating the processing method of residual data, the decoder allows the decoder to reconstruct the signal based on the latest configuration information, reducing the amount of information and processing complexity.
It realizes the reduction of information and processing complexity in the signal reconstruction process, improves the accuracy and reliability of the decoder, and improves the efficiency of the encoder and the decoder.
Smart Images

Figure CN113228663B_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 a scalable coding system. 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 in the reconstruction, and / or the manner in which such information is configured.
[0005] Another consideration is the ability of the decoder to accurately and / or reliably process the received information. One factor that may affect the reliability of the decoder is the ability of the decoder to handle errors and / or process unexpected, modified and / or unrecognizable information received by the decoder. Another factor in the accuracy and / or reliability with which the decoder is able to perform reconstruction involves providing the decoder with up-to-date information indicating how to reconstruct the signal.
[0006] Another consideration is the ability of an encoder and / or decoder to efficiently process information. The efficiency with which an encoder and / or decoder processes information can be a factor in the performance level of an encoder and / or decoder. Summary of the invention
[0007] Various aspects of the invention are set out in the accompanying claims.
[0008] 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
[0009] Figure 1 A schematic block diagram showing an example of a signal processing system according to an embodiment of the present invention;
[0010] 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;
[0011] Figure 3 A schematic diagram showing an example of a data processing technique according to an embodiment of the present invention;
[0012] Figure 4 A schematic diagram showing an example of entry point data according to an embodiment of the present invention;
[0013] Figure 5 A schematic diagram showing an example of a configuration message according to an embodiment of the present invention;
[0014] Figure 6 is a flow chart depicting an example of a method according to an embodiment of the present invention;
[0015] Figure 7 A schematic diagram showing another example of a configuration message according to an embodiment of the present invention;
[0016] Figure 8 A schematic diagram showing another example of a configuration message according to an embodiment of the present invention;
[0017] Fig. 9 A schematic diagram showing another example of a configuration message according to an embodiment of the present invention;
[0018] Fig.10 is a flow chart depicting an example of a method according to an embodiment of the present invention;
[0019] Fig.11 is a flowchart depicting another example of a method according to an embodiment of the present invention; and
[0020] Fig.12 A schematic block diagram of an example of an apparatus according to an embodiment of the present invention is shown. DETAILED DESCRIPTION
[0021] 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.
[0022] 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.
[0023] 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.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] 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.
[0028] 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.
[0029] 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.
[0030] 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.
[0031] 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.
[0032] 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 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 perform the operations described herein on each consecutive frame. For example, a video may include frames F1, F2, ..., FT, and the first device 202 may process each of these frames in sequence.
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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.
[0037] 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).
[0038] 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.
[0039] 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.
[0040] 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 2BIn 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.
[0041] 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.
[0042] 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.
[0043] 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.
[0044] 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 .
[0045] 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.
[0046] 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.
[0047] 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.
[0048] 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.
[0049] 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.
[0050] 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.
[0051] 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.
[0052] Another consideration related to the use of such configuration data is the ability to accommodate different types of decoding devices. For example, a given encoder may transmit information to multiple decoders, each with different characteristics such as processing and / or storage capabilities. It is desirable that the use of configuration data in image reconstruction is independent of the type and / or capabilities of the decoder device used to perform the reconstruction. Compared to some known techniques, the examples described herein enable different types of decoders with different operating characteristics to reliably process configuration data.
[0053] 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.
[0054] Other considerations include the ability of the decoder to accurately and reliably perform image reconstruction. Accurately and reliably performing image reconstruction can affect the final visual quality of the displayed image, and therefore can affect the viewer's understanding of the image and / or the video including the image. One factor that may affect the accuracy and / or reliability with which the decoder can perform reconstruction is to provide the decoder with up-to-date and / or accurate information about how to perform reconstruction. For example, configuration data may change over time and / or change between different images. If the decoder is not informed of such changes in a timely manner, the resulting visual quality of the reconstructed image may be affected. Compared to some known techniques, the examples described herein allow configuration information to be signaled to the decoder relatively frequently, thereby enabling the decoder to use relatively up-to-date configuration information in image reconstruction.
[0055] Error handling is also a consideration. For example, the ability of a decoder to handle potential errors when processing configuration data may be a factor in decoder reliability. Compared to some known techniques, the examples described herein allow the decoder to handle potential errors and the receipt of unexpected or unrecognizable data. This can effectively increase the reliability of the decoder.
[0056] 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.
[0057] Configuration data 310 is obtained. Configuration data 310 is related to the processing of residual data (such as residual data 216 as described above). It will be understood that Figure 3 The configuration data 310 depicted in is an illustrative representation of the content of such configuration data. In actual use, the configuration data can be read and / or written as a series of 1s and 0s, such as [01000010].
[0058] Configuration data 310 includes a set of values 320. The set of values 320 corresponds to a set of configuration parameters. The value of a given configuration parameter has a given bit length. The bit length is the number of bits used to represent the value of a given configuration parameter. The bit length of the value of a given configuration parameter can be fixed, or it can be variable. For a variable bit length, the number of bits used to represent the value of a given configuration parameter varies based on the value of the given configuration parameter.
[0059] In some examples, configuration data 310 includes a reference to a lookup table that stores possible values for a given configuration parameter. For example, configuration data 310 may include a value that can be used to obtain a value for a configuration parameter from a lookup table.
[0060] Configuration data 310 is arranged into a byte sequence 330. Byte sequence 330 includes an integer number of bytes. In this example, the value of configuration parameter 320 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.
[0061] 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.
[0062] In some examples, byte sequence 330 is written to memory. 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 pack configuration data 310 into addressable memory cells may also be reduced.
[0063] 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.
[0064] 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.
[0065] In some examples, configuration data 310 includes values of multiple configuration parameters having different bit lengths. Configuration data 310 may be packaged into byte sequence 330 by arranging the values in a predetermined order. The predetermined order may be a different order from the order in which the values are obtained. In this way, the values may be rearranged.
[0066] The values of configuration parameters 320 may be arranged such that a given byte in byte sequence 330 is filled with values represented by different bit lengths. By filling a given byte in byte sequence 330 with values represented by different bit lengths arranged in a predetermined order, the amount of padding used in byte sequence 330 may be reduced. In this way, data may be more efficiently packed into byte sequence 330 than in a case where values represented by different bit lengths are not arranged in a predetermined order. Packing data more efficiently into byte sequence 330 may reduce the number of bytes used to store configuration data 310. The amount of information to be transmitted over the network may therefore be reduced.
[0067] The byte sequence 330 is output for processing by a decoder, such as the decoder 110 , to enable the decoder to reconstruct the input data 206 using the configuration data 310 .
[0068] refer to Figure 4 , schematically illustrates an example of entry point data 400. Entry point data 400 may be output by encoder 108 and received by decoder 110. Entry point data 400 is a type of configuration data. In some examples, entry point data 400 forms part of configuration data 310. Entry point data 400 may be read by decoder 110 before reading other configuration data. Thus, entry point data 400 may be the first configuration data processed by decoder 110 for a given received video stream.
[0069] The entry point data 400 includes a version parameter 420. The version parameter 420 may indicate a version number. The version may be a version of a grammar according to which the configuration data is arranged. The grammar may be considered to be a framework that defines the manner in which the configuration data is to be processed and / or defines configuration parameters to be included in the configuration data. The encoder 108 and / or the decoder 110 may be configured to operate according to the version of the grammar indicated by the version parameter 420.
[0070] The value of version parameter 420 has a fixed bit length. In some examples, the value of version parameter 420 has a bit length of 8 bits. Thus, the value of version parameter 420 can be stored in a fixed length element in byte sequence 330. The fixed length element includes a predetermined integer number of bytes.
[0071] In this example, the entry point data 400 includes an extended version parameter 425. The value of the extended version parameter 425 has a variable bit length. The value of the extended version parameter 425 may be stored in a variable length element in the byte sequence 330.
[0072] A variable length element includes an integer number of bytes in the byte sequence 330. A variable length element may be referred to as a "multi-byte" element, but in some examples, a variable length element includes a single byte. One or more bytes of a variable length element may be contiguous in the byte sequence 330. In some examples, one or more bytes of a variable length element are discontinuous in the byte sequence 330.
[0073] At least one given byte of the variable length element has one or more predetermined positions, and the one or more predetermined positions are arranged to indicate whether the variable length element includes one or more additional bytes of at least one given byte. In some examples, 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 the variable length element includes one or more predetermined positions. In other examples, at least one byte of the variable length element does not include one or more predetermined positions.
[0074] In the case where the one or more predetermined bits include a single predetermined bit, the single predetermined bit can be considered as a flag indicating whether one or more additional bytes are present in the variable length element. For example, if the variable length element includes at least one additional byte of a given byte, the value of the predetermined bit can be set to 1. On the other hand, if the variable length element does not include at least one additional byte of a given byte, the value of the predetermined bit can be set to 0. In other words, the predetermined bit indicates whether the variable length element extends beyond at least one given byte.
[0075] One or more predetermined positions can 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 extended version parameter 425 and one position arranged to indicate whether the variable length element includes one or more additional bytes of at least one given byte.
[0076] Like this, variable length elements can be used to represent the value of extended version parameter 425, without considering the bit length of the value of extended version parameter 425.Variable length elements include the minimum number of bytes that can be used for storing the value of extended version parameter 425.Therefore compared with the situation of using fixed length elements, using variable length elements can reduce the amount of information stored, processed and / or transmitted, the size of the fixed length elements corresponding to the maximum possible bit length of the value of extended version parameter 425.Variable length elements make it possible to increase the number of possible values that can be used for representing extended version parameter 425 as required and in a flexible manner.Like this, variable length elements can be used for providing future development and / or modification of configuration data 310, for example, by allowing the bit length of the value that increases extended version parameter 425, and the structure of configuration data 310 does not need to be carried out relatively complicated modification.
[0077] In this example, the extended version parameter 425 is optionally used. Figure 4 4. The embodiment of the present invention is depicted using dashed lines in FIG. 4. If it is determined that the fixed length version parameter 420 is insufficient to store the value of the version number, the extended version parameter 425 is used. In some examples, in response to determining that the value of the version number has a predetermined relationship with a predetermined threshold, the value of the version number is stored in the extended version parameter 425. In some examples, the predetermined relationship includes that the value of the version number is greater than or equal to the predetermined threshold. In some examples, if it is determined that the value of the version number has no predetermined relationship with the predetermined threshold, the value of the version number is stored in the version parameter 420 instead of the variable length extended version parameter 425. Using variable length elements selectively reduces the amount of information used, stored, and / or transmitted compared to using variable length elements regardless of the value of the version number.
[0078] In some examples, the predetermined threshold is related to the bit length of the fixed length element (i.e., the bit length of the version parameter 420). For example, if the fixed length element includes eight bits, a value between 0 and 255 can be represented by the fixed length element. The predetermined threshold in this case can be, for example, 255. Thus, if the value of the version number is greater than 255, the variable length extended version parameter 425 can be used instead of the fixed length version parameter 420 or as a supplement to store the value of the version number.
[0079] In some examples, data is stored in version parameter 420 to indicate that the version number is stored in extended version parameter 425. In some examples, the data includes at least one predetermined bit in version parameter 420. The data stored in version parameter 420 enables decoder 110 to determine that the value of the version number is stored in extended version parameter 425.
[0080] The above-described use of variable length elements and / or selectivity of such variable length elements comprise other configuration parameters that may also be applied to the configuration data output by the encoder 108 .
[0081] As a supplement or alternative to selectively including configuration parameters corresponding to variable length elements, the encoder 108 may selectively include configuration parameters corresponding to fixed length elements. In some examples, the configuration data generated by the encoder 108 includes a parameter presence indicator. The parameter presence indicator specifies whether a given set of configuration parameters is included in a given portion of the configuration data. A given set of configuration parameters has a predetermined format. In an example related to the above-mentioned version number, the parameter presence indicator includes a predetermined position in the version parameter 420 indicating that an extended version parameter 425 is included. The parameter presence indicator corresponds to a nested logic statement, such as an IF statement. That is, if the parameter presence indicator has or is given a specific value, a given set of configuration parameters is included in the configuration data. Compared with the case where a given set of configuration parameters is not selectively included, including a given set of configuration parameters selectively reduces the amount of information used, stored and / or transmitted.
[0082] refer to Figure 5 , schematically illustrates an example of a configuration message 500. The configuration message 500 may form part of the configuration data 310. The configuration message 500 may be generated by the encoder 108. The decoder 110 may receive and / or read the configuration message 500 after having received and / or read the entry point data 400.
[0083] Configuration message 500 includes a header portion 510 and a payload portion 520. Payload portion 520 includes a set of configuration parameters 550. The set of configuration parameters 550 is related to the processing of residual data (eg, residual data 216 as described above). In some examples, configuration message 500 is an integer number of bytes long.
[0084] Header section 510 includes message type parameter 512. Message type parameter 512 specifies the message type of configuration message 500. The message type specified by message type parameter 500 may indicate the manner in which configuration message 500 is to be processed. Example types of configuration messages are described below.
[0085] The message type parameter 512 indicates that the payload portion 520 has a given payload format. The payload format of the payload portion 520 can be determined based on the message type of the configuration message 500. The payload format can define a set of configuration parameters included in the payload portion 520. In some examples, the payload format of the payload portion 520 defines a specific processing logic that specifies the manner in which the contents of the payload portion 520 are to be processed. The payload portion 520 has a format size. The format size of the payload portion 520 corresponds to the payload format of the payload portion 520. The format size of the payload portion having a given payload format is predetermined or can be determined from the contents of the payload portion. For example, the format size can be determined based on the combined size of the various configuration parameters defined by the payload format. The format size can be considered as a possible size or a suggested size of the payload portion 520.
[0086] The header section 510 also includes a payload size parameter 514. The payload size parameter 514 specifies the actual size of the payload section 520. The actual size of the payload section 520 may be an integer number of bytes.
[0087] In some examples, the value of the payload size parameter 514 is stored in a fixed length element. The fixed length element storing the value of the payload size parameter 514 may include a predetermined number of bits in a given byte of the header section 510. For example, the value of the payload size parameter 514 may be stored in a fixed length element that includes three bits in a single-byte header section.
[0088] In some examples, payload size parameter 514 includes a reference to a payload size lookup table that stores possible values for the actual size of payload portion 520. For example, payload size parameter 514 may include a value that can be used to obtain the actual size of payload portion 520 from the payload size lookup table.
[0089] In some examples, the value of the payload size parameter 514 is stored in a variable length element. For example, this may be the case when the actual size of the payload portion 520 is not one of the values specified in the payload size lookup table. The actual size of the payload portion 520 specified by the payload size parameter 514 may have a variable bit length. Thus, regardless of the bit length of the payload size parameter 514, the variable length element may be used to represent the payload size parameter 514. The variable length element includes the minimum number of bytes that can be used to store the value of the payload size parameter 514.
[0090] In some examples, data is stored in fixed length elements, which indicates that the value of the payload size parameter 514 is stored in a variable length element. For example, if it is determined that the value of the payload size parameter 514 is one of a set of predetermined values, the value can be stored in a fixed length element and / or the fixed length element can include a reference to a payload size lookup table. On the other hand, if it is determined that the value of the payload size parameter 514 is not one of a set of predetermined values, a variable length element can be used to store the value, and the fixed length element can be arranged to indicate, for example, via a flag contained in the fixed length element that the variable length element is being used to store the value.
[0091] In this example, header section 510 includes only message type parameter 512 and payload size parameter 514. In other examples, header section 510 includes one or more other parameters. In some examples, header section 510 is one byte long. For example, message type parameter 512 may be represented by five bits, and payload size parameter 514 may be represented by the remaining three bits of a single-byte header section 510. In other examples, such as where a variable length element is used to represent the actual size of payload section 520, header section 510 includes more than one byte.
[0092] The actual size of the payload portion 520 may be the same as or different from the format size of the payload portion 520. Regardless of whether the actual size and the format size are the same, a payload size parameter 514 specifying the actual size is included in the header 510 of the configuration message 500.
[0093] When the likely size of the payload portion 520 (i.e., the format size) can be inferred from the message type parameter 512, including a payload size parameter 514 that specifies the actual size of the payload portion 520 may appear to be inefficient and / or duplicative of information, especially when the format size and the actual size are the same. Including such a parameter in the configuration message 500 involves using a larger amount of data for the configuration message 500 than if the payload size parameter 514 was not included. However, including such a parameter in the configuration message 500 facilitates more efficient and reliable processing and / or improved error handling by the decoder 110 than if the payload size parameter 514 was not used, as will be described in more detail below.
[0094] refer to Figure 6 , shows an example of a method 600 for processing configuration data. The method 600 may be performed by a device including a decoder (such as the second device 104 described above).
[0095] In some examples, residual data is received. In this example, the received residual data is the residual data 216 described above. The residual data 216 may be received from an encoder, such as encoder 108.
[0096] At item 610, a configuration message is received. In this example, the received configuration message is the configuration message 500 described above. The configuration message 500 may be received from the encoder 108.
[0097] At item 620, the received configuration message 500 is processed using the message type parameter 512 and the payload size parameter 514. The configuration message 500 is processed to obtain a set of configuration parameters 550 stored in the payload portion 520 of the configuration message 500.
[0098] In some examples, processing the configuration message 500 includes parsing a header portion 510 of the configuration message 500 to obtain a message type parameter 512 and a payload size parameter 514. Based on the payload size parameter 514, an actual size of the payload portion 520 is determined. Based on the message type parameter 512, a message type of the configuration message 500 is determined. The configuration message 500 is processed according to the determined message type and the determined actual size of the payload portion 520.
[0099] Processing the configuration message 500 includes parsing the payload portion 520 to obtain the configuration data 550. In some examples, processing the configuration message 500 includes tracking the number of bytes of the configuration message 500 that have been read while parsing the payload portion 520. If a discrepancy is determined between the number of bytes read while parsing the payload portion 520 and the actual size of the payload portion 520 specified by the payload size parameter 514, the decoder 110 may detect the occurrence of an under-read. Under-reads may be a potential source of errors when processing configuration messages.
[0100] In some examples, the payload size parameter 514 is used to determine the start of the next configuration message. The next configuration message may be the next consecutive configuration message in the sequence of configuration messages received by the decoder 110 relative to the configuration message 500. The sequence of configuration messages may form part of the configuration data. The configuration message 500 and the next configuration message may correspond to the same image or different images. For example, the configuration message 500 may correspond to the first image in the sequence of images, and the next configuration message may correspond to a different second image in the sequence of images.
[0101] In some examples, processing configuration message 500 includes discarding at least a portion of the contents of payload portion 520. Payload size parameter 514 may be used to discard at least a portion of the contents of payload portion 520. For example, decoder 110 may skip to a next configuration message, the start of which has been determined using payload size parameter 514, without processing at least a portion of the contents of payload portion 520.
[0102] Therefore, using the payload size parameter 514 enables the decoder 110 to handle possible underreading in an efficient manner. Using the payload size parameter 514 to locate the beginning of the next message also enables the decoder 110 to maintain correct alignment or synchronization with the byte stream including multiple configuration messages. For example, even if the content and / or format of a given configuration message is unrecognizable, unexpected and / or updated without notifying the decoder 110, the decoder 110 is still able to locate the beginning of the next configuration message, and therefore keeps synchronization with the byte stream. In addition, if the byte stream becomes deformed, the decoder 110 can detect when overreading will occur and respond accordingly. For example, the decoder 110 can suspend the processing of the current configuration message and reset the byte stream to the determined position of the beginning of the next configuration message. Therefore, compared with the situation where the payload size parameter 514 is not used, using such parameters to process the configuration message 500 improves the reliability and / or adaptability of the decoder 110, because the decoder 110 can process the configuration message that has been modified and / or cannot be recognized and / or unexpected. The decoder 110 is also able to handle potential under-reads and over-reads without losing synchronization with the byte stream, thereby improving the ability of the decoder 110 to handle potential errors.
[0103] In some examples, processing the configuration message 500 includes parsing the first content of the payload portion 520. The first content corresponds to the format size of the payload portion 520. The first content may include a set of configuration parameters 550. The first content may include first configuration data. Processing the configuration message 500 may also include discarding the remaining content of the payload portion 520 using the payload size parameter 514. The remaining content of the payload portion 520 includes content in the payload portion 520 that is not included in the first content. The remaining content includes other configuration data. The presence of the remaining content can be determined by detecting a difference between the format size and the actual size of the payload portion 520. In other words, if it is determined that the actual size is greater than the format size, it is determined that there is additional content in the payload portion 520 in addition to the content expected based on the format size.
[0104] At item 630, the input data 206 is reconstructed using the obtained set of configuration parameters 550. The input data 206 may be reconstructed according to the obtained set of configuration parameters 550 by using the residual data 216.
[0105] In some examples, the payload portion 520 of the configuration message 500 includes a first payload portion and a second payload portion. The payload size parameter 514 may indicate the total size of the first payload portion and the second payload portion. The first payload portion and the second payload portion may include first configuration data and second configuration data, respectively. In some examples, the second configuration data includes supplementary configuration data. The supplementary configuration data is arranged to supplement the first configuration data. The second payload portion may then be arranged relative to the first payload portion. In this way, the first payload portion may be received, processed, and / or parsed by the decoder 110 before the second payload portion is received, processed, and / or parsed.
[0106] In some examples, header section 510 does not specify a size of the first payload section and / or a size of the second payload section. In some examples, the size of the first payload section may be determined based on a format size indicated by message type parameter 512. Thus, the format size indicated by message type parameter 512 may reflect the contents of the first payload section but not the contents of the second payload section.
[0107] The first configuration data is related to the first group of one or more decoders. The first group of one or more decoders has a first operating characteristic. An example of an operating characteristic is processing power. The second configuration data is related to the second group of one or more decoders. The second group of one or more decoders has a second operating characteristic. The decoder 110 to which the configuration message 500 is transmitted may be included in the first group or the second group. The encoder 108 that generates the configuration message 500 may not know which group of decoders the decoder 110 is included in. The encoder 108 can transmit the configuration message 500 to multiple decoders in the two groups of decoders.
[0108] In some examples, the first operating characteristic corresponds to a first version, and a first group of one or more decoders are configured to operate according to the first version, and the second operating characteristic corresponds to a different second version, and a second group of one or more decoders are configured to operate according to the different second version. The second version can be a newer version relative to the first version. The first version and the second version can be different versions of a grammar framework that defines the manner in which configuration messages are to be processed and / or defines the content of such configuration messages. Thus, when the grammar is updated from the first version to the second version, the second configuration data is added to the configuration message containing the first configuration data from the first version. The second configuration data can, for example, be appended to the first configuration data.
[0109] Adding the second configuration data to a configuration message of an existing message type rather than generating a new message type to accommodate the second configuration data reduces the amount of data stored, transmitted and / or processed compared to the case where a new message type is generated. By modifying the configuration of an existing message type rather than defining a new message type, the total number of configuration messages used to convey all relevant configuration data can be reduced. Each configuration message has a corresponding header, which can be at least one byte long. Therefore, by reducing the total number of configuration messages, the amount of data stored, transmitted and / or processed can be reduced.
[0110] In some examples, the decoder 110 cannot process the first payload portion and the second payload portion simultaneously. For example, the encoder 108 may have undergone an update according to which the second configuration data is included in the configuration message 500, but the decoder 110 may not have undergone such an update. In other words, the encoder 108 and the decoder 110 may operate according to different versions of the grammar. In such an example, there may be a difference in the format size of the payload portion 520 as interpreted by the encoder 108 and as interpreted by the decoder 110. For example, since the decoder 110 is unaware of the additional content and the updated payload format and is operating according to the previous version, the format size according to the encoder 108 is different from the format size according to the decoder 110, which knows the additional content of the payload portion 520 and the updated payload format after the version update. For the encoder 108, the format size is equal to the actual size of the updated payload portion 520, but this is not the case for the decoder 110. Therefore, the format size alone may be an unreliable indicator of the actual size of the payload portion 520. Therefore, including a payload size parameter 514 that specifies the actual size of the payload portion 520 facilitates more reliable processing by the decoder 110 .
[0111] In some examples, for example, if decoder 110 is in the first group of decoders, the first payload portion is parsed by decoder 110, while the second payload portion is not parsed by decoder 110. Parsing the first payload portion without parsing the second payload portion enables decoder 110 to obtain the first configuration data instead of the second configuration data. In some examples, for example, if decoder 110 is in the second group of decoders, the second payload portion is parsed by decoder 110, while the first payload portion is not parsed by decoder 110. Parsing the second payload portion without parsing the first payload portion 522 enables decoder 110 to obtain the second configuration data instead of the first configuration data. In some examples, for example, if decoder 110 is in the second group of decoders, both the first payload portion and the second payload portion are parsed to obtain both the first configuration data and the second configuration data.
[0112] As described above, the payload size parameter 514 can be used to determine the start of the next configuration message. In some examples, for example, if the decoder 110 is in the first group of decoders, the contents of the second payload portion are discarded. The contents of the second payload portion can be discarded by using the total size of the payload portion 520 specified in the payload size parameter 514. Using the payload size parameter 514 to locate the start of the next message enables the decoder 110 to remain synchronized with the byte stream regardless of whether the decoder 110 is in the first group of decoders or in the second group of decoders.
[0113] In the case where the decoder 110 obtains both the first configuration data and the second configuration data, both the first configuration data and the second configuration data are used to reconstruct the first representation 206 of the image. In the case where the decoder 110 processes only one of the first payload portion and the second payload portion, one of the obtained first configuration data and the second configuration data may be used to reconstruct the first representation 206 of the image. In this way, the use of the configuration message 500 to reconstruct the first representation 206 may be independent of the type of decoder and / or independent of the version number according to which the decoder 110 is configured to operate.
[0114] refer to Figure 7 , which is a schematic diagram showing an example of a configuration message 700. The configuration message 700 may form part of the configuration data 310. The configuration message 700 may be generated by the encoder 108. Figure 7 Some of the items shown are Figure 5 The items shown are similar. Therefore, similar items have been given corresponding reference numerals (increased by 200).
[0115] Configuration message 700 is a more specific example of configuration message 500. Configuration message 700 includes a header section 710 and a payload section 720. Header section 710 includes a message type parameter 712 and a payload size parameter 714. Payload section 720 includes a set of configuration parameters. The set of configuration parameters is related to the processing of residual data 216. In some examples, configuration message 700 is an integer number of bytes long.
[0116] The message type of configuration message 700 is an image set configuration message. The image set configuration message corresponds to a plurality of images in a set of images. In some examples, the set of images includes 75 images. The set of images may be part of a video signal. For example, the set of images may include consecutive frames of a video. The video may be a streaming video. An example of a video is a broadcast video. For example, the video may be broadcast via a data communication network 106. In some examples, the set of images is encoded as a group of pictures (GOP). A GOP is an encoding of a sequence of images, and each image in the sequence of images may be decoded using information completely contained within the GOP. A video may include multiple such GOPs.
[0117] In some examples, the image set configuration message corresponds to each image in a set of images. The payload portion 720 includes a set of image set configuration parameters. The set of image set configuration parameters has a predetermined format.
[0118] In this example, the set of image set configuration parameters includes a transform type parameter 751. The transform type parameter 751 is related to the transform operation performed on the residual data 216. The transform operation may be a directional decomposition operation. An example of a directional decomposition operation is a Hadamard transform. The transform operation may utilize spatial and / or directional correlations between residual elements in the residual data 216. Performing a transform operation on the residual data 216 produces transformed residual data. The transformed residual data may be smaller than the residual data 216. The transformed residual data may have a lower coding entropy than the residual data 216. In this way, the encoder 108 may transmit the transformed residual data more efficiently than the residual data 216. The decoder 110 that receives the transformed residual data may then perform an inverse transform operation on the transformed residual data to obtain the residual data 216. Therefore, the encoder 108 sends a signal to the decoder 110 which transform operation has been applied to the residual data 216 by the transform type parameter 751. In some examples, the transform type parameter 751 specifies a transform operation from a plurality of possible transform operations that can be applied to the residual data 216. In some examples, the value of the transform type parameter 751 has a fixed bit length. For example, the value of the transform type parameter 751 may have a bit length of two bits.
[0119] In this example, a set of image set configuration parameters includes an upsampling type parameter 752. The upsampling type parameter 752 is related to an upsampling operation. For each image in a set of images, an upsampling operation is performed on a representation of the image at a relatively low quality level. The upsampling operation is performed on the representation at the relatively low quality level to derive upsampled data 214. The encoder 108 performs this upsampling operation to derive residual data 216. The decoder 110 may perform a corresponding upsampling operation to reconstruct the input data 206, i.e., by combining the upsampled data 214 with the residual data 216. Therefore, the encoder 108 sends a signal to the decoder 110 which upsampling operation is to be used via the upsampling type parameter 752. In some examples, the upsampling type parameter 752 specifies an interpolation operation from a plurality of possible interpolation operations. Examples of possible interpolation operations include nearest neighbor interpolation, bilinear interpolation, bicubic interpolation, and Lanczos interpolation. In some examples, the upsampling type parameter specifies whether upsampling is performed in one dimension or two dimensions. In other words, the upsampling type parameter 752 may specify whether one or both of horizontal and vertical upsampling is performed on the representation at the relatively low quality level. In some examples, the configuration parameters related to the upsampling operation may specify whether horizontal upsampling or both horizontal and vertical upsampling is performed on the representation at the relatively low quality level. In some examples, the value of the upsampling type parameter 752 has a fixed bit length. In one example, the value of the upsampling type parameter 752 has a bit length of three bits. In another example, the value of the upsampling type parameter 752 has a bit length of four bits.
[0120] In this example, a set of image set configuration parameters includes a depth type parameter 753. The depth type parameter 753 is related to bit depth. The bit depth is associated with the residual data 216 for a given image in a set of images. The bit depth may also be referred to as color depth. In some examples, the bit depth indicates the number of bits used to indicate the color of a given pixel in a given image. In this way, the bit depth may indicate how finely the color can be represented in a given image. In some examples, the bit depth indicates the number of bits for each color component of a given pixel in a given image. In some examples, a given residual element in the residual data 216 for a given image includes multiple color components (e.g., for YUV or RGB data). The bit depth may indicate the number of bits for each color component of a given residual element. Different color components may have different bit lengths. In some examples, the value of the depth type parameter 753 has a fixed bit length. In one example, the value of the depth type parameter 753 has a bit length of two bits. In another example, the value of the depth type parameter 753 has a bit length of four bits.
[0121] In this example, a set of image set configuration parameters includes a temporal processing parameter 754. The temporal processing parameter 754 specifies a temporal processing range associated with reconstructing input data 206 for a given image in a set of images. Performing temporal processing includes using data based on a plurality of images in a set of images. In some examples, each image in a set of images corresponds to a different temporal sample of a video. For example, temporal processing may use data for different video frames (such as data derived from residual data for different frames) to adjust data for a given video frame, such as data derived from residual data for the frame. The data based on a plurality of images may indicate a degree of temporal correlation between residual data for a given image and residual data for one or more other images in the set of images. Relative to the temporal sample corresponding to the given image, one or more other images may correspond to one or more earlier temporal samples in the video. For example, data derived from at least residual data associated with a previous video frame may be used to reconstruct a current video frame via modification of data derived from at least residual data associated with a current frame.
[0122] In some examples, the data based on the plurality of images includes temporal correlation data. The temporal correlation data may include data based on differences between residual data for a given image and corresponding residual data for one or more other images. This may be based on differences between data for a current frame and data for a previous frame. For image sequences that exhibit a relatively high degree of temporal correlation, using and / or outputting temporal correlation data for a given image may be more efficient than using and / or outputting residual data.
[0123] In some examples, the value of the temporal processing parameter 754 is based on an optimization metric. An optimization operation may be performed to determine whether the use and / or output of residual data or temporal correlation data is more efficient for a given image. Based on the optimization metric, the value of the temporal processing parameter 754 may guide the decoder 110 to reconstruct a given video frame based on one of the residual data and the temporal correlation data. This may reflect the processing performed on the corresponding encoder. The optimization operation may include a rate-distortion analysis as described in more detail below.
[0124] The value of the temporal processing parameter 754 may have a bit length of one bit. For example, this may indicate whether temporal processing is to be performed (a binary determination) for a given video frame, for example. Thus, the temporal processing parameter 754 may be stored in a predetermined bit in a given byte of the configuration data.
[0125] In this example, a set of image set configuration parameters includes a resolution type parameter 755 that specifies the resolution of the input data 206 for a given image in a set of images. In some examples, the value of the resolution type parameter 755 has a fixed bit length. In one example, the value of the resolution type parameter 755 has a bit length of seven bits.
[0126] In some examples, a set of image set configuration parameters includes a custom resolution parameter 756. The custom resolution parameter is related to the resolution of the input data 206. The custom resolution parameter 756 can be optionally included in the image set configuration message 700. Figure 7 For example, if it is determined that the resolution of the input data 206 is not one of a set of predetermined values that can be specified by the resolution type parameter 755, a custom resolution parameter 756 may be included. Data may be stored in the resolution type parameter 755 to indicate that the custom resolution parameter 756 is included in the image set configuration message 700. Such data may include a predetermined position in the resolution type parameter 755. The predetermined position thus includes a parameter presence indicator indicating that the custom resolution parameter 756 is present in the image set configuration message 700.
[0127] A set of image set configuration parameters may include the following: Figure 7 More, fewer, or different parameters can be described in .
[0128] The image set configuration message 700 corresponds to a plurality of images in a group of images. In this example, the image set configuration message 700 corresponds to all images in a group of images. Thus, a single set of image set configuration parameters may apply to each image in a group of images. Image set configuration data may also be referred to as "global configuration data".
[0129] The picture set configuration message 700 is output to the decoder 110 to enable the decoder 110 to reconstruct the input data 206 using the upsampled data 214 and the residual data 216 for each picture in a set of pictures.
[0130] The number of times the image set configuration message 700 is output for a group of images is less than the number of images in the group of images. Outputting the image set configuration message 700 for a number of images less than the number of images in a group of images reduces the amount of information transmitted in a given time period. In this example, the number of times the image set configuration message 700 is output for a group of images is one. The image set configuration message 700 may be output only for the first image in a group of images. The first image in a group of images may be the first image in the group of images that is output, received, processed and / or displayed. Outputting the image set configuration message 700 for the first image in a group of images may enable the recipient to receive the image set configuration data as early as possible, and / or may enable the recipient to apply the image set configuration data to as many images in the group of images as possible. In some examples, the image set configuration message 700 is output together with or in conjunction with the first image in the group of images. In some examples, the image set configuration message 700 is output for images other than the first image in a group of images. In some examples, the number of times the image set configuration message 700 is output for a group of images is greater than one, but less than the number of images in the group of images. In one example, the image set configuration message 700 is output once for a group of images including 75 images.
[0131] In some examples, the number of times the image set configuration message 700 is output for a group of images is based on an optimization metric. An example of an optimization metric is a rate-distortion metric. Rate-distortion optimization optimizes the amount of data transmitted for the amount of loss in visual quality. The less frequently the image set configuration message 700 is output, the less data is transmitted. However, outputting the image set configuration message 700 too infrequently can result in undesirable quality loss due to the lack of providing the latest configuration data to the decoder 110. Therefore, the number of times the image set configuration message 700 is output is optimized so as to reduce the amount of data sent while reducing any loss in visual quality.
[0132] In some examples, a ratio of the number of times the image set configuration message 700 is output for a set of images to the number of images in the set of images is less than a predetermined threshold. The predetermined threshold may be based on an optimization metric, such as the rate-distortion metric described above.
[0133] refer to Figure 8 , schematically illustrates an example of a configuration message 800. The configuration message 800 may form part of the configuration data 310. The configuration message 800 may be generated by the encoder 108. Figure 8 Some of the items shown are Figure 5 The items shown are similar. Therefore, similar items have been given corresponding reference numerals (increased by 300).
[0134] Configuration message 800 is a more specific example of configuration message 500. Configuration message 800 includes a header section 810 and a payload section 820. Header section 810 includes a message type parameter 812 and a payload size parameter 814. Payload section 820 includes a set of configuration parameters. The set of configuration parameters is related to the processing of residual data 216. In some examples, configuration message 800 is an integer number of bytes long.
[0135] The message type of configuration message 800 is an image configuration message. An image configuration message may correspond only to a given image in a set of images. In this way, a different image configuration message may be generated and / or output for each image in a set of images. Payload portion 820 includes a set of image configuration parameters.
[0136] In this example, the set of image configuration parameters includes a residual usage parameter 851. The value of the residual usage parameter 851 specifies whether the residual data 216 for a given image is to be used to reconstruct the input data 206 for a given image. If the input data 206 is to be reconstructed, another set of configuration parameters is included in the image configuration message 800. If the input data 206 is not to be reconstructed, another set of configuration parameters is not included in the image configuration message 800. Thus, another set of configuration parameters is selectively included. This Figure 8 Use dashed lines to depict.
[0137] In this example, the value of the residual usage parameter 851 indicates whether another set of configuration parameters is included in the image configuration message 800. In this example, the value of the residual usage parameter 851 can therefore indicate whether another set of configuration parameters is included in the image configuration message 800. As such, the residual usage parameter 851 can include a parameter presence indicator. The residual usage parameter 851 can be used by the decoder 110 to detect whether the residual data 216 is to be used to reconstruct the input data 206 and whether another set of configuration parameters is included in the configuration message 800.
[0138] In some examples, when another set of configuration parameters is included in the image configuration message 800, the payload portion 820 of the configuration message 800 is 5 bytes long. When another set of configuration parameters is not included in the configuration message 800, the payload portion 820 of the configuration message 800 may be 1 byte long.
[0139] In this example, one set of image configuration parameters includes quantization data 852. The quantization data 852 is included in another set of configuration parameters, the inclusion of the quantization data being indicated by the residual usage parameter 851. The quantization data 852 indicates a quantization level of data that may be used by the decoder 110 to reconstruct the input data 206 using the upsampled data 214 for a given image.
[0140] Quantization involves approximating a relatively large set of values by a relatively small set of values, such as by rounding, thresholding, or truncating the values in a relatively large set. The purpose of the quantization operation is to reduce the amount of data in the quantized output data compared to the amount of data in the input data of the quantization operation. The quantization level of given data may indicate how strongly the given data is quantized. The quantization level may indicate the granularity of the quantized data obtained via the quantization process. In other words, the quantization level may indicate how much information is lost due to such quantization. For example, the quantization level may indicate one or more thresholds or bins used for quantization, which indicate the manner in which the data is quantized.
[0141] In some examples, the quantization data 852 indicates a quantization level of the residual data 216. Thus, the data that can be used by the decoder 216 to reconstruct the input data 206 can be data at a relatively high quality level. The quantization level can guide the decoder 110 on how to perform inverse quantization on the residual data 216 that has been quantized. For example, at the decoder 110, a received set of residual data 216 can have values within a first quantization range, which can then be expanded to a larger range of values after inverse quantization. The quantization data 852 can be used to perform this operation.
[0142] In some examples, the quantization data 852 indicates a quantization level of the correction data. For a given image, the correction data may be used to correct errors when encoding and / or decoding a representation at a relatively low quality level, as described above with reference to FIG. 2. Thus, the data that may be used by the decoder 110 to reconstruct the input data 206 may be data at a relatively low quality level.
[0143] In some examples, the quantization data 852 indicates a first quantization level and a second quantization level. The first quantization level is the quantization level applied to the residual data 216. The second quantization level is the quantization level applied to the correction data. In this way, both the residual data 216 and the correction data can be quantized using separately defined quantization levels indicated by the quantization data 852. The quantization data 852 may therefore include the level at which one or more of the correction data and the residual data are quantized at the encoder (e.g., after a transform as described herein), which is then sent to the decoder to allow the original values associated with the correction data and the residual data to be inversely quantized and reconstructed (due to information loss during the quantization process, the reconstructed values may not match the original values before quantization at the encoder).
[0144] Quantized data 852 may include an integer number of bytes. In some examples, quantized data 852 includes two bytes. In some examples, quantized data 852 includes four bytes.
[0145] In this example, a set of image configuration parameters includes a picture type parameter 853. The picture type parameter 853 is included in another set of configuration parameters, and the inclusion of the picture type parameter is indicated by the residual usage parameter 851. The picture type parameter 853 specifies whether a given image corresponds to a frame or a field. In other words, the picture type parameter 853 indicates whether a given image is progressive scanned (in which case the picture type parameter 853 specifies a frame) or interlaced scanned (in which case the picture type parameter 853 specifies a field). In the case where the given image is interlaced, the picture type parameter 853 may also specify a field type, such as a top field or a bottom field. The picture type parameter 853 may have a bit length of one or two bits.
[0146] In this example, a set of image configuration parameters includes a time refresh parameter 854. The time refresh parameter 854 is included in another set of configuration parameters, and the inclusion of the time refresh parameter is indicated by the residual use parameter 851. The time refresh parameter 854 is used to indicate when the time data is to be refreshed. For example, the value of the time refresh parameter 854 may specify whether to clear the buffer storing the time data. For example, as described herein, the residual data (or transformed residual data) for the current video frame may be modified based on the residual data (or transformed residual data) for the previous video frame. The latter data may be stored in a buffer and used to modify the previous data. This may be repeated in an iterative manner for each frame. In one case, at the encoder, a set of current data and the contents of the buffer may be compared and the difference calculated. At the decoder, the time processing may include adding the contents of the buffer to the received data to reconstruct the residual data or the transformed residual data. In the current case, the value of the time refresh parameter 854 may indicate to the decoder that the data related to the previous frame stored in the buffer is to be cleared. This may effectively indicate that no time processing is applied (for example, a value of 0 added to the received data will not modify the received data). Temporal data includes data that can be used in temporal processing, such as data based on multiple images. The bit length of the value of the temporal refresh parameter 854 may be one bit.
[0147] A set of image configuration parameters may include the following: Figure 8 More, fewer, or different parameters can be described in .
[0148] An image configuration message 800 is output for a plurality of images in a set of images. In some examples, the number of images in the plurality of images is equal to the number of images in the set of images. In other words, the image configuration message 800 may be output for each image in the set of images. In other examples, the number of images in the plurality of images is less than the number of images in the set of images. The number of images in the plurality of images may be based on an optimization metric. The optimization metric may be a rate-distortion metric.
[0149] Both the image set configuration message 700 and the image configuration message 800 may be output for a given set of images. The number of times the image set configuration message 700 is output for a set of images is less than the number of times the image configuration message 800 is output for a set of images. For example, the image set configuration message 700 may be output only once for a set of images, and the image configuration message 800 may be output for each image in the set of images. In this way, the image configuration message 800 is output more frequently than the image set configuration message 700.
[0150] Outputting the image configuration message 800 relatively frequently uses more data than outputting the image configuration message 800 relatively infrequently. However, outputting the image configuration message 800 relatively frequently provides the decoder 110 with up-to-date information, which enables the decoder 110 to perform image reconstruction with high accuracy and / or reliability. A set of image configuration parameters stored in the image configuration message 800 may vary, for example, between different images. Therefore, there is a trade-off between the amount of data transmitted to the decoder 110 and the accuracy and / or reliability with which the decoder 110 can perform reconstruction using the received data. For the image set configuration message 700 and the image configuration message 800, the best result of this trade-off is that the image configuration message 800 is sent more frequently than the image set configuration message 700. Therefore, sending the image set configuration parameters at a relatively low frequency and sending the image configuration parameters at a relatively high frequency can reduce the amount of information sent in a given period of time while enabling the decoder 110 to perform reconstruction at a predetermined level of accuracy and / or reliability.
[0151] refer to Fig. 9 , schematically illustrates an example of a configuration message 900. The configuration message 900 may form part of the configuration data 310. The configuration message 900 may be generated by the encoder 108. Fig. 9 Some of the items shown are Figure 5 The items shown are similar. Therefore, similar items have been given corresponding reference numerals (increased by 400).
[0152] Configuration message 900 is a more specific example of configuration message 500. Configuration message 900 includes a header section 910 and a payload section 920. Header section 910 includes a message type parameter 912 and a payload size parameter 914. Payload section 920 includes a set of configuration parameters. The set of configuration parameters is related to the processing of residual data 216. In some examples, configuration message 900 is an integer number of bytes long.
[0153] The message type of configuration message 900 is a coded data message. The coded data message may correspond to a given image in a set of images. Thus, a different coded data message may be generated and / or output for each image in a set of images.
[0154] The payload portion 920 includes a set of configuration parameters 950. The payload portion 920 may also include data 960 based on the residual data 216 for a given image. The data 960 based on the residual data 216 may include the residual data 216 itself. In some examples, the data 960 based on the residual data 216 includes transformed residual data. The transformed residual data includes data that is the output of a transform operation performed on the residual data 216. The transform operation may be a directional decomposition operation that exploits correlations between residual elements in the residual data 216.
[0155] In some examples, data 960 based on residual data 216 includes encoded data. The encoded data may be encoded residual data or encoded transformed residual data. The encoded data may be derived using one or both of a run-length encoding operation and a Huffman encoding operation. As described above, the residual data or the transformed residual data may be quantized prior to encoding.
[0156] In some examples, as described above, data 960 based on residual data 216 is stored in one or more variable length elements that each include an integer number of bytes.
[0157] In this example, a set of configuration parameters 950 indicates whether the encoded data is derived using a Huffman encoding operation, a run-length encoding operation, or both. In some examples, a set of configuration parameters 950 indicates whether the encoded data is output for a given image. In some examples, a set of configuration parameters 950 is related to the size of the encoded data. For example, the configuration parameters may be related to the size of the run-length encoded data and / or the size of the Huffman encoded data.
[0158] The encoded data message 900 is output for a plurality of images in a set of images. In some examples, the number of images in the plurality of images is equal to the number of images in the set of images. In other words, the encoded data message 900 may be output for each image in the set of images. In other examples, the number of images in the plurality of images is less than the number of images in the set of images. The number of images in the plurality of images may be based on an optimization metric. The optimization metric may be a rate-distortion metric.
[0159] In some examples, the coded data message 900 is selectively generated and / or output. Whether to generate and / or output the coded data message for a given image may depend on whether to use the residual data 216 for the given image to reconstruct the input data 206 for the given image. Whether to reconstruct the input data 206 for the given image may be indicated by the residual use parameter 851 of the corresponding image configuration message 800 for the given image. By selectively outputting the coded data message 900, the amount of information transmitted can be reduced compared to the case where the coded data message 900 is not selectively output.
[0160] The configuration messages generated by the encoder 108 may have other message types in addition to those described above. Another example message type is an encoder metadata message. An encoder metadata message includes metadata related to one or more encoder characteristics. Another example message type is a decoder control message. A decoder control message includes instructions for controlling a decoder. A decoder control message may include configuration parameters related to image jitter. Another example message type is a research message. A research message includes a custom payload for research purposes.
[0161] refer to Fig.10 , an example of a method 1000 for processing configuration data is shown. The method 1000 may be performed by a device including an encoder (such as the first device 102 described above).
[0162] At item 1010 , for each image in a set of images, a first representation of the image at a relatively high quality level is used to derive a representation of the image at a relatively low quality level. The representation at the relatively low quality level is output for processing by decoder 110 .
[0163] At item 1020, residual data is output for one or more selected images in a set of images. The residual data may be used to reconstruct a first representation using a second representation of the image at a relatively high quality level, the second representation being based on a representation of the image at a relatively low quality level. The residual data is derived based on the first representation and the second representation.
[0164] In some examples, the one or more selected images include all images in a group of images. In some examples, the one or more selected images are selected based on image content. For example, if the first representation of the first image contains a relatively large amount of visual detail, it may be determined to use and / or output residual data for the first image to enable reconstruction of the first representation of the first image. Conversely, if the first representation of the second image contains relatively few visual details, for example, if the second image corresponds to a "black screen", it may be determined not to use and / or output residual data for the second image. Using residual data to reconstruct the first representation of the second image may not significantly improve the displayed visual quality of the second image due to the lack of visual details contained therein. Selectively using and / or outputting residual data can reduce the amount of information transmitted and / or processed in a given time period compared to not selectively using and / or outputting residual data.
[0165] At item 1030, configuration data is output for processing by decoder 110. The configuration data enables decoder 110 to detect whether to use residual data for a given image in a set of images to reconstruct a first representation of the given image. The given image may be included in one or more selected images. Configuration data may be output for each image in the set of images. The configuration data may include an image configuration message 800. The configuration data may, for example, include residual usage parameters 851. In some examples, the configuration data includes an encoded data message 900.
[0166] In some examples, the number of times the configuration data is output for a set of images is less than the number of images in the set of images. The configuration data may correspond to a plurality of images in the set of images. For example, the configuration data may include the image set configuration message 700. In some examples, the number of times the configuration data is output for a set of images is based on an optimization metric.
[0167] refer to Fig.11 , an example of a method 1100 for processing a representation of an image is shown. The method 1100 may be performed by the decoder 110 described above.
[0168] At item 1110, data that can be used to derive a representation of an image at a relatively low quality level is received. Before being received by decoder 110, the first representation of the image at a relatively high quality level is used by encoder 108 to derive the representation at the relatively low quality level. In some examples, the image is one of a group of images. A group of images can be part of a video signal. In some examples, the received data is processed to obtain a representation at a relatively low quality level. For example, the received data can be decoded to obtain a representation at a relatively low quality level.
[0169] At item 1120, a determination is made as to whether predetermined configuration data has been received. The predetermined configuration data corresponds to an image.
[0170] If it is determined at item 1120 that predetermined configuration data corresponding to the image has been received, then at item 1130 a first representation of the image is reconstructed. The first representation is reconstructed using the predetermined configuration data. The first representation is reconstructed using a second representation of the image at a relatively high quality level. In some examples, the representation at a relatively low quality level is processed to derive the second representation. For example, the second representation may be derived by upsampling the representation at the relatively low quality level. The first representation may be reconstructed by combining the second representation with the residual data.
[0171] At item 1135, the first representation is output. For example, the first representation can be output for display on a display device.
[0172] If it is determined at item 1120 that the predetermined configuration data corresponding to the image has not been received, the first representation is not reconstructed. Instead, the representation at the relatively low quality level is processed to derive a second representation at item 1140. The second representation may be derived by upsampling the representation at the relatively low quality level.
[0173] At item 1145, the second representation is output. For example, the second representation can be output for display on a display device.
[0174] In some examples, if it is determined that the predetermined configuration data corresponding to the image has not been received, the second representation is not derived. For example, a representation at a relatively low quality level may be output instead of the second representation. In some examples, data based on the representation at a relatively low quality level is output. The data based on the representation at a relatively low quality level is different from the first representation and the second representation.
[0175] In the case where the image is one of a group of images, the predetermined configuration data may correspond to multiple images in the group of images. The predetermined configuration data may not be received with each image in the group of images. In one example, the predetermined configuration data is received only with the first image in the group of images. The predetermined configuration data may apply to each subsequent image in the group of images. Thus, if the first image in the group of images is not received by the decoder 110, the predetermined configuration data for the group of images may not be received. The predetermined configuration data may be image set configuration data. The predetermined configuration data may include an image set configuration message 700.
[0176] In the case where a group of images is part of a streaming video, the decoder may enter the video stream midway through a group of images. In this case, although the first representation is not reconstructed due to the failure to receive the predetermined configuration data, a representation at a relatively high quality level, i.e., a second representation, may still be output. Outputting the second representation for display reduces the potential loss of visual quality due to the failure to receive the predetermined configuration data compared to the case where the representation at the relatively high quality level is not output. Outputting the second representation may be considered as part of a "minimum operating mode", in contrast to outputting the first representation, which may be considered as part of a "full operating mode". In the case where the decoder 110 enters the video stream midway through a group of images, the "minimum operating mode" may be used for the remainder of the group of images. Of course, when the first image in a group of subsequent images is subsequently received, the predetermined configuration data for the group of subsequent images is also received. In this way, a group of subsequent images may be processed according to the "full operating mode".
[0177] refer to Fig.12 , a schematic block diagram of an example of device 1200 is shown.
[0178] In an example, the device 1200 includes an encoder. In another example, the device 1200 includes a decoder.
[0179] Examples of apparatus 1200 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.
[0180] In this example, the device 1200 includes one or more processors 1201 configured to process information and / or instructions. The one or more processors 1201 may include a central processing unit (CPU). The one or more processors 1201 are coupled to a bus 1202. The operations performed by the one or more processors 1201 may be implemented by hardware and / or software. The one or more processors 1201 may include multiple processors located at the same location or multiple processors located at different locations.
[0181] In this example, device 1200 includes a computer usable volatile memory 1203 configured to store information and / or instructions for one or more processors 1201. Computer usable volatile memory 1203 is coupled to bus 1202. Computer usable volatile memory 1203 may include random access memory (RAM).
[0182] In this example, device 1200 includes a computer usable non-volatile memory 1204 configured to store information and / or instructions for one or more processors 1201. Computer usable non-volatile memory 1204 is coupled to bus 1202. Computer usable non-volatile memory 1204 may include read only memory (ROM).
[0183] In this example, device 1200 includes one or more data storage units 1205 configured to store information and / or instructions. One or more data storage units 1205 are coupled to bus 1202. One or more data storage units 1205 may include, for example, magnetic or optical disks and disk drives or solid state drives (SSDs).
[0184] In this example, the device 1200 includes one or more input / output (I / O) devices 1206 configured to transmit information to and / or from one or more processors 1201. One or more I / O devices 1206 are coupled to the bus 1202. One or more I / O devices 1206 may include at least one network interface. The at least one network interface may enable the device 1200 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). One or more I / O devices 1206 may enable a user to provide input to the device 1200 via one or more input devices (not shown). One or more input devices may include, for example, a remote control, one or more physical buttons, etc. One or more I / O devices 1206 may enable information to be provided to a user via one or more output devices (not shown). One or more output devices may, for example, include a display screen.
[0185] Various other entities of the device 1200 are depicted. For example, when present, the operating system 1207, the data signal processing module 1208, one or more other modules 1209, and the data 1210 are shown as residing in one or a combination of the computer usable volatile memory 1203, the computer usable non-volatile memory 1204, and the one or more data storage units 1205. The data signal processing module 1208 may be implemented by computer program code stored in a memory location within the computer usable non-volatile memory 1204, a computer readable storage medium within the one or more data storage units 1205, 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 or as an application specific integrated circuit (ASIC), such as firmware or microcode in at least one ROM or RAM or programmable ROM (PROM) chip.
[0186] The device 1200 may thus include a data signal processing module 1208, which may be executed by one or more processors 1201. The data signal processing module 1208 may be configured to include instructions to implement at least some of the operations described herein. During operation, the one or more processors 1201 initiate, run, execute, interpret or otherwise perform the instructions in the signal processing module 1208.
[0187] 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.
[0188] It should be understood that the device 1200 may include Fig.12 More, fewer and / or different components than those depicted.
[0189] Device 1200 may be located at a single location or may be distributed across multiple locations. Such locations may be local or remote.
[0190] 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.
[0191] The examples described herein relate to the syntax of the use of configuration data related to the processing of residual data, which can be used for image reconstruction. The syntax provides a processing framework to enable an encoder to obtain and output configuration data and a decoder to receive and process configuration data. The syntax framework is conducive to generating and processing configuration messages such as those described above. The decoder uses the received configuration data to reconstruct the representation of an image (e.g., an image as part of a video stream) at a high quality level. The syntax framework described herein allows the decoder to perform this reconstruction with relatively high efficiency, reliability, and accuracy.
[0192] The grammatical framework described herein enables a reduction in the overhead cost of transmitting data compared to some known systems. When residual data is not used to reconstruct a representation of a given image at a high quality level, the grammatical framework described herein may involve up to 3 bytes of overhead for a given image. When residual data is used to reconstruct a representation at a high quality level, up to 43 bytes of overhead cost may be involved for a given image. This is in contrast to some known systems, which may involve an overhead cost of between 108 and 188 bytes per image. Thus, by using the grammatical framework described herein, the amount of information generated, stored, processed and / or transmitted in a given period of time is significantly reduced.
[0193] 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 processing configuration data, the method comprising: for each image in a set of images, deriving a representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels using a first representation of the image at a second quality level in the hierarchical structure having a plurality of quality levels, the second quality level being of higher quality than the first quality level; outputting, for each image in the set of images, the representation of the image at the first quality level for processing by a decoder; and Output configuration data for processing by the decoder to enable the decoder to detect whether to use residual data for a given image in the set of images to reconstruct the first representation of the given image based on the value of a residual usage parameter included in the configuration data, wherein the value of the residual usage parameter specifies whether to use the residual data to reconstruct the first representation of the given image, the residual data being capable of being used to reconstruct the first representation using a second representation of the image at the second quality level, the second representation being obtained based on the representation of the image at the first quality level, the residual data being derived based on the first representation and the second representation.
2. A method according to claim 1, comprising outputting the residual data for one or more selected images of the set of images.
3. The method of claim 1, comprising outputting the residual data for each image in the set of images.
4. The method according to any one of claims 1 to 3, wherein the configuration data is output for each image in the set of images.
5. The method according to any one of claims 1 to 3, wherein the configuration data is output for the set of images a number of times which is less than the number of images in the set of images.
6. A method according to any one of claims 1 to 3, wherein the configuration data corresponds to a plurality of images in the set of images.
7. A method according to any one of claims 1 to 3, comprising performing a byte-by-byte processing of the configuration data.
8. A method for processing a representation of an image, the method comprising: for each image in a set of images, obtaining a representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the representation of the image at the first quality level being derived by an encoder using a first representation of the image at a second quality level in the hierarchical structure, the second quality level being of a higher quality than the first quality level; detecting whether to use residual data for a given image in the set of images to reconstruct the first representation of the given image based on a value of a residual usage parameter included in the received configuration data, wherein the value of the residual usage parameter specifies whether to use the residual data to reconstruct the first representation of the given image, the residual data being usable to reconstruct the first representation using a second representation of the image at the second quality level, the second representation being obtained based on the representation of the image at the first quality level, the residual data being derived based on the first representation and the second representation; and For each image in the set of images, the representation of the image at the first quality level is processed based on the received configuration data.
9. A method according to claim 8, comprising receiving the residual data for one or more selected images.
10. The method of claim 8, comprising, in response to detecting that the residual data for the given image is not to be used to reconstruct the first representation of the given image: processing the representation of the given image at the first quality level by upsampling the representation of the given image at the first quality level to obtain the second representation of the given image at the second quality level; and The second representation of the given image is output.
11. A method according to any one of claims 8 to 10, comprising, in response to detecting that the residual data for the given image is to be used to reconstruct the first representation of the given image: processing the representation of the given image at the first quality level by upsampling the representation of the given image at the first quality level to obtain the second representation of the given image at the second quality level; obtaining the first representation of the given image using the residual data for the given image and the second representation of the given image; and The first representation of the given image is output.
12. A device comprising an encoder configured to: for each image in a set of images, deriving a representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels using a first representation of the image at a second quality level in the hierarchical structure, the second quality level being of higher quality than the first quality level; outputting, for each image in the set of images, the representation of the image at the first quality level for processing by a decoder; and Output configuration data for processing by the decoder to enable the decoder to detect whether to use residual data for a given image in the set of images to reconstruct the first representation of the given image based on the value of a residual usage parameter included in the configuration data, wherein the value of the residual usage parameter specifies whether to use the residual data to reconstruct the first representation of the given image, the residual data being capable of being used to reconstruct the first representation using a second representation of the image at the second quality level, the second representation being obtained based on the representation of the image at the first quality level, the residual data being derived based on the first representation and the second representation.
13. A decoder configured to: For each image in a set of images, obtaining a representation of the image at a first quality level in a hierarchical structure having a plurality of quality levels, the representation of the image at the first quality level being derived by an encoder using a first representation of the image at a second quality level in the hierarchical structure, the second quality level being of higher quality than the first quality level; detecting whether to use residual data for a given image in the set of images to reconstruct the first representation of the given image based on a value of a residual usage parameter included in the received configuration data, wherein the value of the residual usage parameter specifies whether the first representation of the given image is to be reconstructed using the residual data, the residual data being usable for reconstructing the first representation using a second representation of the image at the second quality level, the second representation being obtained based on the representation of the image at the first quality level, the residual data being derived based on the first representation and the second representation; and For each image in the set of images, the representation of the image at the first quality level is processed based on the received configuration data.
14. A computer program product comprising instructions which, when executed by a processor, implement the steps of the method of any one of claims 1 to 11.
15. A computer-readable medium comprising the computer program product of claim 14.
Citation Information
Patent Citations
Method And Apparatus For Complexity Scalable Video Encoding And Decoding
US20070286283A1
Video compression using differences between a higher and a lower layer
WO2018046940A1