001/* 002 * $RCSfile: WTFilterSpec.java,v $ 003 * $Revision: 1.1 $ 004 * $Date: 2005/02/11 05:02:28 $ 005 * $State: Exp $ 006 * 007 * Class: WTFilterSpec 008 * 009 * Description: Generic class for storing wavelet filter specs 010 * 011 * 012 * 013 * COPYRIGHT: 014 * 015 * This software module was originally developed by Raphaël Grosbois and 016 * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel 017 * Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David 018 * Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research 019 * Centre France S.A) in the course of development of the JPEG2000 020 * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This 021 * software module is an implementation of a part of the JPEG 2000 022 * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio 023 * Systems AB and Canon Research Centre France S.A (collectively JJ2000 024 * Partners) agree not to assert against ISO/IEC and users of the JPEG 025 * 2000 Standard (Users) any of their rights under the copyright, not 026 * including other intellectual property rights, for this software module 027 * with respect to the usage by ISO/IEC and Users of this software module 028 * or modifications thereof for use in hardware or software products 029 * claiming conformance to the JPEG 2000 Standard. Those intending to use 030 * this software module in hardware or software products are advised that 031 * their use may infringe existing patents. The original developers of 032 * this software module, JJ2000 Partners and ISO/IEC assume no liability 033 * for use of this software module or modifications thereof. No license 034 * or right to this software module is granted for non JPEG 2000 Standard 035 * conforming products. JJ2000 Partners have full right to use this 036 * software module for his/her own purpose, assign or donate this 037 * software module to any third party and to inhibit third parties from 038 * using this software module for non JPEG 2000 Standard conforming 039 * products. This copyright notice must be included in all copies or 040 * derivative works of this software module. 041 * 042 * Copyright (c) 1999/2000 JJ2000 Partners. 043 * 044 * 045 * 046 */ 047 048 049package jj2000.j2k.wavelet; 050 051/** 052 * This is the generic class from which the ones that hold the analysis or 053 * synthesis filters to be used in each part of the image derive. See 054 * AnWTFilterSpec and SynWTFilterSpec. 055 * 056 * <P>The filters to use are defined by a hierarchy. The hierarchy is: 057 * 058 * <P>- Tile and component specific filters<br> 059 * - Tile specific default filters<br> 060 * - Component main default filters<br> 061 * - Main default filters<br> 062 * 063 * <P>At the moment tiles are not supported by this class. 064 * 065 * @see jj2000.j2k.wavelet.analysis.AnWTFilterSpec 066 * 067 * @see jj2000.j2k.wavelet.synthesis.SynWTFilterSpec 068 * */ 069 070public abstract class WTFilterSpec { 071 072 /** The identifier for "main default" specified filters */ 073 public final static byte FILTER_SPEC_MAIN_DEF = 0; 074 075 /** The identifier for "component default" specified filters */ 076 public final static byte FILTER_SPEC_COMP_DEF = 1; 077 078 /** The identifier for "tile specific default" specified filters */ 079 public final static byte FILTER_SPEC_TILE_DEF = 2; 080 081 /** The identifier for "tile and component specific" specified filters */ 082 public final static byte FILTER_SPEC_TILE_COMP = 3; 083 084 /** The spec type for each tile and component. The first index is the 085 * component index, the second is the tile index. NOTE: The tile specific 086 * things are not supported yet. */ 087 // Use byte to save memory (no need for speed here). 088 protected byte specValType[]; 089 090 /** 091 * Constructs a 'WTFilterSpec' object, initializing all the components and 092 * tiles to the 'FILTER_SPEC_MAIN_DEF' spec type, for the specified number 093 * of components and tiles. 094 * 095 * <P>NOTE: The tile specific things are not supported yet 096 * 097 * @param nc The number of components 098 * 099 * @param nt The number of tiles 100 * 101 * 102 * */ 103 protected WTFilterSpec(int nc) { 104 specValType = new byte[nc]; 105 } 106 107 /** 108 * Returns the data type used by the filters in this object, as defined in 109 * the 'DataBlk' interface. 110 * 111 * @return The data type of the filters in this object 112 * 113 * @see jj2000.j2k.image.DataBlk 114 * 115 * 116 * */ 117 public abstract int getWTDataType(); 118 119 /** 120 * Returns the type of specification for the filters in the specified 121 * component and tile. The specification type is one of: 122 * 'FILTER_SPEC_MAIN_DEF', 'FILTER_SPEC_COMP_DEF', 'FILTER_SPEC_TILE_DEF', 123 * 'FILTER_SPEC_TILE_COMP'. 124 * 125 * <P>NOTE: The tile specific things are not supported yet 126 * 127 * @param n The component index 128 * 129 * @param t The tile index, in raster scan order. 130 * 131 * @return The specification type for component 'n' and tile 't'. 132 * 133 * 134 * */ 135 public byte getKerSpecType(int n) { 136 return specValType[n]; 137 } 138 139}