2026-04-12 17:47:54 +08:00

69 lines
2.5 KiB
C

/*
*******************************************************************************
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
*
* +-----------------------------------------------------------------+
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
* | |
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
* | VATICS(KNERON) INC. |
* +-----------------------------------------------------------------+
*
*******************************************************************************
*/
#ifndef __LIVE_MEDIA_SOURCE_H__
#define __LIVE_MEDIA_SOURCE_H__
typedef struct
{
unsigned char* pbyHdr;
unsigned char* pbyPayload;
} DataBufInfo;
/*!
*********************************************************************
* Enumeration of event type.
*********************************************************************
*/
typedef enum lmsrc_event_type
{
//! Need one Intra frame from this source
letNeedIntra,
//! Need one buffer conf from this source
letNeedConf,
//! Start needing bitstream from this source
letBitstrmStart,
//! Stop needing bitstream from this source
letBitstrmStop
} ELMSrcEventType;
typedef int (*PFLMSrcBufCB) (void*, DataBufInfo*);
typedef int (*PFLMSrcEvntCB) (void*, ELMSrcEventType);
typedef int (*PFLMSrcWakeUpToTerminate) (void*);
typedef int (*PFLMSrcBufInitCB) (void** phShrdBufSrc, char* szSharedBuffer, char* szCmdFiFoPath);
typedef int (*PFLMSrcBufReleaseCB) (void** phShrdBufSrc);
/*!
*******************************************************************************
* LiveMediaSrc base struct.
* \note When you implement LiveMediaSrc, the first element of your class must
* be this base struct.
*******************************************************************************
*/
typedef struct
{
PFLMSrcBufCB pfReleaseAndGetBuf;
PFLMSrcBufCB pfReleaseBuf;
PFLMSrcEvntCB pfEvntHandler;
PFLMSrcWakeUpToTerminate pfWakeUpToTerminate;
} TLiveMediaSrc;
#endif // __LIVE_MEDIA_SOURCE_H__