| 1 | /* |
|---|
| 2 | dmw_channel_priv.h |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | */ |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | #ifndef __dmw_channel_priv_h__ |
|---|
| 9 | #define __dmw_channel_priv_h__ |
|---|
| 10 | |
|---|
| 11 | #include "DHL_AVCAP.h" // for tDHL_VideoCacheHandle |
|---|
| 12 | |
|---|
| 13 | #ifndef abs |
|---|
| 14 | #define abs(a) ((a)>=0?(a):-(a)) |
|---|
| 15 | #endif |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | // Dmc task¿¡ Àü´ÞµÇ´Â message´Â Å©°Ô µÎ ºÎ·ù·Î ³ª´¶´Ù. event¿Í command. |
|---|
| 19 | // ÀÌ µÑ ´Ù EventType À̶ó´Â °øÅë typeÀ¸·Î Á¤ÀǸ¦ Çϰí ÀÖ´Ù. |
|---|
| 20 | // |
|---|
| 21 | typedef enum |
|---|
| 22 | { |
|---|
| 23 | // events.. |
|---|
| 24 | evtStart = 200, |
|---|
| 25 | evtPatChange = evtStart, // »õ PAT°¡ ¼ö½ÅµÇ¾úÀ½ |
|---|
| 26 | evtPmtChange, // »õ PMT°¡ ¼ö½ÅµÇ¾úÀ½ |
|---|
| 27 | evtVideoImportantChange, // ¼Ò½º ½ºÆ®¸² ÇØ»óµµ°¡ º¯°æµÇ¾úÀ½ |
|---|
| 28 | evtVideoMajorChange, // ºñµð¿À ¹öÆÛ ÀçÇÒ´çÀÌ ÇÊ¿äÇÔ |
|---|
| 29 | evtVideoFatalError, // Ä¡¸íÀûÀÎ ¿¡·¯ ¹ß»ý |
|---|
| 30 | evtVideoUserChange, // ? |
|---|
| 31 | evtFreezeVideoEnd, // ºñµð¿À°¡ Á¤»óÀûÀ¸·Î ³ª¿À±â ½ÃÀÛÇÔ |
|---|
| 32 | evtVideoScrambled, // ºñµð¿À°¡ scrambled µÇ¾úÀ½. |
|---|
| 33 | |
|---|
| 34 | // commands.. |
|---|
| 35 | cmdStart = 300, |
|---|
| 36 | cmdRfTune = cmdStart, // tune by direct RF number |
|---|
| 37 | cmdExtInputCapture, // external AV input |
|---|
| 38 | cmdVideoStop, // ºñµð¿À Á¾·á |
|---|
| 39 | |
|---|
| 40 | cmdRestartVideo, // ºñµð¿À¸¸ ´Ù½Ã Àç½ÃÀÛÇÔ |
|---|
| 41 | cmdChangeDisplay, // change display with user parameter |
|---|
| 42 | cmdEnqueueDPC, // »ç¿ëÀÚ Deferred Procedure µî·Ï |
|---|
| 43 | cmdChangeVideoAdjustment, // ºñµð¿À ASR º¯°æ |
|---|
| 44 | cmdVideoResize, // video resize |
|---|
| 45 | cmdAdjustScreen, // ºñµð¿À ASR ¹× Rect º¯°æ. |
|---|
| 46 | |
|---|
| 47 | cmdScanStart, |
|---|
| 48 | cmdScanStop, |
|---|
| 49 | cmdScanChannel, // 1 channel scan |
|---|
| 50 | |
|---|
| 51 | cmdVideoSelfDelete, // DMC ŽºÅ© Á¾·á |
|---|
| 52 | |
|---|
| 53 | } DmcMsgType; |
|---|
| 54 | |
|---|
| 55 | |
|---|
| 56 | |
|---|
| 57 | #ifdef __DEFINE_DMC_STRING_FN__ |
|---|
| 58 | char *Dmc_MsgString(DmcMsgType msg) |
|---|
| 59 | { |
|---|
| 60 | return |
|---|
| 61 | msg == evtPatChange ? "evtPatChange" : |
|---|
| 62 | msg == evtPmtChange ? "evtPmtChagne" : |
|---|
| 63 | msg == evtVideoImportantChange ? "evtVideoImportantChange" : |
|---|
| 64 | msg == evtVideoMajorChange ? "evtVideoMajorChange" : |
|---|
| 65 | msg == evtVideoFatalError ? "evtVideoFatalError" : |
|---|
| 66 | msg == evtVideoUserChange ? "evtVideoUserChange" : |
|---|
| 67 | msg == evtFreezeVideoEnd ? "evtFreezeVideoEnd" : |
|---|
| 68 | msg == evtVideoScrambled ? "evtVideoScrambled" : |
|---|
| 69 | |
|---|
| 70 | msg == cmdRfTune ? "cmdRfTune" : |
|---|
| 71 | msg == cmdExtInputCapture ? "cmdExtInputCapture" : |
|---|
| 72 | msg == cmdVideoStop ? "cmdVideoStop" : |
|---|
| 73 | |
|---|
| 74 | msg == cmdRestartVideo ? "cmdRestartVideo" : |
|---|
| 75 | msg == cmdChangeDisplay ? "cmdChangeDisplay" : |
|---|
| 76 | msg == cmdEnqueueDPC ? "cmdEnqueueDPC" : |
|---|
| 77 | msg == cmdChangeVideoAdjustment ? "cmdChangeVideoAdjustment" : |
|---|
| 78 | |
|---|
| 79 | msg == cmdScanStart ? "cmdScanStart" : |
|---|
| 80 | msg == cmdScanStop ? "cmdScanStop" : |
|---|
| 81 | msg == cmdScanChannel ? "cmdScanChannel" : |
|---|
| 82 | |
|---|
| 83 | msg == cmdVideoSelfDelete ? "cmdVideoSelfDelete" : |
|---|
| 84 | |
|---|
| 85 | "??"; |
|---|
| 86 | } |
|---|
| 87 | #else |
|---|
| 88 | char *Dmc_MsgString(DmcMsgType msg); |
|---|
| 89 | #endif |
|---|
| 90 | |
|---|
| 91 | |
|---|
| 92 | |
|---|
| 93 | #define Dmc_IsCommand(msgtype) (msgtype >= cmdStart) |
|---|
| 94 | |
|---|
| 95 | |
|---|
| 96 | typedef void (*DMC_FN_CANCELFREE)(UINT32); |
|---|
| 97 | |
|---|
| 98 | |
|---|
| 99 | |
|---|
| 100 | // DMC task¿¡ Event ¶Ç´Â Command¸¦ º¸³¾ ¶§ »ç¿ëµÇ´Â ¸Þ½ÃÁö ±¸Á¶Ã¼. |
|---|
| 101 | // |
|---|
| 102 | typedef struct |
|---|
| 103 | { |
|---|
| 104 | DmcMsgType type; |
|---|
| 105 | |
|---|
| 106 | UINT32 param; |
|---|
| 107 | // command parameter |
|---|
| 108 | DMC_FN_CANCELFREE pfnResourceFree; |
|---|
| 109 | // ÀÌ msg°¡ cancelÀÌ µÉ¶§ È£ÃâÇØ¾ß ÇÏ´Â resource deallocator function. |
|---|
| 110 | // param ÀÌ resource pointer¶ó¸é ¹Ýµå½Ã ÇÊ¿äÇÔ. |
|---|
| 111 | |
|---|
| 112 | UINT32 cancelId; |
|---|
| 113 | // cancelÇÒ¶§ »ç¿ëµÇ´Â ÀϷùøÈ£. |
|---|
| 114 | |
|---|
| 115 | BOOL bWaitForComplete; |
|---|
| 116 | // TRUE if caller will wait the completion of command (synchronous ¸ðµå) |
|---|
| 117 | // ´ëºÎºÐÀÇ command´Â wait mode¸é ÃæºÐÇÏÁö¸¸ |
|---|
| 118 | // channel tuning°ú °°ÀÌ ½Ã°£ÀÌ °É¸®´Â ÀÛ¾÷Àº no_wait ¸ðµå »ç¿ë. |
|---|
| 119 | |
|---|
| 120 | DMC_FN_COMPLETED pfnCompleted; |
|---|
| 121 | // result status callback function. |
|---|
| 122 | // asynchronous ¸ðµåÀÎ °æ¿ì¿¡ »ç¿ëµÊ. |
|---|
| 123 | // ÀÌ ÇÔ¼öÀÇ prototype¿¡ ÁÖÀÇ.. |
|---|
| 124 | |
|---|
| 125 | UINT32 userParam; |
|---|
| 126 | // pfnComplete callback¿¡ »ç¿ëµÉ user parameter. |
|---|
| 127 | // asynchronous ¸ðµåÀÎ °æ¿ì¿¡ »ç¿ëµÊ. |
|---|
| 128 | |
|---|
| 129 | DHL_OS_SEMA_ID waitSem; |
|---|
| 130 | // synchronous ¸ðµå¿¡¼¸¸ »ç¿ë. |
|---|
| 131 | // client°¡ command ½ÇÇà Á¾·á¸¦ ±â´Ù¸®±â À§ÇØ ±â´Ù¸®´Â semaphoreÀÓ. |
|---|
| 132 | |
|---|
| 133 | UINT32 *pStatus; |
|---|
| 134 | // synchronous mode¿¡¼¸¸ »ç¿ëµÇ¸ç return °ªÀ» ¹ÞÀ» ÁÖ¼ÒÀÌ´Ù. |
|---|
| 135 | // NULLÀÌ ¾Æ´Ï¸é commandÀÇ ¸®ÅϰªÀ» ÀÌ °÷¿¡ ³Ñ°ÜÁØ´Ù. |
|---|
| 136 | |
|---|
| 137 | } DmcMessage; |
|---|
| 138 | |
|---|
| 139 | |
|---|
| 140 | char *Dmc_MsgString(DmcMsgType msg); |
|---|
| 141 | |
|---|
| 142 | |
|---|
| 143 | typedef UINT32 DMC_VIDEO_CACHE; |
|---|
| 144 | |
|---|
| 145 | #if 0 |
|---|
| 146 | ________() |
|---|
| 147 | #endif |
|---|
| 148 | // °¢Á¾ internal functions.. |
|---|
| 149 | |
|---|
| 150 | void doDmc_Notify(UINT32 event, UINT32 param); |
|---|
| 151 | |
|---|
| 152 | |
|---|
| 153 | STATUS Dmc_SendCommandEx(DmcMsgType cmd, UINT32 param, |
|---|
| 154 | DMC_FN_CANCELFREE pfnFree, |
|---|
| 155 | BOOL bWaitForComplete, |
|---|
| 156 | DMC_FN_COMPLETED fn, UINT32 userparam, |
|---|
| 157 | BOOL bCancelPrevCommand); |
|---|
| 158 | STATUS Dmc_SendCommand(DmcMsgType cmd, UINT32 param, BOOL bCancelPrevCommand); |
|---|
| 159 | |
|---|
| 160 | void Dmc_DeleteDmcMessage(DmcMessage *pmsg, STATUS result); // cafrii 060831 add |
|---|
| 161 | |
|---|
| 162 | |
|---|
| 163 | void *Dmc_ParamHeapAllocator(UINT32 size); |
|---|
| 164 | void Dmc_ParamHeapDeallocator(UINT32 param); |
|---|
| 165 | |
|---|
| 166 | |
|---|
| 167 | |
|---|
| 168 | #if 0 |
|---|
| 169 | ____ChannelAV____() |
|---|
| 170 | #endif |
|---|
| 171 | |
|---|
| 172 | |
|---|
| 173 | |
|---|
| 174 | void doDmc_UpdatePsiInfo(MPEG_PAT *pat, MPEG_PMT *pmt); |
|---|
| 175 | void doDmc_UpdateProgramInfoDigital(int rf, ModulationType mod, TUNE_METHOD method, |
|---|
| 176 | int major, int minor, int program_number, |
|---|
| 177 | UINT16 vidPid, UINT16 audPid, UINT16 pcrPid, tDHL_VideoCodingType vidType, tDHL_AudioCodingType audType); |
|---|
| 178 | void doDmc_UpdateProgramInfoAnalog(int rf, |
|---|
| 179 | tDHL_CapVideoInput video, tDHL_CapAudioInput audio); |
|---|
| 180 | void doDmc_ClearProgramInfo(void); |
|---|
| 181 | |
|---|
| 182 | STATUS Dmc_InitAVResources(void); |
|---|
| 183 | |
|---|
| 184 | void doDmc_HandlePatChange(DmcMessage *pmsg); |
|---|
| 185 | void doDmc_HandlePmtChange(DmcMessage *pmsg); |
|---|
| 186 | void doDmc_HandleImportantVideoChange(DmcMessage *pmsg); |
|---|
| 187 | void doDmc_HandleUserChange(DmcMessage *pmsg); |
|---|
| 188 | void doDmc_HandleMajorVideoChange(DmcMessage *pmsg); |
|---|
| 189 | void doDmc_HandleFreezeVideoEnd(DmcMessage *pmsg); |
|---|
| 190 | void doDmc_HandleVideoScrambled(DmcMessage *pmsg); // cafrii 060721 ddd |
|---|
| 191 | |
|---|
| 192 | |
|---|
| 193 | |
|---|
| 194 | |
|---|
| 195 | void doDmc_SelectAudioStream(MPEG_PMT *pmt, xvctChannelPtr_t vctc, |
|---|
| 196 | UINT32 *pAudioPID, tDHL_AudioCodingType *pAudioType); |
|---|
| 197 | void doDmc_SelectVideoStream(MPEG_PMT *pmt, xvctChannelPtr_t vctc, |
|---|
| 198 | UINT32 *pVideoPID, tDHL_VideoCodingType *pVideoType); |
|---|
| 199 | |
|---|
| 200 | |
|---|
| 201 | // cafrii 060721 add |
|---|
| 202 | void doDmc_StopDigitalVideo(BOOL bSaveToCache); |
|---|
| 203 | void doDmc_StopDigitalAudio(void); |
|---|
| 204 | |
|---|
| 205 | // cafrii 060630, add video cache function |
|---|
| 206 | void doDmc_StopDigital(BOOL bCancelMonitors, BOOL bSaveToCache); |
|---|
| 207 | void doDmc_StopAnalog(void); |
|---|
| 208 | void doDmc_Stop(void); |
|---|
| 209 | |
|---|
| 210 | STATUS doDmc_StartDigital(UINT16 uVidPID, UINT16 uAudPID, UINT16 uPcrPID, |
|---|
| 211 | DMC_VIDEO_CACHE cache, tDHL_VideoCodingType vidType, tDHL_AudioCodingType audioType); |
|---|
| 212 | STATUS doDmc_StartAnalog(CaptureParam *pCapParam); |
|---|
| 213 | |
|---|
| 214 | |
|---|
| 215 | |
|---|
| 216 | |
|---|
| 217 | void doDmc_StartFinalPsiMonitor(BOOL bCancelPrevMonitors); |
|---|
| 218 | |
|---|
| 219 | |
|---|
| 220 | |
|---|
| 221 | #define DMC_VIDEO_HIDE_USER 0x01 |
|---|
| 222 | // Dmc_HideVideo () ¿¡ ÀÇÇÑ »ç¿ëÀÚ blank bit |
|---|
| 223 | #define DMC_VIDEO_HIDE_VIDEO_START 0x02 |
|---|
| 224 | // video start ½ÃÁ¡ÀÇ noise¸¦ °¨ÁÖ±â À§ÇÑ ³»ºÎ ¿ëµµÀÇ blank bit |
|---|
| 225 | |
|---|
| 226 | extern UINT8 dmc_bRequestVideoHide; |
|---|
| 227 | |
|---|
| 228 | |
|---|
| 229 | |
|---|
| 230 | void RegisterChannelAVSymbols(void); |
|---|
| 231 | |
|---|
| 232 | |
|---|
| 233 | |
|---|
| 234 | |
|---|
| 235 | // channel tune |
|---|
| 236 | |
|---|
| 237 | STATUS doDmc_CmdRfTune(DmcMessage *pmsg); |
|---|
| 238 | |
|---|
| 239 | |
|---|
| 240 | void RegisterChannelTuneSymbols(void); |
|---|
| 241 | |
|---|
| 242 | |
|---|
| 243 | |
|---|
| 244 | |
|---|
| 245 | // channel scan |
|---|
| 246 | |
|---|
| 247 | BOOL SCN_ScanRunning(void); |
|---|
| 248 | void SCN_ScanInit(void); |
|---|
| 249 | void SCN_ScanTask(void); |
|---|
| 250 | |
|---|
| 251 | STATUS SCN_ScanStart(DmcMessage *pMsg); // UINT32 param); |
|---|
| 252 | STATUS SCN_ScanStop(DmcMessage *pMsg); // UINT32 param); |
|---|
| 253 | STATUS SCN_ScanOneChannel(DmcMessage *pMsg); // UINT32 param); |
|---|
| 254 | |
|---|
| 255 | STATUS SCN_UpdateUcmVct(xvctPtr_t vct, MPEG_PAT *pat, MPEG_PMT **pmtlist, |
|---|
| 256 | int rf, int scan_flag, |
|---|
| 257 | int *pnUid, int **puidBuf); |
|---|
| 258 | |
|---|
| 259 | void RegisterChannelScanSymbols(void); |
|---|
| 260 | |
|---|
| 261 | |
|---|
| 262 | |
|---|
| 263 | // debug |
|---|
| 264 | |
|---|
| 265 | int DmcDebugPrint(int level, char *fmt, ...); |
|---|
| 266 | extern int g_Trace_DmcMain; |
|---|
| 267 | |
|---|
| 268 | |
|---|
| 269 | #endif // __dmw_channel_priv_h__ |
|---|
| 270 | |
|---|
| 271 | |
|---|