Method for processing configuration data

By using residual data and configuration data in the signal processing system, upsampling and downsampling of images are solved, and the problem of large amount of signal reconstruction information and high complexity of decoder processing in the prior art is solved, thereby improving signal quality recovery and decoder reliability effects.

CN119316604APending Publication Date: 2025-01-14V NOVA INT LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411431313.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2018-10-31
Filing Date
2019-10-30
Publication Date
2025-01-14

AI Technical Summary

Technical Problem

The existing scalable encoding system has problems such as large amount of information, high complexity of decoder processing and insufficient error processing capabilities in the signal reconstruction process, which affects signal quality recovery and the reliability of the decoder.

Method used

By introducing residual data and configuration data into the signal processing system, the image upsampling and downsampling operations are performed using communication between the encoder and the decoder to generate and process representations at relatively high quality levels, thereby reducing transmission The amount of information can improve the adaptability and error handling capabilities of the decoder.

Benefits of technology

It effectively reduces the amount of data transmitted, improves the reliability and processing efficiency of the decoder, and ensures reliable reconstruction of the signal at different quality levels.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119316604A_ABST
    Figure CN119316604A_ABST
Patent Text Reader

Abstract

A method of processing configuration data includes obtaining residual data based on a first representation of an image at a first quality level in a hierarchical hierarchy having a plurality of quality levels and a second representation of the image at the first quality level, the second representation is based on a representation of the image at a second quality level in the hierarchical hierarchy, the residual data being usable by a decoder to reconstruct the first representation using a lower second representation; obtaining first configuration data and second configuration data related to processing of the residual data; generating a configuration message including a header portion and a payload portion, the payload portion including a first payload portion and a subsequent second payload portion; and outputting the configuration message for processing by the decoder to enable the decoder to reconstruct the first representation using one or both of the first configuration data and the second configuration data.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is a divisional application of the Chinese patent application with application number "2019800858475", application date October 30, 2019, and name "Method, device, computer program and computer-readable medium for scalable video coding and transmission". Technical Field

[0003] 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

[0004] 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.

[0005] 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.

[0006] There are some considerations regarding signal reconstruction in scalable coding systems. One such consideration is the amount of information stored, used and / or transmitted. The amount of information may vary, for example, according to the desired quality level of the reconstructed signal, the nature of the information used during reconstruction, and / or the manner in which such information is configured. Another consideration is the ability of the decoder to reliably process received information. One factor that may affect decoder reliability is the ability of the decoder to handle errors and / or to handle unexpected, modified and / or unrecognizable information received by the 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 configuration message according to an embodiment of the present invention;

[0012] Figure 4 is a flow chart depicting an example of a method according to an embodiment of the present invention;

[0013] Figure 5 A schematic diagram showing another example of a configuration message according to an embodiment of the present invention;

[0014] Figure 6 is a flowchart depicting another example of a method according to an embodiment of the present invention; and

[0015] Figure 7 A schematic block diagram of an example of an apparatus according to an embodiment of the present invention is shown. DETAILED DESCRIPTION

[0016] 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.

[0017] 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.

[0018] 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.

[0019] 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.

[0020] 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.

[0021] 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.

[0022] 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.

[0023] 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.

[0024] 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.

[0025] 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.

[0026] 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.

[0027] First reference Figure 2A, the first device 202 obtains a first representation 206 of an image at a relatively high quality level. The representation of a given image is a representation of the data included in the image. The image may be a given frame of a video. The first representation 206 of the image at a relatively high quality level will be referred to as "input data" hereinafter because, in this example, it is the data provided as input to an encoder in the first device 202. The first device 202 may receive the input data 206. For example, the first device 202 may receive the input data 206 from at least one other device. The first device 202 may be configured to receive consecutive portions of the input data 206, such as consecutive frames of a video, and to perform the operations described herein on each consecutive frame. For example, a video may include frames F1, F2, . . . , F T , and the first device 202 can process each of these frames in sequence.

[0028] 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 lower 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.

[0029] 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.

[0030] In some examples, generating processed data 213 involves encoding downsampled data 212. Encoding 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 may be generated not in the first device 202, but by an encoding device separate from the first device 202. The encoded image may be part of an H.264 encoded video. Generating 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 processed data 213 may include the output of such an encoder.

