資源描述:
《秦俊權(quán)_epg數(shù)據(jù)獲取總結(jié)_20111027》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、EPG數(shù)據(jù)獲取介紹1、頻道列表的由來在搜索頻道時,系統(tǒng)會自動保存所有頻道的相關(guān)信息,并存在對應(yīng)結(jié)構(gòu)體SW_PROG_INFO_t:typedefstructsw_proginfo_t{SW_U8cServiceType;//業(yè)務(wù)類型(1:電視2:廣播3:點播?)SW_U16tsid;//碼流idSW_U16serviceid;//業(yè)務(wù)idSW_CHARcServiceName[SWSERVNAMELEN+1];//業(yè)務(wù)名稱(頻道名稱)}SW_PROG_INFO_t;這些數(shù)據(jù)第一次搜索出來之后都會保存在F
2、LASH中,每個頻道都有自己對應(yīng)的一個序號,下次開機時數(shù)據(jù)仍在。SW_PROG_INFO_t結(jié)構(gòu)體在EPG中主要用到的是業(yè)務(wù)類型、碼流id、業(yè)務(wù)id和業(yè)務(wù)名稱,獲取這些數(shù)據(jù)可以由下列五個函數(shù)獲得,只要知道了業(yè)務(wù)id便可知道其它對應(yīng)信息。先定義結(jié)構(gòu)體指針SW_PROG_INFO_t*info_p;①info_p=NewProg_GetInfoOfCurrProg();//當前播放頻道信息②info_p=NewProg_GetProgInfoOfByIndex(index);//對應(yīng)index頻道信息③in
3、fo_p=NewProg_GetProgInfoOfType(index,type);//type類型對應(yīng)index頻道信息④info_p=NewProg_GetProgInfoOfServiceID(servid,tsid);//業(yè)務(wù)id和TSid對應(yīng)頻道信息,通常頻道的業(yè)務(wù)id都是唯一的,因此tsid可以不需傳遞,等于NEWPROG_NOTCARE,主要是在獲取PF時使用該函數(shù)。⑤info_p=NewProg_GetProgInfoOfCurrType(index);//獲取當前業(yè)務(wù)類型對應(yīng)inde
4、x頻道信息上述的index為這些頻道在頻道搜索時在數(shù)據(jù)庫中所保存的序號,通常用它們來獲取當前播放頻道的PF信息、schedule信息和顯示頻道列表。但如果在頻道編輯中修改了頻道的排序,則按編輯后的頻道排序進行獲取數(shù)據(jù)。其中②讀取的info_p包含TV和GB(具體排序是???)。type主要有SW_TVPROG和SW_GBPROG。要注意的是獲取info_p后要進行if(NULL==info_p)來判斷讀取的信息是否正確,如果不加判斷就使用其信息可能會導致死機。2、獲取頻道列表數(shù)據(jù)在顯示頻道列表時需要知道
5、對應(yīng)類型頻道的數(shù)量,由下列兩個函數(shù)獲得:①Num=NewProg_GetProgNumOfType(type);//獲取TV或GB頻道數(shù)量②Num=NewProg_GetProgNumOfCurrType();//獲取當前類型的頻道數(shù)量③Num=GetTotalTVRadioNum();//獲取TV和GB頻道數(shù)量,亦用于開機時判斷當前有無頻道。然后根據(jù)這些數(shù)量在一個for循環(huán)里把相應(yīng)頻道數(shù)據(jù)插入到位圖下拉列表。在使用位圖下拉列表刷新列表時可以對每個子條目插入三個參數(shù)進行保存,可保存業(yè)務(wù)id等重要參數(shù):S
6、WCBMPL_InsertItem(SW_CBMPList_t*handle,SW_U32param1,SW_U32param2,SW_U32param3,SW_CHAR_Ptxt,SW_U32bmpindex,SW_U32*index),而在當位圖下拉列表選擇中相應(yīng)頻道時,可以先由:SWCBMPL_GetCurrItem(SW_CBMPList_t*handle,SW_U32_Pindex)獲取當前所選擇的子條目index,再用SWCBMPL_GetItemInfo(SW_CBMPList_t*han
7、dle,SW_U32_Pparam1,SW_U32_Pparam2,SW_U32_Pparam3,SW_CHAR_Ptxt,SW_U32index)讀出其所包含的信息,主要是業(yè)務(wù)id,同樣文本也是可以讀取的。頻道名稱通常是由for循環(huán)(如(for(index=0;indexcServiceName,而對于頻道號的讀取主要由下列兩個函數(shù)(但這里讀出來的te
8、mpNo的值等于index+1?)tempNo=NewProg_ProgIndexToShowNoOfCurType(index);//當前類型對應(yīng)index頻道的頻道號TempNo=NewProg_ProgIndexToShowNo(type,index);//type類型對應(yīng)index的頻道號1、喜愛列表及加鎖圖標的顯示每個頻道都有一個對應(yīng)的結(jié)構(gòu)體SW_PROGRAM_List_t保存頻道相關(guān)信息:typedefstructsw_pro