#ifndef _nethfb_h #define _nethfb_h #include "duck_hfb.h" #ifndef NETHFB #define lHFB_GetDataSize HFB_GetDataSize #define lHFB_GetStreamingData HFB_GetStreamingData #define lHFB_ReleaseStreamingData HFB_ReleaseStreamingData #define lHFB_ReadData HFB_ReadData #define lHFB_WhatsAhead HFB_WhatsAhead #define lHFB_GetAudioInfo HFB_GetAudioInfo #define lHFB_GetInitialFrames HFB_GetInitialFrames #define lHFB_GetSamplesPerFrame HFB_GetSamplesPerFrame #define lHFB_GetFrameRates HFB_GetFrameRates #define lHFB_GetDRMData HFB_GetDRMData #define lHFB_LoadIndex HFB_LoadIndex #define lHFB_ParseFile HFB_ParseFile #define lHFB_Init HFB_Init #define lHFB_Exit HFB_Exit #define lHFB_FindFile HFB_FindFile #define lHFB_OpenFile HFB_OpenFile #define lHFB_SeekToIndex HFB_SeekToIndex #define lHFB_BeginLoadIndex HFB_BeginLoadIndex #define lHFB_FinishLoadIndex HFB_FinishLoadIndex #define lHFB_ReadMoreIndex HFB_ReadMoreIndex #define lHFB_ParseBigIndex HFB_ParseBigIndex #define lHFB_CloseFile HFB_CloseFile #define lHFB_GetFileInfo HFB_GetFileInfo #define lHFB_ResetStreams HFB_ResetStreams #define lHFB_GetStream HFB_GetStream #define lHFB_ReleaseStream HFB_ReleaseStream #define lHFB_GetStreamInfo HFB_GetStreamInfo #define lHFB_CreateBuffer HFB_CreateBuffer #define lHFB_DestroyBuffer HFB_DestroyBuffer #define lHFB_ResetBuffer HFB_ResetBuffer #define lHFB_SetBufferMode HFB_SetBufferMode #define lHFB_QueueOpenFile HFB_QueueOpenFile #define lHFB_GetBufferPerCentFull HFB_GetBufferPerCentFull #define lHFB_GetmovieSize HFB_GetmovieSize #define lHFB_InitBuffer HFB_InitBuffer #define lHFB_GetBufferSpace HFB_GetBufferSpace #define lHFB_FillBuffer HFB_FillBuffer #define lHFB_GetBufferStatus HFB_GetBufferStatus #define lHFB_FramestoNextKeyFrame HFB_FramestoNextKeyFrame #define lHFB_FrameToChunk HFB_FrameToChunk #define lHFB_PreviousKeyFrame HFB_PreviousKeyFrame #define lHFB_GetIndexFlags HFB_GetIndexFlags #define lHFB_AddIndexFlags HFB_AddIndexFlags #define lHFB_GetDataPosition HFB_GetDataPosition #define lHFB_ConditionBuffer HFB_ConditionBuffer #define lHFB_WalkFlags HFB_WalkFlags #define lHFB_isVideoKeyFrame HFB_isVideoKeyFrame #define lHFB_GetStreamParentBuffer HFB_GetStreamParentBuffer #define lHFB_GetStreamParentFile HFB_GetStreamParentFile #define lHFB_GetStreamRateAndScale HFB_GetStreamRateAndScale #define lHFB_GetStreamFCCs HFB_GetStreamFCCs #define lHFB_GetStreamSampleSize HFB_GetStreamSampleSize #define lHFB_GetLastError HFB_GetLastError #else #if defined(__cplusplus) extern "C" { #endif /* main HFB initialization and exit routines */ int lHFB_Init(int ,int ,int ); void lHFB_Exit(void); /* FWG 9-13-2000 */ int lHFB_SeekToIndex(HFB_FILE_HANDLE FileHandle); int lHFB_BeginLoadIndex(HFB_BUFFER_HANDLE dckPtr, int size); int lHFB_FinishLoadIndex(HFB_BUFFER_HANDLE dckPtr, void *data, int size); /* open specified file, parse its header(s) and load the index */ HFB_FILE_HANDLE lHFB_OpenFile( const char *fileName, HFB_BUFFER_HANDLE bufferHandle, unsigned int userData ); /* the following three functions, findfile, parsefile and loadindex, are encapsulated by openfile, they are provided as a convenience for use on systems with asynchronous i/o */ //HFB_FILE_HANDLE lHFB_FindFile(const char *fileName, unsigned int userData); int lHFB_ParseFile( HFB_FILE_HANDLE fileHandle, HFB_BUFFER_HANDLE bufferHandle ); int lHFB_LoadIndex( HFB_FILE_HANDLE fileHandle, HFB_BUFFER_HANDLE bufferHandle ); void lHFB_CloseFile(HFB_FILE_HANDLE fHnd); HFB_FILE_INFO *lHFB_GetFileInfo(HFB_FILE_HANDLE fileHandle); HFB_BUFFER_HANDLE lHFB_CreateBuffer( int sizeOfBuffer, int reserved ); void lHFB_InitBuffer( HFB_BUFFER_HANDLE bufferHandle, HFB_FILE_HANDLE fileToLoad, int startFrame, int initialReadSize ); int lHFB_FillBuffer( HFB_BUFFER_HANDLE bufferHandle, int maxToRead, int frameSyncCounter ); void lHFB_DestroyBuffer(HFB_BUFFER_HANDLE bufferHandle); void lHFB_ResetStreams(HFB_BUFFER_HANDLE bufferHandle); int lHFB_SetBufferMode( HFB_BUFFER_HANDLE , hfbBufferMode mode ); int lHFB_GetBufferPerCentFull(HFB_BUFFER_HANDLE ); int lHFB_GetmovieSize(HFB_BUFFER_HANDLE ); int lHFB_GetBufferSpace(HFB_BUFFER_HANDLE ); hfbBufferStatus lHFB_GetBufferStatus(HFB_BUFFER_HANDLE ); int lHFB_ConditionBuffer( HFB_BUFFER_HANDLE bufferHandle, int bufferSize, int reserved); #define lHFB_ResetBuffer lHFB_ConditionBuffer /* get a stream reference handle */ HFB_STREAM_HANDLE lHFB_GetStream( HFB_FILE_HANDLE fileHandle, const char *StreamNameOrNull, int streamNumber, unsigned int streamType); /* relinquish reference to stream */ void lHFB_ReleaseStream(HFB_STREAM_HANDLE streamHandle); /* get a pointer to stream info struct */ HFB_STREAM_INFO *lHFB_GetStreamInfo(HFB_STREAM_HANDLE ); #define lHFB_GetStreamLength(strmh) \ lHFB_GetStreamInfo(strmh)->lLength #define lHFB_GetStreamName(strmh) \ lHFB_GetStreamInfo(strmh)->szName /* get pointer to buffered record and length */ HFB_DATA_HANDLE lHFB_GetStreamingData( HFB_STREAM_HANDLE streamHandle, void **ptrToPtr, int *ptrToLength, hfbDirection directionToMove, int framesToMove ); /* release buffer space occupied by record */ void lHFB_ReleaseStreamingData( HFB_BUFFER_HANDLE bufferHandle, HFB_DATA_HANDLE recordToRelease); /* read data directly from a file into a supplied buffer, limit is set by initial value of *ptrToLength */ int lHFB_ReadData( HFB_STREAM_HANDLE streamHandle, void *ptrToBuffer, int *ptrToLength, hfbDirection directionToMove, int framesToMove); int lHFB_FramestoNextKeyFrame( HFB_STREAM_HANDLE streamHandle, int recordHandle, int *numberOfRecordsSpanned ); int lHFB_FrameToChunk( HFB_STREAM_HANDLE streamHandle, int frameNumber ); /* get the frameNumber of the keyframe at or prior to the specified frameNumber */ int lHFB_PreviousKeyFrame( HFB_STREAM_HANDLE streamHandle, int frameNumber ); /* get the HFB index flags for the specified record/frame */ int lHFB_GetIndexFlags( HFB_STREAM_HANDLE , hfbFrameNumber frameNumberType, int recordHandleOrFrameNumber); /* add the HFB index flags for the specified record/frame */ int lHFB_AddIndexFlags( HFB_STREAM_HANDLE , hfbFrameNumber frameNumberType, int recordHandleOrFrameNumber, int flagsToAdd); /* get current data position video - frameNumber audio - sampleCount */ int lHFB_GetDataPosition( HFB_STREAM_HANDLE streamHandle, HFB_DATA_HANDLE dataRecordHandle ); /* get information about audio stream */ DKWAVEFORM *lHFB_GetAudioInfo( HFB_STREAM_HANDLE nStream, int *NumChannels, int *SamplesPerSec, int *BytesPerSec, int *wFormat); /* get the amount of audio skew expressed in records */ int lHFB_GetInitialFrames( HFB_STREAM_HANDLE videoStream, HFB_STREAM_HANDLE audioStream ); /* get the number of audio frames elapsed during a single video frame */ int lHFB_GetSamplesPerFrame( HFB_STREAM_HANDLE videoStream, HFB_STREAM_HANDLE audioStream ); /* get video frame rate and calculated audio skew (in audio samples) */ void lHFB_GetFrameRates( HFB_STREAM_HANDLE videoStream, HFB_STREAM_HANDLE audioStream, int *ptrToIntegerFrameRate, int *ptrToEstimatedAudioSampleSkew); /* */ int lHFB_GetDRMData( HFB_FILE_HANDLE dckPtr, unsigned int* pOutEncFourCC, int* pOutLength, unsigned char** ppOutData); /*get pointer to stream information streuct */ HFB_STREAM_INFO *lHFB_GetStreamInfo(HFB_STREAM_HANDLE ); /* functions to retrieve parent buffer and file of a given stream*/ HFB_BUFFER_HANDLE lHFB_GetStreamParentBuffer(HFB_STREAM_HANDLE ); HFB_FILE_HANDLE lHFB_GetStreamParentFile(HFB_STREAM_HANDLE); /* used to precisely calculate rational frame rates for a specific stream */ void lHFB_GetStreamRateAndScale( HFB_STREAM_HANDLE xStream, int *rate, int *scale ); /* get stream type and handler fourCC codes, returns type (not handler) */ unsigned int lHFB_GetStreamFCCs( HFB_STREAM_HANDLE xStream, unsigned int *type, unsigned int *handler ); /* get the last error that occured in HFB */ int lHFB_GetLastError( HFB_BUFFER_HANDLE bfHnd, int* lastErrorCode, char errorString[], size_t maxLen ); /* get streamSampleSize, <= 0 means variable */ int lHFB_GetStreamSampleSize(HFB_STREAM_HANDLE xStream); int lHFB_WhatsAhead(HFB_STREAM_HANDLE ,int ,int *); /* windows 95 dll system abstraction functions */ void lHFB_Setmalloc( void *(*mallocFuncPtr)(unsigned int size) ); void lHFB_Setcalloc( void *(*callocFuncPtr)(unsigned int size, unsigned int number) ); void lHFB_Setfree( void (*freeFuncPtr)(void *) ); void lHFB_Setopen( int (*openFuncPtr)(const char *, int,...) ); void lHFB_Setclose( int (*closeFuncPtr)(int) ); void lHFB_Setread( int (*readFuncPtr)(int,void *, unsigned int) ); void lHFB_Setseek( int (*seekFuncPtr)(int,int,int) ); #if defined(__cplusplus) } #endif #endif #endif