[0031] 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 the 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.

[0032] 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).

[0033] 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.

[0034] 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.

[0035] The first device 202 obtains data 214 based on the data at the relatively lower quality level. As described above, the data at the relatively lower 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 (e.g., from an encoding-decoding operation) corrected using correction data. Figure 2A and Figure 2B In the example of , data 214 is a second representation of an image at a relatively high quality level, and the first representation of the image at the relatively high quality level is input data 206. The second representation at the relatively high quality level can be considered to be an initial or predicted representation of the image at the relatively high quality level. In this example, the first device 202 derives data 214 by performing an upsampling operation on data at a relatively low quality level. Data 214 will be referred to as "upsampled data" hereinafter. However, in other examples, for example, in the case where data 212 is not derived by downsampling the input data 206, one or more other operations may be used to derive data 214. It should be noted that references to relatively high and relatively low quality levels may correspond to references to first and second quality levels, wherein the second quality level is higher than the first quality level. As described herein, in some cases, quality levels may correspond to different spatial resolutions.

[0036] 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.

[0037] 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.

[0038] 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.

[0039] 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 .

[0040] 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.

[0041] 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.

[0042] 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.

[0043] The second device 204 uses the data at the relatively lower quality level to derive the upsampled data 214. As described above, the data at the relatively lower 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 lower quality level. The upsampled data 214 is a preliminary representation of the image at the relatively higher quality level. The upsampled data 214 may be derived by performing an upsampling operation on the data at the relatively lower quality level.

[0044] 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.

[0045] 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.

[0046] 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.

[0047] 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.

[0048] Another consideration related to the use of such configuration data is the amount of processing and / or processing complexity involved at the decoder to process the configuration data. Compared to some known techniques, the examples described herein reduce the amount of processing performed by the decoder to obtain and / or process configuration data.

[0049] 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.

[0050] Reference Figure 3 , schematically illustrating an example of a configuration message 300. A device (eg, a first device 102 including an encoder 108) generates the configuration message 300 and outputs the configuration message 300 for processing by another device (eg, a second device 104 including a decoder 110).

[0051] Configuration message 300 includes a header portion 310 and a payload portion 320. Payload portion 320 includes configuration data 350. Configuration data 350 is related to processing of residual data (eg, residual data 216 as described above). In some examples, configuration message 300 is an integer number of bytes long.

[0052] The header 310 includes a message type parameter 312. The message type parameter 312 specifies the message type of the configuration message 300. The message type specified by the message type parameter 312 may indicate the manner in which the configuration message 300 is to be processed. An example message type is an image set configuration message. An image set configuration message may correspond to multiple images in a set of images. Another example message type is an image configuration message. An image configuration message may correspond only to a given image in a set of images. Another example message type is an encoded data message. The encoded data message may be arranged to include encoded residual data for a given image. Another example message type is an encoder metadata message. The encoder metadata message may include metadata related to one or more encoder characteristics. Another example message type is a decoder control message. The decoder control message may include instructions for controlling a decoder.

[0053] The message type parameter 312 indicates that the payload portion 320 has a given payload format. The payload format of the payload portion 320 can be determined based on the message type of the configuration message 300. The payload format can define a set of configuration parameters of the configuration data 350 included in the payload portion 320. In some examples, the payload format of the payload portion 320 defines a specific processing logic that specifies the manner in which the contents of the payload portion 320 are to be processed. The payload portion 320 has a format size. The format size of the payload portion 320 corresponds to the payload format of the payload portion 320. 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 320.

[0054] The header section 310 also includes a payload size parameter 314. The payload size parameter 314 specifies the actual size of the payload section 320. The actual size of the payload section 320 may be an integer number of bytes.

[0055] In some examples, the value of the payload size parameter 314 is stored in a fixed length element. The fixed length element storing the value of the payload size parameter 314 may include a predetermined number of bits in a given byte of the header section 310. For example, the value of the payload size parameter 314 may be stored in a fixed length element that includes three bits in a single-byte header section.

