jpc_tsfb.h - vx32 - Local 9vx git repository for patches.
 (HTM) git clone git://r-36.net/vx32
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       jpc_tsfb.h (5770B)
       ---
            1 /*
            2  * Copyright (c) 1999-2000 Image Power, Inc. and the University of
            3  *   British Columbia.
            4  * Copyright (c) 2001-2002 Michael David Adams.
            5  * All rights reserved.
            6  */
            7 
            8 /* __START_OF_JASPER_LICENSE__
            9  * 
           10  * JasPer License Version 2.0
           11  * 
           12  * Copyright (c) 1999-2000 Image Power, Inc.
           13  * Copyright (c) 1999-2000 The University of British Columbia
           14  * Copyright (c) 2001-2003 Michael David Adams
           15  * 
           16  * All rights reserved.
           17  * 
           18  * Permission is hereby granted, free of charge, to any person (the
           19  * "User") obtaining a copy of this software and associated documentation
           20  * files (the "Software"), to deal in the Software without restriction,
           21  * including without limitation the rights to use, copy, modify, merge,
           22  * publish, distribute, and/or sell copies of the Software, and to permit
           23  * persons to whom the Software is furnished to do so, subject to the
           24  * following conditions:
           25  * 
           26  * 1.  The above copyright notices and this permission notice (which
           27  * includes the disclaimer below) shall be included in all copies or
           28  * substantial portions of the Software.
           29  * 
           30  * 2.  The name of a copyright holder shall not be used to endorse or
           31  * promote products derived from the Software without specific prior
           32  * written permission.
           33  * 
           34  * THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
           35  * LICENSE.  NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER
           36  * THIS DISCLAIMER.  THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
           37  * "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
           38  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
           39  * PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO
           40  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
           41  * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
           42  * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
           43  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
           44  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  NO ASSURANCES ARE
           45  * PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE
           46  * THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY.
           47  * EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS
           48  * BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL
           49  * PROPERTY RIGHTS OR OTHERWISE.  AS A CONDITION TO EXERCISING THE RIGHTS
           50  * GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE
           51  * ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY.  THE SOFTWARE
           52  * IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL
           53  * SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES,
           54  * AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL
           55  * SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH
           56  * THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH,
           57  * PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH
           58  * RISK ACTIVITIES").  THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY
           59  * EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
           60  * 
           61  * __END_OF_JASPER_LICENSE__
           62  */
           63 
           64 /*
           65  * Tree-Structured Filter Bank (TSFB) Library
           66  *
           67  * $Id: jpc_tsfb.h 1918 2005-07-24 14:12:08Z baford $
           68  */
           69 
           70 #ifndef JPC_TSFB_H
           71 #define JPC_TSFB_H
           72 
           73 /******************************************************************************\
           74 * Includes.
           75 \******************************************************************************/
           76 
           77 #include "jasper/jas_seq.h"
           78 
           79 #include "jpc_fix.h"
           80 #include "jpc_qmfb.h"
           81 
           82 /******************************************************************************\
           83 * Constants.
           84 \******************************************************************************/
           85 
           86 #define        JPC_TSFB_MAXBANDS        (JPC_TSFB_MAXDEPTH * 3 + 1)
           87 #define        JPC_TSFB_MAXDEPTH        32
           88 #define        JPC_TSFB_RITIMODE        JPC_QMFB1D_RITIMODE
           89 
           90 #define        JPC_TSFB_MAXBANDSPERNODE        (JPC_QMFB1D_MAXCHANS * JPC_QMFB1D_MAXCHANS)
           91 
           92 #define        JPC_TSFB_PRUNEVERT        0x01
           93 #define        JPC_TSFB_PRUNEHORZ        0x02
           94 
           95 #define JPC_TSFB_LL        0
           96 #define JPC_TSFB_LH        1
           97 #define JPC_TSFB_HL        2
           98 #define JPC_TSFB_HH        3
           99 
          100 /******************************************************************************\
          101 * Types.
          102 \******************************************************************************/
          103 
          104 typedef struct {
          105 
          106         int xstart;
          107         int ystart;
          108         int xend;
          109         int yend;
          110         int locxstart;
          111         int locystart;
          112         int locxend;
          113         int locyend;
          114 
          115 } jpc_tsfbnodeband_t;
          116 
          117 typedef struct jpc_tsfbnode_s {
          118 
          119         int numhchans;
          120         int numvchans;
          121         jpc_qmfb1d_t *hqmfb;
          122         jpc_qmfb1d_t *vqmfb;
          123         int maxchildren;
          124         int numchildren;
          125         struct jpc_tsfbnode_s *children[JPC_TSFB_MAXBANDSPERNODE];
          126         struct jpc_tsfbnode_s *parent;
          127 
          128 } jpc_tsfbnode_t;
          129 
          130 typedef struct {
          131         jpc_tsfbnode_t *root;
          132 } jpc_tsfb_t;
          133 
          134 typedef struct {
          135         int xstart;
          136         int ystart;
          137         int xend;
          138         int yend;
          139         int orient;
          140         int locxstart;
          141         int locystart;
          142         int locxend;
          143         int locyend;
          144         jpc_fix_t synenergywt;
          145 } jpc_tsfb_band_t;
          146 
          147 /******************************************************************************\
          148 * Functions.
          149 \******************************************************************************/
          150 
          151 /* Create a TSFB. */
          152 jpc_tsfb_t *jpc_cod_gettsfb(int qmfbid, int numlevels);
          153 
          154 /* Create a wavelet-type TSFB with the specified horizontal and vertical
          155   QMFBs. */
          156 jpc_tsfb_t *jpc_tsfb_wavelet(jpc_qmfb1d_t *hqmfb, jpc_qmfb1d_t *vqmfb,
          157   int numdlvls);
          158 
          159 /* Destroy a TSFB. */
          160 void jpc_tsfb_destroy(jpc_tsfb_t *tsfb);
          161 
          162 /* Perform analysis. */
          163 void jpc_tsfb_analyze(jpc_tsfb_t *tsfb, int flags, jas_seq2d_t *x);
          164 
          165 /* Perform synthesis. */
          166 void jpc_tsfb_synthesize(jpc_tsfb_t *tsfb, int flags, jas_seq2d_t *x);
          167 
          168 /* Get band information for a TSFB. */
          169 int jpc_tsfb_getbands(jpc_tsfb_t *tsfb, uint_fast32_t xstart,
          170   uint_fast32_t ystart, uint_fast32_t xend, uint_fast32_t yend,
          171   jpc_tsfb_band_t *bands);
          172 
          173 #endif