#ifndef _NET_STREAM_IF_H_ #define _NET_STREAM_IF_H_ #include #include //#include #include "net_stream_error.h" #define NR_MESSAGE_QUEUE_MESSAGE_MASK (0x0000FFFF) #define NR_MESSAGE_QUEUE_TYPE_MASK (0xFFFF0000) #define NR_MESSAGE_QUEUE_TYPE_INTERNAL (1<<16) #define NR_MESSAGE_QUEUE_TYPE_EXTERNAL (1<<17) #define NR_MESSAGE_QUEUE_TYPE_NET_TRANS (1<<18) enum { NR_MSG_FINALIZE = 0x01, NR_MSG_DATA_RETRIEVE, NR_MSG_ADD_NEW_TASK, NR_MSG_DELETE_TASK, }; enum { NR_SEEK_SET = SEEK_SET, NR_SEEK_CUR = SEEK_CUR, }; enum { NR_MSG_NET_TRANS_RESPONSE_DATA_IN_DONE = 0x1000, NR_MSG_NET_TRANS_RESPONSE_DATA_IN_FULL, NR_MSG_NET_TRANS_RESPONSE_DATA_IN_ERROR, NR_MSG_NET_TRANS_RESPONSE_DATA_IN_PREPARE_NEXT, }; typedef struct NR_MessageBody_t_ { UINT32 dMessageType; UINT32 dParam1; UINT32 dParam2; } NR_MessageBody_t; #define NR_MESSAGE_BODY_SIZE (sizeof(NR_MessageBody_t)) #ifndef HANDLE_ #define HANDLE_ typedef UINT32 HANDLE; #endif enum { NETTASK_TRANSFER_ENCODING_NULL = 0, NETTASK_TRANSFER_ENCODING_GZIP = 3, }; //Drv_GetTaskInfo->eCmd typedef enum { NETTASK_BUFFER_PERCENT = 100, NETTASK_DOWNLOAD_SPEED, NETTASK_RECEIVE_DATALEN, NETTASK_FILESIZE, NETTASK_STATUSCODE, NETTASK_TRANSFER_ENCODING, NETTASK_DLONCE_STATUS, //for debug use only NETTASK_DEBUG_INFO = 600, NETTASK_DUMP_TASK, } NETTASK_INFO_e; typedef enum { NETTASK_SETMODE_PREPARSE = 0x01, NETTASK_SETMODE_PLAYING, NETTASK_SET_STARTUP, NETTASK_SET_SECOND_URL, NETTASK_SET_COOKIE, NETTASK_SET_REFERER, NETTASK_SET_USERAGENT, //for DLNA test by zhanglong 02/24/2012 NETTASK_SET_MKPACKET_POINT, NETTASK_SET_MKPACKET_DATA, NETTASK_SET_STREAM_TYPE, NETTASK_SET_PAUSE_CONDITION,//cmd data: 1 pause transfer,0 go on transfer NETTASK_SET_RANGE_END_FLAG, NETATSK_SET_MAX_SOCKET, NETTASK_SET_POST_DATA, NETTASK_SET_DOWNLOAD_PATH, NETTASK_SET_DOWNLOAD_FILENAME, NETTASK_SET_AUTHORIZATION } NETTASK_SETPARAM_e; //this assigned to dType enum { NETTASK_DOWNLOADONCE = (1<<0), //usually for getting xml and small file NETTASK_DOWNLOADLOOP = (1<<1), //usually for getting video/audio stream NETTASK_DOWNLOADDISC = (1<<2), //used to download the file to HDD/usb/card NETTASK_TYPE_CUSTOM = (1<<8), }; //this assigned to NetStream_PrivateDrv_t->dFlags #define NETSTREAM_DRV_RUNNING_NOW 0x01 #define NETSTREAM_DRV_RUNNING_ON_REGISTER 0x02 typedef struct NetStream_PrivateDrv_t_ { const UINT32 dSupportedTaskType; UINT32 dFlags; INT32 (*Drv_Initialize_Func)( void **Drv_PrivateData ); INT32 (*Drv_Finalize_Func)( void **Drv_PrivateData ); INT32 (*Drv_CreateTask_Func)( void *Drv_PrivateData, HANDLE *pHandle, char *pBuf, UINT32 dBufSize, UINT32 dType, const char *pUrl, UINT32 dIdentify, GL_Queue_t MwQueueHandle ); INT32 (*Drv_DeleteTask_Func)( void *Drv_PrivateData, HANDLE handle); INT64 (*Drv_Seek_Func)( void *Drv_PrivateData, HANDLE handle, UINT64 lOffset, UINT32 dSeekCtrl ); INT32 (*Drv_Read_Func)( void *Drv_PrivateData, HANDLE handle, UINT64 lOffset, UINT32 dReadLen, char *pBuf, UINT32 *pdRealReadLen ); INT32 (*Drv_GetTaskInfo_Func)( void *Drv_PrivateData, HANDLE handle, INT32 eCmd, void * pdData ); INT32 (*Drv_SetTaskParam_Func)( void *Drv_PrivateData, HANDLE handle, INT32 eCmd, const void * pdData ); HANDLE (*Drv_CheckHandle_Func)( void*Drv_PrivateData,HANDLE handle); void *pDrv_PrivateData; struct NetStream_PrivateDrv_t_ *pNext; } NetStream_PrivateDrv_t; INT32 NetStream_IF_Initialize(void); INT32 NetStream_IF_Finalize(void); INT32 NetStream_IF_CreateTask( HANDLE *pHandle, char *pBuf, UINT32 dBufSize, UINT32 dType, const char *pUrl, UINT32 dIdentify, GL_Queue_t MwQueueHandle ); INT32 NetStream_IF_SetTaskParam( HANDLE handle, INT32 eCmd, const void *pdParam ); INT32 NetStream_IF_StartTask( HANDLE handle); INT64 NetStream_IF_Seek( HANDLE handle, UINT64 lOffset, UINT32 dSeekCtrl ); INT32 NetStream_IF_Read( HANDLE handle, UINT64 lOffset, UINT32 dReadLen, char *pBuf, UINT32 *pdRealReadLen ); INT32 NetStream_IF_GetDataLen( HANDLE handle, UINT32 *pdLen ); INT32 NetStream_IF_GetBufPercent( HANDLE handle, UINT32 *psdPercent ); INT32 NetStream_IF_GetFileSize(HANDLE handle, UINT64 *plLen); INT32 NetStream_IF_GetDownLoadSpeed( HANDLE handle, UINT32 *pdSpeed ); #ifdef LG_APP_SUPPORT INT32 NetStream_IF_GetTaskInfo( HANDLE handle, UINT32 dCmd, void *pInfo ); #endif INT32 NetStream_IF_DeleteTask( HANDLE handle); INT32 NetStream_IF_RegisterPrivateDrv( NetStream_PrivateDrv_t *pDrv, UINT32 *pdType ); INT32 NetStream_IF_unRegisterPrivateDrv( NetStream_PrivateDrv_t *pDrv ); #endif