source: svn/newcon3bcm2_21bu/dst/dmw/src/Channel/dmw_channel_priv.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 7.1 KB
Line 
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//
21typedef 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
96typedef void (*DMC_FN_CANCELFREE)(UINT32);
97
98
99
100// DMC task¿¡ Event ¶Ç´Â Command¸¦ º¸³¾ ¶§ »ç¿ëµÇ´Â ¸Þ½ÃÁö ±¸Á¶Ã¼.
101//
102typedef 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
140char *Dmc_MsgString(DmcMsgType msg);
141
142
143typedef UINT32 DMC_VIDEO_CACHE;
144
145#if 0
146________()
147#endif
148// °¢Á¾ internal functions..
149
150void doDmc_Notify(UINT32 event, UINT32 param);
151
152
153STATUS Dmc_SendCommandEx(DmcMsgType cmd, UINT32 param, 
154                                                DMC_FN_CANCELFREE pfnFree,
155                                                BOOL bWaitForComplete, 
156                                                DMC_FN_COMPLETED fn, UINT32 userparam, 
157                                                BOOL bCancelPrevCommand);
158STATUS Dmc_SendCommand(DmcMsgType cmd, UINT32 param, BOOL bCancelPrevCommand);
159
160void Dmc_DeleteDmcMessage(DmcMessage *pmsg, STATUS result); // cafrii 060831 add
161
162
163void *Dmc_ParamHeapAllocator(UINT32 size);
164void Dmc_ParamHeapDeallocator(UINT32 param);
165
166
167
168#if 0
169____ChannelAV____()
170#endif
171
172
173
174void doDmc_UpdatePsiInfo(MPEG_PAT *pat, MPEG_PMT *pmt);
175void 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);
178void doDmc_UpdateProgramInfoAnalog(int rf, 
179                                tDHL_CapVideoInput video, tDHL_CapAudioInput audio);
180void doDmc_ClearProgramInfo(void);
181
182STATUS Dmc_InitAVResources(void);
183
184void doDmc_HandlePatChange(DmcMessage *pmsg);
185void doDmc_HandlePmtChange(DmcMessage *pmsg);
186void doDmc_HandleImportantVideoChange(DmcMessage *pmsg);
187void doDmc_HandleUserChange(DmcMessage *pmsg);
188void doDmc_HandleMajorVideoChange(DmcMessage *pmsg);
189void doDmc_HandleFreezeVideoEnd(DmcMessage *pmsg);
190void doDmc_HandleVideoScrambled(DmcMessage *pmsg); // cafrii 060721 ddd
191
192
193
194
195void doDmc_SelectAudioStream(MPEG_PMT *pmt, xvctChannelPtr_t vctc, 
196                        UINT32 *pAudioPID, tDHL_AudioCodingType *pAudioType);
197void doDmc_SelectVideoStream(MPEG_PMT *pmt, xvctChannelPtr_t vctc,
198                        UINT32 *pVideoPID, tDHL_VideoCodingType *pVideoType);
199
200
201// cafrii 060721 add
202void doDmc_StopDigitalVideo(BOOL bSaveToCache);
203void doDmc_StopDigitalAudio(void);
204
205// cafrii 060630, add video cache function
206void doDmc_StopDigital(BOOL bCancelMonitors, BOOL bSaveToCache);
207void doDmc_StopAnalog(void);
208void doDmc_Stop(void);
209
210STATUS doDmc_StartDigital(UINT16 uVidPID, UINT16 uAudPID, UINT16 uPcrPID, 
211                                                                DMC_VIDEO_CACHE cache, tDHL_VideoCodingType vidType, tDHL_AudioCodingType audioType);
212STATUS doDmc_StartAnalog(CaptureParam *pCapParam);
213
214
215
216
217void 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       
226extern UINT8 dmc_bRequestVideoHide;
227
228
229
230void RegisterChannelAVSymbols(void);
231
232
233
234
235// channel tune
236
237STATUS doDmc_CmdRfTune(DmcMessage *pmsg);
238
239
240void RegisterChannelTuneSymbols(void);
241
242
243
244
245// channel scan
246
247BOOL   SCN_ScanRunning(void);
248void   SCN_ScanInit(void);
249void   SCN_ScanTask(void);
250
251STATUS SCN_ScanStart(DmcMessage *pMsg); // UINT32 param);
252STATUS SCN_ScanStop(DmcMessage *pMsg); // UINT32 param);
253STATUS SCN_ScanOneChannel(DmcMessage *pMsg); // UINT32 param);
254
255STATUS SCN_UpdateUcmVct(xvctPtr_t vct, MPEG_PAT *pat, MPEG_PMT **pmtlist, 
256                                                int rf, int scan_flag, 
257                                                int *pnUid, int **puidBuf);
258
259void RegisterChannelScanSymbols(void);
260
261
262
263// debug
264
265int DmcDebugPrint(int level, char *fmt, ...);
266extern int g_Trace_DmcMain;
267
268
269#endif // __dmw_channel_priv_h__
270
271
Note: See TracBrowser for help on using the repository browser.