text: /*
   * @DEC_COPYRIGHT@
   */
  /*
   * HISTORY
   * $Log: scon_internals.h,v $
   * $EndLog$
   */
  /*****************************************************************************
  **  Copyright (c) Digital Equipment Corporation, 1997                       **
  **                                                                          **
  **  All Rights Reserved.  Unpublished rights reserved under the  copyright  **
  **  laws of the United States.                                              **
  **                                                                          **
  **  The software contained on this media is proprietary  to  and  embodies  **
  **  the   confidential   technology   of  Digital  Equipment  Corporation.  **
  **  Possession, use, duplication or  dissemination  of  the  software  and  **
  **  media  is  authorized  only  pursuant  to a valid written license from  **
  **  Digital Equipment Corporation.                                          **
  **                                                                          **
  **  RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by  the  U.S.  **
  **  Government  is  subject  to  restrictions as set forth in Subparagraph  **
  **  (c)(1)(ii) of DFARS 252.227-7013, or in FAR 52.227-19, as applicable.   **
  ******************************************************************************/
  
  #ifndef _SCON_INTERNALS_H_
  #define _SCON_INTERNALS_H_
  
  #include "scon.h"
  
  typedef struct SconVideoInfo_s {
    dword         Width;
    dword         Height;
    SconBoolean_t NegHeight; /* height is negative */
    dword         Stride;
    dword         FourCC;
    dword         BPP;       /* bits per pixel */
    dword         Pixels;    /* total pixels in a frame */
    dword         ImageSize; /* image size in bytes */
    dword         RGBmasks;  /* 565, 555, 888 */
    dword         Rmask;     /* Red mask */
    dword         Gmask;     /* Green mask */
    dword         Bmask;     /* Blue mask */
  } SconVideoInfo_t;
  
  typedef struct SconAudioInfo_s {
    dword SPS;      /* samples per second: 8000, 11025, 22050, etc */
    dword BPS;      /* bits per sample: 8 or 16 */
    dword Channels; /* channels: 1=mono, 2=stereo */
  } SconAudioInfo_t;
  
  typedef struct SconInfo_s {
    SconMode_t        Mode;
    SconBoolean_t     InputInited;  /* input format has been setup */
    SconBoolean_t     OutputInited; /* output format has been setup */
    SconBoolean_t     SameFormat;   /* input and output are the same format */
    SconBoolean_t     Flip;         /* image must be flipped when converted */
    SconBoolean_t     ScaleDown;    /* input image is being scaled down */
    SconBoolean_t     ScaleUp;      /* input image is being scaled up */
    union {
      SconVideoInfo_t vinfo;
      SconAudioInfo_t ainfo;
    } Input;
    union {
      SconVideoInfo_t vinfo;
      SconAudioInfo_t ainfo;
    } Output;
    unsigned char    *FImage;        /* format conversion image buffer */
    dword             FImageSize;
    unsigned char    *SImage;        /* scaling image buffer */
    dword             SImageSize;
    void             *Table;         /* conversion lookup table */
    dword             TableSize;
    void             *dbg;           /* debug handle */
  } SconInfo_t;
  
  /********************** Private Prototypes ***********************/
  /*
   * scon_video.c
   */
  unsigned dword sconCalcImageSize(SconVideoInfo_t *vinfo);
  SconStatus_t sconConvertVideo(SconInfo_t *Info, void *inbuf, dword inbufsize,
                                                  void *outbuf, dword outbufsize);
  
  /*
   * scon_yuv_to_rgb.c
   */
  SconStatus_t sconInitYUVtoRGB(SconInfo_t *Info);
  SconStatus_t scon422ToRGB565(unsigned char *inimage, unsigned char *outimage,
                       unsigned dword width,  unsigned dword height,
                       dword stride, unsigned qword *pTable);
  SconStatus_t scon420ToRGB565(unsigned char *inimage, unsigned char *outimage,
                       unsigned dword width,  unsigned dword height,
                       dword stride, unsigned qword *pTable);
  SconStatus_t scon422ToRGB888(unsigned char *inimage, unsigned char *outimage,
                       unsigned dword width,  unsigned dword height,
                       dword stride, unsigned qword *pTable);
  SconStatus_t scon420ToRGB888(unsigned char *inimage, unsigned char *outimage,
                       unsigned dword width,  unsigned dword height,
                       dword stride, unsigned qword *pTable);
  SconStatus_t sconInitRGBtoYUV(SconInfo_t *Info);
  SconStatus_t sconRGB888To420(unsigned char *inimage, unsigned char *outimage,
                       unsigned dword width,  unsigned dword height,
                       dword stride, unsigned qword *pTable);
  
  #endif /* _SCON_INTERNALS_H_ */
  
  