[0056] In some examples, payload size parameter 314 includes a reference to a payload size lookup table that stores possible values ​​for the actual size of payload portion 320. For example, payload size parameter 314 may include a value that may be used to obtain the actual size of payload portion 320 from the payload size lookup table.

[0057] In some examples, the value of the payload size parameter 314 is stored in a variable length element. For example, when the actual size of the payload portion 310 is not one of the values ​​specified in the payload size lookup table, this may be the case. The actual size of the payload portion 310 specified by the payload size parameter 314 can have a variable bit length. The variable length element includes an integer number of bytes. In some examples, at least one byte of the variable length element has one or more predetermined bits, and the one or more predetermined bits are arranged to indicate whether the variable length element includes one or more additional bytes except at least one given byte. For example, a given byte of a variable length element may include seven bits arranged to store the payload size parameter 314, and a bit for indicating whether there are other bytes after the variable length element relays a given byte. In this way, regardless of the bit length of the payload size parameter 314, the payload size parameter 314 can be represented using a variable length element. The variable length element includes the minimum number of bytes that can be used to store the value of the payload size parameter 314.

[0058] In some examples, data is stored in a fixed length element, which indicates that the value of the payload size parameter 314 is stored in a variable length element. For example, if it is determined that the value of the payload size parameter 314 is one of a predetermined set of 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 314 is not one of a predetermined set of 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 included in the fixed length element that the variable length element is being used to store the value.

[0059] In this example, the header section 310 includes only a message type parameter 312 and a payload size parameter 314. In other examples, the header section 310 includes one or more other parameters. In some examples, the header section 310 is one byte long. For example, the message type parameter 312 may be represented by five bits, and the payload size parameter 314 may be represented by the remaining three bits of the single-byte header section 310. In other examples, such as where a variable length element is used to represent the actual size of the payload section 320, the header section 310 includes more than one byte.

[0060] The actual size of the payload portion 320 may be the same as or different from the format size of the payload portion 320. Regardless of whether the actual size and the format size are the same, a payload size parameter 314 specifying the actual size is included in the header 310 of the configuration message 300.

[0061] When the likely size of the payload portion 320 (i.e., the format size) can be inferred from the message type parameter 312, including a payload size parameter 314 that specifies the actual size of the payload portion 320 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 300 involves using a larger amount of data for the configuration message 300 than if the payload size parameter 314 was not included. However, including such a parameter in the configuration message 300 facilitates more efficient and reliable processing and / or improved error handling by the decoder 110 than if the payload size parameter 314 was not used, as will be described in more detail below.

[0062] refer to Figure 4 , shows an example of a method 400 for processing configuration data. The method 400 may be performed by a device including a decoder (such as the second device 104 described above).

[0063] 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 the encoder 108. The residual data 216 may be used to reconstruct the first representation 206 of the image at a relatively high quality level using the second representation 214 of the image at a relatively high quality level in the hierarchical structure. The second representation 214 is based on a representation 222 of the image at a relatively low quality level in the hierarchical structure. In some examples, data that may be used to derive the representation 222 at the relatively low quality level is received from the encoder 108.

[0064] At item 410, a configuration message is received. In this example, the received configuration message is the configuration message 300 described above. The configuration message 300 may be received from the encoder 108.

[0065] At item 420, the received configuration message 300 is processed using the message type parameter 312 and the payload size parameter 314. The configuration message 300 is processed to obtain the configuration data 350 stored in the payload portion 320 of the configuration message 300.

[0066] In some examples, processing the configuration message 300 includes parsing a header portion 310 of the configuration message 300 to obtain a message type parameter 312 and a payload size parameter 314. Based on the payload size parameter 314, an actual size of the payload portion 320 is determined. Based on the message type parameter 312, a message type of the configuration message 300 is determined. The configuration message 300 may be processed according to the determined message type and the determined actual size of the payload portion 320.

[0067] Processing the configuration message 300 may include parsing the payload portion 320 to obtain the configuration data 350. In some examples, processing the configuration message 300 includes tracking the number of bytes of the configuration message 300 that have been read while parsing the payload portion 320. If a discrepancy is determined between the number of bytes read while parsing the payload portion 320 and the actual size of the payload portion 320 specified by the payload size parameter 314, the decoder 110 may detect the occurrence of an under-read. Under-reads may be a potential source of errors when processing configuration messages.

