home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 9
/
CD_ASCQ_09_1193.iso
/
news
/
4441
/
mpegcode
/
src
/
fsize.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-09-27
|
3KB
|
125 lines
/*===========================================================================*
* 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) 1993 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;
{
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);
}
}