#ifndef _UVC_INPUT_H_ #define _UVC_INPUT_H_ #pragma once //ref platform headers #include #include #include #include //media api headers to app #include #include #include #include #include #include #include #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