~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Open Mash Cross Reference
mash/codec/jpeg/nv_stub.cc

Component: ~ [ mash ] ~ [ apps ] ~ [ gsm ] ~ [ lib ] ~ [ otcl ] ~ [ srm ] ~ [ tcl8.3 ] ~ [ tclcl ] ~ [ tk8.3 ] ~ [ tutorials ] ~

  1 /*
  2  * nv_stub.cc --
  3  *
  4  *      FIXME: This file needs a description here.
  5  *
  6  * Copyright (c) 1996-2002 The Regents of the University of California.
  7  * All rights reserved.
  8  *
  9  * Redistribution and use in source and binary forms, with or without
 10  * modification, are permitted provided that the following conditions are met:
 11  *
 12  * A. Redistributions of source code must retain the above copyright notice,
 13  *    this list of conditions and the following disclaimer.
 14  * B. Redistributions in binary form must reproduce the above copyright notice,
 15  *    this list of conditions and the following disclaimer in the documentation
 16  *    and/or other materials provided with the distribution.
 17  * C. Neither the names of the copyright holders nor the names of its
 18  *    contributors may be used to endorse or promote products derived from this
 19  *    software without specific prior written permission.
 20  *
 21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
 22  * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 23  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
 25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 31  * POSSIBILITY OF SUCH DAMAGE.
 32  */
 33 
 34 #include <sys/param.h>
 35 #include <netinet/in.h>
 36 #include "jpeg.h"
 37 
 38 static YUVJpegDecoder* decoder;
 39 extern void JVideoConfig(JpegDecoder::config& c, int w, int h, int q);
 40 
 41 static DiffJpegDecoder* diffdecoder;
 42 
 43 extern "C" {
 44 #include "nv/video.h"
 45 
 46 void jpeg_decode(vidimage_t *image, u_char *data, int len)
 47 {
 48         u_short *hdr = (u_short*)data;
 49         int width = ntohs(hdr[0]);
 50         int height = ntohs(hdr[1]);
 51         int qFactor = ntohs(hdr[2]);
 52         data += 8;
 53         len -= 8;
 54         if (decoder == 0) {
 55                 JpegDecoder::config config;
 56                 JVideoConfig(config, width, height, qFactor);
 57                 decoder = new YUVJpegDecoder(config);
 58         }
 59         /*FIXME hope there is room */
 60         data[len++] = 0xff;
 61         data[len++] = 0xd9; /* EOI */
 62 
 63         decoder->decode(data, len);
 64 
 65         u_short *syp = (u_short*)decoder->yplane();
 66         u_char *sup = decoder->uplane();
 67         u_char *svp = decoder->vplane();
 68 
 69         u_short *yp = (u_short*)image->y_data;
 70         u_char *uvp = (u_char*)image->uv_data;
 71         for (len = width * height; len >= 0; len -= 2) {
 72                 *yp++ = *syp++;
 73                 *uvp++ = *sup++ - 128;
 74                 *uvp++ = *svp++ - 128;
 75         }
 76         VidImage_UpdateRect(image, 0, 0, width, height);
 77 }
 78 
 79 struct blkcache* init_jpegdiff(int w, int h, int q)
 80 {
 81         JpegDecoder::config config;
 82         /*FIXME*/
 83         JVideoConfig(config, w, h, q);
 84         diffdecoder = new DiffJpegDecoder(config);
 85         return (diffdecoder->dcts);
 86 }
 87 
 88 void jpeg_getdiff(u_char* in, int len, struct blkcache* bc, u_char* diffvector)
 89 {
 90         diffdecoder->decode(in, len, bc, diffvector);
 91 }
 92 
 93 }
 94 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.