/** @file DHL_MMM.c @brief PHOENIX HAL library ÀÌ ¸ðµâ¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸í.. ex: AudioVideo decoding/capture/output implementation Copyright 2006~2010 Digital STREAM Technology, Inc. All Rights Reserved */ #include "DHL_PSI.h" #include "DHL_PSI_Priv.h" #include "DHL_DBG.h" ////#include /* ¸ðµç Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏÁö´Â ¾ÊÀ¸¸ç, compile timeÀ» ÁÙÀ̱â À§ÇØ °¢ ¸ðµâÀº ÇÊ¿äÇÑ ¸¸Å­ÀÇ Çì´õ¸¦ ¼±¾ðÇϵµ·Ï ÇÔ. */ /* DHL µð¹ö±× ¸ðµâ À̸§ Á¤ÀÇ ·ê Âü°í: DHL ¸ðµâµéÀº ¸ðµÎ * ·Î ½ÃÀÛ. API´Â ´ë¹®ÀÚ, Platform ¹× ±âŸ´Â ¼Ò¹®ÀÚ »ç¿ë. µðÆúÆ® ·¹º§Àº 0À¸·Î ¼³Á¤ÇÑ´Ù. (0: ¿¡·¯ ¸Þ½ÃÁö¸¸ Ãâ·Â) */ //DHL_MODULE("*PSI", 0); #if COMMENT ____Config____(){} #endif /* ÀÌ ¸ðµâ ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â °¢Á¾ configuration Á¤ÀÇ. */ /* #define SUPPORT_FAST_SWITCHING_OPTIMIZATION 1 */ /* #define FUNC_MONITOR_TIMER_ID TIMER_ID_FUNC_MONITOR */ #if COMMENT ____Types____(){} #endif /* ÀÌ ¸ðµâ ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â structure ¹× enumerations. */ #if COMMENT ____Variables____(){} #endif /* global·Î Àû¿ëµÇ´Â variable Á¤ÀÇ. °¢ function º°·Î Ư¼öÇÑ ¿ëµµÀÇ variableÀº °¢ functionX block ¿¡¼­ Á¤ÀÇ °¡´É. */ #if COMMENT ____Group1____(){} #endif DHL_RESULT DHL_PSI_ReadPSIData(tDHL_PSI_ControlHandle hPsiCtrl, tDHL_PSI_DataArray **ppData) { return dhl_psi_read_data(hPsiCtrl, ppData); } void DHL_PSI_FreePSIData(tDHL_PSI_DataArray *pData) { int i; for(i=0; inumSections; i++) { if (pData->sectPtr[i]) DHL_OS_Free((void**)&(pData->sectPtr[i])); } DHL_OS_Free((void**)&pData); return; } DHL_RESULT DHL_PSI_AllocGenericFilter(tDHL_PSI_Filter **ppFilter) { tDHL_PSI_Filter *pFilter; int i; pFilter = (tDHL_PSI_Filter *) dhl_psi_alloc_memory(sizeof(tDHL_PSI_Filter), DHL_PSI_MEMORY_CLEAR); if(!pFilter) return DHL_FAIL_OUT_OF_MEMORY; #if 1//BRCM memset(pFilter->mask, 0xff, FILTER_MAX_BYTE); memset(pFilter->coef, 0x0, FILTER_MAX_BYTE); memset(pFilter->excl, 0xff, FILTER_MAX_BYTE); #else // ÇÊÅÍ ÃʱⰪÀº all pass filter »óÅ·Π¸¸µé¾îÁø´Ù. memset(pFilter->mask, 0x0, FILTER_MAX_BYTE); memset(pFilter->data, 0x0, FILTER_MAX_BYTE); memset(pFilter->mode, 0x0, FILTER_MAX_BYTE); #endif if(ppFilter) *ppFilter=pFilter; return DHL_OK; } DHL_RESULT DHL_PSI_AllocFilterWithTid(tDHL_PSI_Filter **ppFilter, UINT8 tid, BOOL curnext_indicator) { DHL_RESULT error; DHL_ASSERT(tid != 0xFF, "DHL_PSI_AllocFilterWithTid: Bad TID"); error = DHL_PSI_AllocGenericFilter(ppFilter); if (error) return error; dhl_psi_set_filter_value(*ppFilter, eFILTERATTR_TID, tid); dhl_psi_set_filter_value(*ppFilter, eFILTERATTR_CURNEXTINDICATOR, curnext_indicator); return DHL_OK; } DHL_RESULT DHL_PSI_AllocFilterWithTidEx(tDHL_PSI_Filter **ppFilter, UINT8 tid, UINT16 tidExtension, BOOL curnext_indicator) { DHL_RESULT error; DHL_ASSERT(tid != 0xFF, "DHL_PSI_AllocFilterWithTidEx: Bad TID"); error = DHL_PSI_AllocGenericFilter(ppFilter); if(error) return error; dhl_psi_set_filter_value(*ppFilter, eFILTERATTR_TID, tid); dhl_psi_set_filter_value(*ppFilter, eFILTERATTR_TIDEXTENSION, tidExtension); dhl_psi_set_filter_value(*ppFilter, eFILTERATTR_CURNEXTINDICATOR, curnext_indicator); return DHL_OK; } void DHL_PSI_FreeFilter(tDHL_PSI_Filter *pFilter) { DHL_OS_Free((void **)&pFilter); } #if COMMENT ____Group2____(){} #endif DHL_RESULT DHL_PSI_StartMonitor(tDHL_TSD tsd, UINT16 pid, tDHL_PSI_Mode psiMode, tDHL_PSI_Update updateMode, tDHL_PSI_Filter *prefList, UINT16 maxData, UINT16 maxSections, tDHL_PSI_EventProc eventProc, UINT32 userParam, tDHL_PSI_ControlHandle *pHandle) { // maxData, maxSections ´Â ÀÏ´Ü ¹«½ÃÇÏÀÚ. tDHL_PSI_StartParam param; param.psiMode = psiMode; param.updateMode = updateMode; param.maxData = maxData; param.maxSections = maxSections; param.eventProc = eventProc; param.userParam = userParam; return dhl_psi_start(tsd, pid, prefList, ¶m, pHandle); } void DHL_PSI_StopMonitor(tDHL_PSI_ControlHandle handle) { dhl_psi_stop(handle); } #if COMMENT ____Debug____(){} #endif #if COMMENT ____Symbol____(){} #endif #if DHL_REGISTER_DEUBG_SYMBOLS static DHL_SymbolTable _symbols[] = { /* DHL_FNC_SYM_ENTRY2("epg_start", App_EpgUpdateStart), DHL_FNC_SYM_ENTRY2("epg_stop", App_EpgUpdateCancel), DHL_FNC_SYM_ENTRY2("epg_list", Dmc_EpgPrintAllTables), DHL_FNC_SYM_ENTRY2("epg_delete", App_EpgDeleteAll), DHL_VAR_SYM_ENTRY(g_XX_TestMode), */ 0 }; #endif /* DHL_REGISTER_DEUBG_SYMBOLS */ #if COMMENT ____Init____(){} #endif DHL_RESULT DHL_PSI_Init(void) { #if DHL_REGISTER_DEUBG_SYMBOLS DHL_DBG_RegisterSymbols(_symbols, DHL_NUMSYMBOLS(_symbols)); #endif /* °¢Á¾ init code.. */ dhl_psi_init(); return DHL_OK; } DHL_RESULT DHL_PSI_Uninit(void) { dhl_psi_uninit(); return DHL_OK; } /* end of file */