[0068] In some examples, the payload size parameter 314 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 300. The sequence of configuration messages may form part of the configuration data. The configuration message 300 and the next configuration message may correspond to the same image or different images. For example, the configuration message 300 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.

[0069] In some examples, processing configuration message 300 includes discarding at least a portion of the contents of payload portion 320. Payload size parameter 314 may be used to discard at least a portion of the contents of payload portion 320. For example, decoder 110 may skip to a next configuration message, the start of which has been determined using payload size parameter 314, without processing at least a portion of the contents of payload portion 320.

[0070] Therefore, using the payload size parameter 314 enables the decoder 110 to handle possible underreading in an efficient manner. Using the payload size parameter 314 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 314 is not used, using such parameters to process the configuration message 300 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.

[0071] In some examples, processing configuration message 300 includes parsing the first content of payload portion 320. The first content corresponds to the format size of payload portion 320. The first content may include configuration data 350. The first content may include a first set of configuration parameters. Processing configuration message 300 may also include discarding the remaining content of payload portion 320 using payload size parameter 314. The remaining content of payload portion 320 includes content in payload portion 320 that is not included in the first content. The remaining content includes other configuration data. The remaining content may include another set of configuration parameters. The presence of the remaining content may be determined by detecting a difference between the format size and the actual size of payload portion 320. 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 payload portion 320 other than the content expected based on the format size.

[0072] At item 430, the first representation 206 is reconstructed using the obtained configuration data 350. The first representation 206 may be reconstructed from the obtained configuration data 350 by using the residual data 216.

[0073] Reference Figure 5 , schematically illustrates an example of a configuration message 500. A device (eg, a first device 102 including an encoder 108) may generate the configuration message 500 and output the configuration message 500 for processing by another device (eg, a second device 104 including a decoder 110). Figure 5 Some of the items shown are Figure 3 The items shown are similar. Therefore, similar items have been given corresponding reference numerals (increased by 200).

[0074] Configuration message 500 includes a header portion 510 and a payload portion 520. Header portion 510 includes a message type parameter 512. Message type parameter 512 specifies the message type of configuration message 500. The message type indicates the manner in which configuration message 500 is to be processed. Header portion 510 also includes a payload size parameter 514. Payload size parameter 514 specifies the actual size of payload portion 520.

[0075] In this example, the payload section 520 includes a first payload portion 522. The first payload portion 522 includes first configuration data 552 related to the processing of the residual data 216. The payload section 520 also includes a second payload portion 524. In this example, the second payload portion 524 is arranged in the payload section 520 subsequently with respect to the first payload portion 522. The arrangement of the second payload portion 524 subsequently with respect to the first payload portion 522 can enable the first payload portion 522 to be received, processed, and / or parsed by the decoder 110 before the second payload portion 524 is received, processed, and / or parsed. The second payload portion 524 includes second configuration data 554 related to the processing of the residual data 216.

[0076] The first payload portion 522 and the second payload portion 524 together form the payload section 520 of the configuration message 500. Thus, the payload size parameter 514 indicates the total size of the first payload portion 522 and the second payload portion 524.

[0077] In some examples, first payload portion 522 includes all of first configuration data 552. In some examples, second payload portion 524 includes all of second configuration data 554. As such, first configuration data 552 and second configuration data 554 may be stored in separate portions of payload portion 520 of configuration message 500. Storing first configuration data 552 in a separate portion of payload portion 520 relative to second configuration data 554 facilitates efficient processing of the contents of payload portion 520 by a decoder, particularly for a decoder that is configured not to use and / or process one of first configuration data 552 and second configuration data 554.

[0078] In some examples, header section 510 does not specify the size of first payload section 522 and / or the size of second payload section 524. In some examples, the size of first payload section 522 can be determined based on the format size indicated by message type parameter 512. Thus, the format size indicated by message type parameter 512 can reflect the contents of first payload section 522, but not the contents of second payload section 524.

