summaryrefslogtreecommitdiff
path: root/progs/tests/yuvsquare.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2003-05-20 09:54:58 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2003-05-20 09:54:58 +0000
commit27358a24a0113a62492923abe35e8660ed7335ef (patch)
tree474f45986d53e0829312ac99db7dc78634d4a84d /progs/tests/yuvsquare.c
parenteea72ff722975d91bc2293a403bb43d69e5858d0 (diff)
move LoadYUVImage into readtex.c
Diffstat (limited to 'progs/tests/yuvsquare.c')
-rw-r--r--progs/tests/yuvsquare.c107
1 files changed, 1 insertions, 106 deletions
diff --git a/progs/tests/yuvsquare.c b/progs/tests/yuvsquare.c
index 1d2ce135fe..eab255b427 100644
--- a/progs/tests/yuvsquare.c
+++ b/progs/tests/yuvsquare.c
@@ -18,7 +18,6 @@
static GLfloat Xrot = 0, Yrot = 0, Zrot = 0;
static GLint ImgWidth, ImgHeight;
-static GLenum ImgFormat;
static GLushort *ImageYUV = NULL;
@@ -108,94 +107,6 @@ static void SpecialKey( int key, int x, int y )
#define CLAMP( X, MIN, MAX ) ( (X)<(MIN) ? (MIN) : ((X)>(MAX) ? (MAX) : (X)) )
-static void ConvertRGBtoYUV(GLint w, GLint h, GLint texel_bytes,
- const GLubyte *src,
- GLushort *dest)
-{
- GLint i, j;
-
- for (i = 0; i < h; i++) {
- for (j = 0; j < w; j++) {
- const GLfloat r = (src[0]) / 255.0;
- const GLfloat g = (src[1]) / 255.0;
- const GLfloat b = (src[2]) / 255.0;
- GLfloat y, cr, cb;
- GLint iy, icr, icb;
-
- y = r * 65.481 + g * 128.553 + b * 24.966 + 16;
- cb = r * -37.797 + g * -74.203 + b * 112.0 + 128;
- cr = r * 112.0 + g * -93.786 + b * -18.214 + 128;
- /*printf("%f %f %f -> %f %f %f\n", r, g, b, y, cb, cr);*/
- iy = (GLint) CLAMP(y, 0, 254);
- icb = (GLint) CLAMP(cb, 0, 254);
- icr = (GLint) CLAMP(cr, 0, 254);
-
- if (j & 1) {
- /* odd */
- *dest = (iy << 8) | icr;
- }
- else {
- /* even */
- *dest = (iy << 8) | icb;
- }
- dest++;
- src += texel_bytes;
- }
- }
-}
-
-
-/*
- * Load an SGI .rgb file and return a pointer to the image data.
- * Input: imageFile - name of .rgb to read
- * Output: width - width of image
- * height - height of image
- * format - format of image (GL_RGB or GL_RGBA)
- * Return: pointer to image data or NULL if error
- */
-GLushort *LoadYUVImage( const char *imageFile, GLint *width, GLint *height,
- GLenum *format )
-{
- TK_RGBImageRec *image;
- GLint bytes;
- GLushort *buffer;
-
- image = tkRGBImageLoad( imageFile );
- if (!image) {
- return NULL;
- }
-
- if (image->components==3) {
- *format = GL_RGB;
- }
- else if (image->components==4) {
- *format = GL_RGBA;
- }
- else {
- /* not implemented */
- fprintf(stderr,
- "Error in LoadYUVImage %d-component images not implemented\n",
- image->components );
- return NULL;
- }
-
- *width = image->sizeX;
- *height = image->sizeY;
-
- buffer = (GLushort *) malloc( image->sizeX * image->sizeY * 2 );
-
- if (buffer)
- ConvertRGBtoYUV( image->sizeX,
- image->sizeY,
- image->components,
- image->data,
- buffer );
-
-
- FreeImage(image);
- return buffer;
-}
-
/* #define LINEAR_FILTER */
@@ -222,7 +133,7 @@ static void Init( int argc, char *argv[] )
else
file = TEXTURE_FILE;
- ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight, &ImgFormat);
+ ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight );
if (!ImageYUV) {
printf("Couldn't read %s\n", TEXTURE_FILE);
exit(0);
@@ -230,28 +141,12 @@ static void Init( int argc, char *argv[] )
printf("Image: %dx%d\n", ImgWidth, ImgHeight);
-/* error = gluBuild2DMipmaps( GL_TEXTURE_2D, */
-/* GL_YCBCR_MESA, */
-/* ImgWidth, ImgHeight, */
-/* GL_YCBCR_MESA, */
-/* GL_UNSIGNED_SHORT_8_8_MESA, */
-/* ImageYUV ); */
-
-
-#if 0
- glTexImage2D(GL_TEXTURE_2D, 0,
- GL_RGB,
- ImgWidth, ImgHeight, 0,
- GL_RGB,
- GL_UNSIGNED_SHORT_5_6_5, ImageYUV);
-#else
glTexImage2D(GL_TEXTURE_2D, 0,
GL_YCBCR_MESA,
ImgWidth, ImgHeight, 0,
GL_YCBCR_MESA,
GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV);
-#endif
glEnable(GL_TEXTURE_2D);