U.S. patent application number 10/682832 was filed with the patent office on 2004-04-15 for moving picture coding and/or decoding systems, and variable-length coding and/or decoding system.
This patent application is currently assigned to Kabushiki Kaisha Toshiba. Invention is credited to Chujoh, Takeshi, Kikuchi, Yoshihiro, Nagai, Tateshi, Watanabe, Toshiaki.
Application Number | 20040071449 10/682832 |
Document ID | / |
Family ID | 27580014 |
Filed Date | 2004-04-15 |
United States Patent
Application |
20040071449 |
Kind Code |
A1 |
Chujoh, Takeshi ; et
al. |
April 15, 2004 |
Moving picture coding and/or decoding systems, and variable-length
coding and/or decoding system
Abstract
A coding and/or decoding system includes: a code-word table for
storing therein a plurality of code words, which are capable of
being decoded both in forward and backward directions and which are
formed so that delimiters of the code words are capable of being
identified by a predetermined weight of the code words, so that the
code words correspond to different source symbols; an encoder for
selecting code words corresponding to inputted source symbols from
the code-word table; and a synchronization interval setting part
for preparing coded data every predetermined interval using the
code words selected by the encoder and for inserting stuffing codes
capable of being decoded in the backward direction. Thus, it is
possible to decrease useless bit patterns to enhance the coding
efficiency by smaller amounts of calculation and storage, and to
decode variable length codes both in the forward and backward
directions even if the synchronization interval is set every
interval using the stuffing bits.
Inventors: |
Chujoh, Takeshi; (Tokyo,
JP) ; Watanabe, Toshiaki; (Yokohama-shi, JP) ;
Kikuchi, Yoshihiro; (Yokohama-shi, JP) ; Nagai,
Tateshi; (Tokyo, JP) |
Correspondence
Address: |
FOLEY AND LARDNER
SUITE 500
3000 K STREET NW
WASHINGTON
DC
20007
US
|
Assignee: |
Kabushiki Kaisha Toshiba
|
Family ID: |
27580014 |
Appl. No.: |
10/682832 |
Filed: |
October 10, 2003 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10682832 |
Oct 10, 2003 |
|
|
|
09476088 |
Jan 3, 2000 |
|
|
|
09476088 |
Jan 3, 2000 |
|
|
|
08924387 |
Sep 5, 1997 |
|
|
|
6104754 |
|
|
|
|
09476088 |
Jan 3, 2000 |
|
|
|
08616809 |
Mar 15, 1996 |
|
|
|
5852469 |
|
|
|
|
Current U.S.
Class: |
386/201 ;
375/240; 375/E7.212; 375/E7.263; 375/E7.279; 375/E7.28; 386/268;
386/328; 386/355 |
Current CPC
Class: |
H04N 19/61 20141101;
H04N 19/91 20141101; H04N 19/89 20141101; H04N 19/187 20141101;
H04N 19/159 20141101; H04N 19/46 20141101; H04N 19/37 20141101;
H04N 19/69 20141101; H04N 19/66 20141101; H04N 19/93 20141101 |
Class at
Publication: |
386/111 ;
375/240 |
International
Class: |
H04N 007/26; H04B
001/66 |
Foreign Application Data
Date |
Code |
Application Number |
Oct 25, 1995 |
JP |
7-277982 |
Mar 15, 1995 |
JP |
7-056285 |
Apr 14, 1995 |
JP |
7-089772 |
Oct 6, 1995 |
JP |
7-260383 |
Mar 8, 1996 |
JP |
8-080550 |
Sep 6, 1996 |
JP |
8-236779 |
Nov 11, 1996 |
JP |
8-298779 |
Mar 31, 1997 |
JP |
9-081614 |
Claims
What is claimed is:
1. A variable length coding system, which assigns, to a plurality
of source symbols, code words having a code length corresponding to
the occurrence probability of the source symbols and which outputs
code words corresponding to inputted source symbols as coded data,
said variable length coding system comprising: a code-word table
for storing therein a plurality of code words including codes
words, which are capable of being decoded both in forward and
backward directions and which are formed so that delimiters of the
code words are capable of being identified by a predetermined
weight of the code words, so that said plurality of code words
correspond to source symbols; code-word selecting means for
selecting code words corresponding to inputted source symbols from
the code-word table; and synchronization interval setting means for
preparing coded data for each of predetermined synchronization
intervals using code words selected by said code-word selecting
means and for inserting stuffing codes capable of being decoded in
the backward direction.
2. A variable length coding system as set forth in claim 1, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have first and second code
words, which are capable of being decoded both in the forward and
backward directions, said second code word being added to at least
one of the prefix and suffix of said first code word.
3. A variable length coding system as set forth in claim 1, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have first and second code
words, which are capable of being decoded both in the forward and
backward directions, said second code word being added at least one
of immediately before and after the respective bits of said first
code word.
4. A variable length coding system as set forth in claim 1, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have code words, which are
capable of being decoded both in the forward and backward
directions and between the respectively bits of which code words of
a fixed length code are inserted by predetermined bits.
5. A variable length coding system as set forth in claim 1, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have first and second code
words, which are capable of being decoded both in forward and
backward directions, said second code word being inserted between
the respective bits of said first code word.
6. A variable length coding system, which assigns, to a plurality
of source symbols, code words having a code length corresponding to
the occurrence probability of the source symbols and which outputs
code words corresponding to inputted source symbols as coded data,
said variable length coding system comprising: layering means for
layering inputted source symbols in accordance with importance; a
code-word table for storing therein a plurality of code words
including codes words, which are capable of being decoded both in
the forward and backward directions and which are formed so that
the delimiters of the code words are capable of being identified by
a predetermined weight of the code words, so that said plurality of
code words correspond to the source symbols; code-word selecting
means for selecting code words corresponding to the inputted source
symbols layered by said layering means, from the code-word table;
and synchronization interval setting means for preparing coded data
of each of layers for each of predetermined synchronization
intervals using code, words selected by said code-word selecting
means and for multiplexing the coded data of each of layers.
7. A variable length coding system as set forth in claim 6, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have first and second code
words, which are capable of being decoded both in the forward and
backward directions, said second code word being added to at least
one of the prefix and suffix of said first code word.
8. A variable length coding system as set forth in claim 6, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have first and second code
words, which are capable of being decoded both in the forward and
backward directions, said second code word being added at least one
of immediately before and after the respective bits of said first
code word.
9. A variable length coding system as set forth in claim 6, wherein
said code words, which are capable of being decoded both in the
forward and backward directions and which are formed so that the
delimiters of the code words are capable of being identified by a
predetermined weight of the code words, have code words, which are
capable of being decoded both in the forward and backward
directions and between the respectively bits of which code words of
a fixed length code are inserted by predetermined bits.
10. A variable length coding system as set forth in claim 6,
wherein said code words, which are capable of being decoded both in
the forward and backward directions and which are formed so that
the delimiters of the code words are capable of being identified by
a predetermined weight of the code words, have first and second
code words, which are capable of being decoded both in the forward
and backward directions, said second code word being inserted
between the respective bits of said first code word.
11. A variable length decoding system for decoding coded data,
which are of variable length codes of code words containing code
words capable of being decoded both in forward and backward
directions and into which stuffing codes capable of being decoded
in the backward direction are inserted every predetermined
synchronization interval, said variable length decoding system
comprising: synchronization interval detecting means for detecting
a synchronization interval of said coded data; forward decoding
means for decoding, in the forward direction, the coded data in the
synchronization interval detected by said synchronization interval
detecting means; and backward decoding means for decoding, in the
backward direction, the data in the synchronization interval
detected by said synchronization interval detecting means.
12. A variable length decoding system as set forth in claim 11,
wherein when a code word, which does not exist in a code-word table
of a variable length code, appears in the coded data, at least one
of said forward decoding means and said backward decoding means
detects the coded data as an error.
13. A variable length decoding system as set forth in claim 11,
wherein when the bit number of the decoded coded data is not
coincident with the bit number of transmitted coded data, at least
one of said forward decoding means and said backward decoding means
detects as an error.
14. A variable length decoding system as set forth in claim 11,
wherein when a decoded value obtained by decoding the coded data is
inadequate, at least one of said forward decoding means and said
backward decoding means detects as an error of decoding
processing.
15. A variable length decoding system as set forth in claim 11,
wherein said synchronization interval detecting means detects the
bit number of said coded data by decoding said stuffing code in the
backward direction.
16. A variable length decoding system for decoding coded data,
which are of variable length codes of code words containing code
words capable of being decoded both in forward and backward
directions and into which stuffing codes capable of being decoded
in the backward direction are inserted every predetermined
synchronization interval, said variable length decoding system
comprising: synchronization interval detecting means for detecting
a synchronization interval of said coded data; forward decoding
means for decoding, in the forward direction, the coded data in the
synchronization interval detected by said synchronization interval
detecting means; backward decoding means for decoding, in the
backward direction, the data in the synchronization interval
detected by said synchronization interval detecting means; and
decoded-value determining means for determining a decoded value on
the basis of decoded results of said forward decoding means and
said backward decoding means to output a final decoded result.
17. A variable length decoding system as set forth in claim 16,
wherein when a code word, which does not exist in a code-word table
of a variable length code, appears in the coded data, at least one
of said forward decoding means and said backward decoding means
detects the coded data as an error.
18. A variable length decoding system as set forth in claim 16,
wherein when the bit number of the decoded coded data is not
coincident with the bit number of transmitted coded data, at lease
one of said forward decoding means and said backward decoding means
detects as an error.
19. A variable length decoding system as set forth in claim 16,
wherein when a decoded value obtained by decoding coded data is
inadequate, at least one of said forward decoding means and said
backward decoding means detects as an error of decoding
processing.
20. A variable length decoding system as set forth in claim 16,
wherein when an error is detected by at least one of said forward
decoding means and said backward decoding means, said decoded-value
determining means uses a decoded result, which is presumed to be
correct, of decoded results of said forward decoding means and said
backward decoding means, and abandons a portion which is not able
to be decoded in both of the decoded results.
21. A variable length decoding system as set forth in claim 16,
wherein said decoded-value determining means: (a) uses, as decoded
values, only decoded values, in which no error is detected, when
said error is detected in both of said forward decoding means and
said backward decoding means and when the ways to the error
detected positions do not overlap with each other; (b) uses forward
decoded results as decoded values for code words immediately before
a position, at which said error is found by said forward decoding
means, and uses backward decoded results as decoded values for code
words after the position, when errors have been detected both in
said forward decoding means and said backward decoding means and
when the ways to error detected positions overlap with each other;
(c) uses forward decoded results as coded values for code words
immediately before a position, at which said error is detected, and
uses backward decoded results as decoded values for code words
after the position, when said error has been detected by only one
of said forward decoding means and said backward decoding means;
and (d) abandons decoded values for code words at the position, at
which said error has been decoded, and uses backward decoded
results as decoded values for code words after the position, when
said error has been detected for the same code word by said forward
decoding means and said backward decoding means.
22. A variable length decoding system as set forth in claim 16,
wherein said decoded-value determining means abandons all the
decoded results, in which there is a probability that an error may
exist, when said error has been detected by at least one of said
forward decoding means and said backward decoding means.
23. A variable length decoding means as set forth in claim 16,
wherein said synchronization interval detecting means detects the
bit number of said coded data by decoding said stuffing codes in
the backward direction.
24. A variable length decoding system for decoding coded data every
predetermined synchronization interval, said coded data comprising
variable length codes, which are of code words containing code
words capable of being decoded both in forward and backward
directions, and said coded data being prepared by code words
corresponding to layered source symbols to be multiplexed, said
variable length decoding system comprising: dividing means for
dividing said multiplexed coded data into respective layers;
synchronization interval detecting means for detecting a
synchronization interval of said coded data divided by said
dividing means; forward decoding means for decoding, in the forward
direction, the coded data in the synchronization interval detected
by said synchronization interval detecting means; backward decoding
means for decoding, in the backward direction, the data in the
synchronization interval detected by said synchronization interval
detecting means; and synthesizing means for synthesizing decoded
results of respective layers obtained by said forward decoding
means and said backward decoding means.
25. A variable length decoding system as set forth in claim 24,
wherein when a code word, which does not exist in a code-word table
of a variable length code, appears in the coded data, at least one
of said forward decoding means and said backward decoding means
detects the coded data as an error.
26. A variable length decoding system as set forth in claim 24,
wherein when the bit number of the decoded coded data is not
coincident with the bit number of transmitted coded data, at lease
one of said forward decoding means and said backward decoding means
detects as an error.
27. A variable length decoding system as set forth in claim 24,
wherein when a decoded value obtained by decoding coded data is
inadequate, at least one of said forward decoding means and said
backward decoding means detects as an error of decoding
processing.
28. A variable length decoding system for decoding coded data every
predetermined synchronization interval, said coded data comprising
variable length codes, which are of code words containing code
words capable of being decoded both in forward and backward
directions, and said coded data being prepared by code words
corresponding to layered source symbols to be multiplexed, said
variable length decoding system comprising: dividing means for
dividing said multiplexed coded data into respective layers;
synchronization interval detecting means for detecting a
synchronization interval of said coded data divided by said
dividing means; forward decoding means for decoding, in the forward
direction, the coded data in the synchronization interval detected
by said synchronization interval detecting means; backward decoding
means for decoding, in the backward direction, the data in the
synchronization interval detected by said synchronization interval
detecting means; decoded-value determining means for determining
decoded values on the basis of decoded results of respective layers
obtained by said forward decoding means and said backward decoding
means, to output final decoded results; and synthesizing means for
synthesizing final decoded results of respective layers obtained by
said decoded-value determining means.
29. A variable length decoding system as set forth in claim 28,
wherein when a code word, which does not exist in a code-word table
of a variable length code, appears in the coded data, at least one
of said forward decoding means and said backward decoding means
detects the coded data as an error.
30. A variable length decoding system as set forth in claim 28,
wherein when the bit number of the decoded coded data is not
coincident with the bit number of transmitted coded data, at lease
one of said forward decoding means and said backward decoding means
detects as an error.
31. A variable length decoding system as set forth in claim 28,
wherein when a decoded value obtained by decoding coded data is
inadequate, at least one of said forward and backward decoding
means detects as an error of decoding processing.
32. A variable length decoding system as set forth in claim 28,
wherein when an error is detected by at least one of said forward
decoding means and said backward decoding means, said decoded-value
determining means uses a decoded result, which is presumed to be
correct, of decoded results of said forward decoding means and said
backward decoding means, and abandons a portion which is not able
to be decoded in both of the decoded results.
33. A variable length decoding system as set forth in claim 28,
wherein said decoded-value determining means: (a) uses, as decoded
values, only decoded values, in which no error has been detected,
when said error is detected in both of said forward decoding means
and said backward decoding means and when the ways to the error
detected positions do not overlap with each other; (b) uses forward
decoded results as decoded values for code words immediately before
a position, at which said error is found by said forward decoding
means, and uses backward decoded results as decoded values for code
words after the position, when errors are detected both in said
forward decoding means and said backward decoding means and when
the ways to error detected positions overlap with each other; (c)
uses forward decoded results as coded values for code words
immediately before a position, at which said error is detected, and
uses backward decoded results as decoded values for code words
after the position, when said error is detected by only one of said
forward decoding means and said backward decoding means; and (d)
abandons decoded values for code words at the position, at which
said error has been decoded, and uses backward decoded results as
decoded values for code words after the position, when said error
is detected for the same code word by said forward decoding means
and said backward decoding means.
34. A variable length decoding system as set forth in claim 16,
wherein said decoded-value determining means abandons all the
decoded results, in which there is a probability that an error may
exist, when said error is detected by at least one of said forward
decoding means and said backward decoding means.
35. A variable length decoding system for decoding coded data,
which are of variable length codes of code words containing code
words capable of being decoded both in forward and backward
directions and into which stuffing codes capable of being decoded
in a backward direction are inserted every predetermined
synchronization interval, said variable length decoding system
comprising: synchronization interval detecting means for detecting
a synchronization interval of said coded data; and bidirectional
decoding means for decoding, both in forward and backward
directions, the coded data in the synchronization interval detected
by said synchronization interval detecting means.
36. A variable length decoding system as set forth in claim 35,
wherein said synchronization interval detecting means detects the
bit number of said coded data by decoding said stuffing code in the
backward direction.
37. A variable length decoding system as set forth in claim 35,
wherein when a code word, which does not exist in a code-word table
of a variable length code, appears in the coded data in at least
one of said forward and backward decoding processes, said
bidirectional decoding means detects said code word as an
error.
38. A variable length decoding system as set forth in claim 35,
wherein when the bit number of the decoded coded data is not
coincident with the bit number of transmitted coded data in at
least one of said forward and backward decoding processes, said
bidirectional decoding means detects as an error.
39. A variable length decoding system as set forth in claim 35,
wherein when a decoded value obtained by decoding coded data is
inadequate in at least one of said forward and backward decoding
processes, said bidirectional decoding means detects as an error of
decoding processing.
40. A variable length decoding system as set forth in claim 39,
wherein said bidirectional decoding means carries out the backward
decoding process from the suffix of said coded data after carrying
out the forward decoding process.
41. A variable length decoding system as set forth in claim 40,
wherein said bidirectional decoding means stops the forward
decoding process and carries out the backward decoding process from
the suffix of the coded data, when an error is detected in the
forward decoding process.
42. A variable length coding system as set forth in claim 40,
wherein said bidirectional decoding means carries out the backward
decoding process from the suffix of the coded data after carrying
out the forward decoding process.
43. A variable length decoding system as set forth in claim 40,
wherein when an error is detected in the forward decoding process,
said bidirectional decoding means resumes the forward decoding
process from a position apart from the position of the error by a
predetermined distance.
44. A variable length decoding system as set forth in claim 40,
wherein when an error is detected in the forward decoding process,
said bidirectional decoding means carries out the backward decoding
process from a position apart from the position of the error by a
predetermined distance to the position of the error.
45. A variable length decoding system as set forth in claim 35,
wherein said bidirectional decoding means carries out the backward
decoding process from the suffix of said coded data after carrying
out the forward decoding process.
46. A variable length decoding system as set forth in claim 45,
wherein when an error is detected in the forward decoding process,
said bidirectional decoding means carries out the backward decoding
process from a position apart from the position of the error by a
predetermined distance to the position of the error.
47. A variable length decoding system as set forth in claim 45,
wherein said bidirectional decoding means carries out the backward
decoding process only when an error is detected in the suffix of
the coded data in the forward decoding process.
48. A recording medium for having recorded therein data for use in
a variable length coding and/or decoding system, said recording
medium having recorded therein variable length coded data capable
of being inputted and outputted by the variable length coding
and/or decoding system, said recording medium recording therein:
coded data including code words, which are capable of being decoded
both in forward and backward direction and which are formed so that
the delimiters of the code words are identified by a predetermined
weight of the code words; and data, in which stuffing codes capable
of being decoded in the backward direction every predetermined
synchronization interval are inserted into said coded data.
49. A recording medium for having recorded therein data for use in
a variable length coding and/or decoding system, said recording
medium having recorded therein transform coefficient data capable
of being produced by orthogonal transforming every block in an
image coding and/or decoding system, said recording medium
recording therein: said transform coefficient data, wherein a
plurality of code words capable of being decoded both in forward
and backward directions correspond to orthogonal transform
coefficients having high appearance frequencies other than the last
orthogonal transform coefficients of the block, for each of a
plurality of coded modes of said image coding and/or decoding
system; data, wherein a plurality of code words capable of being
decoded both in the forward and backward directions are commonly
provided for a plurality of coded modes of said image coding and/or
decoding system and correspond to orthogonal transform coefficients
having high appearance frequencies of the last orthogonal transform
coefficients of the block; data, wherein transform coefficient data
having a low appearance frequency are described by fixed length
codes, and code words capable of being decoded both in forward and
backward directions are added to the prefix and suffix thereof; and
data, wherein stuffing codes capable of being decoded in the
backward direction are inserted in the coded data every
predetermined synchronization interval.
50. A recording medium having recorded therein a program for use in
a variable length coding system, which assigns, to a plurality of
source symbols, code words having a code length according to
occurrence probability of the source symbols, to output code words
corresponding to inputted source symbols as coded data, said
recording medium including at least the steps of: storing a
code-word table, wherein a plurality of code words including code
words, which are capable of being decoded both in forward and
backward directions and which are formed so that the delimiters of
the code words are capable of being identified by a predetermined
weight of the code words, correspond to source symbols; selecting
code words corresponding to said inputted source symbols from said
code-word table; and preparing coded data every synchronization
interval by using the code words selected by said code-word
selecting step, and setting a synchronization interval to said code
words by inserting stuffing codes capable of being decoded in the
backward direction.
51. A recording medium having recorded therein a program for use in
a variable length decoding system for decoding coded data, which
are of variable length codes of code words including code words
capable of being decoded both in forward and backward directions
and into which stuffing codes capable of being decoded in the
backward direction are inserted every predetermined synchronization
interval, said recording medium including at least the steps of:
detecting a synchronization interval of said coded data; decoding
the coded data in the synchronization interval detected by said
synchronization interval detecting step in the forward direction;
and decoding the coded data in the synchronization interval
detected by said synchronization interval detecting step in the
backward direction.
Description
[0001] This application is a continuation-in-part of U.S. patent
application Ser. No. 08/616,809.
BACKGROUND OF THE INVENTION
[0002] The present invention relates generally to a variable length
coding and/or decoding system used for compression coding and/or
decoding moving picture signals or the like. More specifically, the
invention relates to a variable length coding and/or decoding
system capable of decoding both in forward and backward directions,
and a recording medium for recording data or programs for use in
the system.
[0003] A variable length code is a code system of a short code
length on average, which is obtained by assigning a short code
length of codes to a frequently appearing symbols and a long code
length of codes to a rarely appearing symbols on the basis of the
appearance frequency of symbols. Therefore, if a variable length
code is used, the amount of data can be considerably compressed in
comparison with the amount of data before being coded. As a method
for forming such a variable length code, the Huffman algorithm
suitable for memoryless sources is known.
[0004] In general, there is a problem in that, if an error is mixed
in a variable length code due to a channel error of coded data or
the like, a decoding system can not correctly decode the data due
to the propagation of influence of the error after the error is
mixed therein. In order to avoid this problem, there is a typical
method for inserting synchronization patterns at intervals to
prevent the propagation of an error when there is a possibility
that the error may occur in a channel. Bit patterns, which do not
appear by any combinations of variable length codes, are assigned
to the synchronization patterns. According to this method, even if
coded data can not be decoded due to an error occurring therein, it
is possible to prevent the propagation of the error to correctly
decode the coded data by finding the next synchronization
pattern.
[0005] However, even if the synchronization patterns are used, the
coded data can not be decoded until the next synchronization
pattern is found from the position, at which the coded data can not
be correctly decoded due to the error occurring therein as shown in
FIG. 1A.
[0006] Therefore, there is known a method for changing the variable
length codes from the usual configurations shown in FIGS. 2A
through 2C to the configurations shown in FIGS. 3A through 3C to
form code words, which can be decoded in a usual forward direction
as well as in a backward direction as shown in FIG. 1B. Since the
coded data of such code words are also readable in the backward
direction, the code words can be also used for reverse reproduction
in a storage medium, such as a disc memory, for storing the coded
data. This variable length code, which can be decoded in the
forward direction as well as in the backward direction, will be
hereinafter referred to as a "reversible code".
[0007] An example of the reversible code is disclosed in Japanese
Patent Laid-Open No. 5-300027, entitled "Reversible Variable Length
Coding System". This publicly-known reversible code is a variable
length code, which can also be decoded in the backward direction by
adding bits to the ends of code words of a Huffman code, which is a
variable code capable of being decoded in the forward direction as
shown in FIGS. 2A through 2C, so that the respective code words are
not coincident with other code words having longer code lengths as
shown in FIGS. 3A through 3C. However, this reversible code
contains many useless bits to have a long average code length since
the bits are added to the ends of the code words of the variable
length code, which can be decoded only in the forward direction.
Consequently, the coding efficiency is considerably deteriorated in
comparison with the variable length code, which can be decoded only
in the forward direction.
[0008] There is also a problem in that the conventional reversible
code can not be decoded in the backward direction if
synchronization intervals are set every predetermined intervals.
For example, ITU-T H.263 (1996) can align synchronization patterns
every 8 bits (=1 byte), i.e., it can set positions, at which the
synchronization patterns can be inserted, every 1 byte. In order to
realize such alignment of synchronization intervals, stuffing codes
shown in FIG. 34 are inserted before the synchronization patterns.
In such a case, in the conventional reversible codes, there is a
problem in that the backward decoding can not be carried out due to
the stuffing bits.
[0009] Moreover, when the reversible code is simply decoded, there
is a problem in that the circuit scale and the amount of operation
have to be twice as large as those in a usual decoding system for
variable length codes, which can be decoded only in the forward
direction, by the amount decoded in the backward direction.
[0010] There is another problem in that the conventional reversible
code can not be decoded in the backward direction by syntax of
input information as the case may be. For example, in the case of
source symbols having syntax shown in FIG. 5A, the sign of symbol B
is determined by symbol A. Coded data obtained by coding source
symbols having such syntax can not be decoded in the backward
direction since the symbol B can not be decoded unless the symbol A
has been decoded as shown in FIG. 5B.
[0011] As a coding system used when the number of source symbols is
high, there is a system using escape codes. This system using
escape codes has code words corresponding to a small number of
source symbols having a high appearance frequency as a code-word
table, and encodes a large majority of source symbols having a low
appearance frequency by the combinations of escape codes and fixed
length codes. Also in this system using escape codes, there has
been provided a system for applying escape codes to the prefix and
suffix of a variable length code, similar to the variable length
code capable of being decoded both in the forward and backward
directions.
[0012] In the conventional coding and/or decoding system using
escape codes, it is required to search the code-word table for the
presence of code words in order to distinguish the code words
existing in the code-word table from the code words to be coded
using escape codes.
[0013] That is, as described above, since the conventional
reversible code, i.e., the variable length code capable of being
decoded both in the forward and backward directions, is formed by
adding bits to the suffix of code words of a variable length code
capable of being decoded only in the forward direction, there is a
problem in that useless bit patterns are increased to increase an
average code length, so that the coding efficiency is considerably
deteriorated in comparison with the variable length code capable of
being decoded only in the forward direction. In addition, if the
synchronization intervals are set every predetermined intervals
using stuffing bits, there is a problem in that the reversible code
can not be decoded in the backward direction due to the stuffing
bits. Moreover, if the reversible code is simply decoded, there is
a problem in that the circuit scale and the amount of operation
have to be twice as large as those in a usual decoding system for
variable length codes capable of being decoded only in the forward
direction, by the amount decoded in the backward direction, and
there is a problem in that it is not possible to decode in the
backward direction by the syntax of input information as the case
may be.
SUMMARY OF THE INVENTION
[0014] It is therefore an object of the present invention to
eliminate the aforementioned problems and to provide a variable
length coding and/or decoding system, which can efficiently encode
and/or decode data by a small amount of operation and a small
memory capacity and which can decode both in forward and backward
directions.
[0015] It is another object of the present invention to provide a
variable length coding and/or decoding system, which can decrease
the number of useless bit patterns to enhance the coding efficiency
and which can decode both in forward and backward directions even
if synchronization intervals are set every predetermined intervals
using stuffing codes.
[0016] It is further object of the present invention to provide a
variable length coding and/or decoding system, which can decrease
the number of useless bit patterns to enhance the coding
efficiency, which can decrease the circuit scale and the amount of
operation to efficiently decode by sequentially carrying out the
decoding process, and which can decode both in forward and backward
directions.
[0017] It is still further object of the present invention to
provide a variable length coding and/or decoding system, which can
decode both in forward and backward directions regardless of the
syntax of inputted source symbols and which has a higher resistance
to errors.
[0018] In order to accomplish the aforementioned and other objects,
according to one aspect of the present invention, there is provided
a first variable length coding system, which assigns, to a
plurality of source symbols, code words having a code length
corresponding to the occurrence probability of the source symbols
and which outputs code words corresponding to inputted source
symbols as coded data, the variable length coding system
comprising: a code-word table for storing therein a plurality of
code words including codes words, which are capable of being
decoded both in forward and backward directions and which are
formed so that delimiters of the code words are capable of being
determined by a predetermined weight of the code words, so that the
plurality of code words correspond to source symbols; code-word
selecting means for selecting code words corresponding to inputted
source symbols from the code-word table; and synchronization
interval setting means for preparing coded data for each of
predetermined synchronization intervals using code words selected
by the code-word selecting means and for inserting stuffing codes,
which are capable of being decoded in the backward direction.
[0019] The term "weight of code words" corresponds to a Hamming
distance with respect to the minimum or maximum value of the code
words. When the code words are binary codes, since all the minimum
values of the code words are "0" and all the maximum values are
"1", the weight of the code words corresponds to the number of "1"s
or "0"s. The position, at which the weight of the code words is a
predetermined value, is a delimiter of code words in a variable
length code.
[0020] In this variable length coding system, the delimiter of code
words, i.e., a variable length code of code words having a
predetermined code length, is formed by the weight of the code
words, i.e., a value independent of the order of the code words.
Therefore, this variable length code is a reversible code capable
of being decoded both in the forward and backward directions since
the delimiter can be identified both in the forward and backward
directions. Since the reversible code is originally formed without
adding excessive bits unlike a conventional reversible code that a
bit is added to the suffix of a variable length code capable of
being decoded only in the forward direction, it is possible to
obtain a variable length code having a small amount of useless bit
patterns and a high coding efficiency.
[0021] In this variable length coding system, even if
synchronization intervals are set every predetermined interval, it
is possible to decode the reversible code in the backward direction
using a stuffing code capable of being decoded in the backward
direction. That is, when the reversible code is decoded in the
backward direction, the suffix of the reversible code (the prefix
in the backward direction) must be identified. However, if the
stuffing code capable of being decoded in the backward direction is
used, the suffix of the reversible code can be identified, so that
the reversible code can be decoded in the backward direction.
[0022] According to another aspect of the present invention, there
is provided a second variable length coding system, which assigns,
to a plurality of source symbols, code words having a code length
corresponding to the occurrence probability of the source symbols
and which outputs code words corresponding to inputted source
symbols as coded data, the variable length coding system
comprising: layering means for layering inputted source symbols in
accordance with importance; a code-word table for storing therein a
plurality of code words including codes words, which are capable of
being decoded both in forward and backward directions and which are
formed so that the delimiters of the code words are capable of
being identified by a predetermined weight of the code words, so
that the plurality of code words correspond to the source symbols;
code-word selecting means for selecting code words corresponding to
the inputted source symbols layered by the layering means, from the
code-word table; and synchronization interval setting means for
preparing coded data of each of layers for each of predetermined
synchronization intervals using code words selected by the
code-word selecting means and for multiplexing the coded data of
each of layers.
[0023] In this variable length coding system, the inputted source
symbols are variable-length coded using the code-word table, and
the synchronization interval is set every layer, so that it is
possible to carry out the variable-length coding resistant to
errors, which can be decoded both in the forward and backward
directions independent of syntax of the inputted source
symbols.
[0024] In the first and second variable length coding systems, out
of the plurality of code words stored in the code-word table, the
code words, which are capable of being decoded both in forward and
backward directions and which are formed so that the delimiters of
the code words are capable of being identified by a predetermined
weight of the code words, have preferably first and second code
words capable of being decoded both in the forward and backward
directions, the second code word being added to at least one of the
prefix and suffix of the first code word, or the second code word
being added at least one of immediately before and after respective
bits of the first code word.
[0025] Since the code words of this construction can correspond to
a wider probability distribution of source symbols, it is possible
to enhance the coding efficiency and to design codes having a high
degree of freedom for the bit patterns of code words. Therefore,
even if synchronization intervals are set using synchronization
patterns, it is possible to avoid the problem in pseudo
synchronization due to the coincidence of the synchronization
pattern with the bit pattern of code words.
[0026] In the first and second variable length coding systems, out
of the plurality of code words stored in the code-word table, the
code words, which are capable of being decoded both in the forward
and backward directions and which are formed so that the delimiters
of the code words are capable of being identified by a
predetermined weight of the code words, may have code words, which
are capable of being decoded both in the forward and backward
directions and between the respectively bits of which code words of
a fixed length code are inserted by predetermined bits.
[0027] Alternatively, the code words, which are capable of being
decoded both in the forward and backward directions and which are
formed so that the delimiters of the code words are capable of
being identified by a predetermined weight of the code words, may
have first and second code words, which are capable of being
decoded both in forward and backward directions, the second code
word being inserted between the respective bits of the first code
word.
[0028] Since the code words of this construction can correspond to
a wider probability distribution of source symbols, it is possible
to enhance the coding efficiency and to design codes having a high
degree of freedom for the bit patterns of code words. Therefore,
even if synchronization intervals are set using synchronization
patterns, it is possible to avoid the problem in pseudo
synchronization due to the coincidence of the synchronization
pattern with the bit pattern of code words.
[0029] According to further aspect of the present invention, a
first variable length decoding system corresponds to the first
variable length coding system. The first variable length decoding
system for decoding coded data, which are of variable length codes
of code words containing code words, which are capable of being
decoded both in forward and backward directions and into which
stuffing codes capable of being decoded in the backward direction
are inserted every predetermined synchronization interval,
comprises: synchronization interval detecting means for detecting a
synchronization interval of the coded data; forward decoding means
for decoding, in the forward direction, the coded data in the
synchronization interval detected by the synchronization interval
detecting means; and backward decoding means for decoding, in the
backward direction, the data in the synchronization interval
detected by the synchronization interval detecting means.
[0030] This variable length decoding system may have decoded-value
determining means for determining decoded values on the basis of
the decoded results of the forward decoding means and the backward
decoding means.
[0031] The synchronization interval detecting means may detect the
bit number of the coded data, e.g., by decoding the stuffing code
in the backward direction.
[0032] At least one of the forward decoding means and the backward
decoding means may detect the coded data as an error when a code
word, which does not exist in a code-word table of a variable
length code, appears in the coded data, or detect as an error when
the bit number of the decoded coded data is not coincident with the
bit number of transmitted coded data.
[0033] Alternatively, at least one of the forward and backward
decoding means may detect as an error in the decoding processing
when a decoded value obtained by decoding the coded data is
inadequate,
[0034] On the other hand, the decoded-value determining means uses
a decoded result, which is presumed to be correct, of decoded
results of the forward decoding means and the backward decoding
means, and abandons a portion, which is not capable of being
decoded in both of the decoded results, when an error is detected
by at least one of the forward decoding means and the backward
decoding means.
[0035] Specifically, the decoded-value determining means:
[0036] (a) uses, as decoded values, only decoded values, in which
no error has been detected, when the error is detected in both of
the forward decoding means and the backward decoding means and when
the ways to the error detected positions do not overlap with each
other;
[0037] (b) uses forward decoded results as decoded values for code
words immediately before a position, at which the error is found by
the forward decoding means, and uses backward decoded results as
decoded values for code words after the position, when errors are
detected both in the forward decoding means and the backward
decoding means and when the ways to error detected positions
overlap with each other;
[0038] (c) uses forward decoded results as coded values for code
words immediately before a position, at which the error is
detected, and uses backward decoded results as decoded values for
code words after the position, when the error is detected by only
one of the forward decoding means and the backward decoding means;
and
[0039] (d) abandons decoded values for code words at the position,
at which the error has been decoded, and uses backward decoded
results as decoded values for code words after the position, when
the error is detected for the same code word by the forward
decoding means and the backward decoding means.
[0040] The decoded-value determining means may abandon all the
portions, which may contain errors, when the errors are detected by
at least one of the forward decoding means and the backward
decoding means.
[0041] When the decoded values are determined on the basis of the
decoded results of the forward and backward decoding means, which
have the function of detecting errors in the code words of the
variable length code, this variable length decoding system
determines decoded values of coded data in accordance with the
error detection results in the forward decoding means and the
backward decoding means, so that the reversible code outputted from
the variable length coding system can be effectively decoded to
channel errors.
[0042] In addition, since the code capable of being decoded in the
backward direction is used as the stuffing code, even if the
synchronization intervals are set every predetermined interval
using the stuffing code, the reversible code can be decoded in the
backward direction.
[0043] According to still further aspect of the present invention,
a second variable length decoding system for decoding coded data,
which are of variable length codes of code words containing code
words capable of being decoded both in forward and backward
directions and into which stuffing codes capable of being decoded
in the backward direction are inserted every predetermined
synchronization interval, comprises: synchronization interval
detecting means for detecting a synchronization interval of the
coded data; and bidirectional decoding means for decoding the
decoded data in the synchronization interval detected by the
synchronization interval detecting means, both in the forward and
backward directions.
[0044] The bidirectional decoding means may detect as an error of
the decoding process, when a decoded value obtained by decoding
coded data is inadequate in at least one of the forward and
backward decoding processes.
[0045] As the decoding methods by the bidirectional decoding means,
the following methods can be used.
[0046] (a) After the forward decoding process is carried out, the
backward decoding process is carried out from the suffix of the
coded data.
[0047] (b) When an error is detected in the forward decoding
process, the forward decoding process is stopped and the backward
decoding process is carried out from the suffix of the coded
data.
[0048] (c) When an error is decoded in the forward decoding
process, the forward decoding process is resumed from a position
apart from the position of the error by a predetermined
distance.
[0049] (d) When an error is detected in the forward decoding
process, the backward decoding process is carried out from a
position apart from the position of the error by a predetermined
distance to the position of the error.
[0050] (e) Only when an error is detected at the suffix of the
coded data in the forward decoding process, the backward decoding
process is carried out.
[0051] This second variable length decoding system may also have
decoded-value determining means for determining decoded values on
the basis of the decoded results of the forward decoding means and
the backward decoding means.
[0052] In this variable length decoding system, when the decoding
process is carried out by the bidirectional decoding means having
the function of detecting errors in the code words of the variable
length code, the decoding process of the coded data is switched in
accordance with the error detected results in the forward decoding
process, so that the forward and backward decoding means can be
commonly used. Therefore, the reversible code outputted from the
variable length coding system can be effectively decoded to the
channel errors without greatly increasing the circuit scale and the
amount of operation.
[0053] According to another aspect of the present invention, a
third variable length decoding system corresponds to the third
variable length coding system. The third variable length decoding
system for decoding coded data every predetermined synchronization
interval, the coded data comprising variable length codes, which
are of code words containing code words capable of being decoded
both in forward and backward directions, and the coded data being
prepared by code words corresponding to layered source symbols to
be multiplexed, comprises: dividing means for dividing the
multiplexed coded data into respective layers; synchronization
interval detecting means for detecting a synchronization interval
of the coded data divided by the dividing means; forward decoding
means for decoding, in the forward direction, the coded data in the
synchronization interval detected by the synchronization interval
detecting means; backward decoding means for decoding, in the
backward direction, the data in the synchronization interval
detected by the synchronization interval detecting means; and
synthesizing means for synthesizing decoded results of respective
layers obtained by the forward decoding means and the backward
decoding means.
[0054] This third variable length decoding system may also have
decoded-value determining means for determining decoded values on
the basis of the decoded results of the forward decoding means and
the backward decoding means.
[0055] If the third variable length decoding system is combined
with the third variable length coding system, it is possible to
provide a variable length coding and/or decoding system, which can
be decoded both in the forward and backward directions regardless
of the syntax of source symbols and which has a higher resistance
to errors.
[0056] A recording medium, which has recorded therein variable
length coded data capable of being inputted and outputted by a
first variable length coding and/or decoding system of the present
invention, readably records therein: coded data including code
words, which are capable of being decoded both in forward and
backward direction and which are formed so that the delimiters of
the code words are identified by a predetermined weight of the code
words; and data, in which stuffing codes capable of being decoded
in the backward direction every predetermined synchronization
interval are inserted into the coded data.
[0057] A recording medium having recorded therein transform
coefficient data capable of being produced by orthogonal
transforming every block in an image coding and/or decoding system,
to which a variable length coding and/or decoding system of the
present invention is applied, readably records therein: the
transform coefficient data wherein a plurality of code words
capable of being decoded both in forward and backward directions
correspond to orthogonal transform coefficients having high
appearance frequencies except for the last orthogonal transform
coefficients of the block, for each of a plurality of coded modes
of the image coding and/or decoding system; data wherein a
plurality of code words capable of being decoded both in the
forward and backward directions are commonly provided for a
plurality of coded modes of the image coding and/or decoding system
and correspond to orthogonal transform coefficients having high
appearance frequencies of the last orthogonal transform
coefficients of the block; data wherein transform coefficient data
having low appearance frequency are described by fixed length
codes, and code words capable of being decoded both in forward and
backward directions are added to the prefix and suffix thereof; and
data wherein stuffing codes capable of being decoded in the
backward direction are inserted in the coded data every
predetermined synchronization interval.
[0058] In addition, a recording medium, which has recorded therein
variable length coded data capable of being inputted and outputted
by a variable length coding and/or decoding system of the present
invention, records therein: coded data including code words, which
are capable of being decoded both in forward and backward direction
and which are formed so that the delimiters of the code words are
identified by a predetermined weight of the code words; and data
wherein stuffing codes capable of being decoded in the backward
direction every predetermined synchronization interval are inserted
into the coded data.
[0059] Moreover, a recording medium, which has recorded therein
transform coefficient data capable of being produced by orthogonal
transforming every block in an image coding and/or decoding system
of the present invention, records therein: the transform
coefficient data wherein a plurality of code words capable of being
decoded both in forward and backward directions correspond to
orthogonal transform coefficients having high appearance
frequencies other than the last orthogonal transform coefficients
of the block, for each of a plurality of coded modes of the image
coding and/or decoding system; data wherein a plurality of code
words capable of being decoded both in the forward and backward
directions are commonly provided for a plurality of coded modes of
the image coding and/or decoding system and correspond to
orthogonal transform coefficients having high appearance
frequencies of the last orthogonal transform coefficients of the
block; data wherein transform coefficient data having low
appearance frequency are described by fixed length codes and code
words capable of being decoded both in the forward and backward
directions are added to the prefix and suffix thereof; and data
wherein stuffing codes capable of being decoded in the backward
direction are inserted in the coded data every predetermined
synchronization interval.
[0060] In addition, a recording medium having recorded therein a
program for use in a variable length coding system, which assigns,
to a plurality of source symbols, code words having a code length
according to occurrence probability of the source symbols, to
output code words corresponding to inputted source symbols as coded
data, includes at least the steps of: storing a code-word table
wherein a plurality of code words including code words, which are
capable of being decoded both in forward and backward directions
and which are formed so that the delimiters of the code words are
capable of being identified by a predetermined weight of the code
words, correspond to source symbols; selecting code words
corresponding to the inputted source symbols from the code-word
table; and preparing coded data every synchronization interval by
using the code words selected by the code-word selecting step, and
setting a synchronization interval to the code words by inserting
stuffing codes capable of being decoded in the backward
direction.
[0061] Moreover, a recording medium having recorded therein a
program for use in a variable length decoding system for decoding
coded data, which are of variable length codes of code words
including code words capable of being decoded both in forward and
backward directions and into which stuffing codes capable of being
decoded in the backward direction are inserted every predetermined
synchronization interval, includes at least the steps of: detecting
a synchronization interval of the coded data; decoding the coded
data in the synchronization interval detected by the
synchronization interval detecting step in the forward direction;
and decoding the coded data in the synchronization interval
detected by the synchronization interval detecting step in the
backward direction.
[0062] As described above, according to the present invention, it
is possible to provide a variable length coding and/or decoding
system, which can efficiently code and decode with smaller amounts
of calculation and storage and which can decode both in the forward
and backward directions.
[0063] According to the present invention, it is possible to
provide a variable length coding and/or decoding system, which can
decrease useless bit patterns to enhance the coding efficiency and
which can decode both in the forward and backward directions even
if the synchronization intervals are set every predetermined
interval using the stuffing code.
[0064] The code-word forming method of the present invention can be
applied to a wider probability distribution of source symbols and
to code words of a large number of source symbols, to which
conventional methods can not be applied. Specifically, it can be
applied to a moving picture coding and/or decoding system, and it
is possible to provide a moving picture coding and/or decoding
system resistant to errors.
[0065] In addition, since this code-word forming method can enhance
the coding efficiency and design codes having a high degree of
freedom for bit patterns of code words, even if synchronization
intervals are set by means of synchronization patterns, it is
possible to avoid the problem in pseudo synchronization due to the
coincident of the synchronization pattern with the bit pattern of
the code words.
[0066] Moreover, according to the present invention, when the
decoded values are determined on the basis of the forward and
backward decoded results, the reversible code can be effectively
decoded to channel errors by determining the decoded values of the
coded data.
[0067] In addition, according to the present invention, when the
decoding process is carried out by the bidirectional decoding means
having the function of detecting errors in the code words of the
variable length code, if the decoding process of the coded data is
switched in accordance with the error detected results in the
forward decoding process, the forward and backward decoding
processes can be commonly used, so that decoding can be effectively
carried out to channel errors without greatly increasing the
circuit scale and the amount of operation.
[0068] Moreover, according to the present invention, source symbols
are layered in accordance with importance to be variable-length
coded on the coding side, and coded data for each of layers are
prepared every synchronization interval and multiplexed, so that it
is possible to decode both in the forward and backward directions
regardless of the syntax of source symbols and to carry out the
variable length coding and/or decoding with a higher resistance to
errors.
BRIEF DESCRIPTION OF THE DRAWINGS
[0069] In the drawings:
[0070] FIGS. 1A and 1B are schematic drawings, each illustrating a
typical coding method for a reversible code;
[0071] FIG. 2A is a table explaining a usual variable length
code;
[0072] FIG. 2B is a diagram illustrating a coding tree for decoding
the usual variable length code in a forward direction;
[0073] FIG. 2C is a diagram illustrating a coding tree for decoding
the usual variable length code in a backward direction;
[0074] FIG. 3A is a table explaining a conventional reversible
code;
[0075] FIG. 3B is a diagram illustrating a coding tree for decoding
the conventional reversible code in a forward direction;
[0076] FIG. 3c is a diagram illustrating a coding tree for decoding
the conventional reversible code in a backward direction;
[0077] FIG. 4 is a diagram illustrating conventional stuffing
bits;
[0078] FIGS. 5A and 5B are diagrams, each illustrating a
conventional syntax of source symbols, which can not be decoded in
the backward direction;
[0079] FIG. 6 is a block diagram of the first preferred embodiment
of a variable length coding and/or decoding system according to the
present invention;
[0080] FIG. 7 is a block diagram of a code-word table preparing
part of FIG. 6;
[0081] FIG. 8 is a diagram explaining a first code-word forming
method in a code-word forming part of FIG. 7;
[0082] FIGS. 9A and 9B are diagrams illustrating decoding trees in
forward and backward directions, respectively, which are prepared
from code words formed by the first code-word forming method;
[0083] FIG. 10 is a diagram explaining a second code-word forming
method in the code-word forming part of FIG. 7;
[0084] FIG. 11 is a diagram explaining a third code-word forming
method in the code-word forming part of FIG. 7;
[0085] FIG. 12A is a diagram explaining a method for setting a
synchronization interval using a synchronization pattern in a
synchronization interval setting part;
[0086] FIG. 12B is a diagram explaining a method for setting a
synchronization interval by describing a coded amount;
[0087] FIG. 13 is a diagram illustrating a first embodiment of
stuffing bits;
[0088] FIG. 14 is a diagram illustrating a second embodiment of
stuffing bits;
[0089] FIGS. 15A through 15D are diagrams explaining the operation
of a decoded-value determining part of FIG. 7;
[0090] FIG. 16 is a schematic block diagram of the second preferred
embodiment of a moving-picture coding and/or decoding system
according to the present invention;
[0091] FIGS. 17A through 17C are diagrams, each illustrating a
syntax of a coded data in the second preferred embodiment of a
moving-picture coding and/or decoding system according to the
present invention;
[0092] FIG. 18A is a block diagram of a moving-picture multiplexing
part of FIG. 16;
[0093] FIG. 18B is a block diagram of a moving-picture multiplex
dividing part;
[0094] FIG. 19 is a table showing a part of a code-word table of
INTRA and INTER non-LAST coefficients in the second preferred
embodiments;
[0095] FIG. 20 is a table showing a part of a code-word table of
INTRA and INTER non-LAST coefficients in the second preferred
embodiment, which is continued from FIG. 19;
[0096] FIG. 21 is a table showing a part of a code-word table of
INTRA and INTER non-LAST coefficients in the second preferred
embodiment, which is continued from FIG. 20;
[0097] FIG. 22 is a table showing a first half of a code-word table
of INTRA and INTER LAST coefficients in the second preferred
embodiment;
[0098] FIG. 23 is a table showing a second half of a code-word
table of INTRA and INTER LAST coefficients in the second preferred
embodiment;
[0099] FIG. 24 is a code-word table of escape codes in the second
preferred embodiment;
[0100] FIG. 25 is a diagram illustrating a coding system of code
words, which are not contained in the code-word table in the second
preferred embodiment;
[0101] FIG. 26 is a diagram showing the maximum zero run in a code
configuration in the second preferred embodiment;
[0102] FIGS. 27(a) through 27(d) are diagrams illustrating the
operation of a decoded-value determining part in the second
preferred embodiment;
[0103] FIG. 28 is a block diagram of the third preferred embodiment
of a variable length coding and/or decoding system according to the
present invention;
[0104] FIG. 29 is a diagram explaining a first code-word forming
method in a code-word forming part of FIG. 28;
[0105] FIG. 30 is a diagram explaining a second code-word forming
method in the code-word forming part of FIG. 28;
[0106] FIG. 31 is a diagram of a bidirectional code-word table,
which is common to a forward code-word table and a backward code
word table;
[0107] FIG. 32 is a block diagram of a decoder, to which a
detection part is added;
[0108] FIGS. 33(a) through 33(d) are diagrams explaining a decoding
method in the third preferred embodiment;
[0109] FIGS. 34(a) and 34(b) are diagrams explaining a
decoded-value determining method in a decoded-value determining
part in the third preferred embodiment;
[0110] FIG. 35 is a block diagram of the fourth preferred
embodiment of a variable length coding and/or decoding system
according to the present invention;
[0111] FIG. 36 is a block diagram of a variable length coding part
of a hierarchy of FIG. 35;
[0112] FIG. 37 is a block diagram of a variable length encoding
part of a hierarchy of FIG. 35;
[0113] FIGS. 38A through 38C are diagrams illustrating examples of
the data hierarchization and multiplexing in a data layering part
and a multiplexing part of FIG. 35, respectively;
[0114] FIG. 39 is a diagram showing an example of a decoded-value
determining method in a decoded-value determining part of FIG.
37;
[0115] FIGS. 40A and 40B are diagrams showing a first embodiment of
a syntax in a moving-picture coding system in a moving-picture
multiplexing part and a moving-picture multiplex dividing part when
the variable length coding and/or decoding system in the fourth
preferred embodiment is incorporated into the moving-picture coding
and/or decoding system of FIG. 16, respectively;
[0116] FIGS. 41A and 41B are diagrams showing a second embodiment
of a syntax in a moving-picture coding system in a moving-picture
multiplexing part and a moving-picture multiplex dividing part when
the variable length coding and/or decoding system in the fourth
preferred embodiment is incorporated into the moving-picture coding
and/or decoding system of FIG. 16, respectively;
[0117] FIGS. 42A and 42B are diagrams showing a third embodiment of
a syntax in a moving-picture coding system in a moving-picture
multiplexing part and a moving-picture multiplex dividing part when
the variable length coding and/or decoding system in the fourth
preferred embodiment is incorporated into the moving-picture coding
and/or decoding system of FIG. 16, respectively;
[0118] FIGS. 43A and 43B are diagrams showing a fourth embodiment
of a syntax in a moving-picture coding system in a moving-picture
multiplexing part and a moving-picture multiplex dividing part when
the variable length coding and/or decoding system in the fourth
preferred embodiment is incorporated into the moving-picture coding
and/or decoding system of FIG. 16, respectively;
[0119] FIG. 44 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment;
[0120] FIG. 45 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 44;
[0121] FIG. 46 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 45;
[0122] FIG. 47 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 46;
[0123] FIG. 48 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 47;
[0124] FIG. 49 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 48;
[0125] FIG. 50 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 49;
[0126] FIG. 51 is a table showing a part of a coding table of
motion vectors in the fourth preferred embodiment, which is
continued from FIG. 50;
[0127] FIG. 52 is a diagram explaining a one-dimensional prediction
for motion vectors in the fourth preferred embodiment;
[0128] FIG. 53 is a diagram explaining a decoded-value determining
method in the case of the syntax of FIG. 40;
[0129] FIG. 54 is a diagram explaining a decoded-value determining
method in the case of the syntax of FIG. 41;
[0130] FIG. 55 is a block diagram of the sixth preferred embodiment
of a coding and/or decoding system according to the present
invention, which shows a detailed construction of a code-word table
preparing part of FIG. 6;
[0131] FIG. 56 is a schematic block diagram of the seventh
preferred embodiment of a moving-picture coding and/or decoding
system according to the present invention;
[0132] FIGS. 57A and 57B are diagrams showing examples of syntax in
a moving-picture coding system in a moving-picture multiplexing
part and a moving-picture multiplex dividing part in the seventh
preferred embodiment, respectively;
[0133] FIGS. 58A and 58B are diagrams showing examples of syntax in
a moving-picture coding system in a moving-picture multiplexing
part and a moving-picture multiplex dividing part in the seventh
preferred embodiment, respectively;
[0134] FIGS. 59A and 59B are block diagrams of a moving-picture
multiplexing part and a moving-picture multiplex dividing part of
FIG. 55;
[0135] FIG. 60 is a block diagram of the eighth preferred
embodiment of a source encoder according to the present
invention;
[0136] FIG. 61 is a block diagram of the eighth preferred
embodiments of a source decoder according to the present
invention;
[0137] FIG. 62 is a schematic diagram of a system incorporating the
ninth preferred embodiment of a variable length coding and/or
decoding system according to the present invention;
[0138] FIG. 63 is a flow chart showing the operation of the tenth
preferred embodiment of a variable length encoder according to the
present invention;
[0139] FIG. 64 is a flow chart showing the operation of the tenth
preferred embodiment a forward variable length decoder according to
the present invention;
[0140] FIG. 65 is a flow chart showing the operation of the tenth
preferred embodiment of a backward variable length decoder
according to the present invention;
[0141] FIG. 66 is an INDEX table of INTRA coefficients;
[0142] FIG. 67 is an INDEX table of INTER coefficients;
[0143] FIG. 68 is an INDEX table of LASR coefficients;
[0144] FIG. 69 is a code-word table in the tenth preferred
embodiment;
[0145] FIG. 70 is a code-word table in the tenth preferred
embodiment;
[0146] FIG. 71 is a fixed value code-word table of RUNs in the
tenth preferred embodiment;
[0147] FIG. 72 is a fixed value code-word table of LEVELs in the
tenth preferred embodiment;
[0148] FIG. 73 is a diagram illustrating a coding of code words,
which are contained in a code-word table;
[0149] FIG. 74 is a decoded-value table in the tenth preferred
embodiment;
[0150] FIG. 75 is a decoded-value table in the tenth preferred
embodiment, which is continued from FIG. 74; and
[0151] FIG. 76 is a diagram explaining the operation of a
decoded-value determining part.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0152] Referring now to the accompanying drawings, the preferred
embodiments of a coding and/or decoding system, according to the
present invention, will be described below.
[0153] [First Preferred Embodiment]
[0154] FIG. 6 is a block diagram of the first preferred embodiment
of a variable length coding and/or decoding system according to the
present invention.
[0155] As shown in FIG. 6, the variable length coding and/or
decoding system in the first preferred embodiment generally
comprises a code-word table preparing part 101, a coding part 113,
a transmission or storage system 105 and a decoding part 114.
First, the functions of the respective parts will be briefly
described. The code-word table preparing part 101 prepares a
code-word table on the basis of the occurrence probability of
source symbols, and transmits code words to a code-word table 102
provided in the coding part 113 and a forward code-word table 111
and a backward code-word table 112, which are provided in the
decoding part 114. The coding part 113 encodes the source symbols
to a variable length code, and outputs the variable length code as
coded data to the transmission or storage system 105. The decoding
part 114 decodes the coded data inputted via the transmission or
storage system 105 to reproduce the original source symbol.
[0156] The detailed constructions and operations of the respective
parts in the first preferred embodiments will be described
below.
[0157] First, in the coding part 113, inputted source symbols are
inputted to an encoder 103. The coding part 113 comprises a
code-word table 102, the encoder 103 and a synchronization interval
setting part 104. The code-word table 102 stores therein source
symbols, which have been prepared by the code-word table preparing
part 101, and code words of a variable length code so that the
source symbols correspond to the code words. The encoder 103
selects code words corresponding to the inputted source symbols
from the code words stored in the code-word table 102, to output
the selected code words. In the synchronization interval setting
part 104, the code words selected by the encoder 103 are grouped
every synchronization interval, and stuffing bits capable of being
decoded both in forward and backward directions are inserted, to
output coded data every synchronization interval. The coded data
are transmitted to the decoding part 114 via the transmission or
storage system 105.
[0158] The decoding part 114 comprises a synchronization interval
detecting part 106, a buffer 107, a forward decoder 108, a backward
decoder 109, a decoded-value determining part 110, a forward
decoding table 111 and a backward decoding table 112. In the
decoding part 114, the synchronization interval detecting part 106
detects the synchronization intervals of coded data inputted by the
transmission or storage systems 105, and the buffer 107 stores the
coded data. The forward decoder 108 starts to decode the coded data
stored in the buffer 107 from the prefix of the coded data, and the
backward decoder 109 starts to decode the coded data stored in the
buffer 107 from the suffix of the coded data.
[0159] The forward decoder 108 determines that an error is
detected, when a bit pattern, which does not exist in the forward
code-word table 111, appears in the coded data and when coded data
having a bit number different from the bit number of the buffer 107
is decoded. Similarly, the backward decoder 109 determines that an
error is detected, when a bit pattern, which does not exist in the
backward code-word table 112, appears in the coded data and when
coded data having a bit number different from the bit number of the
buffer is decoded.
[0160] The decoded-value determining part 110 determines a decoded
value on the basis of a decoded result (hereinafter referred to as
a "forward decoded result") obtained by the forward decoder 108 and
a decoded result (hereinafter referred to as a "backward decoded
result") obtained by the backward decoder 109, and outputs a final
decoded result.
[0161] FIG. 7 is a block diagram of the coded-word table preparing
part 101. A code selecting part 21 receives information on the
occurrence probability of source symbols, and selects a code system
having a shortest average code length from selectable code systems
to transmit the selected result to a code-word forming part 22. The
code-word forming part 22 forms code word of a code selected by the
code-word selecting part 21.
[0162] The code words formed by the code-word forming part 22 are
code words of a variable length code (hereinafter referred to as a
"reversible code"), which is formed so that the delimiters in the
code can be indicated on the basis of a predetermined weight of
code words and which can be decoded both in forward and backward
directions. This code is disclosed, e.g., in Japanese Patent
Laid-Open No. 7-89772 or 7-260383.
[0163] In the first preferred embodiment, in order to increase the
degree of freedom for the bit pattern of code words corresponding
to a wider probability distribution, the following method for
forming code words in the code-word forming part 22 is used.
[0164] FIG. 8 shows a first method for forming code words of a
reversible code in the code-word forming part 22. First, as shown
on the left side of FIG. 8, two binary series, each of which has a
constant weight (the weight is the number of "1" in this case) in
the order of short code length and which have different weights
(the weights are 0 and 1 in this case), are prepared. Then, as
shown in the middle of FIG. 8, after "1"s are added to the prefix
and suffix of the binary series to reverse the bits of the binary
series, the two binary series are synthesized as shown on the right
side of FIG. 8.
[0165] The code length of this variable length code can be
determined by counting the number of symbols at the beginnings of
the respective codes. In the example of FIG. 8, when the first is
"0", the delimiter of the code (code length) can be identified if
two "0"s appear, and when the first is "1", the delimiter of the
code can be identified if three "1"s appear. The variable length
code shown in FIG. 8 can be decoded both in forward and backward
directions since the code words corresponding to all the source
symbols A through J are assigned to leaves of a forward decoding
tree shown FIG. 9A as well as leaves of a backward decoding tree
shown in FIG. 9B.
[0166] FIG. 10 shows a second method for forming code words of a
reversible code in the code-word forming part 22. First, as shown
on the left side of FIG. 10, first and second reversible codes are
prepared. Then, as shown in the middle of FIG. 10, a first one code
word of the second reversible code is added to each of the suffixes
of all the code words of the first reversible code. Then, after all
the code words of the second reversible code are added to the
suffixes of all the code words of the first reversible code one by
one, the code words are rearranged as shown on the right side of
FIG. 10 to form a new reversible code. By such a forming method, it
is possible to form A.times.B (27 in this embodiment) new
reversible codes, the number of which is obtained by multiplying
the number A (A=9 in this embodiment) of the code words of the
first reversible code by the number B (B=3 in this embodiment) of
the code words of the second reversible code.
[0167] When the reversible code is decoded in the forward direction
by this forming method, the first reversible code is first decoded,
and then, the second reversible code is decoded. When the
reversible code is decoded in the backward direction, the second
reversible code is first decoded, and then, the first reversible
code is decoded. Therefore, the reversible code can be decoded both
in the forward and backward directions.
[0168] Furthermore, in this embodiment, while the code words of the
second reversible code have been added to the suffix of the code
words of the first reversible code, the second reversible code may
be added to the prefix of the first reversible code. Alternatively,
fixed length codes may be added to both the suffix and prefix of
the first reversible code. In addition, in this embodiment, while
the first reversible code has been different from the second
reversible code, both may be the same. Moreover, in this preferred
embodiment, while variable length codes have been used as both of
the first and second reversible codes, any one of the first and
second reversible codes may be changed to a fixed length code.
[0169] FIG. 11 shows a third method for forming a reversible code
in the code-word forming part 21. First, as shown on the left side
of FIG. 11, variable-length reversible codes and fixed-length
reversible codes are prepared. Then, as shown on the right side of
FIG. 11, the fixed-length reversible codes are added immediately
after the respective bits of the code words of the reversible
codes. When K-bit fixed-length reversible codes are used by this
forming method, H-bit code words can be changed to (K+1)H-bit code
words to increase the number of code words by 2KH. In this
embodiment, while the fixed length codes have been added
immediately after the respective bits of the code words of the
reversible codes, fixed length codes may be added immediately
before the respective bits, or fixed length codes may be added both
immediately before and after the respective bits.
[0170] Referring to FIGS. 12A and 12B, examples of methods for
setting synchronization intervals of coded data in the
synchronization interval setting part 104 will be described
below.
[0171] FIG. 12A shows a method for setting synchronization
intervals by inserting synchronization patterns. In this case, the
synchronization interval detecting part 106 can detect the
synchronization intervals by detecting the first and last
synchronization patterns of coded data. In order to set positions,
at which synchronization patterns can be inserted, at predetermined
intervals (every M-bit unit in this case), 1-bit to M-bit stuffing
codes are inserted into the suffixes of the coded data.
[0172] FIG. 12B shows a method for describing the coding amount of
the synchronization interval on the prefix of the coded data, i.e.,
a method for inserting a pointer indicative of the end position of
the synchronization interval. In this case, the synchronization
interval detecting part 106 can detect the synchronization interval
by decoding the description of the coding amount of the
synchronization interval at the prefix of the coded data. Since the
unit of description of the coding amount is a M-bit unit, 1-bit to
M-bit stuffing codes are inserted into the suffix of the coded
data.
[0173] The stuffing codes used for the methods of FIGS. 12A and 12B
can be decoded at least in the backward direction. FIG. 13 shows an
example of such a stuffing code. This stuffing code can be decoded
both in the forward and backward directions. This stuffing code is
a variable length code, the delimiter of which can be identified if
"1" appears in the case of 1 bit and if "0"s appear twice in the
case of other bits, and which can be decoded both in the forward
and backward directions. This stuffing code can be also decoded
from the end of the synchronization interval in the backward
direction, and the bit number of the coded data can be calculated.
The calculated result of the bit number of the coded data is used
for an error detection, which will be described later.
[0174] While the stuffing code has been inserted into the suffix of
the coded data in this embodiment, the stuffing code may be
inserted Into the prefix or the internal portion of the coded data.
The stuffing code may be inserted into a portion in the
synchronization interval at any positions if there is no problem of
syntax. Alternatively, the stuffing code may be a code capable of
being decoded only in the backward direction as shown in FIG. 14.
The delimiter of this code can be identified if "0" appears when
being decoded in the backward direction.
[0175] Referring to FIGS. 15A through 15D, a method for determining
a decode value in the decoded-value determining part 110 will be
described below.
[0176] As shown in FIG. 15A, when the ways to the positions of the
decoded word (error detected positions), at which errors are
detected, in the forward and backward decoded results, do not
overlap with each other, only the decoded results, in which the
errors are not detected, are used for decoded values, and the
decoded results at the two error detected positions are abandoned.
As shown in FIG. 15B, when the ways to the error detected positions
in the forward and backward decoded results overlaps with each
other, the forward decoded results are used for decoded values
before the error detected position in the forward decoded results,
and the backward decoded results are used for decoded values after
the error detected position in the forward decoded results.
Alternatively, the backward decoded results may be preferentially
used for decoded values before the error detected position in the
backward decoded result, and the forward decoded results may be
used for decoded values after the error detected position in the
backward decoded result.
[0177] As shown in FIG. 15C, when an error is detected in only one
of the forward and backward decoded results (an error is detected
only in the forward decoded result in the shown embodiment), the
decoded values in the forward decoded result are used before the
error detected position, and the decoded values in the backward
decoded result are used after the error detected position. As shown
in FIG. 15D, when errors are detected in the same code word both in
the forward and backward decoded results, the decoded value for the
code word at the error detected position is abandoned, and the
decoded values in the backward decoded result are used for the code
words after the error detected position. When the error
determination is carried out in the forward decoder 108 and the
backward decoder 109, if a bit pattern, which does not exist as a
code word, appears, the position of the bit pattern is regarded as
the decoded position. When no error is detected in the above
determining method and when the decoded bit number is not
coincident with the bit number of the coded data in the
synchronization interval, the first position in decoding is
regarded as the error detected position.
[0178] In this first preferred embodiment, while one example of a
decoded-value determining method using four patterns of error
detected positions has been described, the decoded-value
determining part may use any methods, if the forward or backward
decoded result presumed to be correct is used and a portion, which
has not been detected both in the decoded results, is abandoned,
when errors are detected in both or any one of the forward and
backward detected results.
[0179] [Second Preferred Embodiment]
[0180] As the second preferred embodiment of the present invention,
an applied example of a variable length coding and/or decoding
system according to the present invention will be described
below.
[0181] FIG. 16 is a block diagram showing the concept of a moving
picture coding and/or decoding system, which incorporates the
second preferred embodiment of a variable length coding and/or
decoding system according to the present invention. First, in a
moving picture encoder 709, the variable length coding,
multiplexing and so forth of data coded by a source encoder 702 are
carried out by means of a moving picture multiplexer 703. Then, the
resulting data are smoothed by means of a transmission buffer 104
to be transmitted to a transmission or storage system 705 as coded
data. A coding control part 701 controls the source encoder 702 and
the moving picture multiplexer 703 in view of the buffer capacity
of the transmission buffer 704.
[0182] On the other hard, in a moving picture 710, the coded data
transmitted from the transmission or storage system 705 are stored
in a receiving buffer 706. Then, the multiplexing separation and
variable length decoding of the coded data are carried out by means
of a moving picture multiplexing separator 707 to be transmitted to
a source decoder 708, in which the moving picture information is
finally decoded. To the moving picture multiplexer 703 and the
moving picture multiplexing separator 707, the first preferred
embodiment of a variable length coding and/or decoding system
according to the present invention applied.
[0183] FIGS. 17A through. 17C shows syntax of a moving picture
coding system in the moving picture multiplexer 703 and the moving
picture multiplexing separator 707 in the second preferred
embodiment. The mode information, motion vector information and
INTRA DC (DC components of DCT coefficients in intraframe coding)
information of macro blocks are applied to an upper layer, and DCT
coefficient information except for the INTRA DC is applied to a
lower layer. Reversible codes are applied to the lower layer.
[0184] FIGS. 18A and 18B are block diagrams illustrating the moving
picture multiplexer 703 and the moving picture multiplexing
separator 707 in the second preferred embodiment. In the moving
picture multiplexer 703 shown in FIG. 18A, out of the data coded by
the source encoder 702 of FIG. 16, the mode information, motion
vector information and INTRA DC information of macro blocks are
applied to an upper layer, and the usual variable length coding is
carried out by means of an upper-layer variable length encoder 901
to be transmitted to a multiplexer 903. Out of the data codes by
the source encoder 702, DCT coefficients other than the INTRA DC
are coded by means of reversible codes in a lower-layer variable
length encoder 902 to be transmitted to the multiplexer 903. In the
multiplexer 903, the coded data of the upper and lower layers are
multiplexed to be transmitted to a transmission buffer 704.
[0185] On the other hand, in the moving picture multiplexing
separator decoder 707 shown in FIG. 18B, the coded data of the
upper and lower layers are separated by means of a multiplexing
separating part 904 to be variable-length decoded by means of an
upper-layer variable length decoder 905 and a lower-layer variable
length decoder 906, respectively.
[0186] FIGS. 19 through 21 and 22 through 23 show examples of
code-word tables used for the lower-layer variable length encoder
902. The codes stored in these code tables are obtained by adding
2-bit fixed-length codes to the suffix of each of the codes
prepared by the first forming method for the code words of the
reversible code in the code-word forming part 22.
[0187] In the source encoder 702, the interior of blocks is scanned
every block of 8.times.8 DCT coefficients after quantization to
derive LASTs (0: non-zero coefficients, each of which is not the
last of the block, 1: non-zero coefficients of the last of the
block), RUNs (the numbers of zero runs before the non-zero
coefficients) and LEVELs (quantized values of the coefficients),
which are transmitted to the moving picture multiplexing part
703.
[0188] The lower-layer variable length encoder 902 in the moving
picture multiplexing part 703 has a code-word table of non-LAST
coefficients shown in FIGS. 19 through 21, wherein the code words
of reversible codes (VLC_CODE) correspond to the non-LAST
coefficients, RUNs and LEVELs of the INTRA (intraframe coding) and
INTER (interframe coding), and a code-word table of LAST
coefficients shown in FIGS. 22 and 23, wherein the code words of
the reversible codes (VLC_CODE) correspond to the LAST
coefficients, RUNs and LEVELs of the INTRA and INTER.
[0189] On the basis of the mode information, one of the code-word
tables of the non-LAST coefficients and LAST coefficients of the
INTRA is selected when the INTRA is carried out, and one of the
code-word tables of the non-LAST coefficient and LAST coefficients
of the INTER is selected when the INTER is carried out, so that
coding is carried out. The last bit "s" of the code word denotes
the sign of the LEVEL. When the "s" is "0", the sign of the LEVEL
is positive, and when the "s" is "1", the sign of the LEVEL is
negative.
[0190] With respect to coefficients, which do not exist in these
code-word tables, 1 bit indicative of the LAST coefficient, the RUN
and the absolute value of the LEVEL are fixed-length coded as shown
in FIG. 25. In addition, the "00001" of two escape codes is added
to the prefix of the fixed length code, and an escape code is also
added to the suffix thereof. FIG. 24 shows a code-word table of
escape codes. The last bit "s" of the VLC_CODE used as an ESCAPE
code denotes the sign of the LEVEL. When the "s" is "0", the LEVEL
is positive, and when the "s" is "1", the LEVEL is negative.
[0191] FIG. 26 shows the case that the zero run is maximum when
this code-word table is used. Usually, a bit pattern, wherein "1"
is added after zero runs continue, is selected as a synchronization
pattern. For example, in the case of ITU-T H.263, a bit pattern,
wherein "1" is added after 16 "0"s, is selected as a
synchronization pattern. In the variable-length coding of the DCT
coefficients, the zero run is maximum when 15 "0"s continue in a
case where the LEVEL is +64 in the coefficient using an escape code
and the next code also uses an escape code. Therefore, if a bit
pattern, in which 16 "0"s continue, is used as a synchronization
pattern, there is no possibility that a pseudo synchronization
pattern may be produced.
[0192] The decoded-value determining part 110 determines a decoded
value on the basis of the decoded result (hereinafter referred to
as a "forward decoded result") obtained by the forward decoder 108
and the decoded result (hereinafter referred to as a "backward
decoded result") obtained by the backward decoder 109 to output a
final decoded result. In the error determinations in the forward
decoder 108 and the backward decoder 109, when a bit pattern, which
does not exist as a code word, appears and when an error is
detected by a check bit or the like, the position of the bit
pattern or the error is used as the detected position, and when no
error is not detected by the above determining method and when the
decoded bit number is not coincident with the bit number of the
coded data in the synchronization interval, the first position of
decoding is used as the error detected position.
[0193] FIG. 27 shows a method for determining a decoded value in
the lower layer. First, as shown in FIG. 27(a), when the ways to
the positions (the error detected positions) of macro blocks (MB),
at which errors are detected in the forward and backward decoded
results, do not overlap with each other, only the decoded results
of the macro blocks, in which no error is not detected, are used
for decoded values, and the decoded results at two error detected
positions are not used for decoded values. In addition, the decoded
results of the upper layer are rewritten on the basis of the
decoded results of the mode information of the upper layer so that
the INTRA macro blocks (intraframe coded macro blocks) are
displayed using the last frame and the INTER macro blocks
(interframe coded macro blocks) are displayed only by the motion
compensation using the last frame.
[0194] As shown in FIG. 27(b), when the ways to error detected
positions in the forward and backward decoded results overlap with
each other, the forward decoded results before a macro block, in
which an error is detected as a result of the forward decoding, are
used for decoded values, and the backward decoded results are used
for decoded values after the macro block. Alternatively, the
backward decoded results may be preferentially used for decoded
results after a macro block, in which an error is detected as a
result of the backward decoding, and the forward decoded results
may be used for decoded values before the macro block.
[0195] As shown in FIG. 27(c), when an error is detected in only
one of the forward and backward decoded results (an error is
detected only in the forward decoded result in the shown
embodiment), the backward decoded results are used for decoded
values with respect to the macro blocks after the error detected
position.
[0196] As shown in FIG. 27(d), when errors are detected at the same
macro block both in the forward and backward decoded results, the
decoded values of the macro block at the error detected position
are abandoned so as not to be used as decoded values. In addition,
the decoded results of the upper layer are rewritten on the basis
of the decoded results of the mode information of the upper layer
so that the INTRA macro blocks are displayed using the last frame
and the INTER macro blocks are displayed only by the motion
compensation using the last frame. The backward decoded results are
used for decoded values with respect to the macro block after the
error detected position.
[0197] While the decoded values has been determined every macro
block in the decoded-value determining method of FIG. 27, the
decoded values may be determined every block or code word. In the
second preferred embodiment, while the present invention has been
applied to the variable-length coding of the DCT coefficients, the
invention may be applied to other source symbols when the
variable-length coding is carried out.
[0198] [Third Preferred Embodiment]
[0199] Referring to FIG. 28, the third preferred embodiment of a
variable length coding and/or decoding system, according to the
present invention, will be described below.
[0200] In this third preferred embodiment, the variable length
coding and/or decoding system generally comprises a code-word table
preparing part 101, a coding part 113, a transmission or storage
system 105 and a decoding part 121. First, the functions of the
respective parts will be briefly described. The code-word table
preparing part 101 prepares a code-word table on the basis of the
occurrence probability of source symbols, and transmits code words
to a code-word table 102 in the coding part 113 and to forward and
backward code-word tables 111 and 112 in the decoding part 121. The
coding part 113 encodes the source symbol to a variable length
code, and outputs the variable length code to the transmission or
storage system 105 as coded data. The decoding part 121 decodes the
coded data inputted via the transmission or storage system 105 to
reproduce the original source symbol.
[0201] The detailed constructions and operations of the respective
parts in the third preferred embodiment will be described
below.
[0202] The construction and operation of the coding part 113 are
the same as those in the first preferred embodiment shown in FIG.
6. That is, in the coding part 113, inputted source symbols are
inputted to an encoder 103. The code-word table 102 stores therein
source symbols prepared by the code-word table preparing part 101
and code words of variable length codes so that the source symbols
correspond to the code words. The encoder 103 selects code words
corresponding to the inputted source symbols from the code words
stored in the code-word table 102. In a synchronization interval
setting part 104, the code words selected by the encoder 103 are
grouped every synchronization interval, and stuffing bits capable
of being decoded both in forward and backward directions are
inserted into the code words to output coded data every
synchronization interval. The coded data are transmitted to the
decoding part 121 via the transmission or storage system 105.
[0203] The decoding part 121 comprises a synchronization interval
detecting part 106, a buffer 107, a coded data switch 122, a
decoder 124, a code-word table switch 125, a decoded-value
determining part 110, a forward decoding table 111 and a backward
decoding table 112. The coded data switch 122 and the code-word
table switch 125 are controlled by the decoder 124 to be switched.
In the decoding part 121, while the synchronization interval
detecting part 106 inspects the synchronization interval of the
coded data inputted by the transmission or storage systems 105, the
coded data are inputted to the decoder 124. At this time, the coded
data are also stored in the buffer 107. The decoder 124 starts to
decode the inputted coded data (hereinafter referred to as "forward
decoding"). The decoder 124 determines that an error is detected,
when a bit pattern, which does not exist in the forward code-word
table 111, appears and when coded data having a bit number
different from the bit number of the buffer 107 is decoded.
[0204] When it is determined that an error has been detected, the
decoder 124 switches the code-word table in the code-word table
switch 123 from the forward code-word table 111 to the backward
code-word table 112. At this time, the input to the decoder 124 is
switched to the buffer 107 by means of the coded data switch 122.
When the synchronization interval detecting part 106 detects the
next synchronization, the stored coded data are read out of the
buffer 107 from the suffix to be outputted to the decoder 124. The
decoder 124 starts to decode the inputted coded data (hereinafter
referred to as "backward decoding"). Similar to the forward
decoding, the decoder 124 determines that an error is detected,
when a bit pattern, which does not exist in the backward code-word
table 112, appears in the coded data or when coded data having a
bit number different from the bit number of the buffer 107 are
decoded. The decoded-value determining part 110 determines decoded
values on the basis of a decoded result (hereinafter referred to as
a "forward decoded results") obtained by the forward decoding and a
decoded result (hereinafter referred to as a "backward decoded
results") obtained by the backward decoding to output a final
decoded result.
[0205] In the third preferred embodiment, the coded-word table
preparing part 101 is basically the same as that in the first
preferred embodiment. As shown in FIG. 7, the code-word table
preparing part 101 inputs information on the occurrence probability
of source symbols, and comprises a code-word selecting part 21 for
selecting a code system having a least average code length from
selectable code systems, and a code-word forming part 22 for
forming code words of a code selected by the code-word selecting
part 21. In this preferred embodiment, the following method for
forming code words in the code-word forming part 22 is used in
order to increase the degree of freedom for a bit pattern of code
words so as to correspond to a wider probability distribution.
[0206] FIG. 29 shows a first method for forming code words of a
reversible code in the code-word forming part 22. First, as shown
on the left side of FIG. 29, a first reversible code is prepared.
Then, as shown in the middle of FIG. 29, fixed length codes of
(code length -1) bits surrounded by the broken line are prepared
for the respective code words of the first reversible code, and as
shown on the right side of FIG. 29, the code words of the fixed
length codes are inserted between the respective bits of the code
words of the first reversible code 1 bit by 1 bit so as to be
surrounded by the broken line. It can be seen that the variable
length codes of FIG. 29 can be decoded both in the forward and
backward directions by decoding the fixed length codes every 1 bit
while decoding the first reversible code. In the embodiment of FIG.
29, while the code words of the fixed length codes have been
inserted between the respective bits of the code words of the first
reversible code 1 bit by 1 bit, fixed length codes of (code
length-1).times.n bits may be prepared for the respective code
words of the first reversible code, and the code words of the fixed
length codes may be added between the respective bits of the code
words of the first reversible code n bits by n bits.
[0207] FIG. 30 shows a second method for forming code words of a
reversible code in the code-word forming part 22. As shown on the
left side of FIG. 30, a first reversible code is prepared. Then, as
shown on the upper side of FIG. 30 so as to be surrounded by the
broken line, a second reversible code is prepared, and as shown on
the right side of FIG. 30, the second reversible code is inserted
between the respective bits of the code words of the first
reversible code so as to be surrounded by the broken line. It can
be seen that the variable length codes of FIG. 30 can be decoded
both in the forward and backward directions by decoding the second
reversible code 1 bit by 1 bit while decoding the first reversible
code. In the embodiment of FIG. 30, while the first and second
reversible codes have been the same, these codes may be
different.
[0208] In the third preferred embodiment, as shown in FIG. 31, a
bidirectional code-word table 51 may be used as a common table in
place of the forward code-word table 111 and the backward code-word
table 112 shown in FIG. 28. In this case, an identification signal
53 indicative of the discrimination between the forward coding and
the backward coding is inputted from the decoder 124 of FIG. 28,
and an address converter 52 is operated by the identification
signal 53 to produce an address for reading code words out of the
bidirectional code-word table 51. Then, the code value
corresponding to this address is read out of the bidirectional
code-word table 51.
[0209] In the third preferred embodiment, as shown in FIG. 32, the
decoder 124 has an error detection function. An error detecting
part 62 connected to a decoder 61 monitors the inside state of the
decoder 61, and outputs an error detection signal when it is
abnormal. For example, the abnormal inside states include the
following states:
[0210] (1) when a coded data, which does not exist in the code-word
table, is received;
[0211] (2) when the length of the coded data is not coincident with
the length of the code actually decoded by the decoder 61;
[0212] (3) when the decoded value is inadequate although the
decoded value can be derived since it exists in the code-word
table, specifically, (3-1) when the decoded value is beyond the
range of existence, (3-2) when the number of data exceeds the upper
limit, and (3-3) when a decoded value, which does not match with
the previously decoded value, is outputted; and
[0213] (4) when an error has been detected by an error detection
code or the like.
[0214] Referring to FIG. 33, a decoding method in the third
preferred embodiment will be described below.
[0215] In the preceding preferred embodiments, as shown in FIG.
33(a), the forward and backward decoding processes in the decoder
124 have been simultaneously carried out until errors are detected
in the respective processes, to derive decoded values. The third
preferred embodiment should not be limited thereto, but decoding
may be carried out by the methods shown in FIGS. 33(b), 33(c) and
33(d). In FIGS. 33(b), 33(c) and 33(d), X denotes error detected
points, the arrow to the right denotes the forward decoding
process, and the arrow to the left denotes the backward decoding
process.
[0216] In the method shown in FIG. 33(b), the forward decoding
process is carried out, and when an error is detected, the forward
decoding process is stopped and the backward decoding process is
carried out in the backward direction from the suffix of the coded
data in the synchronization interval until an error is detected. In
the method shown in FIG. 33(c), when an error is detected in the
forward decoding process, the forward decoding process is resumed
after n bits from the error detected position. This process is
repeated until all the coded data in the present synchronization
interval are processed. At the last of the forward decoding
process, when the number of the coded data in the synchronization
interval is not coincident with the number of data decoded by the
decoding process, it is determined that an error is detected, and
the backward decoding process is carried out from the suffix of the
coded data until an error is detected. In the method shown in FIG.
33(d), when an error is detected in the forward decoding process,
the backward decoding process is carried out by n bits in the
backward direction from n bits after the error detected position.
Thereafter, the forward decoding process is carried out after n
bits from the error detected position, i.e., the forward decoding
process is carried out from a position, at which the backward
decoding process has been started. This process is repeated until
all the coded data in the present synchronization interval are
processed. Finally, if the number of the coded data in the
synchronization interval is not coincident with the number of data
decoded by the decoding process, it is determined that an error is
detected, and the backward decoding process is carried out from the
suffix of the coded data until an error is detected.
[0217] Referring to FIG. 34, a method for determining decoded
values in the decoded-value determining part 111 in the third
preferred embodiment will be described below. The decoded values
finally utilized in the decoded-value determining part 111 can be
selected by the following methods.
[0218] In the decoded-value determining method shown in FIG. 34(a),
after an error is detected, decoding is not carried out. That is,
since there is a possibility that erroneous decoding may be carried
out after an error is detected, the decoded values, which may cause
erroneous decoding, are not utilized, and only the decoded values
before the error detected position are utilized.
[0219] In the decoded-value determining method shown in FIG. 34(b),
even if an error is detected, decoding is continued to utilize all
the usable decoded values. Variable length codes include a code, in
which synchronization can be automatically recovered if the
decoding process is continuously carried out even if the
synchronization is not broken. This is called
"self-synchronization-recovery. In the case of a code word having a
high self-synchronization-recovery capability, it is possible to
obtain a greater amount of correct decoded values by continuing the
decoding process as shown in FIG. 34(b) without stopping the
decoding process as shown in FIG. 34(a) after the error is
detected. However, in this case, there is a possibility that the
decoded values may include erroneously decoded values. In the
system for allowing such a possibility of erroneous decoding, the
decoded-value determining method of FIG. 34(b) may be used.
[0220] [Fourth Preferred Embodiment]
[0221] Referring to FIG. 35, the fourth preferred embodiment of a
variable length coding and/or decoding system, according to the
present invention, will be described below.
[0222] In the fourth preferred embodiment, the variable length
coding and/or decoding system generally comprises a code-word table
preparing part 201, a coding part 213, a transmission or storage
system 205 and a decoding part 214. First, the functions of the
respective parts will be briefly described.
[0223] The code-word table preparing part 201 prepares a code-word
table on the basis of the occurrence probability of source symbols,
to transmit code words to a code-word table in the coding part 213
and to forward and backward code-word tables in the decoding part
214.
[0224] The coding part 213 layers source symbols provided as input
data, and encodes the input data every layer to variable length
codes. Then, the coding part 213 multiplexes the variable length
codes to output the multiplexed codes to the transmission or
storage system 205. The decoding part 214 multiplexing-separates
the coded data inputted via the transmission or storage system 205
to variable-length decode the resulting data every layer to
synthesize decoded results every layer to reproduce the original
source symbols to output reproduced data.
[0225] The detailed constructions and operations of the respective
parts in the fourth preferred embodiment will be described
below.
[0226] In the coding part 213, the source symbols being input data
are divided, by means of a data layering part 202, into layers 1
through n (n is a natural number being not less than 2) in
accordance with importance. The divided source symbols in the
respective layers i (i=1, 2, . . ., n) are inputted to variable
length coding parts 203-i prepared every layer i to be coded. The
coded data of the respective layers i obtained by the variable
length coding parts 203-i are multiplexed by means of a
multiplexing part 204 to be transmitted to the decoding part 214
via the transmission or storage system 205.
[0227] In the decoding part 214, the coded data inputted by the
transmission or storage system 205 are divided into coded data of
the respective layers i by means of a multiplexing separating part
206. The divided coded data of the respective layers are inputted
to variable length decoding parts 207-i prepared every layers i to
be decoded. The decoded results of the respective layers i obtained
by the variable length decoding parts 207-i are synthesized by
means of a data synthesizing part 208 to be outputted as reproduced
data.
[0228] The construction of the code-word table preparing part 201
is the same as that of the code-word table preparing part 101 in
the first preferred embodiment shown in FIG. 7. The code-word table
preparing part 201 selects a code system having a shortest average
code length from selectable code systems on the basis of
information on the occurrence probability of source symbols, to
form code words of the selected code. The code words are variable
length codes (reversible codes), which are formed so that the
delimiters between codes can be identified by a predetermined
weight of code words and which can be decoded both in forward and
backward directions.
[0229] The construction of each of the variable length coding parts
203-i of the respective layers i of FIG. 35 is shown in FIG. 36.
Similar to the coding part 113 shown in FIG. 6, each of the
variable length coding parts 203-i comprises a code-word table 102,
an encoder 103 and a synchronization interval setting part 104.
That is, the source symbols inputted from the data layering part
202 of FIG. 35 are inputted to the encoder 103. The code-word table
102 stores therein source symbols previously prepared by the
code-word table preparing part of FIG. 35 and code words of
variable length codes so that the source symbols correspond
thereto.
[0230] The encoder 103 selects code words corresponding to the
source symbols inputted by the data layering part 202, from the
code words stored in the code-word table 102 to output the selected
code words. The synchronization interval setting part 104 groups
the code words selected by the encoder 103 every synchronization
interval, and inserts stuffing codes, which can be decoded both in
forward and backward directions, into the grouped code words if
necessary, to output coded data every synchronization interval. The
coded data are transmitted to the multiplexing part 204 of FIG.
35.
[0231] On the other hand, the construction of each of the variable
length decoding parts 207-i of the respective layers i of FIG. 35
is shown in FIG. 37. Similar to the decoding part 114 shown in FIG.
6, each of the variable length decoding parts 207-i comprises a
synchronization interval detecting part 106, a buffer 107, a
forward decoder 108, a backward decoder 109, a decoded-value
determining part 110, a forward decoding table 111 and a backward
decoding table 112. That is, in the variable length decoding part
207-i, the synchronization intervals of the coded data inputted
from the transmission or storage system 205 by the synchronization
interval detecting part 106 and the coded data are stored in the
buffer 107. The forward decoder 108 starts to decode the coded data
stored in the buffer 107 from the prefix of the coded data. The
backward decoder 109 starts to decode the coded data stored in the
buffer 107 from the suffix of the coded data.
[0232] The forward decoder 108 determines that an error is
detected, when a bit pattern, which does not exist in the forward
code-word table 111, appears in the coded data or when the coded
data having a bit number different from the bit number of the
buffer 107 is decoded. Similarly, the backward decoder 109
determines that an error is detected, when a bit pattern, which
does not exist in the backward code-word table 112, appears in the
coded data or when the coded data having a bit number different
from the bit number of the buffer 107 is decoded. The decoded-value
determining part 110 determines decoded values on the basis of a
decoded result (a forward decoded result) obtained by the forward
decoder 108 and a decoded result (a backward decoded result)
obtained by the backward decoder 109, to output a final decoded
result. The decoded results of the respective layers i are
transmitted to the data synthesizing part 208.
[0233] FIGS. 38A through 38C show examples of the data
hierarchization in the data layering part 202 and the multiplexing
in the multiplexing part 204. If there are input data (a source
symbol string) of syntax, which can be divided into n layers as
shown in FIG. 38A, the data layering part 202 changes the syntax to
carry out the data hierarchization so that the input data are
repeated every layer i as shown in FIG. 38B, and transmits the
source symbols to the variable length coding part 203-i every layer
i. In the multiplexing part 204, as shown in FIG. 38C, the source
symbols are variable-length coded by the variable length coding
part 203-i every layer i, and the coded data, in which the
synchronization intervals are set by adding the synchronization
pattern i, are multiplexed to be outputted.
[0234] FIG. 39 shows an example of a method for determining decoded
values in the decoded-value determining part 110 of FIG. 37. In the
variable length decoding part 207-i of the respective layer i, the
bidirectional decoding is carried out. If there is an error in the
decoded data inputted to the variable length decoding part of a
certain layer, the error affects the decoded values of upper and
lower layers than the certain layer. Therefore, the decoded-value
determining part 110 in the variable length decoding part 207-i of
the respective layer i exchanges information to determine the final
decoded value.
[0235] In the embodiment of FIG. 39, if there is an undecodable
portion in the upper layer due to an error, an undecodable portion
is produced in the decoded data of the lower layer relating
thereto. In addition, if there is an undecodable portion in the
coded data of the lower layer due to an error, the decoded values
of the coded data of the upper layer corresponding thereto are
changed. FIG. 39 merely shows one example of a decoded-value
determining method. Therefore, it is possible to utilize any
methods, wherein the decoded-value determining part 110 in the
variable length decoding part 207-i of each of the layers i uses a
decoded result, which is presumed to be correct, of the forward and
backward decoded results when an error is detected in at least one
of the forward and backward decoded results using the decoded
results of the upper and lower layers, and wherein the decoded
result of a portion, which could not have been decoded both in the
forward and backward decoding processes, is abandoned. In the
fourth preferred embodiment, while the reversible codes have been
used both in the forward and backward directions in all the layers,
reversible codes may be used only in a part of layers.
[0236] [Fifth Preferred Embodiment]
[0237] The fifth preferred embodiment, wherein the variable length
coding and/or decoding system in the fourth preferred embodiment is
applied to the moving picture multiplexing part 703 and the moving
picture multiplexing separating part 707 of the moving picture
coding and/or decoding system shown in FIG. 16, will be described
below. In this case, the basic construction of the moving picture
coding and/or decoding system is the same as that in the second
preferred embodiment, except that the variable length coding and
decoding processes in the moving picture multiplexing part 703 and
the moving picture multiplexing separating part 707 are carried out
every layer.
[0238] FIGS. 40A, 40B, 41A, 41B, 42A, 42B, 43A and 43B show various
examples of syntax of a moving picture coding system in the moving
picture multiplexing part 703 in the fifth preferred embodiment.
First, the syntax shown in FIGS. 40A and 40B will be described. In
this syntax, inputted source symbols being coded data are divided
into two layers, i.e., an upper layer and a lower layer, and
synchronization intervals are set for the respective layers using
synchronization patterns RM and MM. Symbol ST at the suffix of the
syntax of the lower layer is a stuffing code capable of being
decoded in the backward direction shown in FIG. 14.
[0239] As shown in FIG. 40A, the upper layer includes a header
information and a mode information, which is arranged on the side
of the prefix and which includes coding modes for each of macro
blocks, information on the need for coding the respective blocks,
and values of INTRA DC. These informations are described by
variable length codes capable of being decoded in the usual forward
direction. In addition, motion vector informations are
variable-length coded to reversible codes by means of coding tables
shown in FIGS. 44 through 51 to be arranged after the header and
mode informations. In the coding tables shown in FIGS. 44 through
51, "VECTOR DIFFERENCES" denotes predicted values (differential
values) of motion vectors, "BIT NUMBER" denotes code lengths of
variable length codes, and "VLC CODE" denotes variable length
codes.
[0240] As shown in FIG. 52, motion vectors are obtained by
one-dimensional predictions, and predicted values are represented
by differential values. The predicting directions of the motion
vector is shown by arrows in FIG. 52. As shown in FIG. 52, a macro
block (shown by a greater rectangle in FIG. 52) has one motion
vector or four motion vectors, each of which exists in each of
luminance blocks (shown by smaller rectangles in FIG. 52). The
one-dimensional prediction is carried out with respect to these
blocks, and predicted values are described by variable length codes
in accordance with the coding tables shown in FIGS. 44 through 51.
This corresponds to the motion vector information at the end of
FIG. 40A. On the other hand, as shown in FIG. 40B, the lower layer
has DCT coefficient information other than the INTRA DC. For
example, the lower layer is described by reversible codes, which
are shown in FIGS. 19 through 25 or disclosed in Japanese Patent
Application No. 7-260383.
[0241] The syntax shown in FIGS. 41A and 41B will be described. In
this syntax, as shown in FIG. 41A, a header information and a mode
information 1 indicative of the number of motion vectors for each
macro coding are arranged on the side of the prefix of the upper
layer to be described by variable length codes capable of being
decoded in the usual forward direction, and the variable length
codes of the motion vectors are described after the header
information and the mode information. The variable length codes of
the motion vector information are the same as those of the syntax
of FIG. 40A. As shown in FIG. 41B, a mode information 2 indicative
of the presence of DCT coefficients in the respective blocks and
the INTRA DC are arranged on the side of the prefix of the lower
layer to be described by variable length codes capable of being
decoded in the usual forward direction, and a DCT coefficient
information other than the INTRA DC is described by reversible
codes after the DCT coefficient information similar to the syntax
of FIG. 40B.
[0242] The syntax shown in FIGS. 42A and 42B will be described. In
this syntax, only variable length codes capable of being decoded in
the forward direction are used for the upper layer. That is, as
shown in FIG. 42A, in the upper layer, a header information, a mode
information and a motion vector information are described by
variable length codes capable of being decoded in the forward
direction. In the lower layer, as shown in FIG. 42B, a DCT
coefficient information is described by reversible codes similar to
the syntax of FIG. 40B.
[0243] The syntax shown in FIGS. 43A and 43B also uses, in the
upper layer, only variable length codes capable of being decoded in
the forward direction. That is, as shown in FIG. 43A, in the upper
layer, a header information, a mode information 1 indicative of the
number of motion vectors for each macro coding, and a motion vector
information are described by variable length codes capable of being
decoded in the forward direction. As shown in FIG. 43B, in the
lower layer, a mode information 2 indicative of the presence of DCT
coefficient of each block, and an INTRA DC are arranged on the side
of the prefix to be described by variable length codes capable of
being decoded in the usual forward direction, and in the rear
thereof, a DCT coefficient information other than the INTRA DC is
described by reversible codes similar to the syntax of FIG.
41B.
[0244] In the fifth preferred embodiment, although the basic
constructions of the moving picture multiplexing part 703 and the
moving picture multiplexing separating part 707 are the same as
those of FIGS. 18A and 18B, the constructions of the upper-layer
variable length encoder 901, the lower-layer variable length
encoder 903, the upper-layer variable length decoder 905 and the
lower-layer variable length decoder 906 are different from those in
the second preferred embodiment. That is, out of data coded by the
source encoder 702, the upper layer data indicated by, e.g., the
syntax of FIG. 40A or 41A, are variable-length coded by means of
the upper-layer variable length encoder 901 to be transmitted to
the multiplexing part 903. In addition, out of data coded by the
source encoder 702, the lower layer data indicated by the syntax of
FIG. 40B or 41B are variable-length coded by means of the
lower-layer variable length encoder 903 to be transmitted to the
multiplexing part 903. In the multiplexing part 903, the coded data
in the upper and lower layers are multiplexed to be transmitted to
the transmission buffer 704.
[0245] In the fifth preferred embodiment, the decoded-value
determining part 110 (shown in FIG. 37) in the upper-layer variable
length decoder 905 and the lower-layer variable length decoder 906
determines decoded values on the basis of the forward decoded
result obtained by the forward decoder 108, to output a final
decoded result. In the error detection in the forward decoder 108
and the backward decoder 109 in the respective layers, when a bit
pattern, which does not exist as code words, appears or when an
error is detected by a check bit or the like, the position of the
bit pattern or the error is regarded as a detected position. When
no error is detected by the above described determining method and
when the number of decoded bits is not coincident with the bit
number of coded data in the synchronization interval, the first
decoding position is regarded as an error detected position.
[0246] In the fifth preferred embodiment, a decoded-value
determining method will be described below.
[0247] FIG. 53 shows a decoded-value determining method when the
syntax of the moving picture coding system in the moving picture
multiplexing part 703 is the syntax shown in FIGS. 40A and 40B.
Since the syntax of FIGS. 40A and 40B uses reversible codes for the
motion vector information of the upper layer and the DCT
coefficient information of the lower layer, the bidirectional
decoding can be carried out both in the upper and lower layers.
[0248] In the upper layer, the header information and the mode
information are first decoded. When the header information and/or
the mode information can not be completely decoded due to an error,
all the decoded values of the macro blocks of a synchronization
interval, in which the error occurs, are regarded as "Not Coded",
and the last screen is directly displayed. If all the header
information and the mode information can be decoded, the
bidirectional decoding of the motion vector information is then
carried out. A portion of the motion vector information, which can
not decoded, is regarded as "Not Coded". In the lower layer, the
DCT coefficient information of the lower layer is used for only
macro blocks, which have been decoded to the motion vector. The
macro blocks, in which the DCT coefficient information has been
abandoned due to the error, are regarded as "Not Coded".
[0249] FIG. 54 shows a decoded-value determining method when the
syntax of the moving picture coding system in the moving picture
multiplexing part 703 is the syntax shown in FIG. 41. According to
the syntax of FIG. 41, in the upper layer, the header information
and the mode information 1 are first decoded. If the header
information and/or the mode information 1 can not be completely
decoded due to an error, all the decoded value of macro blocks in a
synchronization interval, in which the error has occurred, are
regarded as "Not Coded", and the last screen is directly displayed.
If all the header information and the mode information 1 can be
decoded, the bidirectional decoding of the motion vector
information is then carried out. A portion of the motion vector
information, which can not be decoded, is regarded as "Not Coded".
In the lower layer, the DCT coefficient information of the lower
layer is used for only macro blocks, which have been decoded to the
motion vector. The macro blocks, in which the DCT coefficient
information has been abandoned due to the error, are regarded as
"Not Coded".
[0250] While the decoded values have been determined every macro
blocks in the decoded-value determining methods shown in FIGS. 53
and 54, the decoded values may be determined every block or code
word. In the fifth preferred embodiment, while the present
invention has been applied to the variable length codes of the
motion vector information and the DCT coefficient information, the
invention may be applied to other source symbols for variable
length coding.
[0251] [Sixth Preferred Embodiment]
[0252] The sixth preferred embodiment of a variable length coding
and/or decoding system, according to the present invention, will be
described below. Since the basis constructions in the sixth
preferred embodiment are the same as those in the first preferred
embodiment shown in the block diagram of FIG. 6, the sixth
preferred embodiment will be described referring to FIG. 6.
[0253] In a coding part 113, inputted source symbols are inputted
to an encoder 103. A code-word table 102 stores therein source
symbols previously prepared by a code-word table preparing part 101
and code words of variable length codes so that the source symbols
correspond to the code words. The encoder 103 selects code words
corresponding to the inputted source symbols from the code words
stored in the code-word table 102. A synchronization interval
setting part 104 outputs the code words selected by the encoder
103, as coded data every synchronization interval. The coded data
are transmitted to a decoding part 114 via a transmission or
storage system 105.
[0254] In the decoding part 114, a synchronization interval
detecting part 106 detects the synchronization interval of the
coded data inputted by the transmission or storage systems 105, and
a buffer 107 stores therein the coded data. A forward decoder 108
starts to decode the coded data stored in the buffer 107 from the
prefix of, the coded data, and a backward decoder 109 starts to
decode the coded data stored in the buffer 107 from the suffix of
the coded data.
[0255] The forward decoder 108 determines that an error is
detected, when a bit pattern, which does not exist in a forward
code-word table 111, appears in the decoded data or when a decoded
data having a bit number different from the bit number of the
buffer 107 is decoded. Similarly, the backward decoder 109
determines that an error is detected, when a bit pattern, which
does not existed in a backward code-word table 112, appears in the
decoded data and when a decoded data having a bit number different
from the bit number of the buffer is decoded.
[0256] The decoded-value determining part determines decoded values
on the basis of a decoded result (a forward decoded result)
obtained by the forward decoder and a decoded result (a backward
decoded result) obtained by the backward decoder, to output a final
decoded result.
[0257] FIG. 55 is a block diagram of the code-word table preparing
part 101. The occurrence probability of source symbols is inputted
to a stochastic model preparing part 23 to prepare a stochastic
model, which is inputted to a code selecting part 21. The code
selecting part 21 selects a code system having a shortest average
code length from selectable code systems to transmit the selected
result to a code-word forming part 22. The code-word forming part
22 forms code words of the code selected by the code-word selecting
part 21.
[0258] In this sixth preferred embodiment, a method for designing a
stochastic model is as follows. In the sixth preferred embodiment,
a method for designing a generalized stochastic model of a high
coding efficiency with respect to various probability distributions
of source symbols will be described.
[0259] First, notation will be described.
[0260] .theta.i: Information Source (i=1, . . . , n)
[0261] X: Source Symbols of Information Source X=(x1, x2, . . . ,
xm)
[0262] P(X.vertline..theta.i): Frequency Distribution of
.theta.i
[0263] As an example, a plurality of test images may be used as
information sources, and the frequency distribution obtained by
coding the test images may be considered.
[0264] A designed stochastic model Q(X) is derived by weighting and
averaging the frequency distribution obtained by the plurality of
information source. 1 Q ( X ) = w ( 1 ) P ( X 1 ) + + w ( n ) P ( X
n ) = i = 1 n w ( i ) P ( X n )
[0265] w(.theta.i): Weighting Factor w(.theta.1) +. . .
+w(.theta.n)=1
[0266] In this case, it is a problem how to derive the weighting
factor w(.theta.i). When the information source .theta.i is coded
by Q(X), an ideal code length L(X.vertline..theta.i) is as follows.
2 L ( X i ) = i = 1 m P ( X i ) log 2 ( Q ( X ) )
[0267] In order to minimize he ideal code lengths
L(X.vertline..theta.i) of the respective information sources on
average, assuming that 3 U ( X ) = ( 1 / n ) i = 1 n P ( X i ) , M
( X ) = - ( 1 / n ) i = 1 n i = 1 m P ( X i ) log 2 ( Q ( X ) ) = i
= 1 m U ( X ) log 2 ( Q ( X ) )
[0268] When U(X)=Q(X), this function is minimum as follows.
[0269] w(.theta.1)=. . . =w(.theta.n)=1/n
[0270] As another method for designing a stochastic model Q(X), a
method for designing a stochastic model Q(X) by supposing the wors
information source will be described.
[0271] When the information source .theta.i is coded by Q(X),
redundancy R(X.vertline..theta.i) is as follows. 4 R ( X i ) = L (
X i ) + i = 1 m P ( X i ) log 2 ( P ( X i ) )
[0272] A weighting mean S(X) of these redundancy with respect to
the respective information sources is a function indicative of a
mutual information of event X and event .theta. as follows. 5 S ( X
) = i = 1 n w ( i ) R ( X i ) = i = 1 n w ( i ) i = 1 m P ( X i )
log 2 ( P ( X i ) / i = 1 n w ( i ) P ( X i ) )
[0273] As a method for deriving the maximum value of this function,
there is known Arimoto-Blahut's algorithm, which is disclosed in
"An algorithm for computing the capacity of arbitrary discrete
memoryless channels" (S. Arimoto, IEEE Trans. Inform. Theory, Vol.
IT-18, pp.14-20, 1972), and "Computation of channel capacity and
rate-distortion functions" (R. E. Blahut, IEEE Trans. Inform.
Theory, Vol. IT-18, pp.460-473, 1972). By this algorithm or the
like, it is possible to derive w(.theta.i) (i =1, . . . , n) having
the maximum S(X), i.e., the worst w(.theta.i).
[0274] As methods for designing the stochastic model Q(X), although
the method for minimizing the ideal code length on average and the
method for supposing the worst information source on average have
been described, a method for combining the above two methods to
group information sources to prepare some stochastic models by the
former method to use the latter method for the stochastic models
may be applied.
[0275] The code selecting part 21 shown in FIG. 55 prepares Q(Y),
which is obtained by sorting the source symbols X in order of
probability in the stochastic models Q(X) prepared by the
stochastic model preparing part 23. The code selecting part 21 also
prepares F(Z), which is obtained by sorting the code lengths of the
reversible codes prepared by the code forming part 22 in order of
shorter length, to calculate 6 i = 1 m Q ( Y ) F ( Z )
[0276] to select one of the minimum value to prepare a code-word
table, in which source symbols correspond to code words.
[0277] As the codes formed by the code-word forming part 22,
variable length codes are used, which are described in, e.g.,
Japanese Patent Application 7-89772 or 7-260383, which uses the
weights of the code words and which can be decoded both in the
forward and backward directions.
[0278] [Seventh Preferred Embodiment]
[0279] The seventh preferred embodiment of the present invention
will be described below.
[0280] FIG. 56 is a block diagram illustrating a conception of a
moving picture coding and/or decoding system, which incorporates
the seventh preferred embodiment of a variable length coding and/or
decoding system according to the present invention. In a moving
picture encoder 709, data coded by a source encoder 702 are
variable-length coded and multiplexed by a moving picture
multiplexing part 703 to smoothed by a transmission buffer 704 to
be transmitted to a transmission or storage system 705 as coded
data. A coding control part 701 controls the source encoder 702 and
the moving picture multiplexing part 703 in view of the buffer
capacity of the transmission buffer 704. In a moving picture
decoder 710, the coded data transmitted from the transmission or
storage system 705 are stored in a receiving buffer 706 to be
multiplex-separated and variable-length decoded by a moving picture
multiplexing separating part 707 to be transmitted to a source
decoder 708, so that the moving picture is finally decoded.
[0281] Additional syntax in the seventh preferred embodiment will
be described. FIGS. 57A, 57B, 58A and 58B show syntax of a moving
picture coding system in the moving picture multiplexing part 703
and the moving picture multiplexing separating part 707 in the
seventh preferred embodiment. Coded data are separated into upper
and lower layers, and synchronization intervals of the respective
layers are set by synchronization patterns RM and MM. In the lower
layer, ST denotes a stuffing code capable of being decoded in the
backward direction as shown in FIG. 68. As shown in FIG. 69, an
intraframe coding frame is separated into an upper layer, which has
a part of mode information of macro blocks and INTRA DC, and a
lower layer, which has the rest of the mode information and an
AC-DCT coefficient information, to which reversible codes are
applied. As shown in FIG. 70, an interframe coding frame is
separated into an upper layer, which has a part of mode information
of macro blocks and a motion vector information, and a lower layer,
which has the rest of the mode information and an AC-DCT
coefficient information, to which reversible codes are applied.
[0282] The coding and decoding of the upper and lower layers shown
in FIGS. 57A through 58B are carried out by means of a moving
picture multiplexing part shown in FIG. 59. These constructions are
the same as those of a coding and/or decoding system in the fifth
preferred embodiment. That is, although the basic constructions of
the moving picture multiplexing part 703 and the moving picture
multiplexing separating part 707 of FIG. 56 are the same as those
shown in FIGS. 57A through 58B, the constructions of an upper-layer
variable length encoder 801, a lower-layer variable length encoder
803, an upper-layer variable length decoder 805 and a lower-layer
variable length decoder 806 are different from those in the second
preferred embodiment. That is, out of data coded by the source
encoder 702, the upper layer data indicated by, e.g., the syntax of
FIG. 57A or 58A, are variable-length coded by the upper-layer
variable length encoder 801 to be transmitted to the multiplexing
part 803. In addition, out of data coded by the source encoder 702,
the lower layer data indicated by, e.g., the syntax of FIG. 57B or
58B, are variable-length coded by the variable length encoder 802
to be transmitted to the multiplexing part 803. The coded data of
the upper and lower layers are multiplexed by the multiplexing part
803 to be transmitted to a transmission buffer 704.
[0283] In the seventh preferred embodiment, decoded-value
determining parts 110 (shown in FIG. 37) in the upper-layer
variable length decoder 805 and the lower-layer variable length
decoder 806 determine decoded values on the basis of the forward
decoded result obtained by a forward decoder 108, to output a final
decoded result. In the error detection in the forward decoder 108
and the backward decoder 109 in the respective layers, when a bit
pattern, which does not exist as code words, appears or when an
error is detected by a check bit or the like, the position of the
bit pattern or the error is regarded as a detected position, and
when no error is detected by the above described determining method
and when the number of decoded bits is not coincident with the bit
number of coded data in the synchronization interval, the first
decoding position is regarded as an error detected position.
[0284] [Eight Preferred Embodiment]
[0285] FIGS. 60 and 61 show examples of a source encoder 702 and a
source decoder 708 in the eighth preferred embodiment of a coding
and/or decoding system according to the present invention. In FIG.
60, an input picture signal is divided into macro blocks by means
of a blocking circuit 401. The input picture signal divided into
macro blocks is inputted to a subtracter 402, by which a difference
between the input picture signal and a prediction picture signal is
derived to produce a prediction residual signal. One of this
prediction residual signal and the input signal outputted from the
blocking circuit 401 is selected by a mode selecting switch 403 to
be discrete-cosine-transformed by a DCT (discrete cosine transform)
circuit 404. DCT coefficient data obtained by the DCT circuit are
quantized by a quantizer circuit 405. The quantized data are
divided into two parts, one of which is transmitted to a moving
picture multiplexer 703 as a DCT coefficient information, and the
other of which is sequentially processed by an inverse quantizer
circuit 406 and an IDCT (inverse discrete cosine transform) circuit
407, the processes being inverse to those of the quantizer circuit
405 and the DCT circuit 404, to be added, by means of an adder 408,
to the prediction picture signal inputted via a switch 411 to
produce a local decoded signal. This local decoded signal is stored
in a frame memory 409 and inputted to a motion compensation circuit
410. The motion compensation circuit 410 carries out the motion
compensation between the input picture signal and the local decoded
signal to derive a motion vector to produce a prediction picture
signal. The derived motion vector information is transmitted to a
moving picture multiplexer 703. A mode selecting circuit 412
determines a prediction system for coding the respective macro
blocks, on the basis of information from the motion compensation
circuit 410, to transmit the result to the moving picture
multiplexer 703 as a mode information with quantization parameters
and so forth. In FIG. 60, the output coded data are formed by
grouping the DCT coding coefficient, the motion vector information
and the mode information.
[0286] Referring to FIG. 61, the construction of an information
source decoder 708 for decoding data coded in FIG. 60 will be
described below. FIG. 61 shows an example of the Information source
decoder 708 corresponding to FIG. 60. In FIG. 61, the information
source decoder 708 receives a mode information divided by a moving
picture multiplexing separating circuit 707, a motion vector
information, a DCT coefficient information and so forth.
[0287] In a mode determining circuit 504, to which the mode
information is inputted, if the mode Information is an INTRA, a
mode selecting switch 505 is turned OFF, and the DCT coefficient
information is inverse quantized by an inverse quantizer circuit
501 to be inverse discrete-cosine-transformed by an IDCT circuit
502 to produce a regenerative picture signal. This regenerative
picture signal is stored in a frame memory 506 as a reference image
and outputted as a regenerative picture signal. If the mode
information is an INTER, the mode selecting switch 505 is turned
OFF, and the DCT coefficient information is inverse quantized by
the inverse quantizer circuit 501 to be inverse discrete-cosine
transformed by the ICDT circuit 502. Then, the reference image is
motion-compensated in the frame memory 504 on the basis of the
motion vector information to be added in an adder 503 to produce a
regenerative picture signal. This picture signal is stored in the
frame memory 504 as a reference image and outputted as a
regenerative picture signal.
[0288] [Ninth Preferred Embodiment]
[0289] Referring to FIG. 62, as an applied example of the present
invention, an embodiment of an image transmitter receiver, to which
the ninth preferred embodiment of a moving picture coding and/or
decoding system incorporating a variable length coding and/or
decoding system according to the present invention is applied, will
be described below.
[0290] A picture signal inputted to a camera 1002 mounted on a
personal computer (PC) 1001 is coded by means of a moving picture
encoder 709 incorporated in the PC. The coded data outputted from
the moving picture encoder 709 are multiplexed with other
informations on voice and data to be radio-transmitted by a radio
transmitter receiver 1003 to be received by another radio
transmitter receiver 1004. The signal received by the radio
transmitter receiver 1004 is divided into coded data and voice data
of a picture signal. The coded data of the picture signal are
decoded by means of a moving picture decoder 710 incorporated in a
work station (EWS) 1005 to be displayed on the EWS 1005.
[0291] Similarly, a picture signal inputted by a camera 1006
mounted on the EWS 1005 is coded by the moving picture encoder 709
incorporated in the EWS 1005. The coded data are multiplexed with
other information on voice and data to be radio-transmitted by the
radio transmitter receiver 1004 to be received by the transmitter
receiver 1003. The signal received by the transmitter receiver 1003
is divided into coded data and voice data of the picture signal.
The coded data of the picture signal are decoded by means of the
moving picture decoder 710 incorporated in the PC 1001 to be
displayed on the PC 1001.
[0292] [Tenth Preferred Embodiment]
[0293] While the present invention has been grasped as a hardware
construction of a moving picture coding and/or decoding system in
the first through ninth preferred embodiments, the invention may be
grasped as a recording medium for recording data or programs for
use in a coding and/or decoding system in the above preferred
embodiments. The tenth preferred embodiment of a recording medium
for recording data or programs will be described below.
[0294] In an information source encoder 702 shown in FIG. 56,
8.times.8 blocks of DCT coefficients after quantization are scanned
in the blocks to derive LASTs (0: non-zero coefficient, which is
not the last of the block, 1: non-zero coefficient of the last of
the block), RUNs (the number of zero runs before the non-zero
coefficient) and LEVELs (quantized value of the coefficient), which
are transmitted to a moving picture multiplexing part 703.
[0295] A lower-layer variable length encoder 802 in the moving
picture multiplexing part 703 has an INDEX table wherein INDEXs of
code words (VLC_CODE) of reversible codes correspond to RUNs and
LEVELs of non-LAST coefficients of INTRA (intraframe coding) shown
in FIG. 66, an INDEX table wherein INDEXs of code words (VLC_CODE)
of reversible codes correspond to RUNs and LEVELs of non-LAST
coefficients of INTER (interframe coding) shown in FIG. 67, an
INDEX table wherein INDEXs of code words (VLC_CODE) of reversible
codes correspond to RUNs and LEVELs of common LAST coefficients of
INTRA and INTER shown in FIG. 68, and a code-word table wherein
code words correspond to the INDEX values shown in FIGS. 69 and
70.
[0296] Referring to a flow chart of FIG. 63, the operation of the
lower-layer variable length encoder 802 will be described. First,
on the basis of the mode information, the code-word table of the
non-LAST coefficients and the LAST coefficients of the INTRA is
selected when the INTRA is carried out, and the INDEX table of the
non-LAST coefficients and the LAST coefficients of the INTER when
the INTER is carried out (S101). Then, in order to code using the
code-word table, (RUN, LEVEL) is compared with the maximum value
R_max of the RUNs and the maximum value L_max of the LEVELs in the
INDEX table, so that it is verified whether (RUN, LEVEL) exists in
the INDEX table (S102).
[0297] If it exists therein, the INDEX table of FIGS. 66 through 68
is used to check whether the value of the INDEX is 0 (S104). If it
is not 0, the code words of the INDEX in the code-word table of
FIG. 17 are outputted. The last bit "s" of the code words in the
code-word table denotes the sign of the LEVEL. When "s" is "0", the
sign of the LEVEL is positive, and when "s" is "1", the sign of the
LEVEL is negative (S105). When the value of the INDEX is 0 or
beyond the range, ESCAPE codes continue as shown in FIG. 73 by
coefficients, which do not exist in the code-word table, and 1 bit
indicating whether it is a LAST coefficient and the absolute values
of the RUNs and LEVELs shown in FIGS. 71 and 72 are fixed-length
coded. To the prefix of the fixed-length coding part, "00001" of
two escapes is added, and to the suffix, an escape code is also
added. The code words, wherein the INDEX values in FIGS. 69 and 70
are 0, are escape codes. The last bit "s" of the VLC_CODE used as
the ESCAPE code denotes the sign of the LEVEL. If the "s" is "0",
the LEVEL is positive, and if the "s" is "1", the LEVEL is negative
(S106).
[0298] As described above, if the INDEX table is used, it is
possible to efficiently output code words without the need of
search even if the ESCAPE codes are used. The lower-layer variable
length decoder 802 has a decoded-value table shown in FIGS. 74 and
75, and operates on the basis of the INDEX values obtained by
decoding variable length codes.
[0299] Referring to flow charts of FIGS. 64 and 65, the operation
of the lower-layer variable length decoder will be described
below.
[0300] FIG. 64 shows the decoding operation in the forward
direction. First, variable length code are decoded in the forward
direction (S201). Then, it is check whether the INDEX value
obtained by decoding is 0 (S202). If it is not 0, the INTRA and
INTER of the decoded-value table of FIG. 74 are selected on the
basis of the mode information of the upper layer, to derive decoded
values of the LAST, RUN and LEVEL (S203). Since it is an escape
code when the INDEX value is 0, the subsequent fixed-length code is
decoded to derive decoded values of the LAST, RUN and LEVEL (S204).
Subsequently, the end ESCAPE code is decoded (S205). The sign of
the LEVEL is positive when the last bit of the code word is "0",
and negative when it is "1" (S206).
[0301] FIG. 65 shows the decoding operation in the backward
direction. First, the sign of the LEVEL is determined by the first
bit of the code word. If it is "0", the sign is positive, and if it
is "1", the sign is negative (S301). Then, the variable length code
is decoded in the backward direction (S302). Then, it is checked
whether the INDEX value obtained by decoding in the backward
direction is 0 (S303). When the INDEX value is not 0, the INTRA and
INTER in the decoded-value table of FIG. 74 are selected on the
basis of the mode information of the upper layer, to derive decoded
values of the LAST, RUN and LEVEL (S304). When the INDEX value is
0, it is an escape code, so that the subsequent fixed-length code
is decoded to derive decoded values of the LEVEL, RUN and LAST
(S305). Subsequently, the first ESCAPE code is decoded (S306). As
described above, if the decoded-value table is used, it is possible
to save the memory capacity and to efficiently carry out the
bidirectional decoding even if the ESCAPE code is used.
[0302] The supplementary explanation of the decoding process in the
tenth preferred embodiment will be given. That is, a decoded-value
determining method when the syntax of the moving picture coding
system in the moving picture multiplexing part 703 is syntax shown
in FIGS. 57A through 58A will be described. First, a mode
information 1 and a INTRA DC of the upper layer are decoded. If an
error is found and the mode information 1 and the INTRA DC are not
completely decoded, all the decoded values of macro blocks of a
synchronization interval, in which an error occurs, are regarded as
"Not Coded". If the first frame is coded and the last frame does
not exist, the macro blocks are colored in gray or a special
color.
[0303] In the lower layer, when a mode information 2 can not be
decoded due to an error, all the coded data of the lower layer are
abandoned, and the decoded values of the upper layer are rewritten
to be regarded as "Not Coded", or indicated by only the INTRA DC.
When AC-DCT coefficients are predicted in some of macro blocks of
the INTRA mode, variable length codes can be decoded. However,
since the prediction is carried out on the basis of the surrounding
macro blocks, when the variable length codes can not be decoded in
the surrounding macro blocks, the decoded values are regarded as
"Not Coded".
[0304] In the interframe coding frame, the mode information 1 and
the motion vector of the upper layer are first decoded. If an error
is founded and the mode information 1 and the motion vector can not
be completely decoded, all the decoded values of the macro blocks
of a synchronization interval, in which the error occurs, are
regarded as "Not Coded". If all can be decoded, it is verified that
the synchronization interval MM exists. If it does not exist, all
the decoded values of the macro blocks of the synchronization
interval are regarded as "Not Coded".
[0305] In the lower layer, when the mode information 2 and the
INTRA DC can not be decoded due to an error, the coded data of the
lower layer are abandoned, and the decoded values of the upper
layer are rewritten by the indication of "Not Coded" or the
indication (MC Not Coded) of only motion vectors from the last
frame.
[0306] If the AC-DCT coefficients are predicted in some macro
blocks of the INTRA mode, the variable length codes can be decoded.
However, since the prediction is carried out on the basis of the
surrounding macro blocks, when the variable length codes can not be
decoded in the surrounding macro blocks, the decoded values are
regarded as "Not Coded".
[0307] FIG. 76 shows a detailed decoded-value determining method in
the AC-DCT coefficient portion of the interframe coding frame.
First, as shown in FIG. 76(a), when the ways to the positions
(error detected positions) of a macro block, in which errors are
detected in the forward and backward decoded results, do not
overlap with each other, only the decoded results of a macro block,
in which no error has been decoded, are used as decoded values, and
the decoded results at the two error detected positions are not
used. In addition, the decoded results of the upper layer are
rewritten on the basis of the decoded results of the upper layer so
that the INTRA macro block is directly indicated by the last frame
and the INTRA macro block is indicated only by the motion
compensation using the last frame.
[0308] As shown in FIG. 76(b), when the ways to the error detected
positions overlap with each other in the forward and backward
decoded results, the forward decoded results are used for decoded
values before the macro block, in which the error has been detected
in the forward decoded result, and the backward decoded results are
used for decoded values after the macro block.
[0309] Alternatively, the backward decoded results may be
preferentially used for decoded values before the macro block, in
which the error has been detected in the backward decoded result,
and the forward decoded results may be used for decoded values
after the macro block.
[0310] As shown in FIG. 76(c), when errors are detected in the same
macro block both in the forward and backward decoded results, the
decoded values in the macro block at the error detected position
are abandoned and are not used for decoded values. In addition, the
decoded results of the upper layer are rewritten on the basis of
the decoded results of the mode information of the upper layer so
that the INTRA macro block is directly indicated by the last frame
and the INTER macro block is indicated by only the motion
compensation using the last frame, and the backward decoded results
are used for the decoded values after the macro block.
[0311] As shown in FIG. 76(d), when an error is detected in the
stuffing code and the decoding can not be decoded in the backward
direction, the decoding is carried out only in the forward
direct-on. When the error is detected, the decoded results of the
upper layer with respect to the macro blocks after the error
detected position are rewritten on the basis of the decoded results
of the mode information of the upper layer so that the INTRA macro
blocks are directly indicated by the last frame and the INTER macro
blocks are Indicated only by the motion compensation using the last
frame.
[0312] While the decoded values have been determined every macro
blocks in the decoded-value determining method of FIG. 76, the
detected values may be determined every block or code word.
[0313] As described in the above preferred embodiments, a variable
length coding and/or decoding system of the present invention
requires smaller amounts of calculation and storage to be
efficient. Specifically, the variable length coding and/or decoding
system can be applied to a moving picture coding and/or decoding,
and it is possible to provide an efficient moving picture coding
and/or decoding system with smaller amounts of calculation and
storage.
* * * * *