670 lines
26 KiB
C
670 lines
26 KiB
C
/*
|
|
* @DEC_COPYRIGHT@
|
|
*/
|
|
/*
|
|
* HISTORY
|
|
* $Log: sv_prototypes.h,v $
|
|
* Revision 1.1.9.6 1996/10/28 17:32:26 Hans_Graves
|
|
* Changed sv_MpegGet/SetParamInt() to use qwords.
|
|
* [1996/10/28 17:07:11 Hans_Graves]
|
|
*
|
|
* Revision 1.1.9.5 1996/10/02 18:42:52 Hans_Graves
|
|
* Added InputFourCC to sv_MpegEncodeFrameInOrder().
|
|
* [1996/10/02 18:34:36 Hans_Graves]
|
|
*
|
|
* Revision 1.1.9.4 1996/07/19 02:11:09 Hans_Graves
|
|
* Change 422i motion recon function protos.
|
|
* [1996/07/19 01:27:59 Hans_Graves]
|
|
*
|
|
* Revision 1.1.9.3 1996/05/24 22:21:42 Hans_Graves
|
|
* Added MPEG 422i protos
|
|
* [1996/05/24 21:55:51 Hans_Graves]
|
|
*
|
|
* Revision 1.1.9.2 1996/05/07 19:56:10 Hans_Graves
|
|
* Added HUFF_SUPPORT
|
|
* [1996/05/07 17:24:56 Hans_Graves]
|
|
*
|
|
* Revision 1.1.7.7 1996/04/10 21:47:39 Hans_Graves
|
|
* Added Set/GetParamBoolean()
|
|
* [1996/04/10 20:39:51 Hans_Graves]
|
|
*
|
|
* Revision 1.1.7.6 1996/04/09 20:50:35 Karen_Dintino
|
|
* Adding WIN32 support
|
|
* [1996/04/09 20:47:45 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.7.5 1996/04/09 16:04:40 Hans_Graves
|
|
* Fix protos for sv_MpegIDCTToFrame/AddToFrame()
|
|
* [1996/04/09 16:03:24 Hans_Graves]
|
|
*
|
|
* Revision 1.1.7.4 1996/04/04 23:35:05 Hans_Graves
|
|
* Added protos for sv_MpegReconFieldBlock() and sv_MpegReconFrameBlock()
|
|
* [1996/04/04 22:59:42 Hans_Graves]
|
|
*
|
|
* Revision 1.1.7.3 1996/03/29 22:21:21 Hans_Graves
|
|
* Added JPEG_SUPPORT ifdefs.
|
|
* [1996/03/29 22:14:58 Hans_Graves]
|
|
*
|
|
* Added protos for SvMpegIDCTToFrameP_S() and SvMpegIDCTAddToFrameP_S()
|
|
* [1996/03/27 21:54:00 Hans_Graves]
|
|
*
|
|
* Revision 1.1.7.2 1996/03/08 18:46:37 Hans_Graves
|
|
* Added protos for new MPEG assembly
|
|
* [1996/03/08 16:25:05 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.5 1996/02/06 22:54:03 Hans_Graves
|
|
* Added MpegGet/SetParam() prototypes
|
|
* [1996/02/06 22:50:20 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.4 1996/01/24 19:33:21 Hans_Graves
|
|
* Changed DCT block for shorts to ints
|
|
* [1996/01/24 18:13:05 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.3 1996/01/08 16:41:29 Hans_Graves
|
|
* Updated MPEG I and II prototypes for new decoder
|
|
* [1996/01/08 15:47:45 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.2 1995/12/07 19:31:35 Hans_Graves
|
|
* Removed prototype for error()
|
|
* [1995/12/07 19:20:55 Hans_Graves]
|
|
*
|
|
* Added MPEG encoder prototypes
|
|
* [1995/12/07 18:00:18 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.16 1995/09/22 12:58:43 Bjorn_Engberg
|
|
* Use MPEG_SUPPORT and H261_SUPPORT.
|
|
* [1995/09/22 12:50:18 Bjorn_Engberg]
|
|
*
|
|
* Revision 1.1.2.15 1995/09/11 20:36:34 Paul_Gauthier
|
|
* Add version string to JPEG header as APP1 segment
|
|
* [1995/09/11 20:35:13 Paul_Gauthier]
|
|
*
|
|
* Revision 1.1.2.14 1995/08/15 19:13:57 Karen_Dintino
|
|
* {** Merge Information **}
|
|
* {** Command used: bsubmit **}
|
|
* {** Ancestor revision: 1.1.2.12 **}
|
|
* {** Merge revision: 1.1.2.13 **}
|
|
* {** End **}
|
|
* fix reentrant problem
|
|
* [1995/08/15 18:31:06 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.2.13 1995/08/14 19:40:28 Hans_Graves
|
|
* Fixed H261 Init prototypes.
|
|
* [1995/08/14 18:43:51 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.12 1995/08/07 22:09:52 Hans_Graves
|
|
* Added prototype for CrawlMotionEstimation()
|
|
* [1995/08/07 22:09:31 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.11 1995/08/04 16:32:28 Karen_Dintino
|
|
* Change to SvStatus_t for some low level rtns
|
|
* [1995/08/04 16:22:50 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.2.10 1995/08/03 18:02:07 Karen_Dintino
|
|
* Encode/Decode routines need to return SvStatus_t
|
|
* [1995/08/03 18:00:02 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.2.9 1995/08/02 15:27:00 Hans_Graves
|
|
* Changed prototype for blockdiff16_C()
|
|
* [1995/08/02 15:25:00 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.8 1995/07/28 17:36:05 Hans_Graves
|
|
* Added prototype for sv_CompressH261()
|
|
* [1995/07/28 17:29:00 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.7 1995/07/26 17:48:57 Hans_Graves
|
|
* Added prototype for sv_DecompressH261()
|
|
* [1995/07/26 17:47:19 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.6 1995/07/17 16:12:17 Hans_Graves
|
|
* Added H261 prototypes.
|
|
* [1995/07/17 15:54:27 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.5 1995/06/27 13:54:27 Hans_Graves
|
|
* Removed prototype for sv_RdRunLevel().
|
|
* [1995/06/27 13:52:12 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.4 1995/06/20 14:13:39 Karen_Dintino
|
|
* Separate H.261 prototypes
|
|
* [1995/06/20 13:29:25 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.2.3 1995/06/19 20:31:18 Karen_Dintino
|
|
* Added support for H.261
|
|
* [1995/06/19 20:14:23 Karen_Dintino]
|
|
*
|
|
* Revision 1.1.2.2 1995/05/31 18:10:24 Hans_Graves
|
|
* Inclusion in new SLIB location.
|
|
* [1995/05/31 15:51:00 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.8 1994/12/14 19:09:54 Paul_Gauthier
|
|
* Removed sv_gentoc.c from SLIB
|
|
* [1994/12/14 19:07:29 Paul_Gauthier]
|
|
*
|
|
* Revision 1.1.2.7 1994/12/12 15:39:31 Paul_Gauthier
|
|
* Merge changes from other SLIB versions
|
|
* [1994/12/12 15:35:04 Paul_Gauthier]
|
|
*
|
|
* Revision 1.1.2.6 1994/11/09 21:33:12 Paul_Gauthier
|
|
* Optimizations
|
|
* [1994/11/09 15:31:22 Paul_Gauthier]
|
|
*
|
|
* Revision 1.1.2.3 1994/10/13 20:34:53 Paul_Gauthier
|
|
* MPEG cleanup
|
|
* [1994/10/12 21:08:55 Paul_Gauthier]
|
|
*
|
|
* Revision 1.1.2.2 1994/10/07 14:58:16 Paul_Gauthier
|
|
* SLIB v3.0 incl. MPEG Decode
|
|
* [1994/10/07 13:57:07 Paul_Gauthier]
|
|
*
|
|
* $EndLog$
|
|
*/
|
|
/*
|
|
**++
|
|
** FACILITY: Workstation Multimedia (WMM) v1.0
|
|
**
|
|
** FILE NAME:
|
|
** MODULE NAME:
|
|
**
|
|
** MODULE DESCRIPTION:
|
|
**
|
|
** DESIGN OVERVIEW:
|
|
**
|
|
**--
|
|
*/
|
|
/*****************************************************************************
|
|
** Copyright (c) Digital Equipment Corporation, 1994 **
|
|
** **
|
|
** 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. **
|
|
******************************************************************************/
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* SLIB Internals Prototype file (externals are in SV.h)
|
|
*
|
|
* Modification History: sv_prototypes.h
|
|
*
|
|
* 29-Jul-94 PSG Created
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _SV_PROTOTYPES_H
|
|
#define _SV_PROTOTYPES_H
|
|
|
|
extern void DumpBlock(char *title, short *blk);
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Compress/Decompress Codec Prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*
|
|
** sv_codec_api.c
|
|
*/
|
|
static SvStatus_t sv_GetYUVComponentPointers(int, int, int, u_char *, int,
|
|
u_char **, u_char **, u_char **);
|
|
static SvStatus_t sv_JpegExtractBlocks (SvCodecInfo_t *, u_char *);
|
|
|
|
#ifdef JPEG_SUPPORT
|
|
/*
|
|
** sv_jpeg_decode.c
|
|
*/
|
|
static void sv_FillBitBuffer (int);
|
|
static SvStatus_t sv_ProcessRestart (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_DecodeJpeg (SvCodecInfo_t *);
|
|
extern void sv_ReInitJpegDecoder (SvCodecInfo_t *);
|
|
|
|
/*
|
|
** sv_jpeg_encode.c
|
|
*/
|
|
extern void WriteJpegData(char *, int, u_char **);
|
|
extern void FlushBytes (u_char **);
|
|
static void EmitBits(u_short, int);
|
|
static void FlushBits (void);
|
|
extern void sv_EncodeOneBlock (SvRLE_t *, SvHt_t *, SvHt_t *);
|
|
extern void sv_HuffEncoderInit (SvCodecInfo_t *);
|
|
extern void EmitRestart (SvJpegCompressInfo_t *);
|
|
extern void sv_HuffEncoderTerm (u_char **);
|
|
|
|
|
|
/*
|
|
** sv_jpeg_format.c
|
|
*/
|
|
extern SvStatus_t sv_AddJpegHeader (SvHandle_t, u_char *, int, int *);
|
|
extern SvStatus_t sv_AddJpegTrailer (SvHandle_t, u_char *, int, int *);
|
|
extern SvStatus_t sv_FormatJpegData (SvHandle_t, char *, char *, int, int *);
|
|
static SvStatus_t sv_AddCompSpecs (int, int, int, int, char **, char *);
|
|
static SvStatus_t sv_AddEntropyData (SvCodecInfo_t *, char *, char **, char *);
|
|
static SvStatus_t sv_AddFrame (SvCodecInfo_t *, char *, char **, char *);
|
|
static SvStatus_t sv_AddFrameHeader (SvCodecInfo_t *, char **, char *);
|
|
static SvStatus_t sv_AddMarker ();
|
|
static SvStatus_t sv_AddScanHeader (SvCodecInfo_t *, char **, char *);
|
|
static SvStatus_t sv_AddSLIBHeader (char **, char *);
|
|
static SvStatus_t sv_Write16bits (short, char **, char *);
|
|
static SvStatus_t sv_Write8bits (int, char **, char *);
|
|
static SvStatus_t sv_AddMMSVer (char **, char *);
|
|
|
|
/*
|
|
** sv_jpeg_init.c
|
|
*/
|
|
static SvStatus_t sv_InitEncoderStruct (SvCodecInfo_t *);
|
|
static SvStatus_t sv_InitDecoderStruct (SvCodecInfo_t *);
|
|
static SvStatus_t sv_InitHDecoder (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_InitJpegEncoder (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_InitJpegDecoder (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_InitInfo (SvCodecInfo_t *);
|
|
extern void sv_copyHTable (SvHt_t *, SvHt_t *);
|
|
extern SvStatus_t sv_CheckChroma (SvCodecInfo_t *);
|
|
static int JroundUp (int, int);
|
|
/*
|
|
** sv_jpeg_tables.c
|
|
*/
|
|
extern SvStatus_t sv_MakeQTables (int, SvCodecInfo_t *);
|
|
extern SvStatus_t sv_MakeHEncodingTables (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_MakeHDecodingTables (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_MakeEncoderBlkTable (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_MakeDecoderBlkTable (SvCodecInfo_t *);
|
|
static void sv_MakeHCodeTables (SvHt_t *, char *, u_short *, u_int *);
|
|
extern SvStatus_t sv_ConvertQTable (SvCodecInfo_t *, SvQuantTables_t *);
|
|
extern SvStatus_t sv_LoadDefaultHTable (SvCodecInfo_t *);
|
|
|
|
/*
|
|
** sv_jpeg_parse.c
|
|
*/
|
|
static u_int sv_GetShort (SvCodecInfo_t *);
|
|
static int sv_GetNextMarker (void);
|
|
static void sv_ProcessBogusMarker (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessDHT (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessDQT (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessDRI (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessAPP0 (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessSOF (SvCodecInfo_t *, int);
|
|
static SvStatus_t sv_ProcessSOS (SvCodecInfo_t *);
|
|
static SvStatus_t sv_ProcessSOI (SvCodecInfo_t *);
|
|
/*static int sv_ProcessTables (SvCodecInfo_t *);*/
|
|
static SvStatus_t sv_ParseFileHeader (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_ParseScanHeader (SvCodecInfo_t *);
|
|
extern SvStatus_t sv_ParseFrame (u_char *, int, SvCodecInfo_t *);
|
|
#endif /* JPEG_SUPPORT */
|
|
|
|
#ifdef MPEG_SUPPORT
|
|
/*---------------------------------------------------------------------------*/
|
|
/* MPEG Prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
/*
|
|
** sv_mpeg_common.c
|
|
*/
|
|
extern SvStatus_t sv_MpegSetParamBoolean(SvHandle_t Svh, SvParameter_t param,
|
|
ScBoolean_t value);
|
|
extern SvStatus_t sv_MpegSetParamInt(SvHandle_t Svh, SvParameter_t param,
|
|
qword value);
|
|
extern SvStatus_t sv_MpegSetParamFloat(SvHandle_t Svh, SvParameter_t param,
|
|
float value);
|
|
extern ScBoolean_t sv_MpegGetParamBoolean(SvHandle_t Svh, SvParameter_t param);
|
|
extern qword sv_MpegGetParamInt(SvHandle_t Svh, SvParameter_t param);
|
|
extern float sv_MpegGetParamFloat(SvHandle_t Svh, SvParameter_t param);
|
|
|
|
/*
|
|
** sv_mpeg_parse.c
|
|
*/
|
|
extern SvStatus_t sv_MpegGetHeader(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetSliceHdr(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs,
|
|
SvMpegLayer_t *layer);
|
|
extern SvStatus_t sv_MpegGetImageInfo(int fd, SvImageInfo_t *iminfo);
|
|
extern SvStatus_t sv_MpegFindNextPicture(SvCodecInfo_t *Info,
|
|
SvPictureInfo_t *PictureInfo);
|
|
|
|
/*
|
|
** sv_mpeg_decode.c
|
|
*/
|
|
extern SvStatus_t sv_MpegInitDecoder (SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_MpegFreeDecoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_MpegDecompressFrame(SvCodecInfo_t *, u_char *, u_char **);
|
|
|
|
/*
|
|
** sv_mpeg_block.c
|
|
*/
|
|
extern ScBoolean_t sv_MpegGetIntraBlock(
|
|
ScBitstream_t *bs, SvMpegLayer_t *layer, int comp,
|
|
int *dc_dct_pred);
|
|
extern ScBoolean_t sv_MpegGetInterBlock(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs, SvMpegLayer_t *layer, int comp);
|
|
extern ScBoolean_t sv_Mpeg2GetIntraBlock(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs, SvMpegLayer_t *layer, int comp,
|
|
int *dc_dct_pred);
|
|
extern ScBoolean_t sv_Mpeg2GetInterBlock(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs, SvMpegLayer_t *layer, int comp);
|
|
|
|
extern ScBoolean_t sv_MpegMotionVectors(ScBitstream_t *bs,
|
|
int PMV[2][2][2],
|
|
int dmvector[2], int mv_field_sel[2][2],
|
|
int s, int mv_count, int mv_format,
|
|
int h_r_size, int v_r_size, int dmv, int mvscale);
|
|
extern ScBoolean_t sv_MpegMotionVector(ScBitstream_t *bs,
|
|
int *PMV, int *dmvector,
|
|
int h_r_size, int v_r_size,
|
|
int dmv, int mvscale, int full_pel_vector);
|
|
extern void sv_MpegCalcDMV(SvMpegDecompressInfo_t *MpegInfo,
|
|
int DMV[][2], int *dmvector, int mvx, int mvy);
|
|
extern int sv_MpegGetDClum_C(ScBitString_t bits, unsigned int *bitsleft);
|
|
extern int sv_MpegGetDCchrom_C(ScBitString_t bits, unsigned int *bitsleft);
|
|
|
|
/*
|
|
** sv_mpeg_block2.s
|
|
*/
|
|
extern void sv_MpegClearBlock_S(int *block);
|
|
extern int sv_MpegInterHuffToDCT_S(int *dctblk, unsigned int zzpos,
|
|
ScBitString_t bits, unsigned int *pbitsleft,
|
|
int quant_scale, int *quant_matrix);
|
|
extern int sv_MpegIntraHuffToDCT_S(int *dctblk, unsigned int comp,
|
|
ScBitString_t bits, unsigned int *pbitsleft,
|
|
int quant_scale, int *quant_matrix,
|
|
int *dc_dct_pred);
|
|
extern int sv_MpegGetDClum_S(ScBitString_t bits, unsigned int *bitsleft);
|
|
extern int sv_MpegGetDCchrom_S(ScBitString_t bits, unsigned int *bitsleft);
|
|
|
|
|
|
/*
|
|
** sv_mpeg_recon.c
|
|
*/
|
|
extern void sv_MpegReconstruct(SvMpegDecompressInfo_t *MpegInfo,
|
|
unsigned char **newframe, int bx, int by,
|
|
int mb_type, int motion_type, int PMV[2][2][2],
|
|
int mv_field_sel[2][2], int dmvector[2], int stwtype);
|
|
extern void sv_MpegReconFieldBlock(int chroma,
|
|
unsigned char *src[], int sfield,
|
|
unsigned char *dst[], int dfield, int lx, int lx2,
|
|
int w, int h, int x, int y, int dx, int dy, int addflag);
|
|
extern void sv_MpegReconFrameBlock(int chroma,
|
|
unsigned char *src[], unsigned char *dst[], int lx, int lx2,
|
|
int w, int h, int x, int y, int dx, int dy, int addflag);
|
|
|
|
|
|
/*
|
|
** sv_mpeg_getmb.c
|
|
*/
|
|
extern int sv_MpegGetMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs, SvMpegLayer_t *layer);
|
|
extern int sv_MpegGetIMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetPMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetBMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetDMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetSpIMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetSpPMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetSpBMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern int sv_MpegGetSNRMBtype(SvMpegDecompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
|
|
extern int sv_MpegGetCBP(ScBitstream_t *bs);
|
|
|
|
/*
|
|
** sv_mpeg_422recon.c
|
|
*/
|
|
void sv_CopyCBP_C(int *cpbdata, unsigned char *np, unsigned int w);
|
|
void sv_CopyCBPf_C(int *cpbdata, unsigned char *np, unsigned int w);
|
|
void sv_MpegFrameCopy411to422i(unsigned char *refframe,
|
|
unsigned char *newframe,
|
|
int x, int y, unsigned int w,
|
|
int dx, int dy, unsigned char *tmpbuf);
|
|
void sv_MpegFrameMC411to422i(int *block, unsigned int cbp,
|
|
unsigned char *refframe, unsigned char *newframe,
|
|
int x, int y, unsigned int w, int dx, int dy,
|
|
ScBoolean_t fdct, unsigned char *tmpbuf);
|
|
void sv_MpegDFrameMC411to422i(int *block, unsigned int cbp,
|
|
unsigned char *brefframe, unsigned char *frefframe,
|
|
unsigned char *newframe,
|
|
int x, int y, unsigned int w,
|
|
int bdx, int bdy, int fdx, int fdy, ScBoolean_t fdct,
|
|
unsigned char *tmpbuf);
|
|
void sv_MpegDFieldMC411to422i(int *block, unsigned int cbp,
|
|
unsigned char *refframe, int rfield0, int rfield1,
|
|
unsigned char *newframe, int x, int y, unsigned int w,
|
|
int dx0, int dy0, int dx1, int dy1, ScBoolean_t fdct,
|
|
unsigned char *tmpbuf);
|
|
void sv_MpegQFieldMC411to422i(int *blocks, unsigned int cbp,
|
|
unsigned char *bframe, int bfield0, int bfield1,
|
|
unsigned char *fframe, int ffield0, int ffield1,
|
|
unsigned char *newframe, int x, int y, unsigned int w,
|
|
int bdx0, int bdy0, int bdx1, int bdy1,
|
|
int fdx0, int fdy0, int fdx1, int fdy1,
|
|
ScBoolean_t fdct, unsigned char *tmpbuf);
|
|
|
|
/*
|
|
** sv_mpeg_422reconcbp.s
|
|
*/
|
|
void sv_CopyCBP_S(int *cpbdata, unsigned char *np, unsigned int w);
|
|
void sv_CopyCBPf_S(int *cpbdata, unsigned char *np, unsigned int w);
|
|
|
|
/*
|
|
** sv_mpeg_idct.c
|
|
*/
|
|
void sv_MpegIDCTToFrame_C(int *inbuf, unsigned char *rfp, int incr);
|
|
void sv_MpegIDCTAddToFrame_C(int *inbuf, unsigned char *rfp, int incr);
|
|
void sv_MpegIDCTToFrame2_C(int *inbuf, unsigned char *rfp, int rinc,
|
|
unsigned char *ffp, int finc, int comp);
|
|
void sv_MpegIDCTAddToFrame2_C(int *inbuf, unsigned char *rfp, int rinc,
|
|
unsigned char *ffp, int finc, int comp);
|
|
|
|
/*
|
|
** sv_mpeg_idct2.s
|
|
*/
|
|
void sv_MpegIDCTToFrame_S(int *inbuf, unsigned char *rfp, int incr);
|
|
void sv_MpegIDCTAddToFrame_S(int *inbuf, unsigned char *rfp, int incr);
|
|
|
|
/*
|
|
** sv_mpeg_idct3.s
|
|
*/
|
|
void sv_MpegIDCTToFrameP_S(int *inbuf, unsigned char *rfp, int incr);
|
|
void sv_MpegIDCTAddToFrameP_S(int *inbuf, unsigned char *rfp, int incr);
|
|
|
|
/*
|
|
** sv_mpeg_init.c
|
|
*/
|
|
extern SvStatus_t sv_MpegInitEncoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_MpegFreeEncoder(SvCodecInfo_t *Info);
|
|
|
|
/*
|
|
** sv_mpeg_encode.c
|
|
*/
|
|
extern SvStatus_t sv_MpegEncoderBegin(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_MpegEncodeFrame(SvCodecInfo_t *Info,
|
|
unsigned char *InputImage);
|
|
extern SvStatus_t sv_MpegEncodeFrameInOrder(SvCodecInfo_t *Info,
|
|
unsigned char *InputImage,
|
|
unsigned int InputFourCC);
|
|
extern SvStatus_t sv_MpegEncoderEnd(SvCodecInfo_t *Info);
|
|
|
|
/*
|
|
** sv_mpeg_putpic.c
|
|
*/
|
|
extern void sv_MpegPutPict(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *BS,
|
|
unsigned char *frame);
|
|
|
|
/*
|
|
** sv_mpeg_puthdr.c
|
|
*/
|
|
extern void sv_MpegPutSeqHdr(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs);
|
|
extern void sv_MpegPutSeqExt(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs);
|
|
extern void sv_MpegPutSeqDispExt(SvMpegCompressInfo_t *MpegInfo,
|
|
ScBitstream_t *bs);
|
|
extern void sv_MpegPutUserData(ScBitstream_t *bs, char *userdata);
|
|
extern void sv_MpegPutGOPHdr(ScBitstream_t *bs, float frame_rate, int tco,
|
|
int frame, int closed_gop);
|
|
extern void sv_MpegPutSeqEnd(ScBitstream_t *bs);
|
|
|
|
/*
|
|
** sv_mpeg_motion.c
|
|
*/
|
|
extern void sv_MpegMotionEstimation(SvMpegCompressInfo_t *MpegInfo,
|
|
unsigned char *oldorg, unsigned char *neworg,
|
|
unsigned char *oldref, unsigned char *newref,
|
|
unsigned char *cur, unsigned char *curref,
|
|
int sxf, int syf, int sxb, int syb,
|
|
struct mbinfo *mbi, int secondfield, int ipflag);
|
|
|
|
/*
|
|
** sv_mpeg_quantize.c
|
|
*/
|
|
int sv_MpegIntraQuant(short *src, short *dst, int dc_prec,
|
|
unsigned char *quant_mat, int mquant, int mpeg1);
|
|
int sv_MpegNonIntraQuant(short *src, short *dst,
|
|
unsigned char *quant_mat, int mquant, int mpeg1);
|
|
void sv_MpegIntraInvQuant(short *src, short *dst, int dc_prec,
|
|
unsigned char *quant_mat, int mquant, int mpeg1);
|
|
void sv_MpegNonIntraInvQuant(short *src, short *dst,
|
|
unsigned char *quant_mat, int mquant, int mpeg1);
|
|
|
|
/*
|
|
** sv_mpeg_transfrm.c
|
|
*/
|
|
void sv_MpegTransform(SvMpegCompressInfo_t *MpegInfo,
|
|
unsigned char *pred[], unsigned char *cur[],
|
|
struct mbinfo *mbi, short blocks[][64]);
|
|
void sv_MpegInvTransform(SvMpegCompressInfo_t *MpegInfo,
|
|
unsigned char *pred[], unsigned char *cur[],
|
|
struct mbinfo *mbi,short blocks[][64]);
|
|
void sv_MpegDCTtypeEstimation(SvMpegCompressInfo_t *MpegInfo,
|
|
unsigned char *pred, unsigned char *cur,
|
|
struct mbinfo *mbi);
|
|
|
|
/*
|
|
** sv_mpeg_predict.c
|
|
*/
|
|
extern void sv_MpegPredict(SvMpegCompressInfo_t *MpegInfo,
|
|
unsigned char *reff[], unsigned char *refb[],
|
|
unsigned char *cur[3], int secondfield, struct mbinfo *mbi);
|
|
|
|
/*
|
|
** sv_mpeg_ratectl.c
|
|
*/
|
|
extern void rc_init_seq(SvMpegCompressInfo_t *MpegInfo);
|
|
extern void rc_init_GOP(SvMpegCompressInfo_t *MpegInfo, int np, int nb);
|
|
extern void rc_init_pict(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs,
|
|
unsigned char *frame);
|
|
extern void rc_update_pict(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs);
|
|
extern int rc_start_mb(SvMpegCompressInfo_t *MpegInfo);
|
|
extern int rc_calc_mquant(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs,
|
|
int j);
|
|
void sv_MpegVBVendofpic(ScBitstream_t *bs);
|
|
void sv_MpegVBVcalcdelay(SvMpegCompressInfo_t *MpegInfo, ScBitstream_t *bs);
|
|
|
|
#endif /* MPEG_SUPPORT */
|
|
|
|
#ifdef H261_SUPPORT
|
|
/*---------------------------------------------------------------------------*/
|
|
/* H.261 Prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*
|
|
** sv_h261_init.c
|
|
*/
|
|
extern SvStatus_t svH261Init(SvCodecInfo_t *Info);
|
|
extern SvStatus_t svH261CompressInit(SvCodecInfo_t *Info);
|
|
|
|
extern SvStatus_t svH261SetParamInt(SvHandle_t Svh, SvParameter_t param, qword value);
|
|
extern qword svH261GetParamInt(SvHandle_t Svh, SvParameter_t param);
|
|
extern SvStatus_t svH261SetParamFloat(SvHandle_t Svh, SvParameter_t param, float value);
|
|
extern float svH261GetParamFloat(SvHandle_t Svh, SvParameter_t param);
|
|
extern SvStatus_t svH261SetParamBoolean(SvHandle_t Svh, SvParameter_t param, ScBoolean_t value);
|
|
extern ScBoolean_t svH261GetParamBoolean(SvHandle_t Svh, SvParameter_t param);
|
|
|
|
/*
|
|
** sv_h261_decompress.c
|
|
*/
|
|
extern SvStatus_t svH261Decompress(SvCodecInfo_t *Info,
|
|
u_char *MultiBuf, u_char **ImagePtr);
|
|
extern SvStatus_t svH261DecompressFree(SvHandle_t Svh);
|
|
|
|
/*
|
|
** sv_h261_compress.c
|
|
*/
|
|
extern SvStatus_t svH261Compress(SvCodecInfo_t *Info, u_char *InputImage);
|
|
extern SvStatus_t svH261CompressFree(SvHandle_t Svh);
|
|
extern SvStatus_t SvSetFrameSkip (SvHandle_t Svh, int FrameSkip);
|
|
extern SvStatus_t SvSetFrameCount (SvHandle_t Svh, int FrameCount);
|
|
extern SvStatus_t SvSetSearchLimit (SvHandle_t Svh, int SearchLimit);
|
|
|
|
extern SvStatus_t SvSetImageType (SvHandle_t Svh, int ImageType);
|
|
extern SvStatus_t SvGetFrameNumber (SvHandle_t Svh, u_int *FrameNumber);
|
|
|
|
|
|
#endif /* H261_SUPPORT */
|
|
|
|
#ifdef H263_SUPPORT
|
|
/*---------------------------------------------------------------------------*/
|
|
/* H263 Prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
/*
|
|
** sv_h263_common.c
|
|
*/
|
|
extern SvStatus_t svH263SetParamInt(SvHandle_t Svh, SvParameter_t param, qword value);
|
|
extern qword svH263GetParamInt(SvHandle_t Svh, SvParameter_t param);
|
|
extern SvStatus_t svH263SetParamFloat(SvHandle_t Svh, SvParameter_t param, float value);
|
|
extern float svH263GetParamFloat(SvHandle_t Svh, SvParameter_t param);
|
|
extern SvStatus_t svH263SetParamBoolean(SvHandle_t Svh, SvParameter_t param, ScBoolean_t value);
|
|
extern ScBoolean_t svH263GetParamBoolean(SvHandle_t Svh, SvParameter_t param);
|
|
|
|
/*
|
|
** sv_h263_decode.c
|
|
*/
|
|
extern SvStatus_t svH263InitDecompressor(SvCodecInfo_t *Info);
|
|
extern SvStatus_t svH263Decompress(SvCodecInfo_t *Info, u_char **ImagePtr);
|
|
extern SvStatus_t svH263FreeDecompressor(SvCodecInfo_t *Info);
|
|
/*
|
|
** sv_h263_encode.c
|
|
*/
|
|
extern SvStatus_t svH263InitCompressor(SvCodecInfo_t *Info);
|
|
extern SvStatus_t svH263Compress(SvCodecInfo_t *Info, u_char *ImagePtr);
|
|
extern SvStatus_t svH263FreeCompressor(SvCodecInfo_t *Info);
|
|
|
|
#endif /* H263_SUPPORT */
|
|
|
|
#ifdef HUFF_SUPPORT
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Huff Prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*
|
|
** sv_huff_encode.c
|
|
*/
|
|
extern SvStatus_t sv_HuffInitEncoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_HuffFreeEncoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_HuffEncodeFrame(SvCodecInfo_t *Info,
|
|
unsigned char *InputImage);
|
|
extern SvStatus_t sv_HuffPutHeader(SvHuffInfo_t *HInfo, ScBitstream_t *bs);
|
|
|
|
|
|
/*
|
|
** sv_huff_decode.c
|
|
*/
|
|
extern SvStatus_t sv_HuffInitDecoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_HuffFreeDecoder(SvCodecInfo_t *Info);
|
|
extern SvStatus_t sv_HuffDecodeFrame(SvCodecInfo_t *Info,
|
|
unsigned char *OutputImage);
|
|
extern SvStatus_t sv_HuffGetHeader(SvHuffInfo_t *HInfo, ScBitstream_t *bs);
|
|
|
|
/*
|
|
** sv_huff_encode.c
|
|
*/
|
|
|
|
#endif /* HUFF_SUPPORT */
|
|
|
|
#endif /* _SV_PROTOTYPES_H */
|
|
|
|
|