1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/*===========================================================================*
* fsize.c *
* *
* procedures to keep track of frame size *
* *
* EXPORTED PROCEDURES: *
* Fsize_Reset *
* Fsize_Note *
* Fsize_Validate *
* *
* EXPORTED VARIABLES: *
* Fsize_x *
* Fsize_y *
* *
*===========================================================================*/
/*
* Copyright (c) 1995 The Regents of the University of California.
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without written agreement is
* hereby granted, provided that the above copyright notice and the following
* two paragraphs appear in all copies of this software.
*
* IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
* CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/
/*==============*
* HEADER FILES *
*==============*/
#include "all.h"
#include "fsize.h"
#include "dct.h"
/*==================*
* GLOBAL VARIABLES *
*==================*/
int Fsize_x = 0;
int Fsize_y = 0;
/*=====================*
* EXPORTED PROCEDURES *
*=====================*/
/*===========================================================================*
*
* Fsize_Reset
*
* reset the frame size to 0
*
* RETURNS: nothing
*
* SIDE EFFECTS: Fsize_x, Fsize_y
*
*===========================================================================*/
void
Fsize_Reset()
{
Fsize_x = Fsize_y = 0;
}
/*===========================================================================*
*
* Fsize_Validate
*
* make sure that the x, y values are 16-pixel aligned
*
* RETURNS: modifies the x, y values to 16-pixel alignment
*
* SIDE EFFECTS: none
*
*===========================================================================*/
void
Fsize_Validate(x, y)
int *x;
int *y;
{
*x &= ~(DCTSIZE * 2 - 1);
*y &= ~(DCTSIZE * 2 - 1);
}
/*===========================================================================*
*
* Fsize_Note
*
* note the given frame size and modify the global values as appropriate
*
* RETURNS: nothing
*
* SIDE EFFECTS: Fsize_x, Fsize_y
*
*===========================================================================*/
void
Fsize_Note(id, width, height)
int id;
int width;
int height;
{
Fsize_x = width;
Fsize_y = height;
Fsize_Validate(&Fsize_x, &Fsize_y);
if ((Fsize_x==0) || (Fsize_y==0)) {
fprintf(stderr,"Frame %d: size is zero!\n",id);
/* exit(1); */
}
#ifdef BLEAH
if (Fsize_x == 0) {
Fsize_x = width;
Fsize_y = height;
Fsize_Validate(&Fsize_x, &Fsize_y);
} else if (width < Fsize_x || height < Fsize_y) {
fprintf(stderr, "Frame %d: wrong size: (%d,%d). Should be greater or equal to: (%d,%d)\n",
id, width, height, Fsize_x, Fsize_y);
exit(1);
}
#endif
}
|