home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 9 / CD_ASCQ_09_1193.iso / news / 4441 / mpegcode / src / headers / search.h < prev   
C/C++ Source or Header  |  1993-09-27  |  4KB  |  114 lines

  1. /*===========================================================================*
  2.  * search.h                                     *
  3.  *                                         *
  4.  *    stuff dealing with the motion search                     *
  5.  *                                         *
  6.  *===========================================================================*/
  7.  
  8. /*
  9.  * Copyright (c) 1993 The Regents of the University of California.
  10.  * All rights reserved.
  11.  *
  12.  * Permission to use, copy, modify, and distribute this software and its
  13.  * documentation for any purpose, without fee, and without written agreement is
  14.  * hereby granted, provided that the above copyright notice and the following
  15.  * two paragraphs appear in all copies of this software.
  16.  *
  17.  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  18.  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  19.  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  20.  * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  21.  *
  22.  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  23.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  24.  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  25.  * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  26.  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  27.  */
  28.  
  29. /*  
  30.  *  $Header: /n/picasso/users/keving/encode/src/headers/RCS/search.h,v 1.2 1993/07/22 22:24:23 keving Exp keving $
  31.  *  $Log: search.h,v $
  32.  * Revision 1.2  1993/07/22  22:24:23  keving
  33.  * nothing
  34.  *
  35.  * Revision 1.1  1993/07/09  00:17:23  keving
  36.  * nothing
  37.  *
  38.  */
  39.  
  40.  
  41. /*==============*
  42.  * HEADER FILES *
  43.  *==============*/
  44.  
  45. #include "ansi.h"
  46.  
  47.  
  48. /*===========*
  49.  * CONSTANTS *
  50.  *===========*/
  51.  
  52. #define PSEARCH_SUBSAMPLE   0
  53. #define PSEARCH_EXHAUSTIVE  1
  54. #define    PSEARCH_LOGARITHMIC 2
  55. #define    PSEARCH_TWOLEVEL    3
  56.  
  57. #define BSEARCH_EXHAUSTIVE  0
  58. #define BSEARCH_CROSS2        1
  59. #define BSEARCH_SIMPLE        2
  60.  
  61.  
  62. /*========*
  63.  * MACROS *
  64.  *========*/
  65.  
  66. #define COMPUTE_MOTION_BOUNDARY(by,bx,stepSize,leftMY,leftMX,rightMY,rightMX)\
  67.     leftMY = -2*DCTSIZE*by;    /* these are valid motion vectors */         \
  68.     leftMX = -2*DCTSIZE*bx;                             \
  69.                     /* these are invalid motion vectors */         \
  70.     rightMY = 2*(Fsize_y - (by+2)*DCTSIZE + 1) - 1;                 \
  71.     rightMX = 2*(Fsize_x - (bx+2)*DCTSIZE + 1) - 1;                 \
  72.                                          \
  73.     if ( stepSize == 2 ) {                             \
  74.     rightMY++;                                 \
  75.     rightMX++;                                 \
  76.     }
  77.     
  78. #define VALID_MOTION(y,x)    \
  79.     (((y) >= leftMY) && ((y) < rightMY) &&   \
  80.      ((x) >= leftMX) && ((x) < rightMX) )
  81.  
  82.  
  83. /*===============================*
  84.  * EXTERNAL PROCEDURE prototypes *
  85.  *===============================*/
  86.  
  87. void    SetPSearchAlg _ANSI_ARGS_((char *alg));
  88. void    SetBSearchAlg _ANSI_ARGS_((char *alg));
  89. char    *BSearchName _ANSI_ARGS_((void));
  90. char    *PSearchName _ANSI_ARGS_((void));
  91. int32    PLogarithmicSearch _ANSI_ARGS_((LumBlock currentBlock,
  92.                     MpegFrame *prev,
  93.                     int by, int bx,
  94.                     int *motionY, int *motionX));
  95. int32    PSubSampleSearch _ANSI_ARGS_((LumBlock currentBlock,
  96.                           MpegFrame *prev, int by, int bx,
  97.                           int *motionY, int *motionX));
  98. int32    PLocalSearch _ANSI_ARGS_((LumBlock currentBlock,
  99.                       MpegFrame *prev, int by, int bx,
  100.                       int *motionY, int *motionX,
  101.                       int32 bestSoFar));
  102. int32    PTwoLevelSearch _ANSI_ARGS_((LumBlock currentBlock,
  103.                      MpegFrame *prev, int by, int bx,
  104.                      int *motionY, int *motionX,
  105.                      int32 bestSoFar));
  106.  
  107.  
  108. /*==================*
  109.  * GLOBAL VARIABLES *
  110.  *==================*/
  111.  
  112. extern int psearchAlg;
  113.  
  114.