亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式數(shù)據(jù)庫SQLite在數(shù)字電視EPG系統(tǒng)中的應(yīng)用

        2011-06-07 05:53:50孫萍萍
        電視技術(shù) 2011年19期
        關(guān)鍵詞:節(jié)目單機(jī)頂盒頻道

        孫萍萍

        (杭州職業(yè)技術(shù)學(xué)院,浙江 杭州 310018)

        0 引言

        數(shù)字電視能夠?yàn)橛脩籼峁?shù)倍于模擬電視的節(jié)目數(shù)量,電子節(jié)目指南(Electronic Program Guide,EPG)可以幫助用戶從眾多的節(jié)目中找到自己感興趣的節(jié)目,是數(shù)字電視機(jī)頂盒必備的功能。

        目前國內(nèi)較多機(jī)頂盒開發(fā)方案不能支持Flash文件系統(tǒng),需要開發(fā)人員在存取數(shù)據(jù)時(shí)直接對Flash塊(Block)進(jìn)行讀寫,不利于EPG數(shù)據(jù)的統(tǒng)一管理。支持Flash文件系統(tǒng)的機(jī)頂盒開發(fā)方案中,一般以鏈表的結(jié)構(gòu)來組織EPG數(shù)據(jù),由于EPG相關(guān)的SI表種類繁多,相互關(guān)系復(fù)雜,數(shù)據(jù)量大,而機(jī)頂盒CPU資源有限,使得數(shù)據(jù)處理時(shí)間長,實(shí)時(shí)性差,導(dǎo)致用戶體驗(yàn)效果不好[1]。

        嵌入式數(shù)據(jù)庫管理系統(tǒng)是近幾年發(fā)展起來的一項(xiàng)比較新的數(shù)據(jù)管理技術(shù),它以傳統(tǒng)的數(shù)據(jù)庫技術(shù)為基礎(chǔ),并結(jié)合嵌入式環(huán)境的具體特點(diǎn),實(shí)現(xiàn)對嵌入式設(shè)備上的數(shù)據(jù)進(jìn)行方便、統(tǒng)一的管理。目前嵌入式數(shù)據(jù)庫技術(shù)已經(jīng)從研究領(lǐng)域逐步走向廣泛的應(yīng)用領(lǐng)域,并顯示出其優(yōu)越性[2]。

        SQLite是完全開源的嵌入式數(shù)據(jù)庫,由C語言實(shí)現(xiàn),易于移植,系統(tǒng)開銷小,筆者將其移植到MIPS平臺之上,實(shí)現(xiàn)了在機(jī)頂盒軟件中嵌入SQLite數(shù)據(jù)庫,可提高系統(tǒng)處理數(shù)據(jù)的效率,節(jié)省處理數(shù)據(jù)時(shí)所占用的資源。

        1 嵌入式數(shù)據(jù)庫

        嵌入式數(shù)據(jù)庫是指運(yùn)行在本機(jī)上、不用啟動服務(wù)端的輕型數(shù)據(jù)庫,這種數(shù)據(jù)庫嵌入到了應(yīng)用程序進(jìn)程中,與應(yīng)用程序緊密集成,被應(yīng)用程序所啟動,并伴隨應(yīng)用程序的退出而終止[3]。嵌入式數(shù)據(jù)庫的這種獨(dú)特運(yùn)行模式允許嵌入式數(shù)據(jù)庫通過SQL來輕松管理應(yīng)用程序數(shù)據(jù),而且占用的系統(tǒng)資源較少。最終用戶不用維護(hù)數(shù)據(jù)庫,甚至感受不到數(shù)據(jù)庫的存在。

        1.1 嵌入式數(shù)據(jù)庫SQLite

        SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨(dú)立的,沒有外部依賴性;體積很小,完整配置也不過250 kbyte;支持多數(shù)SQL92標(biāo)準(zhǔn),可以在所有主要的操作系統(tǒng)上運(yùn)行,并且支持大多數(shù)計(jì)算機(jī)語言;支持大小高達(dá)2 Tbyte的數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫完全存儲在單個(gè)磁盤文件中,而且可以在不同字節(jié)順序的計(jì)算機(jī)之間自由共享;支持ACID(原子的、一致的、獨(dú)立和持久的)事務(wù)[4]。

        1.2 SQLite架構(gòu)分析

        SQLite內(nèi)部由 SQL編譯器(SQL Compiler)、內(nèi)核(Core)、后端(Backend)以及附件(Accessionies)幾個(gè)組件組成,如圖1所示。

        SQL語句通過接口(Interface)進(jìn)入到SQL編譯器,由標(biāo)記處理器(Tokenizer)分解成分析器(Parser)可以識別的各個(gè)標(biāo)志符,然后由分析器重新組合標(biāo)志符,并調(diào)用代碼生成器(Coder Generator)生成虛擬機(jī)器碼,交由虛擬機(jī)去執(zhí)行,最終完成SQL語句制定的任務(wù)。虛擬機(jī)(Virtual Machine)是SQLite內(nèi)部結(jié)構(gòu)的核心,不僅完成與數(shù)據(jù)操作相關(guān)的全部操作,而且還是客戶和磁盤存儲之間信息進(jìn)行交換的中間單元。數(shù)據(jù)庫按照B-Tree的形式存儲在磁盤上,通過可調(diào)整的頁面緩沖(Pager)獲得對數(shù)據(jù)的快速查找和存儲,為了在POSIX和WIN32之間提供一些可移植性,SQLite 提供了一個(gè)操作系統(tǒng)接口[5](OS Interface)。

        圖1 SQLite內(nèi)部架構(gòu)

        1.3 SQLite主要接口

        SQLite目前最新版本是 SQLite 3.7.3,提供了 83 個(gè)API接口,在本文中用到的主要接口有sqlite3_open,sqlite3_close,sqlite3_prepare,sqlite3_step,sqlite3_finalize[5]等,各接口的使用方法可參見參考文獻(xiàn)[5]。

        2 EPG簡介

        EPG為用戶收看電視節(jié)目和享受信息服務(wù)提供了一個(gè)良好的導(dǎo)航機(jī)制,使用戶能夠方便快捷地找到自己關(guān)心的節(jié)目,查看節(jié)目的附加信息。

        2.1 EPG主要功能

        EPG應(yīng)包含以下基本功能[6]:

        1)節(jié)目單;

        2)當(dāng)前節(jié)目播放。

        EPG還可以包含以下高級功能(可選):

        1)節(jié)目附加信息,如節(jié)目情節(jié)介紹等;

        2)節(jié)目分類,按節(jié)目內(nèi)容進(jìn)行分類,如體育、影視等;

        3)節(jié)目預(yù)定,在節(jié)目單上預(yù)約一段時(shí)間之后將要播放的節(jié)目,屆時(shí)自動播放;

        4)家長分級控制,對節(jié)目內(nèi)容進(jìn)行分級控制。

        2.2 EPG數(shù)據(jù)來源

        EPG信息必須通過TS流中的SI進(jìn)行傳送。通過SI中的NIT,PAT,PMT,SDT,EIT 可以獲得 EPG 所需的基本信息[6]。

        如圖2所示,通NIT可以獲取整個(gè)網(wǎng)絡(luò)的頻點(diǎn)參數(shù),通過PAT,PMT,SDT可獲得當(dāng)前頻點(diǎn)各頻道的頻道參數(shù),通過EIT可獲得各頻道的節(jié)目單和當(dāng)前正在播放的節(jié)目信息。這些信息之間是有關(guān)聯(lián)的,比如要獲得某個(gè)節(jié)目的頻點(diǎn)信息,可以通過該節(jié)目的TS_ID和ON_ID在頻點(diǎn)參數(shù)表中查詢獲得,要獲得某個(gè)節(jié)目的節(jié)目單,可以通過serviceID在節(jié)目單列表中進(jìn)行查詢。在這些信息之間進(jìn)行組合,可以實(shí)現(xiàn)EPG的各種功能。

        圖2 EPG數(shù)據(jù)來源示意圖

        3 使用SQLite建立EPG數(shù)據(jù)庫

        本文硬件開發(fā)環(huán)境采用MIPS BCM7405平臺,其應(yīng)用框圖如圖3。軟件平臺使用嵌入式Linux操作系統(tǒng)和yaffs2文件系統(tǒng)。要在嵌入式平臺上使用SQLite需要對SQLite進(jìn)行交叉編譯,交叉編譯SQLite的資料很多,在此不再贅述。

        圖3 開發(fā)平臺應(yīng)用框圖

        3.1 EPG軟件模塊設(shè)計(jì)

        EPG信息主要來源于TS流中的PSI和SI表,因此要實(shí)現(xiàn)EPG功能必須進(jìn)行PSI和SI的過濾和解析。網(wǎng)絡(luò)頻點(diǎn)參數(shù)和頻道列表在頻道搜索過程中即可生成,而且不會經(jīng)常發(fā)生改變,所以可以把頻道搜索抽離為一個(gè)獨(dú)立的功能模塊。而EIT又分EIT pf(記錄當(dāng)前和下一節(jié)目信息)和EIT schedule(記錄一段時(shí)間的節(jié)目單),可能會隨時(shí)發(fā)生更新,因此EIT和其他表的接收策略不同。在本文的軟件設(shè)計(jì)方案中,數(shù)字電視模塊啟動后將創(chuàng)建一個(gè)后臺線程,在該線程中一直對EIT進(jìn)行接收,軟件通過所接收到的section中service_id字段來判斷其屬于哪個(gè)頻道,通過version_num字段來判斷某個(gè)頻道的當(dāng)前節(jié)目或節(jié)目單是否更新,通過 section_num,last_section_num,segment_last_section_num來判斷某個(gè)頻道的當(dāng)前節(jié)目或節(jié)目單是否接收完畢。對于EPG數(shù)據(jù)庫的查詢,則是提供了一套EPG數(shù)據(jù)查詢API,用于從EPG數(shù)據(jù)庫中獲得所需要的數(shù)據(jù)。EPG軟件模塊關(guān)系如圖4所示。

        圖4 EPG軟件模塊關(guān)系圖

        3.2 創(chuàng)建表和索引

        EPG數(shù)據(jù)庫將創(chuàng)建三個(gè)表,分別為Transponder,Service和EIT。其中Transponder中存儲網(wǎng)絡(luò)參數(shù),Service中存儲節(jié)目參數(shù),EIT中存儲節(jié)目單列表,EIT也是三個(gè)表中最龐大的一個(gè)。通過sqlite3_prepare和sqlite3_step等接口的調(diào)用執(zhí)行創(chuàng)建表和索引的SQL語句來實(shí)現(xiàn)表和索引的創(chuàng)建。

        Transponder表的結(jié)構(gòu)如表1,以TS_ID和ON_ID為唯一索引。

        表1 表Transponder結(jié)構(gòu)

        創(chuàng)建Transponder表和索引的SQL語句如下:

        Service表的結(jié)構(gòu)如表2,以TS_ID,ON_ID,SvcID為唯一索引。

        表2 表Service結(jié)構(gòu)

        創(chuàng)建Service表和索引的SQL語句如下:

        表EIT的結(jié)構(gòu)如表 3,以 TS_ID,ON_ID,svcID,evtID為唯一索引。其中source表示是當(dāng)前/下一節(jié)目還是節(jié)目單,evtData采用BLOB類型,記錄事件詳細(xì)信息。

        表3 表EIT結(jié)構(gòu)

        創(chuàng)建EIT表和索引的SQL語句如下:

        3.3 表的插入與更新

        表Transponder和表Service在頻道搜索時(shí)即可生成,其中數(shù)據(jù)較為固定,不會經(jīng)常發(fā)生變化,在執(zhí)行過一次頻道搜索后不需進(jìn)行更新,直至檢測到頻道參數(shù)發(fā)生變化或再次執(zhí)行頻道搜索操作。而節(jié)目單是會隨時(shí)發(fā)生變化的,所以表EIT需要在系統(tǒng)啟動時(shí)進(jìn)行創(chuàng)建或清空,在播放過程中需進(jìn)行插入和更新。

        通過sqlite3_prepare、sqlite3_bind_* 和sqlite3_step等接口的調(diào)用執(zhí)行SQL的INSERT語句來實(shí)現(xiàn)表和索引的創(chuàng)建。比如向EIT表中插入一條記錄需要執(zhí)行如下SQL語句:

        該語句通過sqlite3_prepare接口進(jìn)行編譯,其中的“?”作為占位符,調(diào)用sqlite3_bind_*接口將對應(yīng)的參數(shù)一個(gè)個(gè)傳入,調(diào)用sqlite3_step執(zhí)行該語句。

        3.4 表的查詢

        EPG功能中大部分是對EPG信息的查看,因此EPG數(shù)據(jù)庫的查詢操作是用得最多的。比如從EIT表中獲取某個(gè)頻道(以svcID為100為例)某個(gè)時(shí)間段(以aaa~bbb為例)的節(jié)目單,需要執(zhí)行如下SELECT語句:

        通過調(diào)用 sqlite3_prepare,sqlite3_step,sqlite3_column_bytes,sqlite3_column_blob,sqlite3_column_int等接口可以獲取到一個(gè)事件的列表,其中的evtData包含有事件信息,將其中的內(nèi)容通過界面進(jìn)行展示即可實(shí)現(xiàn)節(jié)目單查看的功能。

        4 結(jié)論

        本文將嵌入式數(shù)據(jù)庫SQLite用在數(shù)字電視機(jī)頂盒的EPG系統(tǒng)中,介紹了使用SQLite對EPG數(shù)據(jù)進(jìn)行管理的方法。通過實(shí)際驗(yàn)證表明,將SQLite引入到數(shù)字電視EPG系統(tǒng)中是可行的,并且SQLite提供的數(shù)據(jù)庫接口非常豐富,不但把開發(fā)人員從復(fù)雜的數(shù)據(jù)處理中解放出來,而且使得實(shí)現(xiàn)EPG功能的方法更加靈活多樣。隨著高檔電子消費(fèi)品的快速發(fā)展,能夠?qū)σ曨l、音頻、文字、圖像進(jìn)行存儲和快速檢索的嵌入式數(shù)據(jù)庫會成為研究的熱點(diǎn)[7],在數(shù)字電視終端中引入嵌入式數(shù)據(jù)庫將是必然趨勢,SQLite等較成熟的嵌入式數(shù)據(jù)庫將會得到更廣泛的應(yīng)用。

        [1]張東勝.DMB-T/H數(shù)字電視接收端系統(tǒng)的構(gòu)建[D].天津:天津大學(xué),2007:49-55.

        [2]陳曉春,周祖成,羅建平.數(shù)字電視接收終端實(shí)時(shí)數(shù)據(jù)庫的實(shí)現(xiàn)[J].電視技術(shù),2003,27(8):43-45.

        [3]趙鵬,周余,王自強(qiáng),等.基于Linux2.6和SQLite的手機(jī)地址簿的實(shí)現(xiàn)[J].電子測量技術(shù),2009,32(6):61-64.

        [4]李俊鳳.SQLite數(shù)據(jù)庫在嵌入式中間件系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2010(5):184-188.

        [5]林軒.SQLite3 C/C++開發(fā)接口簡介[EB/OL].[2009-10-09].http://www.sqlite.com.cn/MySqlite/5/252.html.

        [6]GY/T 230—2008,數(shù)字電視廣播業(yè)務(wù)信息規(guī)范[S].2008.

        [7]史恒亮,白光一.嵌入式數(shù)據(jù)庫的現(xiàn)狀和發(fā)展趨勢[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(2):205-208.

        猜你喜歡
        節(jié)目單機(jī)頂盒頻道
        安全使用機(jī)頂盒注意五點(diǎn)
        4K頻道開播,你準(zhǔn)備好了嗎
        幽你一默
        數(shù)字電視機(jī)頂盒軟件自動測試系統(tǒng)的開發(fā)及應(yīng)用
        電子測試(2017年15期)2017-12-18 07:19:23
        到底誰先唱
        寒假快樂頻道
        頻道
        有線電視高清數(shù)字電視機(jī)頂盒測試系統(tǒng)的構(gòu)建
        坐在節(jié)目單上
        What is Apple Watch All About?
        亚洲 欧美 激情 小说 另类| 国产精品国产高清国产专区| 国产精品会所一区二区三区| 亚洲色图片区| 欧美寡妇xxxx黑人猛交| 国产人妻精品一区二区三区不卡| 5级做人爱c视版免费视频| 97日日碰日日摸日日澡| 亚洲精品天堂在线观看| 欧美巨大精品欧美一区二区| 亚洲欧美另类精品久久久| 亚洲国产一区二区三区,| 国产高清不卡二区三区在线观看| 亚洲国产天堂久久综合网| 亚洲熟女精品中文字幕| 亚洲国产成人久久综合| 一本大道久久香蕉成人网| 国产成人啪精品午夜网站| av无码特黄一级| 亚洲熟女av一区少妇| 中文字幕人妻在线少妇| 国产成人av在线免播放观看新 | 亚洲天堂av在线一区| 国产av在线观看一区二区三区| 亚洲欧美日韩综合一区二区| 天天鲁在视频在线观看| 亚洲第一页综合图片自拍| 久久不见久久见免费视频7| 97色偷偷色噜噜狠狠爱网站97| 元码人妻精品一区二区三区9| 日韩av在线手机免费观看| 日本精品视频一区二区三区四区| 久久久亚洲精品无码| 久久精品国产自清天天线| 国产精品综合久久久久久久免费 | 久草热8精品视频在线观看| 欧美成人精品三级在线观看| 在线免费观看亚洲天堂av| 精品国产一区二区三区香| 中文字幕人乱码中文字幕| 欧美国产精品久久久乱码|