The present invention is to provide a decoder which detects a start code in a layered coded data stream on a layer basis for improving an error detecting function to reduce possible damaging effects, and replaces a detected start code with minor error by an appropriate start code to maintain decoding.
The decoder includes a unique pattern detector which detects a start code pattern in a layered coded data stream, a start code identifier which identifies the detected start code pattern based on a given condition, a similarity calculator which calculates similarity as an evaluation between the error detected start code pattern and an expected start code based on layer, and a similarity based replacement identifier which replaces the error detected start code pattern by the most appropriate replacement selected based on the similarity based evaluation, and otherwise the priority based replacement identifier which selects a replacement by the priority order.
|
0. 30. A method of data reception, comprising:
(a) identifying a layer of data being as that last decoded;
(b) observing an input bitstream to detect start codes;
(c) choosing, among plural types of start codes, one start code that is predicted to be upcoming when the data processing behavior must be initialized, or more than one start code, each of which is predicted to be upcoming, based on the type of data being processed corresponding to the layer identified in (a), wherein start codes of higher-order layers are prioritized relative to start codes of lower-order layers;
(d) comparing a detected start code with the one or more start codes chosen in (c);
(e) updating the type of data being processed depending on the type of data corresponding to a start code chosen in (c) when the detected start code matches the expected start code;
(f) processing data in accordance with the updated type of data; and
(g) resynchronizing with the input bitstream when the comparison of (d) shows a mismatch.
29. A method of receiving data of a plurality of hierarchical layers, each including a digital coded bit sequence, the method comprising the steps of:
identifying a layer of data being decoded as that last decoded;
watching an incoming bit sequence and detecting a start code;
selecting a set of more than one start code expected next to be detected from among a number of start codes, the step of selecting responsive to the step of identifying and based on the layer of data determined by the step of identifying as that last decoded, wherein start codes of higher-order layers are selected before start codes of lower-order layers;
comparing the detected start code with each of the expected start codes;
replacing the detected start code by one of the expected start codes when the detected start code matches no expected start code;
updating the layer of data in process based on one of the detected start code and the replaced start code; and
decoding data based on the updated layer of data being decoded.
28. A method of receiving hierarchical data of a plurality of layers, each including a digital coded bit sequence, the method comprising the steps of:
identifying a layer of data being decoded as that last decoded;
watching said incoming bit sequence and detecting a start code;
selecting a set of more than one start code expected next to be detected from among a number of start codes, the step of selecting responsive to the step of identifying and based on the layer of data determined by the step of identifying as that last decoded, wherein start codes of higher-order layers are selected before start codes of lower-order layers;
comparing the detected start code with each of the expected start codes;
updating the layer of data being decoded based on a layer of data corresponding to the detected start code when the detected start code matches one of the expected start codes;
decoding data based on the updated layer of data; and
resynchronizing to the incoming bit sequence when the detected start code matches no expected start code.
22. A data receiving apparatus, receiving a hierarchical data stream including a digital coded bit sequence, where a start code, indicating a layer of data, and corresponding data to the start code occur in a regular order under a prescribed rule, there being a plurality of data layers, and whereby a layer of incoming data corresponding to any one of a subset of the plurality of layers is expected based on a layer of data being decoded, and decoding data based on a layer of data corresponding to a start code, the data receiving apparatus comprising:
(a) a data supplying unit for supplying a data stream;
(b) a data decoding unit for decoding data in the data stream supplied by the data supplying unit;
(c) an analyzing unit for predicting possible layers for the incoming data based on the layer of data being decoded, for detecting a start code in a data stream corresponding to one of the possible layers, and for recognizing the layer of incoming data based upon the detected start code, wherein start codes of higher-order layers are recognized before start codes of lower-order layers; and
(d) a controller for controlling the data decoding unit based on the layer of data recognized in the analyzing unit.
12. A method for receiving and decoding a bit stream of data blocks, each comprising a digital coded bit sequence, which are organized in a hierarchy including a plurality of layers, each layer having associated therewith one of a plurality of layer types, wherein at least one layer of a high-order layer type is composed of at least one layer of a lower-order layer type, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream,
generating a set of expected start codes based upon the data indicating the layer wherein said set of expected start codes lists start codes of data blocks in layers of said high-order layer type before start codes of data blocks in layers of said lower-order layer type;
continuously comparing data in the bit stream with the set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream;
updating the last layer data with data indicating the layer corresponding to the detected start code; and
decoding the block data corresponding to the detected start code in accordance with the detected start code.
19. A method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream;
generating a set of expected start codes based upon the data indicating the layer;
continuously comparing data in the bit stream with the set of expected start codes, including steps of
detecting start code prefixes in the bit stream, and
comparing start codes corresponding to the prefixes with set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream;
updating the last layer data with data indicating the layer corresponding to the detected start code;
decoding the block data corresponding to the detected start code in accordance with the detected start code;
calculating a probability of occurrence for each expected start code if no expected start code identically matches the start code corresponding to the detected start code prefix; and
selecting a one of said expected start codes with the highest probability of occurrence as the detected start code.
15. A method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream;
generating a set of expected start codes based upon the data indicating the layer;
continuously comparing data in the bit stream with the set of expected start codes, including steps of
detecting start code prefixes in the bit stream, and
comparing start codes corresponding to the prefixes with set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream;
updating the last layer data with data indicating the layer corresponding to the detected start code;
decoding the block data corresponding to the detected start code in accordance with the detected start code;
suspending block data decoding if a detected start code is not selected;
performing error masking if a detected start code is not selected; and
ceasing the error masking and resuming block data decoding when a start code is detected corresponding to a layer which is the same as or higher in the layer hierarchy than the layer in which no selection was made.
21. A method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream;
generating a set of expected start codes based upon the data indicating the layer;
continuously comparing data in the bit stream with the set of expected start codes, including steps of
detecting start code prefixes in the bit stream, and
comparing start codes corresponding to the prefixes with set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream, including steps of
locally decoding block data corresponding to a detected start code prefix for a predetermined time period in accordance with a plurality of the expected start codes,
detecting a number of decoding errors for the block data for each of the plurality of expected start codes, and
selecting as the detected start code a one of the plurality of expected start codes in which the fewest decoding errors were detected;
updating the last layer data with data indicating the layer corresponding to the detected start code;
decoding the block data corresponding to the detected start code in accordance with the detected start code.
16. A method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream;
generating a set of expected start codes based upon the data indicating the layer;
continuously comparing data in the bit stream with the set of expected start codes, including steps of
detecting start code prefixes in the bit stream, and
comparing start codes corresponding to the prefixes with set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream;
updating the last layer data with data indicating the layer corresponding to the detected start code;
decoding the block data corresponding to the detected start code in accordance with the detected start code;
generating a replacement start signal if one of the expected start codes does not match the start code corresponding to the detected start code prefix;
selecting one or more expected start codes based on the last layer;
calculating a hamming distance of the start code corresponding to the detected start code prefix to each of the expected start codes; and
selecting as the detected start code a one of the expected start codes with the smallest hamming distance to the start code corresponding to the detected start code prefix.
24. A data receiving apparatus, receiving a data stream where a start code, indicating a type of data, and corresponding data to the start code occur in a regular order under a prescribed rule, whereby a type of incoming data is expected based on a type of data in process, and processing data based on a type of data corresponding to a start code, the data receiving apparatus comprising:
(a) a data supplying unit for supplying a data stream;
(b) a data processing unit for processing data in the data stream supplied by the data supplying unit;
(c) an analyzing unit for predicting possible types for the incoming data based on the type of data in process, and for detecting a start code in a data stream corresponding to one of the possible types, and for recognizing the type of incoming data based upon the detected start code, the analyzing unit including
data type memory for storing a type of data in process; and
start code detector for watching an incoming data stream and detecting a start code, for generating more than one type of start codes expected next to be detected in reference to the type of data stored in the data type memory, for storing a type of data corresponding to the detected start code in the data type memory when the detected start code matches one of the expected start codes, and for outputting the type of data corresponding to the detected start code to the controller;
(d) a controller for controlling the data processing unit based on the type of data recognized in the analyzing unit; and
(e) resynchronization means for synchronizing to the data stream when a detected start code matches no expected start code.
27. A data receiving apparatus, receiving a data stream where a start code, indicating a type of data, and corresponding data to the start code occur in a regular order under a prescribed rule, there being a plurality of data types, and whereby a type of incoming data corresponding to any one of a subset of the plurality of types is expected based on a type of data in process, and processing data based on a type of data corresponding to a start code, the data receiving apparatus comprising:
(a) a data supplying unit for supplying a data stream;
(b) a data processing unit for processing data in the data stream supplied by the data supplying unit;
(c) an analyzing unit for predicting possible types for the incoming data based on the type of data in process, and for detecting a start code in a data stream corresponding to one of the possible types, and for recognizing the type of incoming data based upon the detected start code, the analyzing unit comprising data type memory for storing a type of data in process, a start code detector for watching an incoming data stream and detecting a start code, for generating more than one type of start codes expected next to be detected in reference to the type of data stored in the data type memory, for storing a type of data corresponding to the detected start code in the data type memory when the detected start code matches one of the expected start codes, and for outputting the type of data corresponding to the detected start code to the controller; and
(d) a controller for controlling the data processing unit based on the type of data recognized in the analyzing unit;
wherein the data stream is organized in layers, and wherein the data type memory stores layer information of data in process.
0. 31. A data receiving apparatus, receiving a data stream where a start code, indicating a type of data, and corresponding data to the start code occur in a regular order under a prescribed rule, there being a plurality of data types, and whereby a type of incoming data corresponding to any one of a subset of the plurality of types is expected based on a type of data in process, and processing data based on a type of data corresponding to a start code, the data receiving apparatus comprising:
(a) a data supplying unit for supplying a data stream;
(b) a data processing unit for processing data in the data stream supplied by the data supplying unit;
(c) an analyzing unit for recognizing the upcoming type of data being processed by:
(c-1) identifying a layer of data being as that last decoded;
(c-2) observing said data stream to detect start codes;
(c-3) choosing, among plural types of start codes, one start code that is predicted to be upcoming when the data processing unit must be initialized, or more than one start code each of which is predicted to be upcoming, based on the type of data being processed, wherein start codes of higher-order layers are prioritized relative to start codes of lower-order layers;
(c-4) comparing a detected start code with the start code or more than one start codes chosen in (c-3);
(c-5) updating the type of data being processed depending on the type of data corresponding to the detected start code when it matches the expected start code chosen in (c-3);
(d) a controller for controlling the data processing unit based on the type of data being processed in the analyzing unit; and
(e) a resynchronization unit for finding the nest resynchronization point in said data stream when the comparison of (c-4) shows a mismatch.
26. A data receiving apparatus, receiving a data stream where a start code, indicating a type of data, and corresponding data to the start code occur in a regular order under a prescribed rule, there being a plurality of data types, and whereby a type of incoming data corresponding to any one of a subset of the plurality of types is expected based on a type of data in process, and processing data based on a type of data corresponding to a start code, the data receiving apparatus comprising:
(a) a data supplying unit for supplying a data stream;
(b) a data processing unit for processing data in the data stream supplied by the data supplying unit;
(c) an analyzing unit for predicting possible types for the incoming data based on the type of data in process, and for detecting a start code in a data stream corresponding to one of the possible types, and for recognizing the type of incoming data based upon the detected start code, the analyzing unit comprising data type memory for storing a type of data in process, a start code detector for watching an incoming data stream and detecting a start code, for generating more than one type of start codes expected next to be detected in reference to the type of data stored in the data type memory, for storing a type of data corresponding to the detected start code in the data type memory when the detected start code matches one of the expected start codes, and for outputting the type of data corresponding to the detected start code to the controller, and a start code replacement unit which replaces a detected start code by one of the expected start codes when the detected start code matches no expected start code; and
(d) a controller for controlling the data processing unit based on the type of data recognized in the analyzing unit.
20. A method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the method comprising the steps of:
storing data indicating the layer corresponding to the last start code received in the data stream;
generating a set of expected start codes based upon the data indicating the layer;
continuously comparing data in the bit stream with the set of expected start codes;
selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is similar to data in the bit stream;
updating the last layer data with data indicating the layer corresponding to the detected start code;
decoding the block data corresponding to the detected start code in accordance with the detected start code;
generating a replacement start signal if one of the expected start codes does not match the start code corresponding to the detected start code prefix;
selecting one or more expected start codes based on the last layer output;
calculating a hamming distance of the start code corresponding to the detected start code prefix to each of the expected start codes;
calculating a probability of occurrence for each expected start code if no expected start code identically matches the start code corresponding to the detected start code prefix; and
selecting as the detected start code a one of the expected start codes with the smallest value of W, where
W=D[Pi(L)]−E[Pi(L)] where
Pi(L) is an expected start code
D[Pi(L)] is the hamming distance of the start code, and
E[Pi(L)] is the probability of occurrence of the expected start code.
1. An apparatus for receiving and decoding a bit stream of data blocks, each comprising a digital coded bit sequence, which are organized in a hierarchy including a plurality of layers, each layer having associated therewith one of a plurality of layer types, wherein at least one layer of a high-order layer type is composed of at least one layer of a lower-order layer type, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer type of the data block, the apparatus comprising:
a layer memory for storing data indicating the layer type corresponding to the last start code received in the bit stream, the layer memory having a last layer type output,
a first expected start code selector coupled to receive the last layer type output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying a set of expected start codes based on the last layer type received, wherein start codes of data blocks in the high-order layers are identified as expected start codes before start codes of data blocks in the lower-order layers;
start code detector, coupled to received the bit stream and the first expected start code selector output, for detecting start codes by comparing data in the bit stream with the set of expected start codes, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer type;
means responsive to the start code detector output for updating the layer memory with data indicating the layer type corresponding to the detected start code; and
a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code.
11. An apparatus for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the apparatus comprising:
a layer memory for storing data indicating the layer corresponding to the last start code received in the data stream, the layer memory having a last layer output;
a first expected start code selector coupled to receive the last layer output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying a set of expected start codes based on the last layer;
a start code detector, coupled to receive the bit stream and the first expected start code selector output, for detecting start codes by comparing data in the bit stream with the set of expected start codes, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer;
means responsive to the start code detector output for updating the layer memory with data indicating the layer corresponding to the detected start code; and
a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code; wherein the start code detector comprises a replacement determiner for selecting a detected start code from the set of expected start codes, the replacement determiner locally decoding the block data for a predetermined time period in accordance with a plurality of the expected start codes and detecting a number of decoding errors for the block data for each of the plurality of expected start codes and selecting as the detected start code a one of the plurality of expected start codes in which the fewest decoding errors were detected.
3. An apparatus for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the apparatus comprising:
a layer memory for storing data indicating the layer corresponding to the last start code received in the data stream, the layer memory having a last layer output,
a first expected start code selector coupled to receive the last layer output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying a set of expected start codes based on the last layer;
a start code detector, coupled to receive the bit stream and the first expected start code selector output, for detecting start codes by comparing data in the bit stream with the set of expected start codes, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer, the start code detector including
a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having an output on which possible start codes corresponding to detected start code prefixes are placed, and
a start code identifier, coupled to receive the output of the unique pattern detector and the last layer output from the layer memory, for comparing the possible start codes from the unique pattern detector with the set of expected start codes, the start code identifier having a start code identifier output in a first state which indicates that an error has occurred, if no expected start code is similar to the possible start codes, and in a second state which identifies the detected start code and the corresponding layer, if an expected start code is similar to one of the possible start codes;
means responsive to the start code detector output for updating the layer memory with data indicating the layer corresponding to the detected start code; and
a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code, wherein the block data decoder is responsive to the start code identifier output being in the first state for suspending block data decoding, and wherein the apparatus further comprises a display controller, the display controller responsive to the start code identifier output being in the first state to perform error masking corresponding to the error.
8. An apparatus for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the apparatus comprising:
a layer memory for storing data indicating the layer corresponding to the last start code received in the data stream, the layer memory having a last layer output;
a first expected start code selector coupled to receive the last layer output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying a set of expected start codes based on the last layer;
a start code detector, coupled to receive the bit stream and the first expected start code selector output, for detecting start codes by comparing data in the bit stream with the set of expected start codes, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer;
means responsive to the start code detector output for updating the layer memory with data indicating the layer corresponding to the detected start code; and
a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code; wherein the start code detector comprises:
a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having a unique pattern detector output on which possible start codes corresponding to detected start code prefixes are placed,
a start code matching identifier, coupled to receive the unique pattern detector output and the first expected start code selector output, for comparing the possible start code from the unique pattern detector with the set of expected start codes, the start code matching identifier generating a replacement start signal output if the possible start code does not match any of the expected start codes, and
a start code replacement unit, responsive to the replacement start signal output, the start code replacement unit comprising,
a second expected start code selector for selecting one or more expected start codes based on the last layer and generating an output indicating the expected start codes,
a priority assigning numerator, coupled to receive expected start codes from the second expected start code selector and to receive the last layer output, for calculating and generating an output indicating a probability of occurrence for each expected start code received from the second expected start code selector, and
a priority based replacement identifier, coupled to receive the output of the priority assigning numerator, for selecting and generating a start code identifier output indicating the one of the expected start codes with the highest probability of occurrence.
5. An apparatus for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block, the apparatus comprising:
a layer memory for storing data indicating the layer corresponding to the last start code received in the data stream, the layer memory having a last layer output;
a first expected start code selector coupled to receive the last layer output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying a set of expected start codes based on the last layer;
a start code detector, coupled to receive the bit stream and the first expected start code selector output, for detecting start codes by comparing data in the bit stream with the set of expected start codes, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer;
means responsive to the start code detector output for updating the layer memory with data indicating the layer corresponding to the detected start code; and
a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code; wherein the start code detector comprises:
a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having a unique pattern detector output on which possible start codes corresponding to detected start code prefixes are placed,
a start code matching identifier, coupled to receive the unique pattern detector output and the first expected start code selector output, for comparing the possible start code from the unique pattern detector with the set of expected start codes, the start code matching identifier generating a replacement start signal output if the possible start code does not match any of the expected start codes, and
a start code replacement unit, responsive to the replacement start signal output, the start code replacement unit comprising,
a second expected start code selector for selecting one or more expected start codes based on the last layer, and generating an output indicating the expected start codes,
a similarity calculator, coupled to receive expected start codes from the second expected start code selector and the possible start code, for calculating and generating an output indicating a hamming distance of the possible start code to each of the expected start codes from the second expected start code selector, and
a similarity based replacement identifier, coupled to receive the output of the similarity calculator, for selecting and generating a start code identifier output indicating the one of the expected start codes with the smallest hamming distance to the possible start code.
2. An apparatus as set for in
a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having an output on which possible start codes corresponding to detected start code prefixes are placed, and
a start code identifier, coupled to receive the output of the unique pattern detector and the last layer output from the layer memory, for comparing the possible start codes from the unique pattern detector with the set of expected start codes, the start code identifier having a start code identifier output in a first state which indicates that an error has occurred, if no expected start code is similar to the possible start codes, and in a second state which identifies the detected start code and the corresponding layer, if an expected start code is similar to one of the possible start codes.
4. An apparatus as set forth in
6. An apparatus as set forth in
7. An apparatus as set forth in
9. An apparatus as set forth in
10. An apparatus as set forth in
13. A method as set forth in
detecting start code prefixes in the bit stream, and
comparing start codes corresponding to the prefixes with set of expected start codes.
14. A method as set forth in
suspending block data decoding if a detecting start code is not selected, and
performing error masking if a detected start code is not selected.
17. A method as set forth in
18. A method as set forth in
determining for each expected start code, each bit of the expected start code which does not match the corresponding bit of the start code corresponding to the detected start code prefix,
weighting each of the bits based on its bit position to generate a weighted bit value, and
summing all of the weighted bit values.
23. A data receiving apparatus of
data layer memory for storing a layer of data being decoded; and
start code detector for watching an incoming data stream and detecting a start code, for generating more than one start code expected next to be detected in reference to the layer of data stored in the data layer memory, for storing a layer of data corresponding to the detected start code in the data layer memory when the detected start code matches one of the expected start codes, and for outputting the layer of data corresponding to the detected start code to the controller.
25. A data receiving apparatus of
|
1. Field of the Invention
The present invention relates to a data receiving method and apparatus, and more specifically to a decoder which deals with a coded data stream in a regularly organized layered structure of user information including video, audio, data and so forth.
2. Description of the Related Art
It has been a common practice to use a start code as a signal for synchronization or for execution startup of a process. Successful detection of a start code in a data stream has long been a challenge. It is also important to deal successfully with a situation where a start code pattern is detected by error and, particularly, to maintain a decoding operation without interruption by an error detection. However, no effective and satisfactory research has been conducted in this field.
Japanese Unexamined Patent Publication No. 288129/1989 discloses a conventional system which tries to detect a start code of a fixed bit pattern within a maximum detection tolerable error of one-bit. The conventional art is designed to avoid an error-related suspension of decoding operations when a one-bit error pattern of a start code is detected.
The conventional start code detector of
The start code pattern generator 53 presents all the patterns in
Thus, the error detection evading method implemented in the conventional start code detector works with the detection tolerable capacity of one bit error. The conventional start code detector can perform a successful detection of a start code if the start code is erroneous by no more than one bit. In other words, an incoming bit pattern is examined not only with a correct start code pattern but with all of its one-bit error patterns in order to successfully detect a start code with a maximum of a one-bit error in its bit pattern.
The error detection may lead to a suspension of an operation. In this respect, the conventional start code detector is effective to evade error detection in a bit stream. However, the conventional start code detector is effective only under the specific condition that a single type of start code of fixed-bit length is used in the data stream. The conventional method of evading error detection can deal only with a single type of start code provided in a bit stream. Consequently, the conventional start code decoder cannot effectively deal with a data stream with two or more types of start codes which are to be detected or identified.
For example, a start code is defined as a specific coded word and used as a start delimiter of a layer as well as a starter of data in a coded data stream organized based on a digital video compression method which is prescribed in ISO/IEC 11172-2 (MPEG-1 video). This type of coded data stream contains two or more types of 32-bit start codes, each of which consists of a start code prefix followed by a start code value. The start code prefix is a string of unique twenty four bits which indicates a start code. The start code value is a string of eight bits which identifies the type of start code.
A start code in this type of coded data stream is detected or identified by recognizing the type of start code by the eight-bit start code value after detecting the unique twenty-four-bit start code prefix. The conventional detection error evading method with a detection tolerable capacity of one-bit error may be used to detect the unique start code prefix. However, the conventional method is of no use for the detection of a start code value which can be a plurality of values, some of which differ from one another by one bit. Application of the conventional method to a start code detection with this coded data stream may cause serious decoding damage in a decoder.
In the view of the foregoing problems, it is an object of the present invention to provide a decoder for decoding data in a coded data stream which can minimize video data damage by error detection of a start code or specific code word.
It is another object of the present invention to provide a decoder which tries to maintain an operation when detecting a start code or specific code word with minor or bit error by using the most similar replacement to the detected code of others.
It is a further object of the present invention to provide a decoder which can mask an error by limiting the area and period of error masking on the display when a detected error start code cannot be replaced.
It is a further object of the present invention to provide a data receiving apparatus which can minimize damage to video data by error detection.
It is a further object of the present invention to realize a data receiving method for minimizing error detection which can be implemented in a decoder for decoding data in a data stream or in a data receiving apparatus.
These and other objects are accomplished by the following aspects of the present invention.
According to one aspect of the present invention, an apparatus for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block may include a layer memory for storing data indicating the layer corresponding to the last start code received in the data stream, the layer memory having a last layer output, a start code detector, coupled to receive the bit stream and the last layer output, for detecting start codes by comparing data in the bit stream with a set of expected start codes, the set of expected start codes being selected responsive to the last layer output, the start code detector selecting one of the expected start codes as a detected start code, if one of the expected start codes is acceptably similar to data in the bit stream, the start code detector having a start code detector output which identifies the detected start code and its corresponding layer, means responsive to the start code detector output for updating the layer memory with data indicating the layer corresponding to the detected start code, and a block data decoder, responsive to the detected start code output from the start code detector, for decoding the data block corresponding to the detected start code.
The start code detector may include a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having an output on which possible start codes corresponding to detected start code prefixes are placed, and a start code identifier, coupled to receive the output of the unique pattern detector and the last layer output from the layer memory, for comparing the possible start codes from the unique pattern detector with one or more expected start codes based on the last layer output, the start code identifier having a start code identifier output in a first state which indicates that an error has occurred, if no expected start code is acceptably similar to the possible start code, and in a second state which identifies the detected start code and the corresponding layer, if an expected start code is acceptably similar to the possible start code.
The block data decoder is responsive to the start code identifier output being in the first state for suspending block data decoding, and the apparatus may further include a display controller, the display controller responsive to the start code identifier output being in the first state to perform error masking corresponding to the error.
The apparatus may further include means for instructing the display controller to cease the error masking and instructing the block data decoder to resume block data decoding when the start code identifier next detects a start code corresponding to a layer which is the same as or higher in the layer hierarchy.
The start code detector may include a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having a unique pattern detector output on which possible start codes corresponding to detected start code prefixes are placed, a first expected start code selector coupled to receive the last layer output from the layer memory, the first expected start code selector selecting and generating a first expected start code selector output identifying one or more expected start codes based on the last layer, a start code matching identifier, coupled to receive the unique pattern detector output and the first expected start code selector output, for comparing the possible start code from the unique pattern detector with the one or more expected start codes based on the last layer output, the start code matching identifier generating a replacement start signal output if the possible start code does not match any of the expected start codes, and a start code replacement unit, responsive to the replacement start signal output. The start code replacement unit may include a second expected start code selector for selecting one or more expected start codes based on the last layer, and generating an output indicating the expected start codes, a similarity calculator, coupled to receive expected start codes from the second expected start code selector and the possible start code, for calculating and generating an output indicating a Hamming distance of the possible start code to each of the expected start codes from the second expected start code selector, and a similarity based replacement identifier, coupled to receive the output of the similarity calculator, for selecting and generating a start code identifier output indicating the one of the expected start codes with the smallest Hamming distance to the possible start code.
The Hamming distances may be calculated by determining the number of bits of each of the expected start codes which do not match the corresponding bit of the possible start code.
The Hamming distances may be calculated for each expected start code by determining each bit of the expected start code which does not match the corresponding bit of the detected start code, weighting each of the bits based on its bit position to generate a weighted bit value and summing all of the weighted bit values.
The start code detector nay include a unique pattern detector coupled to receive the bit stream and detect start code prefixes, the unique pattern detector having a unique pattern detector output on which possible start codes corresponding to detected start code prefixes are placed, a first expected start code selector coupled to receive the last layer output from the layer memory, the expected start code selector selecting and generating a first expected start code selector output identifying one or more expected start codes based on the last layer output, a start code matching identifier, coupled to receive the unique pattern detector output and the first expected start code selector output, for comparing the possible start code from the unique pattern detector with the one or more expected start codes based on the last layer output, the start code matching identifier generating a replacement start signal output if the possible start code does not match any of the expected start codes, and a start code replacement unit, responsive to the replacement start signal output. The start code replacement unit may include a second expected start code selector for selecting one or more expected start codes based on the last layer and generating an output indicating the expected start codes, a priority assigning numerator, coupled to receive expected start codes from the second expected start code selector and to receive the last layer output, for calculating and generating an output indicating a probability of occurrence for each expected start code received from the second expected start code selector, and a priority based replacement identifier, coupled to receive the output of the priority assigning numerator, for selecting and generating a start code identifier output indicating the one of the expected start codes with tile highest probability of occurrence.
The priority assigning numerator output may indicate priority of each expected start code by a numerical value based on probability of occurrence relative to other expected start codes.
The priority assigning numerator output may indicate priority of each expected start code by its order of probability from most likely to least likely relative to other expected start codes without indicating actual probability of occurrence.
The start code detector may include a replacement determiner for selecting a detected start code from the expected start codes, the replacement determiner locally decoding the block data for a predetermined time period in accordance with a plurality of the expected start codes and detecting the number of decoding errors for the block data for each of the plurality of expected start codes and selecting as the detected start code a one of the plurality of expected start codes in which the fewest decoding errors were detected.
According to another aspect of the present invention, a method for receiving and decoding a bit stream of data blocks which are organized in a hierarchical order of layers, each of the data blocks corresponding to one of the layers and including a start code which identifies the layer of the data block. The method may include the steps of storing data indicating the layer corresponding to the last start code received in the data stream, continuously comparing data in the bit stream with a set of expected start codes, the set of expected start codes being selected responsive to the last layer, selecting one of the expected start codes as a detected start code based on the comparison, if one of the expected start codes is acceptably similar to data in the bit stream, updating the last layer data with data indicating the layer corresponding to the detected start code, and decoding the block data corresponding to the detected start code in accordance with the detected start code.
The comparing step may include detecting start code prefixes in the bit stream, and comparing start codes corresponding to the prefixes with one or more of the expected start codes.
The method may further include the steps of suspending block data decoding if a detected start code is not selected, and performing error masking if a detected start code is not selected.
The method may further include the step of ceasing the error masking and resuming block data decoding when a start code is detected corresponding to a layer which is the same as or higher in the layer hierarchy than the layer in which no selection was made.
The selecting step may include generating a replacement start signal if one of the expected start codes does not match the start code corresponding to the detected start code prefix, selecting one or more expected start codes based on the last layer, calculating a Hamming distance of the start code corresponding to the detected start code prefix to each of the expected start codes, and selecting as the detected start, code a one of the expected start codes with the smallest Hamming distance to the start code corresponding to the detected start code prefix.
The Hamming distance calculating step includes the step of determining the number of bits of each of the expected start codes which do not match the corresponding bit of the start code corresponding to the detected start code prefix.
The Hamming distance calculating step for each expected start code may include the steps of determining for each expected start code, each bit of the expected start code which does not match the corresponding bit of the start code corresponding to the detected start code prefix, weighting each of the bits based on its bit position to generate a weighted bit value, and summing all of the weighted bit values.
The method may further include the step of calculating a probability of occurrence for each expected start code if no expected start code identically matches the start code corresponding to the detected start code prefix, and selecting a one of said expected start codes with the highest probability of occurrence as the detected start code.
The selecting step may include the steps of generating a replacement start signal if one of the expected start codes does not match the start code corresponding to the detected start code prefix, selecting one or more expected start codes based on the last layer output, calculating a Hamming distance of the start code corresponding to the detected start code prefix to each of the expected start codes, calculating a probability of occurrence for each expected start code if no expected start code identically matches the start code corresponding to the detected start code prefix, and selecting as the detected start code a one of the expected start codes with the smallest value of W where,
W=D[Pi(L)]−E[Pi(L)]
where
The selecting step may include the steps of locally decoding block data corresponding to a detected start code prefix for a predetermined time period in accordance with a plurality of the expected start codes, detecting the number of decoding errors for the block data for each of the plurality of expected start codes, and selecting as the detected start code a one of the plurality of expected start codes in which the fewest decoding errors were detected.
In the drawings;
FIG. 36-a,b,c shows different possible types of a regularly organized layered structure in a bit stream according to another embodiment of the present invention;
Embodiment 1
With reference to
A bit stream of coded video data decoded in the inventive decoder is organized in layers based on this hierarchy as shown in
Referring to
Consequently, a layered bit stream of MPEG-1 video data is organized under such a consistent form that incoming data can be predicted in a bit stream. Specifically, sequence data can be followed by GOP data, extension data or user data, GOP data can be followed by picture data, extension data or user data. Picture data can be followed by slice data, extension data or user data. Slice data can be followed by slice data, picture data, GOP data or sequence data. No other data can occur in a bit stream of MPEG-1 video data.
A series of decoding operations performed in the inventive decoder of this embodiment are now described with reference to
When input data in the incoming bit stream 1 through a transmission line, the preprocessor 2 buffers a certain amount of bits of the data. The preprocessor 2 then adjusts a processing speed for the buffered bits by absorbing a speed difference between a transmission speed with which the bits are transmitted and a decoding speed with which the bits will be processed in the decoder. The preprocessor 2 also separates a processing unit of fixed-bit pattern or the preprocessed data 3 from the buffered bits in accordance with a control signal from the controller 10. The preprocessed data 3 is output to the header analyzer 4 and the block-data decoder 7.
An operation of the decoder starts when the sequence_start_code, a start delimiter of a sequence layer, is detected in the header analyzer 4 after the decoder has been initialized or a software is reset.
In a normal decoding operation, the start code detector 15 in the header analyzer 4 constantly watches the preprocessed data 3 to detect a start code. When a start code is detected and identified by the type, the start code detector 15 issues layer information 19 and start code information 20 based on a detected start code. The layer information 19 is input to the layer memory 17 for storage and also to the header information decoder 16 for informing of the type of layer of the detected start code. The start code information 20 is input in the header information decoder 16 to inform of the type of start code detected. The header information decoder 16 decodes header data elements of the preprocessed data 3 corresponding to the detected start code based on the layer information 19 and the start code information 20. Consequently, the header information decoder 16 outputs decoded header information 6. The decoded header information 6 can be used as required in the controller 10 or other units in the decoder for controlling decoding or displaying.
When completed decoding of a series of header data from a sequence header through a slice header in a bit stream, the header information decoder 16 issues a header decoding end signal 21 to the start code detector 15 and the controller 10. In reception of the header decoding end signal 21, the controller 10 starts the block-data decoder 7 when receiving the header decoding end signal 21. The block-data decoder 7 decodes digital video data in the preprocessed data 3 corresponding to the header information analyzed in the header analyzer 4 based on a MPEG-1 video reconstruction algorithm. Consequently, decoded digital video data 9 in the block-data decoder 7 are stored in the memory 12 and can be read as required by the block-data decoder 7 or the display controller 11. A series of normal decoding operations discussed here are executed in synchronization.
When a start code pattern with a substantial error (i.e., an error of sufficient magnitude that a normal decoding operation is not maintainable) is detected, the start code detector 15 informs the controller 10 by a control signal. Further, the start code detector 15 informs the controller 10 of the layer in which the substantial error was detected. The layer in which the substantial error was detected can be informed by latest layer information 18 which is stored in the layer memory 17 of the previously detected start code. When a substantial error is detected by the start code detector 15, the controller 10 assumes that the start code detector 15 has been desynchronized and resets the synchronization of the decoder 15 based on the layer with the substantial error or the latest layer information 18. Further, the controller 10 requests the display controller 11 to give an optimal error masking to the corresponding area of the video image in a frame on the display which is based on the layer in which the substantial error detection occurred until the decoder recovers proper synchronization.
Synchronization can be recovered through the following process: The start code detector 15 selects start codes as a signal for synchronization based on a layer in which a substantial error was detected. The start code detector 15 discards all the subsequent data until the selected start codes. In the meantime, all the decoding operations in the decoder are suspended. The display controller 11 continues the optimal error masking for an error area required by the controller 10. A detailed discussion of the resynchronization will be made later.
The unique pattern detector 22 watches incoming bits of the preprocessed data 3 to detect a unique 24-bit pattern “000001 in hexadecimial” or a start code prefix, indicating a start code, common to all types of start codes in FIG. 4. If the unique pattern detector 22 does not detect a start code prefix, it discards the preprocessed data 3 and observes the next incoming bits of the preprocessed data 3 for a start code prefix.
When the unique pattern detector 22 detects the unique 24-bit pattern in the incoming bits of the preprocessed data 3, it sends to the start code identifier 24 as a start code candidate 23 a 32-bit start code pattern comprising the detected unique 24-bit pattern followed by an eight-bit pattern.
The start code identifier 24 compares the eight-bit pattern of the start code candidate 23 with a start code pattern 26 generated in the start code pattern generator 25. As a result, the start code identifier 24 identifies the start code candidate 23 as one of the start codes listed in FIG. 4. Further, the start code identifier 24 examines and decides the propriety of the identified start code based on the place in the bit stream that the start code is detected.
The identified start code should be appropriate if it is the sequence_start_code detected in an initialized stage or a reset stage of the decoder. The identified start code should be appropriate, otherwise, if it is one of the start codes listed in
A start code identifying operation in the start code identifier 24 win be discussed later in more detail.
When the identified start code is appropriate the start code identifier 24 finally issues layer information 19 and start code information 20 based on the identified start code. The layer information 19 is input and stored in the layer memory 17 and also input in the header information decoder 16. The start code information 20 is input in the header information decoder 16. Consequently with these two pieces of information, the header information decoder 16 starts its operation.
When a start code is detected with a substantial error, the start code identifier 24 informs the controller 10 by a control signal of the substantial error, with which a normal decoding operation will not be maintained, and of the layer where the substantial error occurred.
Now, a series of start code identifying operations are detailed with reference to
With reference to
For example, when the latest layer information 18 indicates that the latest layer was a sequence, the expected start codes 28 according to the table in
When the start code candidate 23 is identified as an appropriate start code to be detected, the start code matching identifier 29 issues the layer information 19 and the start code information 20. With the layer information 19, the latest layer information in the layer memory 17 is updated as required. With the layer and start code information 19 and 20, the header information decoder 16 starts its operations and decodes header data following the identified start code as described earlier.
When a substantial error code is detected, the start code detector 15 assumes that the operation is desynchronized and tries to resynchronize itself to the incoming data bits in order to recover its normal operation. The resynchronization process includes error masking in the decoder. A series of resynchronizing operations involving error masking in the decoder are now detailed.
The start code detector 15 tries to synchronize itself to the incoming bits on a layer basis with MPEG-1 video data using a start code as a synchronization signal for resynchronization. A start code can serve to help synchronize the start code detector 15 for the bit synchronization operation. A start code has conventionally been used as a starter signal of a data effective signal for decoding, which can prove that data following a start code are effective. Consequently, data in a layer where a substantial error code has been detected are considered ineffective. The start code detector 15 discards data after the substantial error detection until it detects an optimal start code as a start delimiter of a layer and recovers synchronization. A start code used as the synchronization signal should be a start delimiter of the same layer as that in which a substantial error was detected. Next most preferably, the start code selected for the signal should be a start delimiter of the closest layer type which is higher than the layer with the error detection according to the hierarchy of a layered bit stream of MPEG-1 video data. In other words, it is desirable to recover synchronization in a bit stream as early as possible in order to shorten the period of time that the start code detector is desynchronized in order to minimize the possible damage to the video data. A start code of a sublayer or a lower level layer than that in which the error was detected can not be considered a synchronization signal. Data in a sublayer or a lower layer are likely to be affected and damaged by the error in the higher level layer. In this respect, if, for example, a slice layer has an error detection with the start code detector 15 desynchronized it is ideal to reset the desynchronization of the detector with the slice_start_code in the next slice layer.
In the case of a picture layer, for example, a normal decoding operation can be recovered when any of the picture_start_code, the group_start_code and the sequence_start_code is detected in order of preference.
Thus, the start code detector 15 resynchronizes itself using a start code as a synchronization signal. The specific code used for resynchronization is selected based on the layer of the detected error, as shown in FIG. 12.
While resynchronizing operations are occurring, error masking is implemented in the display controller 11. Error masking is maintained until a start code as a synchronization signal is detected. The display controller 11 tries to smooth an error damaged area in a frame on the display by using a pseudo-image with the following error masking techniques discussed below. The display controller 11 may mask error with a patching technique using a pseudo-image by borrowing the image neighboring an error damaged image in the same image frame when those images are considered similar to each other. The display controller 11 may mask error with a replacement technique using a pseudo-image made from previously processed decoded image data stored in the memory 12 for reference. When images in an error damaged area are considered the same or similar to the area of the same image address in a previous frame of the decoded image data stored in the memory 12, the damaged area images can be replaced with the image information of the corresponding area in a previous frame.
Error masking lasts from the detection of an error start code pattern with the start code detector until recovery of synchronism in the start code detector. The range or area of error masking in a bit stream or video data varies depending on the layer in which the error was detected, as
Thus, the decoders according to this embodiment can achieve effective error masking of video data on the display when an erroneous start code pattern is detected. The error masking is implemented by limiting the area of error masking during a resynchronizing operation with an optimal start code as a synchronization signal selected based on a layer with the error detection.
With further reference to the start code detecting operation discussed in the previous embodiment, a decoder of the invention can be designed to avoid an error-related suspension of decoding operations when the detected error is minor or a bit error. According to this embodiment, when a detected start code pattern is identified as none of the layer based expected start codes in the start code identifier, the decoder replaces the erroneous detected start code pattern with the most appropriate start code of all the layer based expected start codes in order not to suspend decoding operations in the decoder. Decoding will be maintained based on the replacement start code.
A start code replacement operation in the start code replacement unit 31 is now discussed with reference to
The Hamming distance is calculated using only the last eight bits of the 32 bit start code candidate 23 and expected start codes 28. As an example, let us assume that the sequence_start_code “000001B3 in hexadecimal” is detected when the latest layer information indicates a picture layer. Layer based expected start codes corresponding to that condition are a slice_start_code “00000101 in hexadecimial”, an extension_data_start_code “000001B5 in hexadecimal” and a user_data_start_code “000001B2 in hexadecimal” according to the table in FIG. 10. Then, the Hamming distances between the sequence_start_code and the expected start codes are respectively, 4 for the slice_start_code “00000101”, 2 for the extension_data_start_code, and 1 for the user_data_start_code. Consequently the expected start codes 28, the user_data_start_code has the smallest Hamming distance and is considered the most similar start code to the sequence_start_code.
In this case, the similarity based replacement identifier 34 decides that the user_data_start_code is the most appropriate replacement start code for the start code candidate 23, i.e., the sequence_start_code. The similarity based replacement identifier 34 then issues the layer information 19 and the start code information 20 based on the replacement start code, the user_data_start_code in this case. Data of the latest layer information 18 stored in the layer memory 17 is then updated as required according to the layer information 19. The header information decoder 16 starts with the layer information 19 and the start code information 20.
Referring to
With further reference to the previous embodiment, a decoder of the present invention can implement an improved method of similarity evaluation in the similarity calculator 32. This embodiment is further based on a well-known fact that two bit patterns may have the same Hamming distance to a third pattern, yet one of the two patterns may be much more similar than the other to the third bit pattern. For example, 00000010 is more similar to 00000001 than 10000000, even though 00000010 and 10000000 have the same Hamming distance to 00000001. Similarity based evaluation in this embodiment further implements a weighting method using such a consideration. An EXCLUSIVE-ORed value in each bit position of a bit pattern between two codes is weighted for similarity calculation by the following formula:
w(8)*d(8)+w(7)*d(7)+ . . . +w(1)*d(1)
Referring to the formula, “w(8)*d(8)”, for example, denotes that a weight coefficient in the eighth bit position of the bit pattern, “w(8)”, is multiplied by an EXCLUSIVE-ORed value in the eighth bit position in the bit pattern, “d(8)”. In this scheme w(8)>w(7)> . . . >w(1).
Embodiment 4
With further reference to
The start code replacement unit 31a according to this embodiment selects a replacement start code based on a priority based evaluation of layer based expected start codes. Layer based expected start codes in
According to the evaluation memory table in
For example, when the latest layer information is a sequence layer, the corresponding layer based expected start codes are the group_start_code “000001B8 in hexadecimal”, the extension_data_start_code “000001B5 in hexadecimal” and the user_data_start_code “000001B2 in hexadecimal”. Referring to the evaluation memory table in
Referring further to
The extension_data_start_code or the user_data_start_code is usually optional as stated earlier depending greatly on the organizer's intention. A value for the expectation of occurrence is assigned depending on the bit stream type, e.g., MPEG-1. With a bit stream which contains no extension data or user data, a probability of occurrence value of 10 is assigned to the group_start_code when the latest layer is a sequence, as shown in the alternative memory table in FIG. 23. If the bit stream contains extension data but no user data, a value of 8 out of 10 may be assigned to the group_start_code for the expectation of occurrence and a value of 2 out of 10 to the extension_data_start_code as shown in the evaluation memory table in FIG. 24.
With further reference to the evaluation memory tables in
After assigning priority to each of the layer based expected start codes based on the value in the evaluation memory table, the priority assigning numerator 37 sends the prioritized expected start codes to a priority based replacement identifier 39. The priority based replacement identifier 39 selects an expected start code with the highest expectation value of occurrence from among others as a replacement for the start code candidate. A decoding operation will be proceeded hereinafter based on the replacement start code in the corresponding layer.
Embodiment 5
With further reference to the evaluation memory table 40 in the priority assigning numerator 37 in
Embodiment 6
With further reference to the start code replacement unit 31, a decoder of the present invention can be provided with a start code replacement unit which employs the similarity calculator 32 of the second embodiment and the priority assigning numerator 37 of the fourth embodiment.
In the start code replacement unit 31b, the similarity calculator 32 calculates a code distance between the start code candidate 23 detected in the unique pattern detector 22 and each of the expected start codes 28. Meanwhile, the priority assigning numerator 37 prioritizes the expected start codes 28 with numerical values for the expectation or probability of occurrence. The replacement identifier 41 identifies the most appropriate start code to be detected among the similarity value 33 from the similarity calculator 32 and a prioritized value 38 from the priority assigning numerator 37 in accordance with a predetermined criterion.
The following is an exemplary evaluation formula for replacement:
W=D[Pi(L)]−E[Pi(L)]
Referring to the formula, Pi(L) is one of the expected start codes 28 Pi based on a layer L of the latest layer information. D[Pi(L)] is a code distance D between the start code candidate 23 and one of the layer based expected start codes Pi(L). E[Pi(L)] is a value of the expectation of occurrence of one of the layer based expected start code Pi(L). According to the formula, the start code with the best combination of a low code distance and a high expectation of occurrence will be selected as the replacement start code in the replacement identifier 41. A decoding operation will then be carried out based on the replacement start code in the corresponding layer.
Embodiment 7
With further reference to the sixth embodiment, the evaluation for replacement of the present invention can also be based on weighted values of similarity as set forth in the third embodiment or prioritized data with a priority number assigned to the probability of occurrence in the fifth embodiment.
Embodiment 8
Replacement evaluation of the present invention can be based on another formula.
In this embodiment, the similarity value 33 and the prioritized value 38 output from the similarity calculator 32 and the priority assigning numerator 37, respectively, in the sixth embodiment are weighted in the replacement identifier 41a. The similarity value 33 and the prioritized value 38 are weighted by multiplying a certain coefficient respectively in a weight coefficient B multiplier 43 and a weight coefficient A multiplier 42. A weight based value W′ is calculated by the following formula:
W′=A*D[Pi(L)]+B*E[Pi(L)]
This weight based calculation produces a choice of evaluation between similarity oriented evaluation and priority oriented evaluation.
An exemplary weight based evaluation method is described below. Slice layers tend to occur consecutively in an MPEG-1 video data bit stream due to its layered data structure. Therefore, it is relatively likely to detect a plurality of slice_start_codes consecutively. In other words, the slice_start_codes have the highest probability of occurrence value of all the start codes. For this reason, it is desirable to give more weight to the probability of occurrence, E, than the similarity of codes, D, in order to select a slice_start_code as a replacement with B≦A.
A decoding operation would then be carried out based on the replacement in the corresponding layer.
Embodiment 9
With further reference to the start code replacement unit in the fourth an sixth embodiments, a priority assigning numerator of the present invention can be controlled so as to update the probability of occurrence table for layer based expected start codes in a probability based evaluation.
The probability updating unit 45 updates values of the probability of occurrence to be assigned to a group of layer based expected start codes in the priority assigning numerator 37a based on the latest layer information 18 and the start code information 20 in advance. Updated values of the probability of occurrence for the group of layer based expected start codes in the probability updating unit 45 are input in the evaluation memory table 40a to update the previously assigned values. Each of the group layer based expected stat codes is assigned the updated evaluation memory table.
The updating method of the probability of occurrence according to this embodiment works as described below. A slice is a part of a picture. The last eight bits of a bit pattern of a slice start code indicate the location on the video screen. In this respect, neighboring slices tend to appear consecutively as stated earlier. It is highly likely therefore that a slice_start_code is followed by another slice_start_code. For this reason, it is desirable to assign a higher probability of occurrence to a slice_start_code in a group of layer based expected start codes when the previously detected start code is a slice_start_code. Thus, according to this embodiment, this method can update probability of occurrence values optimally based on detected start code patterns, which can accomplish a highly reliable start code replacement operation in the decoder.
Embodiment 10
With further reference to the start code replacement unit 31b in
The start code replacement operations discussed hereinbefore seem to bear common drawbacks in the following respects: A start code replacement unit replaces an erroneous start code with the most appropriate start code of all the layer based expected start codes. This operation, however, still does not guarantee that the replacement start code is correct. Furthermore, a replacement operation may result in two or more expected start codes being assigned the same replacement value. According to this embodiment, the start code replacement unit is designed to improve reliability of a start code replacement operation in view of those problems. In this embodiment, the corresponding received date is locally decoded in the start code replacement unit based on two or more start codes of a group of layer based expected start codes which are found to be equally appropriate candidates. A replacement start code is identified based on the decoded result of the replacement candidates for a predetermined time period. Decoding will be maintained based on the replacement start code.
Referring to
The replacement determiner 46 can be provided with the same function as those of the header information decoder 16 and the data-block decoder 7. Otherwise, the replacement determiner 46 can make the header information decoder 16 and the data-block decoder 7 locally decode the replacement candidates. Data following the replacement candidates are locally decoded for a required period of time. The time period can be a function of the layer of a replacement candidate or the latest layer information corresponding to a replacement candidate.
Thus, the decoder according to this embodiment can achieve effective and reliable decoding with an utmost appropriate replacement start code selected from among two or more replacement candidates.
Embodiment 11
With further reference to the tenth embodiment of the present invention, the replacement identifier 41b in the start code replacement unit 31c in
Embodiment 12
With still further reference to the tenth embodiment of the present invention, the replacement identifier 41b in the start code replacement unit 31c in
Embodiment 13
With further reference to the inventive arts of start code replacement discussed in the second through ninth embodiments, a decoder of the present invention can include a controller for controlling implementation of a start code replacement.
According to this embodiment a start code replacement operation is commenced only under the following conditions:
These conditions assumes that the decoder had been conducting a normal decoding operation before a start code pattern is detected by error. This further assumes that the start code candidate is one of the layer based expected start codes. Consequently, the start code candidate detected in a situation lacking these conditions is highly likely to be no start code. In other words, it is an error code to be discarded and if replacement is implemented based on the error code, decoding will be damaged.
The header decoding end signal 21 is output from the header information decoder 16 and indicates that the decoding of data corresponding to the previously detected start code at, for example C2, C3, C4 or C5 in
When the header information decoder 16 of the block-data decoder 7 is desynchronized, however, the header decoding end signal 21 or the data decoding end signal 8 is considered damaged and cannot be trusted to detect a start code. The error information 49 indicates whether those decoders are in synchronism. The number of minor errors counted in the controller 10 of the error information 49 indicates to some extent the decoding condition of those decoders. The replacement controller 48, therefore, refers to the error information 49 when receiving the block-data decoding end signal 8 or the header decoding end signal 21 from the block-data decoder 7 or the header information decoder 16. When the number on the error information 49 is less than a given number, the replacement controller 48 allows the start code replacement unit 31d to implement a start code replacement. Otherwise, the start code candidate is discarded without a replacement.
The replacement control method implemented in the start code detector 15b enables the inventive decoder to accomplish an effective decoding by reducing the possibility of an erroneous start code replacement. This can contribute to highly reliable decoding with replacement.
Embodiment 14
With further reference to the previous embodiments dealing with a bit stream of MPEG-1 video data, a decoder of the present invention can decode a bit stream of MPEG-2 video data with the same method implemented with MPEG-1 video data stated earlier in the previous embodiments. MPEG-2 video data is very similar to MPEG-1 video data in its bit stream syntax because the types of start codes and the layered structure of a bit stream adopted in MPEG-2 video data are almost the same as those of MPEG-1. In this respect, the inventive methods of a start code identification and replacement based on the layered bit stream organization with MPEG-1 video data can be applied to MPEG-2 video data. (The MPEG-2 video data will be standardized by the prescription of ISO/IEC 13818-2 and ITU-T H.262.)
The table of layer based expected start codes in
Thus, the decoder according to this embodiment is applicable to a bit stream intermingled with both of MPEG-1 and MPEG-2 data, as well as an exclusive bit stream of MPEG-1 video and data or MPEG-2 video data.
Embodiment 15
With further reference to the previous embodiments dealing with a start code in MPEG-1 and/or MPEG-2 video data as a synchronization signal, a decoder of the present invention can detect a system start code as well as a start code in MPEG-1 and/or MPEG-2 system data as a synchronization signal. The MPEG-1 and MPEG-2 system data have a multiplexed data structure including different media information of audio, video, data, etc. The inventive method of this embodiment provides a decoder to synchronize decoding between MPEG-1 and/or MPEG-2 video data and MPEG-1 and/or MPEG-2 audio data for effective start code identification and replacement.
Embodiment 16
With further reference to the previous embodiments dealing with a layered bit stream organized in a regular order from an upper level layer to a lower level layer, a decoder of the present invention can deal with a layered bit stream organized in various ways if organized in a regular order.
Referred to
According to this embodiment, the art of start code identification or replacement discussed in the previous embodiments can be applied to a data stream based on any type of layered structure shown in FIG. 36.
Embodiment 17
With further reference to the inventive arts implemented in a decoder for decoding data discussed in the previous embodiments, the arts can also be applied to a data receiver where data are received and used with no process of decoding.
A data receiver with the inventive arts can predict the type of incoming data based on the type of the processing data by using the nature of the inventive data stream organization by which data are input with a certain regularity. This can reduce a misuse of an error start code.
In a data receiving method relating to the present invention, an expected start code is selected based on the type of the processing data and the previously detected start code, and a newly detected start code is compared with the selected expected start code. When the detected start code doe not accord with the expected start code, the data receiver resynchronizes itself to the incoming data. This can recover a normal data receiving performance in an early stage and restore the receiving error automatically.
In a data receiving method relating to the invention, a detected start code pattern is replaced with an expected start code when they do not match, and a data receiving operation is continued based on the replacement start code. This can prevent the misuse of a detected error start code.
Kato, Yoshiaki, Murakami, Tokumichi, Sekiguchi, Shun-ichi
Patent | Priority | Assignee | Title |
7912159, | Jan 26 2004 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Enhanced denoising system |
8233549, | Jul 29 2008 | Canon Kabushiki Kaisha | Video receiving apparatus and video receiving method to address error in received video |
8588575, | Apr 26 2010 | Echostar Technologies International Corporation; ECHOSTAR TECHNOLOGIES L L C | Apparatus and methods for high-speed video presentation |
Patent | Priority | Assignee | Title |
4612613, | May 16 1983 | Data General Corporation | Digital data bus system for connecting a controller and disk drives |
5111292, | Feb 27 1991 | GENERAL ELECTRIC COMPANY, A CORP OF NY | Priority selection apparatus as for a video signal processor |
5117288, | Nov 27 1989 | LICENTIA PATENT-VERWALTUNGS-GMBH, THEODOR-STERN-KAI 1 D-6000 FRANKFURT AM MAIN 70, FED REP OF GERMANY | Method of decoding coded image data utilizing transmission error detection to interrupt decoding and up-dating |
5168356, | Feb 27 1991 | General Electric Company | Apparatus for segmenting encoded video signal for transmission |
5228028, | Feb 06 1990 | ALCATEL ITALIA S P A | System including packet structure and devices for transmitting and processing output information from a signal encoder |
5289276, | Jun 19 1992 | General Electric Company | Method and apparatus for conveying compressed video data over a noisy communication channel |
5327173, | Jun 19 1989 | Fujitsu Limited | Moving image coding apparatus and moving image decoding apparatus |
5414468, | May 19 1992 | GOLDSTAR CO , LTD | Apparatus for decoding variable length codes |
5603012, | Jun 30 1992 | TALON RESEARCH, LLC | Start code detector |
EP613300, | |||
WO9400952, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 08 2000 | Mitsubishi Denki Kabushiki Kaisha | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Nov 14 2005 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Apr 27 2006 | ASPN: Payor Number Assigned. |
Nov 12 2009 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Nov 08 2008 | 4 years fee payment window open |
May 08 2009 | 6 months grace period start (w surcharge) |
Nov 08 2009 | patent expiry (for year 4) |
Nov 08 2011 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 08 2012 | 8 years fee payment window open |
May 08 2013 | 6 months grace period start (w surcharge) |
Nov 08 2013 | patent expiry (for year 8) |
Nov 08 2015 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 08 2016 | 12 years fee payment window open |
May 08 2017 | 6 months grace period start (w surcharge) |
Nov 08 2017 | patent expiry (for year 12) |
Nov 08 2019 | 2 years to revive unintentionally abandoned end. (for year 12) |