Signature information, representing important content of the data, is
extracted from a first data block and then embedded in a different block.
Data hiding techniques are used to minimize perception of the hidden
data. Thereafter, if the first data block is lost or damaged during
communication, the hidden data is extracted from the other data block and
used to reconstruct the lost or damaged block. If desired, the signature
information can be used along with information obtained from neighboring
blocks adjacent or proximate to the lost or damaged block.