[0079] One or both of first configuration data 552 and second configuration data 554 may be used to reconstruct input data 206 using residual data 216. In some examples, second configuration data 554 includes supplemental configuration data. The supplemental configuration data is arranged to supplement first configuration data 552.

[0080] The first configuration data 552 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 554 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.

[0081] In some examples, the first operating characteristic corresponds to a first version according to which a first set of one or more decoders are configured to operate, and the second operating characteristic corresponds to a different second version according to which a second set of one or more decoders are configured to operate. The second version may be a higher version relative to the first version. The first version and the second version may 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, second configuration data 554 is added to the configuration message containing the first configuration data 552 from the first version. The second configuration data 554 may, for example, be appended to the first configuration data 552.

[0082] Compared to the case of generating a new message type, adding the second configuration data 554 to the configuration message of the existing message type instead of generating a new message type to accommodate the second configuration data 554 reduces the amount of data stored, transmitted and / or processed. By modifying the configuration of the existing message type instead of 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, for example, 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.

[0083] In some examples, the decoder 110 cannot process the first payload portion 522 and the second payload portion 524 simultaneously. In one case, the encoder 108 may have undergone an update according to which the second configuration data 554 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 syntax. In such an example, there may be a difference in the format size of the payload portion 520 interpreted by the encoder 108 and the format size of the payload portion 520 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. Thus, including a payload size parameter 514 that specifies the actual size of the payload portion 520 facilitates more reliable processing by the decoder 110 , as described in more detail below.

[0084] 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).

[0085] At item 610, a configuration message 500 is received.

[0086] At item 620 , the configuration message 500 is processed to obtain one or both of the first configuration data 552 and the second configuration data 554 .

[0087] In some examples, for example, if decoder 110 is in the first group of decoders, first payload portion 522 is parsed by decoder 110, while second payload portion 524 is not parsed by decoder 110. Parsing first payload portion 522 without parsing second payload portion 524 enables decoder 110 to obtain first configuration data 552 instead of second configuration data 554. In some examples, for example, if decoder 110 is in the second group of decoders, second payload portion 524 is parsed by decoder 110, while first payload portion 522 is not parsed by decoder 110. Parsing second payload portion 524 without parsing first payload portion 522 enables decoder 110 to obtain second configuration data 554 instead of first configuration data 552. In some examples, for example, if decoder 110 is in the second group of decoders, first payload portion 522 and second payload portion 524 are both parsed to obtain both first configuration data 552 and second configuration data 554.

[0088] The payload size parameter 514 may 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 524 are discarded. The contents of the second payload portion 524 include the second configuration data 554. The contents of the second payload portion 524 may be discarded by using the total size of the payload portion 520 specified in the payload size parameter 514. For example, the decoder 110 may read the contents of the first payload portion 522 and then skip ahead to the next configuration message, the start of which has been located using the payload size parameter 514, without reading the contents of the second payload portion 524.

[0089] Using payload size parameter 514 to locate the start of the next message enables decoder 110 to synchronize with a byte stream including multiple configuration messages. Thus, decoder 110 can process configuration message 500 and locate the start of the next configuration message regardless of whether decoder 110 is in the first or second group of decoders.

[0090] At item 630, a first representation 206 of the image at a relatively high quality level is reconstructed. The first representation 206 is reconstructed using one or both of the first configuration data 552 and the second configuration data 554 obtained at item 620. In the event that the decoder 110 obtains both the first configuration data 552 and the second configuration data 554, the first representation 206 of the image is reconstructed using both the first configuration data 552 and the second configuration data 554. In the event that the decoder 110 processes one of the first payload portion 522 and the second payload portion 524 but does not process the other of the first payload portion 522 and the second payload portion 524, the first representation 206 of the image may be reconstructed using one of the obtained first configuration data 552 and the second configuration data 554. 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.

[0091] In some examples, byte-by-byte processing is performed on the configuration message 500. In byte-by-byte processing, data is processed on a byte-by-byte basis. Processing the configuration data in a byte-by-byte manner may be more efficient than processing the configuration data in a bit-by-bit manner. Bit-by-bit processing may involve tracking 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, this processing may be reduced. In some examples, when processing data in a byte-by-byte manner, the number of execution cycles may be reduced compared to a bit-by-bit manner.

