/* * @DEC_COPYRIGHT@ */ /* * HISTORY * $Log: slib.h,v $ * Revision 1.1.6.22 1996/12/13 18:19:02 Hans_Graves * Added SlibErrorNoBeginning enum * [1996/12/13 17:42:20 Hans_Graves] * * Revision 1.1.6.21 1996/12/10 19:21:51 Hans_Graves * Added Avg/VarVideoTimeDiff and SlibFrameToTime100() macro * [1996/12/10 19:17:53 Hans_Graves] * * Revision 1.1.6.20 1996/12/05 20:10:13 Hans_Graves * Added AvgVideoTimeDiff and AvgAudioTimeDiff to SlibInfo_t * [1996/12/05 20:07:53 Hans_Graves] * * Revision 1.1.6.19 1996/12/03 00:08:29 Hans_Graves * Added unit SLIB_UNIT_PERCENT100 and Seek type SLIB_SEEK_RESYNC. * [1996/12/03 00:02:47 Hans_Graves] * * Revision 1.1.6.18 1996/11/20 02:15:07 Hans_Graves * Added SEEK_AHEAD. * [1996/11/20 01:49:55 Hans_Graves] * * Revision 1.1.6.17 1996/11/18 23:07:14 Hans_Graves * Change operations to the time-based instead of frame-based. * [1996/11/18 22:56:34 Hans_Graves] * * Revision 1.1.6.16 1996/11/11 18:21:02 Hans_Graves * Added proto for slibRenamePin(). * [1996/11/11 17:58:03 Hans_Graves] * * Revision 1.1.6.15 1996/11/08 21:50:59 Hans_Graves * Added AC3 stuff. Better seperation of stream types. * [1996/11/08 21:18:22 Hans_Graves] * * Revision 1.1.6.14 1996/10/31 00:08:53 Hans_Graves * Added SLIB_TIME_UNKNOWN * [1996/10/31 00:07:57 Hans_Graves] * * Revision 1.1.6.13 1996/10/28 17:32:23 Hans_Graves * MME-1402, 1431, 1435: Timestamp related changes. * [1996/10/28 17:19:38 Hans_Graves] * * Revision 1.1.6.12 1996/10/17 00:23:30 Hans_Graves * Added SLIB_PARAM_VIDEOFRAME and SLIB_PARAM_FRAMEDURATION. * [1996/10/17 00:17:53 Hans_Graves] * * Revision 1.1.6.11 1996/10/12 17:18:19 Hans_Graves * Added params HALFPEL and SKIPPEL. Seperated MPEG2_SYSTEMS into TRANSPORT and PROGRAM. * [1996/10/12 16:57:14 Hans_Graves] * * Revision 1.1.6.10 1996/10/03 19:14:19 Hans_Graves * Added PTimeCode and DTimeCode to Info struct. * [1996/10/03 19:08:35 Hans_Graves] * * Revision 1.1.6.9 1996/09/29 22:19:35 Hans_Graves * Added stride support. Added SlibQueryData(). * [1996/09/29 21:28:25 Hans_Graves] * * Revision 1.1.6.8 1996/09/25 19:16:41 Hans_Graves * Reduce number of includes needed publicly by adding SLIB_INTERNAL ifdef. * [1996/09/25 19:02:38 Hans_Graves] * * Revision 1.1.6.7 1996/09/23 18:04:01 Hans_Graves * Added STATS params. * [1996/09/23 18:03:23 Hans_Graves] * * Revision 1.1.6.6 1996/09/18 23:46:20 Hans_Graves * Clean up. Added SlibAddBufferEx() and SlibReadData() protos. * [1996/09/18 21:59:36 Hans_Graves] * * Revision 1.1.6.5 1996/08/09 20:51:19 Hans_Graves * Fix proto for SlibRegisterVideoBuffer() * [1996/08/09 20:06:26 Hans_Graves] * * Revision 1.1.6.4 1996/07/19 02:11:05 Hans_Graves * New params. Added SlibRegisterVideoBuffer. * [1996/07/19 01:26:07 Hans_Graves] * * Revision 1.1.6.3 1996/05/10 21:16:53 Hans_Graves * Changes for Callback support. * [1996/05/10 20:59:56 Hans_Graves] * * Revision 1.1.6.2 1996/05/07 19:56:00 Hans_Graves * Added Callback framework. * [1996/05/07 17:23:12 Hans_Graves] * * Revision 1.1.4.13 1996/04/24 22:33:42 Hans_Graves * Added proto for slibValidateBitrates() * [1996/04/24 22:27:46 Hans_Graves] * * Revision 1.1.4.12 1996/04/23 21:01:41 Hans_Graves * Added SlibErrorSettingNotEqual * [1996/04/23 20:59:36 Hans_Graves] * * Revision 1.1.4.11 1996/04/22 15:04:50 Hans_Graves * Added protos for: slibValidateVideoParams, slibValidateAudioParams, SlibValidateParams * [1996/04/22 15:03:17 Hans_Graves] * * Revision 1.1.4.10 1996/04/19 21:52:20 Hans_Graves * Additions to SlibInfo: TotalBitRate, MuxBitRate, SystemTimeStamp, PacketCount * [1996/04/19 21:49:13 Hans_Graves] * * Revision 1.1.4.9 1996/04/15 14:18:35 Hans_Graves * Added temp audio buffer info * [1996/04/15 14:09:23 Hans_Graves] * * Revision 1.1.4.8 1996/04/10 21:47:36 Hans_Graves * Moved definition for EXTERN to SC.h * [1996/04/10 21:24:09 Hans_Graves] * * Added QUALITY and FAST params * [1996/04/10 20:41:21 Hans_Graves] * * Revision 1.1.4.7 1996/04/09 16:04:39 Hans_Graves * Added EXTERN define for cplusplus compatibility * [1996/04/09 14:49:16 Hans_Graves] * * Revision 1.1.4.6 1996/04/01 19:07:50 Hans_Graves * Change slibVerifyVideoParams() proto * [1996/04/01 19:05:31 Hans_Graves] * * Revision 1.1.4.5 1996/04/01 16:23:11 Hans_Graves * NT porting * [1996/04/01 16:15:51 Hans_Graves] * * Revision 1.1.4.4 1996/03/29 22:21:13 Hans_Graves * Added HeaderProcessed to SlibInfo * [1996/03/27 21:52:31 Hans_Graves] * * Revision 1.1.4.3 1996/03/12 16:15:42 Hans_Graves * Added SLIB_PARAM_FILEBUFSIZE parameter * [1996/03/12 16:11:55 Hans_Graves] * * Revision 1.1.4.2 1996/03/08 18:46:31 Hans_Graves * Added Imagebuf to SlibInfo_t * [1996/03/08 16:23:53 Hans_Graves] * * Revision 1.1.2.13 1996/02/19 18:03:53 Hans_Graves * Added more SEEK types. * [1996/02/19 17:59:12 Hans_Graves] * * Revision 1.1.2.12 1996/02/13 18:47:45 Hans_Graves * Fix some Seek related bugs * [1996/02/13 18:41:51 Hans_Graves] * * Revision 1.1.2.11 1996/02/07 23:23:51 Hans_Graves * Added slibCountCodesOnPin() prototype * [1996/02/07 23:19:11 Hans_Graves] * * Revision 1.1.2.10 1996/02/06 22:53:55 Hans_Graves * Prototype updates * [1996/02/06 22:44:06 Hans_Graves] * * Revision 1.1.2.9 1996/02/02 17:36:01 Hans_Graves * Updated prototypes * [1996/02/02 17:28:41 Hans_Graves] * * Revision 1.1.2.8 1996/01/30 22:23:06 Hans_Graves * Added AVI YUV support * [1996/01/30 22:22:00 Hans_Graves] * * Revision 1.1.2.7 1996/01/15 16:26:26 Hans_Graves * Added: TYPE_WAVE, more PARAMs, SlibWriteAudio() * [1996/01/15 15:44:44 Hans_Graves] * * Revision 1.1.2.6 1996/01/11 16:17:26 Hans_Graves * Added SlibGet/SetParam() prototypes * [1996/01/11 16:13:44 Hans_Graves] * * Revision 1.1.2.5 1996/01/08 16:41:25 Hans_Graves * Cleaned up prototypes * [1996/01/08 15:48:38 Hans_Graves] * * Revision 1.1.2.4 1995/12/07 19:31:27 Hans_Graves * Added JPEG Decoding and MPEG encoding support * [1995/12/07 18:28:11 Hans_Graves] * * Revision 1.1.2.3 1995/11/09 23:14:03 Hans_Graves * Added Time structure members and prototypes * [1995/11/09 23:10:32 Hans_Graves] * * Revision 1.1.2.2 1995/11/06 18:47:45 Hans_Graves * First time under SLIB * [1995/11/06 18:34:32 Hans_Graves] * * $EndLog$ */ /***************************************************************************** ** Copyright (c) Digital Equipment Corporation, 1995 ** ** ** ** 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 _SLIB_H_ #define _SLIB_H_ #ifdef WIN32 #include #endif #include "SC.h" #ifdef SLIB_INTERNAL #include "SV.h" #include "SA.h" #include "scon.h" #endif /* SLIB_INTERNAL */ typedef void *SlibHandle_t; typedef ScBoolean_t SlibBoolean_t; typedef int SlibStream_t; typedef qword SlibTime_t; typedef qword SlibPosition_t; #define SLIB_TIME_NONE (SlibTime_t)(-1) #define SLIB_TIME_UNKNOWN (SlibTime_t)(-2) /* units used in seeking */ typedef enum { SLIB_UNIT_NONE, SLIB_UNIT_FRAMES, /* frames */ SLIB_UNIT_MS, /* milliseconds */ SLIB_UNIT_PERCENT100, /* one hundredth of percent */ } SlibUnit_t; #define SlibTimeIsValid(stime) ((stime)>=0) #define SlibTimeIsInValid(stime) ((stime)<0) #define SlibTimeToFrame(Sh,vs,stime) \ ((qword)((stime)*SlibGetParamFloat(Sh, vs, SLIB_PARAM_FPS))/1000) #define SlibFrameToTime(Sh,vs,frame) \ ((SlibTime_t)((float)(frame*1000)/SlibGetParamFloat(Sh, vs, SLIB_PARAM_FPS))) #define SlibFrameToTime100(Sh,vs,frame) \ ((SlibTime_t)((float)(frame*100000)/SlibGetParamFloat(Sh, vs, SLIB_PARAM_FPS))) typedef qword SlibListParam1_t; typedef qword SlibListParam2_t; typedef struct SlibList_s { int Enum; /* an enumerated value associated with the entry */ char *Name; /* the name of an entry in the list. NULL = last entry */ char *Desc; /* a lengthy description of the entry */ SlibListParam1_t param1; SlibListParam2_t param2; } SlibList_t; typedef enum { SlibErrorNone = 0, SlibErrorInternal, SlibErrorMemory, SlibErrorBadArgument, SlibErrorBadHandle, SlibErrorBadStream, SlibErrorBadMode, SlibErrorUnsupportedFormat, SlibErrorReading, SlibErrorWriting, SlibErrorBufSize, SlibErrorEndOfStream, SlibErrorForwardOnly, SlibErrorUnsupportedParam, SlibErrorImageSize, /* Invalid image height and/or width */ SlibErrorSettingNotEqual, /* The exact Parameter setting was not accepted */ SlibErrorInit, /* initialization error */ SlibErrorFileSize, /* file size unknown */ SlibErrorBadPosition, /* position argument to seek is invalid */ SlibErrorBadUnit, /* units are invalid */ SlibErrorNoBeginning, /* couldn't begin the codecs */ SlibErrorNoData, /* no data available */ } SlibStatus_t; typedef enum { SLIB_MODE_NONE, SLIB_MODE_COMPRESS, SLIB_MODE_COMPRESS_APPEND, SLIB_MODE_DECOMPRESS, } SlibMode_t; typedef enum { SLIB_TYPE_UNKNOWN=0, /* MPEG elementary stream types */ SLIB_TYPE_MPEG1_VIDEO=0x01, SLIB_TYPE_MPEG1_AUDIO=0x02, SLIB_TYPE_MPEG2_VIDEO=0x04, SLIB_TYPE_MPEG2_AUDIO=0x08, SLIB_TYPE_AC3_AUDIO=0x10, /* MPEG multiplex types */ SLIB_TYPE_MPEG_SYSTEMS=0x100, SLIB_TYPE_MPEG_SYSTEMS_MPEG2=0x104, /* MPEG Systems with MPEG2 data */ SLIB_TYPE_MPEG_TRANSPORT=0x200, SLIB_TYPE_MPEG_PROGRAM=0x400, /* H26? stream types */ SLIB_TYPE_H261=0x800, SLIB_TYPE_RTP_H261=0x808, SLIB_TYPE_H263=0x810, SLIB_TYPE_RTP_H263=0x818, /* RIFF stream types */ SLIB_TYPE_RIFF=0x1000, SLIB_TYPE_PCM_WAVE, SLIB_TYPE_AVI, SLIB_TYPE_MJPG_AVI, SLIB_TYPE_JPEG_AVI, SLIB_TYPE_YUV_AVI, /* Other stream types */ SLIB_TYPE_JPEG_QUICKTIME=0x2000, SLIB_TYPE_JFIF, SLIB_TYPE_MJPG, SLIB_TYPE_JPEG, SLIB_TYPE_YUV, SLIB_TYPE_RGB, SLIB_TYPE_PCM, /* G72? stream types */ SLIB_TYPE_G723=0x4000, /* Miscellaneous types */ SLIB_TYPE_RASTER=0x8000, SLIB_TYPE_BMP, /* Test stream types */ SLIB_TYPE_SLIB=0xC000, SLIB_TYPE_SHUFF } SlibType_t; #ifdef OLD_SLIB #define SLIB_TYPE_MPEG1_SYSTEMS SLIB_TYPE_MPEG_SYSTEMS #define SLIB_TYPE_MPEG2_SYSTEMS SLIB_TYPE_MPEG_TRANSPORT #define SLIB_TYPE_MPEG2_TRANSPORT SLIB_TYPE_MPEG_TRANSPORT #define SLIB_TYPE_MPEG2_PROGRAM SLIB_TYPE_MPEG_PROGRAM #endif /* OLD_SLIB */ #define SlibTypeIsMPEG(stype) (stype>=SLIB_TYPE_MPEG1_VIDEO && \ stype<=SLIB_TYPE_MPEG_PROGRAM) #define SlibTypeIsMPEGVideo(stype) (stype<=SLIB_TYPE_MPEG_PROGRAM && \ (stype&0x705)) #define SlibTypeIsMPEGAudio(stype) (stype<=SLIB_TYPE_MPEG_PROGRAM && \ (stype&0x70A)) #define SlibTypeIsMPEGMux(stype) (stype>=SLIB_TYPE_MPEG_SYSTEMS && \ stype<=SLIB_TYPE_MPEG_PROGRAM) #define SlibTypeIsMPEG2(stype) (stype==SLIB_TYPE_MPEG2_VIDEO || \ stype==SLIB_TYPE_MPEG_PROGRAM || \ stype==SLIB_TYPE_MPEG_TRANSPORT || \ stype==SLIB_TYPE_MPEG2_AUDIO) #define SlibTypeIsMPEG1(stype) (stype==SLIB_TYPE_MPEG1_VIDEO || \ stype==SLIB_TYPE_MPEG1_AUDIO || \ stype==SLIB_TYPE_MPEG_SYSTEMS) #define SlibTypeIsH26X(stype) ((stype&0xFF00)==0x0800) #define SlibTypeIsAVI(stype) (stype>=SLIB_TYPE_AVI && \ stype<=SLIB_TYPE_YUV_AVI) #define SlibTypeIsAudioOnly(stype) (stype==SLIB_TYPE_MPEG1_AUDIO || \ stype==SLIB_TYPE_AC3_AUDIO || \ stype==SLIB_TYPE_G723 || \ stype==SLIB_TYPE_PCM || \ stype==SLIB_TYPE_PCM_WAVE) #define SlibTypeIsVideoOnly(stype) (stype==SLIB_TYPE_MPEG1_VIDEO || \ stype==SLIB_TYPE_MPEG2_VIDEO || \ SlibTypeIsH26X(stype) || \ stype==SLIB_TYPE_YUV || \ stype==SLIB_TYPE_RGB || \ stype==SLIB_TYPE_BMP || \ stype==SLIB_TYPE_RASTER) #define SlibTypeIsMux(stype) (SlibTypeIsMPEGMux(stype) || \ SlibTypeIsAVI(stype)) #define SlibTypeHasTimeStamps(stype) (SlibTypeIsMPEGMux(stype)) typedef enum { SLIB_DATA_COMPRESSED=0, SLIB_DATA_AUDIO, SLIB_DATA_VIDEO, SLIB_DATA_PRIVATE } SlibDataType_t; typedef enum { SLIB_MSG_CONTINUE=0, SLIB_MSG_OPEN=0x01, SLIB_MSG_ENDOFDATA=0x10, SLIB_MSG_ENDOFSTREAM, SLIB_MSG_BUFDONE, SLIB_MSG_REPOSITION=0x20, SLIB_MSG_BADPOSITION, SLIB_MSG_CLOSE=0x80 } SlibMessage_t; typedef qword SlibCBParam1_t; typedef qword SlibCBParam2_t; typedef enum { SLIB_QUERY_QUERIES, SLIB_QUERY_TYPES, SLIB_QUERY_COMP_TYPES, SLIB_QUERY_DECOMP_TYPES, SLIB_QUERY_MODES, SLIB_QUERY_PARAMETERS, SLIB_QUERY_ERRORS } SlibQueryType_t; typedef enum { /* these use position */ SLIB_SEEK_EXACT=0x00, /* jump to the exact frame */ SLIB_SEEK_KEY, /* jump to the closest key (I) frame */ SLIB_SEEK_AHEAD, /* jump ahead by a certain amount */ SLIB_SEEK_NEXT_NEAR=0x08, /* advance to a frame near the requested frame */ SLIB_SEEK_NEXT_EXACT, /* advance to the exact requested frame */ /* these don't use position */ SLIB_SEEK_NEXT_KEY=0x10, /* advance to the next key (I) frame */ SLIB_SEEK_NEXT_SUBKEY, /* advance to the next key (I) or subkey (P) frame */ SLIB_SEEK_NEXT, /* advance one frame */ SLIB_SEEK_RESET=0x100, /* reset the streams */ SLIB_SEEK_RESYNC /* sync up all the streams */ } SlibSeekType_t; #define SlibSeekTypeUsesPosition(seektype) (seektypeFramesPerSec)/1000) #define slibFrameToTime(Info,frame) \ ((SlibTime_t)((float)(frame*1000)/Info->FramesPerSec)) #define slibFrameToTime100(Info,frame) \ ((SlibTime_t)((float)(frame*100000)/Info->FramesPerSec)) #define slibHasAudio(Info) (Info->AudioStreams>0 || Info->Sah) #define slibHasVideo(Info) (Info->VideoStreams>0 || Info->Svh) #define slibHasTimeCode(Info) (slibHasVideo(Info) && SlibTypeIsMPEG(Info->Type)) #define slibInSyncMode(Info) (Info->Fd<0 && Info->SlibCB==NULL) #endif /* SLIB_INTERNAL */ /********************** Public Prototypes ***********************/ /* * slib_api.c */ EXTERN SlibStatus_t SlibOpen(SlibHandle_t *handle, SlibMode_t smode, SlibType_t *stype, SlibMessage_t (*slibCB)(SlibHandle_t, SlibMessage_t, SlibCBParam1_t, SlibCBParam2_t, void *), void *cbuserdata); EXTERN SlibStatus_t SlibOpenSync(SlibHandle_t *handle, SlibMode_t smode, SlibType_t *stype, void *buffer, unsigned dword bufsize); EXTERN SlibStatus_t SlibOpenFile(SlibHandle_t *handle, SlibMode_t smode, SlibType_t *stype, char *filename); EXTERN SlibStatus_t SlibAddBuffer(SlibHandle_t handle, SlibDataType_t dtype, void *buffer, unsigned dword bufsize); EXTERN SlibStatus_t SlibAddBufferEx(SlibHandle_t handle, SlibDataType_t dtype, void *buffer, unsigned dword bufsize, void *userdata); EXTERN SlibStatus_t SlibRegisterVideoBuffer(SlibHandle_t handle, void *buffer, unsigned dword bufsize); EXTERN SlibStatus_t SlibReadAudio(SlibHandle_t handle, SlibStream_t stream, void *audiobuf, unsigned dword *audiobufsize); EXTERN SlibStatus_t SlibReadVideo(SlibHandle_t handle, SlibStream_t stream, void **videobuf, unsigned dword *videobufsize); EXTERN SlibStatus_t SlibWriteVideo(SlibHandle_t handle, SlibStream_t stream, void *videobuf, unsigned dword videobufsize); EXTERN SlibStatus_t SlibWriteAudio(SlibHandle_t handle, SlibStream_t stream, void *audiobuf, unsigned dword audiobufsize); EXTERN SlibStatus_t SlibReadData(SlibHandle_t handle, SlibStream_t stream, void **databuf, unsigned dword *databufsize, SlibStream_t *readstream); EXTERN SlibStatus_t SlibQueryData(void *databuf, unsigned dword databufsize, SlibQueryInfo_t *qinfo); EXTERN SlibStatus_t SlibSeek(SlibHandle_t handle, SlibStream_t stream, SlibSeekType_t seektype, SlibPosition_t frame); EXTERN SlibStatus_t SlibSeekEx(SlibHandle_t handle, SlibStream_t stream, SlibSeekType_t seektype, SlibPosition_t position, SlibUnit_t units, SlibSeekInfo_t *seekinfo); EXTERN SlibBoolean_t SlibIsEnd(SlibHandle_t handle, SlibStream_t stream); EXTERN SlibStatus_t SlibClose(SlibHandle_t handle); EXTERN char *SlibGetErrorText(SlibStatus_t status); EXTERN SlibList_t *SlibQueryList(SlibQueryType_t qtype); EXTERN char *SlibQueryForDesc(SlibQueryType_t qtype, int enumval); EXTERN int SlibQueryForEnum(SlibQueryType_t qtype, char *name); EXTERN SlibList_t *SlibFindEnumEntry(SlibList_t *list, int enumval); /* * slib_param.c */ EXTERN qword SlibGetFrameNumber(SlibHandle_t handle, SlibStream_t stream); EXTERN SlibTime_t SlibGetAudioTime(SlibHandle_t handle, SlibStream_t stream); EXTERN SlibTime_t SlibGetVideoTime(SlibHandle_t handle, SlibStream_t stream); EXTERN SlibBoolean_t SlibCanSetParam(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN SlibBoolean_t SlibCanGetParam(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN SlibStatus_t SlibSetParamInt(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param, long value); EXTERN SlibStatus_t SlibSetParamLong(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param, qword value); EXTERN SlibStatus_t SlibSetParamFloat(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param, float value); EXTERN SlibStatus_t SlibSetParamBoolean(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param, SlibBoolean_t value); EXTERN SlibStatus_t SlibSetParamStruct(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param, void *data, unsigned dword datasize); EXTERN long SlibGetParamInt(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN qword SlibGetParamLong(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN float SlibGetParamFloat(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN SlibBoolean_t SlibGetParamBoolean(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN char *SlibGetParamString(SlibHandle_t handle, SlibStream_t stream, SlibParameter_t param); EXTERN SlibStatus_t SlibValidateParams(SlibHandle_t handle); /* * slib_buffer.c */ EXTERN void *SlibAllocBuffer(unsigned int bytes); EXTERN void *SlibAllocBufferEx(SlibHandle_t handle, unsigned int bytes); EXTERN void *SlibAllocSharedBuffer(unsigned int bytes, int *shmid); EXTERN dword SlibGetSharedBufferID(void *address); EXTERN SlibStatus_t SlibAllocSubBuffer(void *address, unsigned int bytes); EXTERN SlibStatus_t SlibFreeBuffer(void *address); EXTERN SlibStatus_t SlibFreeBuffers(SlibHandle_t handle); EXTERN unsigned qword SlibMemUsed(); #ifdef SLIB_INTERNAL /********************** Private Prototypes ***********************/ /* * slib_api.c */ SlibStatus_t slibStartVideo(SlibInfo_t *Info, SlibBoolean_t fillbuf); SlibBoolean_t slibUpdatePositions(SlibInfo_t *Info, SlibBoolean_t exactonly); void slibAdvancePositions(SlibInfo_t *Info, qword frames); SlibBoolean_t slibUpdateLengths(SlibInfo_t *Info); /* * slib_render.c */ SlibStatus_t slibConvertAudio(SlibInfo_t *Info, void *inbuf, unsigned dword inbufsize, unsigned int insps, unsigned int inbps, void **poutbuf, unsigned dword *poutbufsize, unsigned int outsps, unsigned int outbps, unsigned int channels); SlibStatus_t slibRenderFrame(SlibInfo_t *Info, void *inbuf, unsigned dword informat, void **outbuf); /* * slib_video.c */ void SlibUpdateVideoInfo(SlibInfo_t *Info); SlibStatus_t slibValidateVideoParams(SlibInfo_t *Info); int slibCalcBits(unsigned dword fourcc, int currentbits); /* * slib_audio.c */ void SlibUpdateAudioInfo(SlibInfo_t *Info); SlibTime_t slibSkipAudio(SlibInfo_t *Info, SlibStream_t stream, SlibTime_t timems); SlibStatus_t slibValidateAudioParams(SlibInfo_t *Info); /* * slib_buffer.c */ SlibBoolean_t SlibValidBuffer(void *address); SlibStatus_t slibManageUserBuffer(SlibInfo_t *Info, void *address, unsigned int bytes, void *userdata); unsigned char *SlibGetBuffer(SlibInfo_t *Info, int pinid, unsigned dword *size, SlibTime_t *time); unsigned char *SlibPeekBuffer(SlibInfo_t *Info, int pinid, unsigned dword *size, SlibTime_t *time); unsigned char *slibSearchBuffersOnPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned char *lastbuf, unsigned dword *size, unsigned int code, int codebytes, ScBoolean_t discard); SlibTime_t slibGetNextTimeOnPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned dword maxbytes); void slibSetMaxInput(SlibInfo_t *Info, unsigned dword maxbytes); SlibPosition_t slibGetPinPosition(SlibInfo_t *Info, int pinid); SlibPosition_t slibSetPinPosition(SlibInfo_t *Info, int pinid, SlibPosition_t pos); void slibRemovePins(SlibInfo_t *Info); void slibEmptyPins(SlibInfo_t *Info); SlibPin_t *slibRenamePin(SlibInfo_t *Info, int oldpinid, int newpinid, char *newname); SlibPin_t *slibGetPin(SlibInfo_t *Info, int pinid); SlibPin_t *slibAddPin(SlibInfo_t *Info, int pinid, char *name); SlibStatus_t slibAddBufferToPin(SlibPin_t *pin, void *buffer, unsigned dword size, SlibTime_t time); SlibStatus_t slibInsertBufferOnPin(SlibPin_t *pin, void *buffer, unsigned dword size, SlibTime_t time); SlibStatus_t slibRemovePin(SlibInfo_t *Info, int pinid); SlibStatus_t slibEmptyPin(SlibInfo_t *Info, int pinid); SlibPin_t *slibLoadPin(SlibInfo_t *Info, int pinid); SlibPin_t *slibPreLoadPin(SlibInfo_t *Info, SlibPin_t *pin); SlibStatus_t slibPutBuffer(SlibInfo_t *Info, unsigned char *buffer, unsigned dword bufsize); qword slibDataOnPin(SlibInfo_t *Info, int pinid); qword slibDataOnPins(SlibInfo_t *Info); unsigned char *slibGetBufferFromPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned dword *size, SlibTime_t *time); unsigned char *slibPeekBufferOnPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned dword *size, SlibTime_t *time); unsigned char *slibPeekNextBufferOnPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned char *lastbuffer, unsigned dword *size, SlibTime_t *time); unsigned int slibFillBufferFromPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned char *fillbuf, unsigned dword bufsize, SlibTime_t *time); word slibGetWordFromPin(SlibInfo_t *Info, SlibPin_t *pin); dword slibGetDWordFromPin(SlibInfo_t *Info, SlibPin_t *pin); dword slibCountCodesOnPin(SlibInfo_t *Info, SlibPin_t *pin, unsigned int code, int codebytes, unsigned dword maxlen); SlibStatus_t slibReposition(SlibInfo_t *Info, SlibPosition_t position); void slibPinPrepareReposition(SlibInfo_t *Info, int pinid); void slibPinFinishReposition(SlibInfo_t *Info, int pinid); SlibBoolean_t slibCommitBuffers(SlibInfo_t *Info, SlibBoolean_t flush); void slibValidateBitrates(SlibInfo_t *Info); qword slibGetSystemTime(); #endif /* SLIB_INTERNAL */ #endif /* _SLIB_H_ */