Abstract: A data encoder and method utilizes a node list for storing a list of nodes in the data array to be processed, a branch list for storing a list of tree branches in the data array to be processed and a set list for storing a list of data sets. The method begins by initially storing in the node list node identifiers representing a predefined set of nodes in the data array, corresponding to coefficients generated by a last iteration of a data decomposition procedure. Also, it initially stores in the branch list branch identifiers representing tree branches corresponding to a predefined subset of the nodes initially listed in the node list. Each such tree branch has an associated root node and a branch depth value indicating how many node layers intervene between the root node and the nodes of the tree branch closest to the root node. The set list is initially empty, and a parameter called the LayerLimit value is also initialized.
Abstract: A data encoder and method successively analyzes successively smaller blocks of a specified data array. Data blocks are analyzed in a predefined order, and corresponding entries identifying data blocks containing at least one non-zero value are stored in that same order in a list of blocks. Whenever a data block is processed, if the data block is entirely filled with zero data it is so identified in the output data and no further processing of the subblock is required. Otherwise, if the size of the data block is greater than a predefined minimum block size (e.g., 2.times.2), the block is divided into smaller data blocks and those smaller data blocks are put on the list of blocks for further processing. Finally, if the size of a data block that is being processed is the predefined minimum block size, values representing all the data items in that data block are written into the output data.