[0092] In some examples, configuration data is written to a memory. If the configuration data is processed in a byte-by-byte manner, less processing may be involved when storing the configuration data in the memory and / or retrieving the configuration data from the memory than when the configuration data is processed in a bit-by-bit manner. The smallest unit of addressable memory may contain a byte. In this way, information may be stored in the memory in a byte-by-byte manner. Therefore, if the configuration data is packed into a sequence of bytes, fewer steps may be involved when storing the configuration data in the memory and / or retrieving the configuration data from the memory. By providing the configuration data to the memory in a byte-by-byte form, the amount of padding used to pack the configuration data into the addressable memory unit may also be reduced.

[0093] In addition, if the configuration data is arranged into a sequence of bytes, the transmission of the configuration data via a network such as the Internet can be performed more efficiently. Data can be transmitted over the Internet via the Transmission Control Protocol (TCP). TCP runs 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 (such as the Internet Protocol (IP)). The data stream can be obtained from a memory. The TCP segment can include an integer number of bytes. Thus, 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.

[0094] refer to Figure 7 , a schematic block diagram of an example of a device 700 is shown.

[0095] In an example, the device 700 includes an encoder. In another example, the device 700 includes a decoder.

[0096] Examples of apparatus 700 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 netbook, a notebook 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.

[0097] In this example, the device 700 includes one or more processors 701 configured to process information and / or instructions. The one or more processors 701 may include a central processing unit (CPU). The one or more processors 701 are coupled to a bus 702. The operations performed by the one or more processors 701 may be performed by hardware and / or software. The one or more processors 701 may include multiple processors located at the same location or multiple processors located at different locations.

[0098] In this example, device 700 includes computer usable volatile memory 703 configured to store information and / or instructions for one or more processors 701. Computer usable volatile memory 703 is coupled to bus 702. Computer usable volatile memory 703 may include random access memory (RAM).

[0099] In this example, device 700 includes a computer usable non-volatile memory 704 configured to store information and / or instructions for one or more processors 701. Computer usable non-volatile memory 704 is coupled to bus 702. Computer usable non-volatile memory 704 may include read only memory (ROM).

[0100] In this example, device 700 includes one or more data storage units 705 configured to store information and / or instructions. One or more data storage units 705 are coupled to bus 702. One or more data storage units 705 may include, for example, magnetic or optical disks and disk drives or solid state drives (SSDs).

[0101] In this example, the device 700 includes one or more input / output (I / O) devices 706 configured to transmit information to and / or from one or more processors 701. One or more I / O devices 706 are coupled to the bus 702. One or more I / O devices 706 may include at least one network interface. The at least one network interface may enable the device 700 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 706 may enable a user to provide input to the device 700 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 706 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.

[0102] Various other entities of the device 700 are depicted. For example, when present, the operating system 707, the data signal processing module 708, one or more other modules 709, and the data 710 are shown as residing in one of the computer usable volatile memory 703, the computer usable non-volatile memory 704, and the one or more data storage units 705, or in a combination thereof. The data signal processing module 708 may be implemented by computer program code stored in a memory location within the computer usable non-volatile memory 704, a computer readable storage medium within the one or more data storage units 705, and / or other tangible computer readable storage media. Examples of tangible computer readable storage media include, but are not limited to, optical media (e.g., CD-ROM, DVD-ROM, or Blu-ray), flash memory cards, floppy disks, or hard disks, or any other medium capable of storing computer readable instructions, such as firmware or microcode in at least one ROM or RAM or programmable ROM (PROM) chip, or as an application specific integrated circuit (ASIC).

[0103] The device 700 may thus include a data signal processing module 708, which may be executed by one or more processors 701. The data signal processing module 708 may be configured to include instructions to implement at least some of the operations described herein. During operation, the one or more processors 701 initiate, run, execute, interpret or otherwise perform the instructions in the signal processing module 708.

[0104] 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.

[0105] It should be understood that the device 700 may include Figure 7 More, fewer and / or different components than those depicted.

[0106] Device 700 may be located at a single location or may be distributed across multiple locations. Such locations may be local or remote.

