999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式數據庫SQLite在數字電視EPG系統中的應用

2011-06-07 05:53:50孫萍萍
電視技術 2011年19期
關鍵詞:嵌入式數據庫信息

孫萍萍

(杭州職業技術學院,浙江 杭州 310018)

0 引言

數字電視能夠為用戶提供數倍于模擬電視的節目數量,電子節目指南(Electronic Program Guide,EPG)可以幫助用戶從眾多的節目中找到自己感興趣的節目,是數字電視機頂盒必備的功能。

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

嵌入式數據庫管理系統是近幾年發展起來的一項比較新的數據管理技術,它以傳統的數據庫技術為基礎,并結合嵌入式環境的具體特點,實現對嵌入式設備上的數據進行方便、統一的管理。目前嵌入式數據庫技術已經從研究領域逐步走向廣泛的應用領域,并顯示出其優越性[2]。

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

1 嵌入式數據庫

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

1.1 嵌入式數據庫SQLite

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

1.2 SQLite架構分析

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

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

圖1 SQLite內部架構

1.3 SQLite主要接口

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

2 EPG簡介

EPG為用戶收看電視節目和享受信息服務提供了一個良好的導航機制,使用戶能夠方便快捷地找到自己關心的節目,查看節目的附加信息。

2.1 EPG主要功能

EPG應包含以下基本功能[6]:

1)節目單;

2)當前節目播放。

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

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

2)節目分類,按節目內容進行分類,如體育、影視等;

3)節目預定,在節目單上預約一段時間之后將要播放的節目,屆時自動播放;

4)家長分級控制,對節目內容進行分級控制。

2.2 EPG數據來源

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

如圖2所示,通NIT可以獲取整個網絡的頻點參數,通過PAT,PMT,SDT可獲得當前頻點各頻道的頻道參數,通過EIT可獲得各頻道的節目單和當前正在播放的節目信息。這些信息之間是有關聯的,比如要獲得某個節目的頻點信息,可以通過該節目的TS_ID和ON_ID在頻點參數表中查詢獲得,要獲得某個節目的節目單,可以通過serviceID在節目單列表中進行查詢。在這些信息之間進行組合,可以實現EPG的各種功能。

圖2 EPG數據來源示意圖

3 使用SQLite建立EPG數據庫

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

圖3 開發平臺應用框圖

3.1 EPG軟件模塊設計

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

圖4 EPG軟件模塊關系圖

3.2 創建表和索引

EPG數據庫將創建三個表,分別為Transponder,Service和EIT。其中Transponder中存儲網絡參數,Service中存儲節目參數,EIT中存儲節目單列表,EIT也是三個表中最龐大的一個。通過sqlite3_prepare和sqlite3_step等接口的調用執行創建表和索引的SQL語句來實現表和索引的創建。

Transponder表的結構如表1,以TS_ID和ON_ID為唯一索引。

表1 表Transponder結構

創建Transponder表和索引的SQL語句如下:

Service表的結構如表2,以TS_ID,ON_ID,SvcID為唯一索引。

表2 表Service結構

創建Service表和索引的SQL語句如下:

表EIT的結構如表 3,以 TS_ID,ON_ID,svcID,evtID為唯一索引。其中source表示是當前/下一節目還是節目單,evtData采用BLOB類型,記錄事件詳細信息。

表3 表EIT結構

創建EIT表和索引的SQL語句如下:

3.3 表的插入與更新

表Transponder和表Service在頻道搜索時即可生成,其中數據較為固定,不會經常發生變化,在執行過一次頻道搜索后不需進行更新,直至檢測到頻道參數發生變化或再次執行頻道搜索操作。而節目單是會隨時發生變化的,所以表EIT需要在系統啟動時進行創建或清空,在播放過程中需進行插入和更新。

通過sqlite3_prepare、sqlite3_bind_* 和sqlite3_step等接口的調用執行SQL的INSERT語句來實現表和索引的創建。比如向EIT表中插入一條記錄需要執行如下SQL語句:

該語句通過sqlite3_prepare接口進行編譯,其中的“?”作為占位符,調用sqlite3_bind_*接口將對應的參數一個個傳入,調用sqlite3_step執行該語句。

3.4 表的查詢

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

通過調用 sqlite3_prepare,sqlite3_step,sqlite3_column_bytes,sqlite3_column_blob,sqlite3_column_int等接口可以獲取到一個事件的列表,其中的evtData包含有事件信息,將其中的內容通過界面進行展示即可實現節目單查看的功能。

4 結論

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

[1]張東勝.DMB-T/H數字電視接收端系統的構建[D].天津:天津大學,2007:49-55.

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

[3]趙鵬,周余,王自強,等.基于Linux2.6和SQLite的手機地址簿的實現[J].電子測量技術,2009,32(6):61-64.

[4]李俊鳳.SQLite數據庫在嵌入式中間件系統中的應用[J].計算機與現代化,2010(5):184-188.

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

[6]GY/T 230—2008,數字電視廣播業務信息規范[S].2008.

[7]史恒亮,白光一.嵌入式數據庫的現狀和發展趨勢[J].計算機系統應用,2010,19(2):205-208.

猜你喜歡
嵌入式數據庫信息
搭建基于Qt的嵌入式開發平臺
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 久操线在视频在线观看| h视频在线观看网站| 成人午夜亚洲影视在线观看| 97久久超碰极品视觉盛宴| 亚洲欧美在线综合一区二区三区| 最新日韩AV网址在线观看| 亚洲精品国产首次亮相| 精品亚洲麻豆1区2区3区| 综合网天天| 中文国产成人久久精品小说| 欧美性精品| 国产极品粉嫩小泬免费看| 99热这里只有精品2| 最新国产成人剧情在线播放| 亚洲综合专区| 波多野结衣中文字幕一区二区| 成人伊人色一区二区三区| 国产高清在线精品一区二区三区| 国产精品永久在线| 免费中文字幕在在线不卡| 91毛片网| 波多野结衣一二三| 国产91在线免费视频| 午夜性刺激在线观看免费| 国产又色又刺激高潮免费看| 国产福利微拍精品一区二区| 无码免费视频| 欧美亚洲国产精品久久蜜芽| 最新国产午夜精品视频成人| 国产精品午夜福利麻豆| 午夜老司机永久免费看片| 国产免费观看av大片的网站| 热热久久狠狠偷偷色男同| 午夜少妇精品视频小电影| 亚洲无码A视频在线| 国产精品自拍露脸视频| 国产性猛交XXXX免费看| 日本欧美一二三区色视频| 99久久婷婷国产综合精| 国产三区二区| 伊大人香蕉久久网欧美| 久久夜色撩人精品国产| 爱色欧美亚洲综合图区| 强乱中文字幕在线播放不卡| 久青草网站| 少妇精品网站| 国产综合在线观看视频| 日韩在线成年视频人网站观看| 亚洲欧洲日韩久久狠狠爱| 色久综合在线| 黄色免费在线网址| 国产成在线观看免费视频| 国产亚洲欧美日韩在线一区| 国产亚洲欧美日韩在线观看一区二区| 欧美在线伊人| 亚洲娇小与黑人巨大交| 97se亚洲综合在线韩国专区福利| Jizz国产色系免费| 亚洲无码电影| 欧美α片免费观看| 亚洲国产成人麻豆精品| 中文字幕一区二区人妻电影| 一本大道视频精品人妻| 久久大香伊蕉在人线观看热2| 91精品国产福利| 视频二区亚洲精品| 国产第一色| www成人国产在线观看网站| 久久久久无码精品| 国产真实自在自线免费精品| 亚洲精品国产首次亮相| 992Tv视频国产精品| 亚洲国产第一区二区香蕉| 在线播放91| 亚洲欧洲美色一区二区三区| 综合网天天| 久久精品中文无码资源站| 亚洲丝袜中文字幕| 国产97视频在线观看| 中文一级毛片| 欧美成a人片在线观看| 久久狠狠色噜噜狠狠狠狠97视色|