sdk-hwV1.3/external/eyesee-mpp/middleware/sun8iw21/media/include/videoIn/uvcInput.h

104 lines
2.6 KiB
C

#ifndef _UVC_INPUT_H_
#define _UVC_INPUT_H_
#pragma once
//ref platform headers
#include <plat_defines.h>
#include <plat_errno.h>
#include <plat_math.h>
#include <plat_type.h>
//media api headers to app
#include <mm_common.h>
#include <mm_component.h>
#include <tmessage.h>
#include <tsemaphore.h>
#include <mm_comm_uvc.h>
#include <mm_comm_video.h>
#include <linux/videodev2.h>
#define UVC_MAX_DEV_NAME (20)
#define UVC_MAX_DEV_NUM (4)
#define UVC_MAX_CHN_NUM (4)
#define BUFFER_COUNT (32)
typedef struct UVC_CHN_MAP_S
{
UVC_CHN mUvcChn;
MM_COMPONENTTYPE *mUvcComp;
cdx_sem_t mSemCompCmd;
MPPCallbackInfo *mCallbackInfo;
struct list_head mList;
}UVC_CHN_MAP_S;
typedef struct UvcChnManager
{
char mUvcDevName[UVC_MAX_DEV_NAME];
int mFd;
UVC_ATTR_S mUvcAttr;
pthread_mutex_t mLock;
pthread_t mThread_uvc_capture;
volatile int mUvcDevEnable;
int mRefs[BUFFER_COUNT];
VIDEO_FRAME_INFO_S mUvcCaptureFrame[BUFFER_COUNT];
unsigned char *mpVideoBuffer[BUFFER_COUNT];
unsigned int mBufferLength;
struct v4l2_buffer mUvcV4l2BufferInfo[BUFFER_COUNT];
pthread_mutex_t mRefsLock;
struct list_head mChnList; //UVC_CHN_MAP_S
}UvcChnManager;
typedef struct UvcDevManager
{
pthread_mutex_t mUvcDevManagerLock;
UvcChnManager *mUvcChnManager[UVC_MAX_DEV_NUM];
}UvcDevManager;
ERRORTYPE uvcInput_SearchExitDevVirChn(UVC_DEV UvcDev, UVC_CHN UvcChn, UVC_CHN_MAP_S **ppChn);
MM_COMPONENTTYPE *uvcInput_GetChnComp(UVC_DEV UvcDev, UVC_CHN UvcChn);
ERRORTYPE uvcInput_Construct(UVC_DEV UvcDev, int fd);
ERRORTYPE uvcInput_Destruct(UVC_DEV UvcDev);
ERRORTYPE UVC_Construct(void);
ERRORTYPE UVC_Destruct(void);
UVC_CHN_MAP_S *uvcInput_CHN_MAP_S_Construct();
void uvcInput_CHN_MAP_S_Destruct(UVC_CHN_MAP_S *pChnnel);
ERRORTYPE uvcInput_addChannel(UVC_DEV UvcDev, UVC_CHN_MAP_S *pChn);
ERRORTYPE uvcInput_removeChannel(UVC_DEV UvcDev, UVC_CHN_MAP_S *pChn);
ERRORTYPE uvcInput_Open_Video(UVC_DEV UvcDev);
ERRORTYPE uvcInput_Close_Video(UVC_DEV UvcDev);
ERRORTYPE uvcInput_SetDevEnable(UVC_DEV UvcDev);
ERRORTYPE uvcInput_SetDevDisable(UVC_DEV UvcDev);
ERRORTYPE uvcInput_GetDevAttr(UVC_DEV UvcDev, UVC_ATTR_S *pAttr);
ERRORTYPE uvcInput_SetDevAttr(UVC_DEV UvcDev, UVC_ATTR_S *pAttr);
ERRORTYPE uvcInput_ReleaseData2(UvcChnManager *pUvcChnManager, int buffer_index);
ERRORTYPE uvcInput_RefsReduceAndRleaseData2(UvcChnManager *pUvcChnManager, VIDEO_FRAME_INFO_S *pstFrameInfo);
ERRORTYPE uvcInput_SetControl(UVC_DEV UvcDev, int cmd_id, int set_value, const char *cmd_name);
ERRORTYPE uvcInput_GetControl(UVC_DEV UvcDev, int cmd_id, int *get_value, const char *cmd_name);
#endif