[0107] 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.

[0108] 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: obtaining residual data based on a first representation of an image at a first quality level in a hierarchical structure having a plurality of quality levels and a second representation of the image at the first quality level, the second representation being obtained based on a representation of the image at a second quality level in the hierarchical structure, the residual data being usable by a decoder to reconstruct the first representation using the second representation, the second quality level being lower than the first quality level; obtaining first configuration data and second configuration data related to processing of the residual data, the first configuration data being related to a first set of one or more decoders having a first operating characteristic and the second configuration data being related to a second set of one or more decoders having a second operating characteristic; generating a configuration message comprising a header portion and a payload portion, the payload portion comprising a first payload part followed by a second payload part, the first payload part comprising the first configuration data and the second payload part comprising the second configuration data, the header portion comprising a payload size parameter indicating a total size of the first payload part and the second payload part; as well as The configuration message is output for processing by the decoder to enable the decoder to reconstruct the first representation using one or both of the first configuration data and the second configuration data.

2. The method of claim 1, wherein the header portion does not specify a size of the first payload portion.

3. A method according to claim 1 or claim 2, wherein the first payload part includes all of the first configuration data and the second payload part includes all of the second configuration data.

4. A method according to claim 1 or claim 2, wherein the second configuration data is supplementary configuration data arranged to supplement the first configuration data.

5. A method according to claim 1 or claim 2, wherein the first operating characteristic corresponds to a first version, according to which the first group of one or more decoders are configured to operate, and the second operating characteristic corresponds to a different second version, according to which the second group of one or more decoders are configured to operate. The method of claim 5 , wherein the second version is a higher version relative to the first version.

7. The method of claim 1 or claim 2, wherein the first operating characteristic is related to a processing capability of the first set of one or more decoders, and the second operating characteristic is related to a processing capability of the second set of one or more decoders.

8. The method according to claim 1 or claim 2, wherein the header includes a message type parameter, the message type parameter specifies a message type of the configuration message, the message type indicates a manner in which the configuration message is to be processed.

9. The method of claim 8, wherein the message type parameter indicates that the payload part has a given payload format, wherein a format size of the payload part having the payload format is predetermined or can be determined from the content of the payload part.

10. The method of claim 9, wherein the format size is the same as the total size of the first payload portion and the second payload portion.

11. A method according to claim 1 or claim 2, comprising performing byte-by-byte processing on the configuration data.

12. A method for processing configuration data, the method comprising: receiving a configuration message comprising a header and a payload portion, the payload portion comprising a first payload part and a subsequent second payload part, the first payload part comprising first configuration data and the second payload part comprising second configuration data, the first configuration data and the second configuration data relating to processing of residual data, the residual data being usable for reconstructing a first representation of an image at a first quality level in a hierarchical structure having a plurality of quality levels using a second representation of the image at the first quality level, the second representation being obtained based on a representation of the image at the second quality level in the hierarchical structure, the first configuration data relating to a first group of decoders having a first operating characteristic and the second configuration data relating to a second group of decoders having a second operating characteristic, wherein the header comprises a payload size parameter indicating a total size of the first payload part and the second payload part, the second quality level being lower than the first quality level; processing the configuration message to obtain one or both of the first configuration data and the second configuration data; as well as The first representation is reconstructed using the one or both of the first configuration data and the second configuration data.

13. The method according to claim 12, comprising: processing the first payload portion and the second payload portion to obtain the first configuration data and the second configuration data, respectively; as well as The first representation is reconstructed using the first configuration data and the second configuration data.

14. The method according to claim 12, comprising: processing the first payload portion without processing the second payload portion to obtain the first configuration data without obtaining the second configuration data; as well as The first representation is reconstructed using the first configuration data and not using the second configuration data.

15. The method of claim 14, comprising discarding contents of the second payload portion.

16. A method according to any one of claims 12 to 14, comprising using the payload size parameter to determine the start of a next configuration message.

17. A method according to any one of claims 12 to 14, wherein the header includes a message type parameter, which specifies the message type of the configuration message and indicates that the payload part has a given payload format, wherein the format size of the payload part having the payload format is predetermined or can be determined from the content of the payload part.