專利名稱:媒體播放器的內(nèi)存管理方法和內(nèi)存管理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體處理技術(shù),特別涉及一種媒體播放器的內(nèi)存管理方法和內(nèi)存管理器。
背景技術(shù):
目前,手機(jī)等流媒體播放器基本都是基于特定的操作系統(tǒng)進(jìn)行設(shè)計(jì)的。由于多數(shù) 流媒體播放器都是在計(jì)算機(jī)的流媒體播放器的基礎(chǔ)上進(jìn)行設(shè)計(jì)的。一般而言,播放軟件的 架構(gòu)主要?jiǎng)澐譃檩斎肽K、解碼模塊和顯示構(gòu)建模塊。其中輸入模塊負(fù)責(zé)媒體數(shù)據(jù)的輸入, 解碼模塊負(fù)責(zé)對(duì)媒體數(shù)據(jù)進(jìn)行解碼和同步,顯示構(gòu)建模塊則是對(duì)解碼后得到的視音頻媒體 數(shù)據(jù)進(jìn)行呈現(xiàn)。在播放軟件中,一般來(lái)說(shuō),程序的內(nèi)存都是根據(jù)模塊來(lái)管理,由每一個(gè)單獨(dú) 的模塊或者插件來(lái)管理模塊和插件的內(nèi)存。所以,目前的手機(jī)流媒體播放器基本上是按照 當(dāng)前的需要來(lái)獨(dú)立管理內(nèi)存的現(xiàn)有流媒體播放器一方面是在計(jì)算機(jī)的播放器架構(gòu)的基礎(chǔ)上進(jìn)行設(shè)計(jì)的,另一方 面是按照每個(gè)模塊或者每個(gè)插件的當(dāng)前需要進(jìn)行內(nèi)存管理。雖然從某種程度上而言更具 靈活和實(shí)用性,但是由于手機(jī)所具有的特殊性,其內(nèi)存較少,處理器頻率較低,運(yùn)行平臺(tái)的 千差萬(wàn)別,所以簡(jiǎn)單地將計(jì)算機(jī)播放器的架構(gòu)移植到手機(jī)媒體播放器存在諸多不合理的地 方,尤其是在內(nèi)存的管理方面存在以下缺陷無(wú)法合理的評(píng)估手機(jī)內(nèi)存的性能,做到使用的 最優(yōu)化;無(wú)法合理的利用手機(jī)上有限的內(nèi)存資源,做到使用的高效率;無(wú)法進(jìn)行統(tǒng)一的內(nèi) 存管理。
發(fā)明內(nèi)容
本發(fā)明提供一種媒體播放器的內(nèi)存管理方法和內(nèi)存管理器,用以提高手機(jī)等終端 的內(nèi)存使用效率。本發(fā)明提供了一種媒體播放器的內(nèi)存管理方法,包括根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所述手機(jī)的內(nèi)存分為多個(gè)內(nèi) 存存儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入對(duì)象數(shù)據(jù)包、解碼對(duì)象數(shù) 據(jù)包和顯示對(duì)象數(shù)據(jù)包;將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述 內(nèi)存存儲(chǔ)塊中;將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼處理,并將生成的解碼對(duì)象 數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處理過(guò)的輸入對(duì)象數(shù)據(jù)包;將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù)包,并將構(gòu)建的顯 示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò)的解碼對(duì)象數(shù)據(jù) 包;將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放,并釋放已顯 示過(guò)的顯示對(duì)象數(shù)據(jù)包。
本發(fā)明還提供了一種媒體播放器的內(nèi)存管理器,包括內(nèi)存性能偵測(cè)模塊,用于根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所述 手機(jī)的內(nèi)存分為多個(gè)內(nèi)存存儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入對(duì) 象數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包;單元調(diào)度模塊,用于將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù) 據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼 處理,并將生成的解碼對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處理 過(guò)的輸入對(duì)象數(shù)據(jù)包;將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù)包, 并將構(gòu)建的顯示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò)的解 碼對(duì)象數(shù)據(jù)包;將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放,并釋 放已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包。本發(fā)明通過(guò)采用內(nèi)存管理器對(duì)內(nèi)存進(jìn)行管理,采用劃分的內(nèi)存塊存儲(chǔ)輸入對(duì)象數(shù) 據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包,并釋放已處理過(guò)的對(duì)象數(shù)據(jù)包釋放相應(yīng)的內(nèi)存 空間,由此實(shí)現(xiàn)了內(nèi)存空間的循環(huán)使用,提高了內(nèi)存的利用率和使用效果。
圖Ia為本發(fā)明第一實(shí)施例提供的流媒體數(shù)據(jù)處理過(guò)程的示意圖;圖Ib為本發(fā)明第一實(shí)施例提供的媒體播放器的內(nèi)存管理方法的流程圖;圖Ic為本發(fā)明第一實(shí)施例提供的內(nèi)存存儲(chǔ)塊的結(jié)構(gòu)示意圖;圖Id為本發(fā)明第一實(shí)施例提供的存儲(chǔ)單元的結(jié)構(gòu)示意圖;圖Ie為本發(fā)明第一實(shí)施例提供的引用單元的結(jié)構(gòu)示意圖;圖If為本發(fā)明第一實(shí)施例提供的對(duì)象數(shù)據(jù)包的結(jié)構(gòu)示意圖;圖2為本發(fā)明第二實(shí)施例提供的媒體播放器的內(nèi)存管理器的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。鑒于現(xiàn)有技術(shù)中手機(jī)等移動(dòng)終端的媒體播放器無(wú)法合理的評(píng)估手機(jī)內(nèi)存的性能, 無(wú)法合理的利用終端上有限的內(nèi)存資源和進(jìn)行統(tǒng)一的內(nèi)存管理,降低了內(nèi)存的使用效率。 本發(fā)明提出一種針對(duì)手機(jī)等終端系統(tǒng)多樣性的流媒體播放器的內(nèi)存管理方法,以實(shí)現(xiàn)在確 定手機(jī)內(nèi)存性能的基礎(chǔ)上,通過(guò)逐級(jí)劃分和管理內(nèi)存,在盡量不影響手機(jī)流媒體播放器架 構(gòu)的情況下,通過(guò)對(duì)手機(jī)終端上有限的內(nèi)存進(jìn)行統(tǒng)一管理,以實(shí)現(xiàn)充分利用終端內(nèi)存,提高 內(nèi)存資源的利用率。在本實(shí)施例中,流媒體播放器架構(gòu)的仍劃分為輸入模塊、解碼模塊和顯示構(gòu)建模 塊。輸入模塊負(fù)責(zé)媒體數(shù)據(jù)的輸入,生成輸入對(duì)象數(shù)據(jù);解碼模塊負(fù)責(zé)對(duì)媒體數(shù)據(jù)進(jìn)行解碼 和同步,生成解碼對(duì)象數(shù)據(jù),顯示構(gòu)建模塊則是對(duì)解碼后得到的視音頻媒體數(shù)據(jù)進(jìn)行處理, 生成顯示對(duì)象數(shù)據(jù),以供播放使用。
5
在本實(shí)施例中,手機(jī)流媒體播放器的內(nèi)存管理涉及內(nèi)存的存儲(chǔ)器和內(nèi)存的管理 器兩部分,存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù),內(nèi)存管理器對(duì)內(nèi)存進(jìn)行管理。根據(jù)實(shí)際的應(yīng)用需要,通過(guò) 構(gòu)建內(nèi)存管理器的組成,以達(dá)到對(duì)內(nèi)存資源的有效管理和利用。流媒體的數(shù)據(jù)處理過(guò)程可 參見(jiàn)圖Ia所示。參見(jiàn)圖Ib所示為本實(shí)施例提供的媒體播放器的內(nèi)存管理方法的流程圖,包括步驟11、根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所述手機(jī)的內(nèi)存分為 多個(gè)內(nèi)存存儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入對(duì)象數(shù)據(jù)包、解碼 對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包;在本實(shí)施例中,是將內(nèi)存劃分為內(nèi)存存儲(chǔ)塊進(jìn)行管理,以實(shí)現(xiàn)對(duì)內(nèi)存的有效管理。 其中,內(nèi)存存儲(chǔ)塊可以根據(jù)手機(jī)終端和播放器軟件的需要使用不同的內(nèi)存形式,可以有一 級(jí)內(nèi)存和二級(jí)內(nèi)存兩種內(nèi)存形式。在本實(shí)施例中,一級(jí)內(nèi)存是指直接由物理地址定義和描 述的內(nèi)存形式;二級(jí)內(nèi)存則是經(jīng)過(guò)內(nèi)存映射的內(nèi)存形式。根據(jù)使用的內(nèi)存形式的不同,內(nèi)存 存儲(chǔ)塊的結(jié)構(gòu)也不一樣。如果使用的是一級(jí)內(nèi)存,則存儲(chǔ)塊由存儲(chǔ)起始地址、存儲(chǔ)塊的序號(hào) 和該存儲(chǔ)塊的長(zhǎng)度三者構(gòu)成。如果使用的是二級(jí)內(nèi)存,則存儲(chǔ)塊由存儲(chǔ)起始地址和序號(hào)組 成,而無(wú)需要描述存儲(chǔ)塊的長(zhǎng)度。因?yàn)槠溟L(zhǎng)度是通過(guò)內(nèi)存檢測(cè)得到全局值,也即是每個(gè)存儲(chǔ) 塊的大小都一樣。在本實(shí)施例中,存儲(chǔ)塊的長(zhǎng)度由內(nèi)存性能偵測(cè)模塊所確定。內(nèi)存性能偵測(cè)模塊偵 測(cè)和評(píng)估手機(jī)的內(nèi)存性能;根據(jù)手機(jī)的內(nèi)存性能,按照預(yù)設(shè)的分配方法,確定手機(jī)內(nèi)存劃分 的內(nèi)存存儲(chǔ)塊的大小和數(shù)量。如根據(jù)檢測(cè)得到的手機(jī)終端的內(nèi)存性能,如內(nèi)存的大小,讀寫(xiě) 速度等性能,確定一級(jí)內(nèi)存和二級(jí)內(nèi)存的存儲(chǔ)塊的空間大小和存儲(chǔ)塊的個(gè)數(shù)等。如在終端 的內(nèi)存較大,讀寫(xiě)速度較快時(shí),可以相對(duì)劃分較多的一級(jí)內(nèi)存,在終端的內(nèi)存較小,讀寫(xiě)速 度也較慢時(shí),可以相對(duì)劃分較多的二級(jí)內(nèi)存。根據(jù)具體的功能來(lái)講,內(nèi)存存儲(chǔ)塊可以用來(lái)存儲(chǔ)輸入對(duì)象數(shù)據(jù)、解碼對(duì)象數(shù)據(jù)和 顯示對(duì)象數(shù)據(jù)。輸入對(duì)象數(shù)據(jù)是流媒體數(shù)據(jù)劃分后未經(jīng)過(guò)解碼模塊進(jìn)行解析和同步處理的 數(shù)據(jù),解碼對(duì)象數(shù)據(jù)為經(jīng)過(guò)解碼模塊進(jìn)行解析處理的數(shù)據(jù),顯示對(duì)象數(shù)據(jù)為顯示構(gòu)建模塊 構(gòu)建的供顯示和播放用的數(shù)據(jù)。在本實(shí)施例中,內(nèi)存存儲(chǔ)塊是按照逐級(jí)分層的思路來(lái)劃分的,如圖Ic所示即為內(nèi) 存存儲(chǔ)塊的結(jié)構(gòu)示意圖。內(nèi)存存儲(chǔ)塊的逐級(jí)分層結(jié)構(gòu)包括(1)基本存儲(chǔ)塊。(2)存儲(chǔ)單元池。(3)引用單元池。(4)對(duì)象數(shù)據(jù)池。存儲(chǔ)單元池是基于基本存儲(chǔ)塊,由一個(gè)個(gè)存儲(chǔ)單元構(gòu)成。如圖Id所示,每個(gè)存儲(chǔ) 單元由存儲(chǔ)單元序號(hào)、長(zhǎng)度、引用計(jì)數(shù)、存儲(chǔ)塊和下一個(gè)存儲(chǔ)單元地址組成。引用計(jì)數(shù)用于 標(biāo)識(shí)被幾個(gè)存儲(chǔ)單元同時(shí)使用。每個(gè)存儲(chǔ)單元也即是一個(gè)存儲(chǔ)單元鏈表,其可以包括一個(gè) 劃分的存儲(chǔ)塊,也可以包括多個(gè)劃分的存儲(chǔ)塊。引用單元池是基于存儲(chǔ)單元池,由一個(gè)個(gè)引用單元構(gòu)成。如圖Ie所示,每個(gè)引用 單元由存儲(chǔ)單元、起始位置、長(zhǎng)度和下一個(gè)引用單元地址組成。其中起始位置用于表示引用 的存儲(chǔ)單元相對(duì)于起始地址的偏移量。長(zhǎng)度則用于表示引用的存儲(chǔ)單元的長(zhǎng)度。與存儲(chǔ)單元類似,每個(gè)引用單元也即是一個(gè)引用單元鏈表,其可以使用一個(gè)存儲(chǔ)單元鏈表,也可以同 時(shí)使用多個(gè)存儲(chǔ)單元鏈表。而且,由于標(biāo)識(shí)了使用的存儲(chǔ)單元鏈表的確切位置,所以不同的 引用單元可以復(fù)用相同的存儲(chǔ)單元。對(duì)象數(shù)據(jù)池是基于引用單元池,由一個(gè)個(gè)對(duì)象數(shù)據(jù)包構(gòu)成。如圖If所示,每個(gè)對(duì) 象數(shù)據(jù)包由引用單元、起始時(shí)間戳、結(jié)束時(shí)間戳和下一個(gè)對(duì)象數(shù)據(jù)包地址組成。其中起始時(shí) 間戳表示該對(duì)象數(shù)據(jù)包的起始時(shí)間,結(jié)束時(shí)間戳表示對(duì)象數(shù)據(jù)包的結(jié)束時(shí)間。與上兩種單 元類似,每個(gè)對(duì)象數(shù)據(jù)包也即是一個(gè)對(duì)象數(shù)據(jù)鏈表?;谏鲜龅慕榻B,在將內(nèi)存劃分為多個(gè)存儲(chǔ)塊后,就可以針對(duì)流媒體數(shù)據(jù)進(jìn)行相 應(yīng)的內(nèi)存管理。步驟12、將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù)據(jù)包依次存 儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;流媒體數(shù)據(jù)經(jīng)過(guò)播放器的輸入模塊劃分后,內(nèi)存管理器就需要構(gòu)建輸入對(duì)象數(shù)據(jù) 包的存儲(chǔ)空間,以將輸入對(duì)象數(shù)據(jù)包存儲(chǔ)在內(nèi)存存儲(chǔ)塊中。在構(gòu)建輸入對(duì)象數(shù)據(jù)包時(shí),內(nèi)存管理器的對(duì)象數(shù)據(jù)包管理模塊向引用單元管理模 塊發(fā)出組合對(duì)象數(shù)據(jù)包的存儲(chǔ)空間的請(qǐng)求;引用單元管理模塊查詢得到所有未使用的引用 單元,計(jì)算所有未使用的引用單元所能引用的內(nèi)存存儲(chǔ)塊是否能夠構(gòu)建出所述對(duì)象數(shù)據(jù)包 的存儲(chǔ)空間;如果能,則組合引用單元以構(gòu)建該存儲(chǔ)空間,如果不能,則向存儲(chǔ)單元管理模 塊申請(qǐng)構(gòu)建新的內(nèi)存存儲(chǔ)塊以作為所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。在構(gòu)建了對(duì)象數(shù)據(jù)包的存儲(chǔ)空間后,就可以將輸入模塊劃分的多個(gè)輸入對(duì)象數(shù)據(jù) 包依次存儲(chǔ)在終端內(nèi)存的存儲(chǔ)塊中。步驟13、將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼處理,并將生成的 解碼對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處理過(guò)的輸入對(duì)象數(shù)據(jù) 包;內(nèi)存管理器將輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼處理,生成解碼對(duì)象 數(shù)據(jù)包存儲(chǔ)在內(nèi)存存儲(chǔ)塊中,在存儲(chǔ)時(shí),仍需要先構(gòu)建解碼對(duì)象數(shù)據(jù)包的存儲(chǔ)空間,構(gòu)建存 儲(chǔ)空間的方法與構(gòu)建輸入對(duì)象數(shù)據(jù)包的方法相同,不再贅述。解碼模塊完成了對(duì)輸入對(duì)象數(shù)據(jù)包的解碼后,生成解碼對(duì)象數(shù)據(jù)包,原來(lái)的輸入 對(duì)象數(shù)據(jù)包已可以進(jìn)行釋放,以釋放內(nèi)存資源。釋放輸入對(duì)象數(shù)據(jù)包的方法如下對(duì)象數(shù)據(jù) 包管理模塊向引用單元管理模塊發(fā)出釋放輸入對(duì)象數(shù)據(jù)包的請(qǐng)求;引用單元管理模塊收到 請(qǐng)求后,解除對(duì)引用單元的引用,釋放引用單元所能引用的內(nèi)存存儲(chǔ)塊;存儲(chǔ)單元管理模塊 釋放所述引用單元管理模塊釋放的內(nèi)存存儲(chǔ)塊。對(duì)象數(shù)據(jù)包管理模塊收到數(shù)據(jù)包釋放命令后,解除對(duì)引用單元的引用,釋放數(shù)據(jù) 包對(duì)象數(shù)據(jù)結(jié)構(gòu)。引用單元管理模塊則解除對(duì)相應(yīng)存儲(chǔ)單元的引用,減少對(duì)存儲(chǔ)單元的引 用計(jì)數(shù),完成輸入對(duì)象數(shù)據(jù)包的釋放。內(nèi)存管理器的單元調(diào)度模塊會(huì)循環(huán)輪詢存儲(chǔ)單元管 理模塊,查看是否存在長(zhǎng)期未被引用的存儲(chǔ)單元,如果存在,則調(diào)用存儲(chǔ)單元管理模塊釋放 該存儲(chǔ)單元。相應(yīng)地,存儲(chǔ)單元管理模塊將調(diào)用基本存儲(chǔ)塊管理模塊釋放基本存儲(chǔ)塊的內(nèi) 存,實(shí)現(xiàn)對(duì)閑置內(nèi)存的釋放。由于通過(guò)內(nèi)存管理器對(duì)已解碼的輸入對(duì)象數(shù)據(jù)包進(jìn)行釋放,使得已利用的內(nèi)存資 源可以及時(shí)的得到釋放以循環(huán)利用,由此提高了內(nèi)存的利用率。
步驟14、將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù)包,并將 構(gòu)建的顯示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò)的解碼對(duì) 象數(shù)據(jù)包;對(duì)于解碼后的解碼對(duì)象數(shù)據(jù)包,就可以輸入顯示構(gòu)建模塊進(jìn)行相應(yīng)處理,生成顯 示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中,以供下一步的播放顯示所使用。此外,對(duì)于已經(jīng)經(jīng) 過(guò)顯示構(gòu)建模塊處理后的解碼對(duì)象數(shù)據(jù)包,則可以釋放后進(jìn)行循環(huán)使用,釋放解碼對(duì)象數(shù) 據(jù)包的方法與釋放輸入對(duì)象數(shù)據(jù)包的方法相同,此處不再贅述。步驟15、將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放,并 釋放已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包。生成了顯示對(duì)象數(shù)據(jù)包后,媒體播放器就可以根據(jù)顯示對(duì)象數(shù)據(jù)包播放該流媒 體。在播放完成后,內(nèi)存管理器再釋放已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包,釋放相應(yīng)的內(nèi)存空間以 進(jìn)行循環(huán)使用。釋放顯示對(duì)象數(shù)據(jù)包的方法與釋放輸入對(duì)象數(shù)據(jù)包的方法相同,此處不再 贅述。對(duì)于釋放的內(nèi)存存儲(chǔ)塊,由內(nèi)存管理器中的基本存儲(chǔ)塊管理模塊負(fù)責(zé)基本存儲(chǔ)塊 中存儲(chǔ)塊的回收,其回收已釋放的內(nèi)存進(jìn)行循環(huán)使用,保證手機(jī)播放器所能使用的內(nèi)存塊 始終保持在一個(gè)合理范圍。本實(shí)施例通過(guò)采用內(nèi)存管理器對(duì)內(nèi)存進(jìn)行管理,采用劃分的內(nèi)存存儲(chǔ)塊存儲(chǔ)輸入 對(duì)象數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包,并釋放已處理過(guò)的對(duì)象數(shù)據(jù)包釋放相應(yīng) 的內(nèi)存空間,由此實(shí)現(xiàn)了內(nèi)存空間的循環(huán)使用,提高了內(nèi)存的利用率和使用效果。參見(jiàn)圖2所示為本發(fā)明第二實(shí)施例提供的一種媒體播放器的內(nèi)存管理器的結(jié)構(gòu) 示意圖,包括內(nèi)存性能偵測(cè)模塊21 ;單元調(diào)度模塊22 ;對(duì)象數(shù)據(jù)包管理模塊23 ;引用單元 管理模塊M ;存儲(chǔ)單元管理模塊25 ;基本存儲(chǔ)塊管理模塊26。內(nèi)存性能偵測(cè)模塊21,用于根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所 述手機(jī)的內(nèi)存分為多個(gè)內(nèi)存存儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入 對(duì)象數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包;單元調(diào)度模塊22,用于將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象 數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解 碼處理,并將生成的解碼對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處 理過(guò)的輸入對(duì)象數(shù)據(jù)包;將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù) 包,并將構(gòu)建的顯示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò) 的解碼對(duì)象數(shù)據(jù)包;將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放, 并釋放已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包。在本實(shí)施例中,內(nèi)存性能偵測(cè)模塊21在劃分一級(jí)內(nèi)存和二級(jí)內(nèi)存時(shí),可以按照預(yù) 設(shè)的分配方法進(jìn)行劃分,根據(jù)檢測(cè)得到的手機(jī)終端的內(nèi)存性能,如內(nèi)存的大小,讀寫(xiě)速度等 性能,確定一級(jí)內(nèi)存和二級(jí)內(nèi)存的存儲(chǔ)單元的空間大小和存儲(chǔ)單元的個(gè)數(shù)等。內(nèi)存性能偵測(cè)模塊21,用于偵測(cè)和評(píng)估手機(jī)的內(nèi)存性能;根據(jù)手機(jī)的內(nèi)存性能, 按照預(yù)設(shè)的分配方法,確定手機(jī)內(nèi)存劃分的內(nèi)存存儲(chǔ)塊的大小和數(shù)量。將手機(jī)內(nèi)存的存儲(chǔ) 塊劃分為一級(jí)內(nèi)存和二級(jí)內(nèi)存。在構(gòu)建對(duì)象數(shù)據(jù)包的存儲(chǔ)空間時(shí),所述單元調(diào)度模塊22,還用于向所述對(duì)象數(shù)據(jù)包管理模塊23發(fā)送構(gòu)建所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間的請(qǐng)求。所述對(duì)象數(shù)據(jù)包管理模塊23 接收到所述單元調(diào)度模塊22發(fā)送的構(gòu)建所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間的請(qǐng)求時(shí),構(gòu)建所述 對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。所述對(duì)象數(shù)據(jù)包管理模塊23,用于向引用單元管理模塊M發(fā)出組合對(duì)象數(shù)據(jù)包 的存儲(chǔ)空間的請(qǐng)求;所述引用單元管理模塊M,用于查詢得到所有未使用的引用單元,計(jì)算所有未使 用的引用單元所能引用的內(nèi)存存儲(chǔ)塊是否能夠構(gòu)建出所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間;如果 能,則組合引用單元以構(gòu)建該存儲(chǔ)空間,如果不能,則向存儲(chǔ)單元管理模塊申請(qǐng)構(gòu)建新的內(nèi) 存存儲(chǔ)塊以作為所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間;所述存儲(chǔ)單元管理模塊25,用于根據(jù)所述引用單元管理模塊M的申請(qǐng),構(gòu)建所述 新的內(nèi)存存儲(chǔ)塊以作為所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。在釋放對(duì)象數(shù)據(jù)包的存儲(chǔ)空間時(shí),所述對(duì)象數(shù)據(jù)包管理模塊23,還用于向引用單 元管理模塊M發(fā)出釋放對(duì)象數(shù)據(jù)包的請(qǐng)求;所述引用單元管理模塊M,還用于收到請(qǐng)求后,解除對(duì)引用單元的引用,釋放引用 單元所能引用的內(nèi)存存儲(chǔ)塊;所述存儲(chǔ)單元管理模塊25,還用于釋放所述引用單元管理模塊M釋放的內(nèi)存存 儲(chǔ)塊。此外,在播放完流媒體以后,還應(yīng)該對(duì)所有的對(duì)象數(shù)據(jù)包的存儲(chǔ)空間和所有的內(nèi) 存存儲(chǔ)塊進(jìn)行回收,對(duì)于釋放的內(nèi)存存儲(chǔ)塊,由內(nèi)存管理器中的基本存儲(chǔ)塊管理模塊26負(fù) 責(zé)基本存儲(chǔ)塊中存儲(chǔ)塊的回收,其回收已釋放的內(nèi)存進(jìn)行循環(huán)使用,保證手機(jī)播放器所能 使用的內(nèi)存塊始終保持在一個(gè)合理范圍。所述基本存儲(chǔ)塊管理模塊沈,用于當(dāng)所述流媒體播放完后,釋放所有的對(duì)象數(shù)據(jù) 包的存儲(chǔ)空間和所有的內(nèi)存存儲(chǔ)塊。該內(nèi)存管理器中的各個(gè)模塊的功能及節(jié)點(diǎn)間的交互可參見(jiàn)圖Ia-Ie對(duì)應(yīng)實(shí)施例 的記載,在此不再贅述。本實(shí)施例通過(guò)采用內(nèi)存管理器對(duì)內(nèi)存進(jìn)行管理,采用劃分的內(nèi)存塊存儲(chǔ)輸入對(duì)象 數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包,并釋放已處理過(guò)的對(duì)象數(shù)據(jù)包釋放相應(yīng)的內(nèi) 存空間,由此實(shí)現(xiàn)了內(nèi)存空間的循環(huán)使用,提高了內(nèi)存的利用率和使用效果。本領(lǐng)域普通技術(shù)人員可以理解附圖只是一個(gè)實(shí)施例的示意圖,附圖中的模塊或 流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域普通技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述分 布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上 述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò) 程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序 在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者 光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換; 而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種媒體播放器的內(nèi)存管理方法,其特征在于,包括根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所述手機(jī)的內(nèi)存分為多個(gè)內(nèi)存存 儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入對(duì)象數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包 和顯示對(duì)象數(shù)據(jù)包;將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存 存儲(chǔ)塊中;將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼處理,并將生成的解碼對(duì)象數(shù)據(jù) 包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處理過(guò)的輸入對(duì)象數(shù)據(jù)包;將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù)包,并將構(gòu)建的顯示對(duì) 象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò)的解碼對(duì)象數(shù)據(jù)包;將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放,并釋放已顯示過(guò) 的顯示對(duì)象數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的媒體播放器的內(nèi)存管理方法,其特征在于,存儲(chǔ)所述對(duì)象數(shù) 據(jù)包之前,還包括構(gòu)建所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。
3.根據(jù)權(quán)利要求2所述的媒體播放器的內(nèi)存管理方法,其特征在于,構(gòu)建所述對(duì)象數(shù) 據(jù)包的存儲(chǔ)空間,包括對(duì)象數(shù)據(jù)包管理模塊向引用單元管理模塊發(fā)出組合對(duì)象數(shù)據(jù)包的存儲(chǔ)空間的請(qǐng)求;引用單元管理模塊查詢得到所有未使用的引用單元,計(jì)算所有未使用的引用單元所能 引用的內(nèi)存存儲(chǔ)塊是否能夠構(gòu)建出所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間;如果能,則組合引用單元 以構(gòu)建該存儲(chǔ)空間,如果不能,則向存儲(chǔ)單元管理模塊申請(qǐng)構(gòu)建新的存儲(chǔ)空間以作為所述 對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。
4.根據(jù)權(quán)利要求3所述的媒體播放器的內(nèi)存管理方法,其特征在于,釋放對(duì)象數(shù)據(jù)包, 包括對(duì)象數(shù)據(jù)包管理模塊向引用單元管理模塊發(fā)出釋放對(duì)象數(shù)據(jù)包的請(qǐng)求;引用單元管理模塊收到請(qǐng)求后,解除對(duì)引用單元的引用,釋放引用單元所能引用的內(nèi) 存存儲(chǔ)塊;存儲(chǔ)單元管理模塊釋放所述引用單元管理模塊釋放的內(nèi)存存儲(chǔ)塊。
5.根據(jù)權(quán)利要求1所述的媒體播放器的內(nèi)存管理方法,其特征在于,還包括當(dāng)所述流媒體播放完后,回收所有的對(duì)象數(shù)據(jù)包的存儲(chǔ)空間和所有的內(nèi)存存儲(chǔ)塊。
6.根據(jù)權(quán)利要求1所述的媒體播放器的內(nèi)存管理方法,其特征在于,將所述手機(jī)的內(nèi) 存分為多個(gè)內(nèi)存存儲(chǔ)塊之前,還包括偵測(cè)和評(píng)估手機(jī)的內(nèi)存性能;根據(jù)手機(jī)的內(nèi)存性能,按照預(yù)設(shè)的分配方法,確定手機(jī)內(nèi)存劃分的內(nèi)存存儲(chǔ)塊的大小和數(shù)量。
7.根據(jù)權(quán)利要求6所述的媒體播放器的內(nèi)存管理方法,其特征在于,確定手機(jī)內(nèi)存劃 分的內(nèi)存存儲(chǔ)塊的大小和數(shù)量之后,還包括將手機(jī)內(nèi)存的存儲(chǔ)塊劃分為一級(jí)內(nèi)存和二級(jí)內(nèi)存。
8.一種媒體播放器的內(nèi)存管理器,其特征在于,包括內(nèi)存性能偵測(cè)模塊,用于根據(jù)手機(jī)終端的內(nèi)存性能,按照預(yù)設(shè)的分配方法,將所述手機(jī) 的內(nèi)存分為多個(gè)內(nèi)存存儲(chǔ)塊;所述多個(gè)內(nèi)存存儲(chǔ)塊用于存儲(chǔ)流媒體數(shù)據(jù)相關(guān)的輸入對(duì)象數(shù) 據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包;單元調(diào)度模塊,用于將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù)據(jù)包 依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;將所述輸入對(duì)象數(shù)據(jù)包依次發(fā)送到解碼模塊進(jìn)行解碼處 理,并將生成的解碼對(duì)象數(shù)據(jù)包依次存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放解碼模塊已處理過(guò) 的輸入對(duì)象數(shù)據(jù)包;將所述解碼對(duì)象數(shù)據(jù)包發(fā)送到顯示構(gòu)建模塊構(gòu)建顯示對(duì)象數(shù)據(jù)包,并 將構(gòu)建的顯示對(duì)象數(shù)據(jù)包存儲(chǔ)在所述內(nèi)存存儲(chǔ)塊中;并釋放顯示構(gòu)建模塊已處理過(guò)的解碼 對(duì)象數(shù)據(jù)包;將所述顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器以實(shí)現(xiàn)所述流媒體數(shù)據(jù)的播放,并釋放 已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包。
9.根據(jù)權(quán)利要求8所述的媒體播放器的內(nèi)存管理器,其特征在于,還包括對(duì)象數(shù)據(jù)包 管理模塊;所述對(duì)象數(shù)據(jù)包管理模塊,用于接收到所述單元調(diào)度模塊發(fā)送的構(gòu)建所述對(duì)象數(shù)據(jù)包 的存儲(chǔ)空間的請(qǐng)求時(shí),構(gòu)建所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。
10.根據(jù)權(quán)利要求9所述的媒體播放器的內(nèi)存管理器,其特征在于,還包括引用單元 管理模塊和存儲(chǔ)單元管理模塊;所述對(duì)象數(shù)據(jù)包管理模塊,用于向引用單元管理模塊發(fā)出組合對(duì)象數(shù)據(jù)包的存儲(chǔ)空間 的請(qǐng)求;所述引用單元管理模塊,用于查詢得到所有未使用的引用單元,計(jì)算所有未使用的引 用單元所能引用的內(nèi)存存儲(chǔ)塊是否能夠構(gòu)建出所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間;如果能,則組 合引用單元以構(gòu)建該存儲(chǔ)空間,如果不能,則向存儲(chǔ)單元管理模塊申請(qǐng)構(gòu)建新的存儲(chǔ)空間 以作為所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間;所述存儲(chǔ)單元管理模塊,用于根據(jù)所述引用單元管理模塊的申請(qǐng),構(gòu)建所述新的內(nèi)存 存儲(chǔ)塊以作為所述對(duì)象數(shù)據(jù)包的存儲(chǔ)空間。
11.根據(jù)權(quán)利要求10所述的媒體播放器的內(nèi)存管理器,其特征在于,所述對(duì)象數(shù)據(jù)包管理模塊,還用于向引用單元管理模塊發(fā)出釋放對(duì)象數(shù)據(jù)包的請(qǐng)求;所述引用單元管理模塊,還用于收到請(qǐng)求后,解除對(duì)引用單元的引用,釋放引用單元所 能引用的內(nèi)存存儲(chǔ)塊;所述存儲(chǔ)單元管理模塊,還用于釋放所述引用單元管理模塊釋放的內(nèi)存存儲(chǔ)塊。
12.根據(jù)權(quán)利要求8所述的媒體播放器的內(nèi)存管理器,其特征在于,還包括所述單元調(diào)度模塊,還用于當(dāng)所述流媒體播放完后,釋放所有的對(duì)象數(shù)據(jù)包的存儲(chǔ)空 間和所有的內(nèi)存存儲(chǔ)塊。
13.根據(jù)權(quán)利要求8所述的媒體播放器的內(nèi)存管理器,其特征在于,所述內(nèi)存性能偵測(cè)模塊,用于偵測(cè)和評(píng)估手機(jī)的內(nèi)存性能;根據(jù)手機(jī)的內(nèi)存性能,按照 預(yù)設(shè)的分配方法,確定手機(jī)內(nèi)存劃分的內(nèi)存存儲(chǔ)塊的大小和數(shù)量。
14.根據(jù)權(quán)利要求13所述的媒體播放器的內(nèi)存管理器,其特征在于,所述內(nèi)存性能偵測(cè)模塊,用于將手機(jī)內(nèi)存的存儲(chǔ)塊劃分為一級(jí)內(nèi)存和二級(jí)內(nèi)存。
全文摘要
本發(fā)明公開(kāi)了一種媒體播放器的內(nèi)存管理方法和內(nèi)存管理器,方法包括根據(jù)手機(jī)終端的內(nèi)存性能,將手機(jī)的內(nèi)存分為多個(gè)內(nèi)存存儲(chǔ)塊;將流媒體數(shù)據(jù)經(jīng)流媒體輸入模塊劃分后,生成的輸入對(duì)象數(shù)據(jù)包依次存儲(chǔ)在內(nèi)存存儲(chǔ)塊中;將解碼對(duì)象數(shù)據(jù)包依次存儲(chǔ)在內(nèi)存存儲(chǔ)塊中;并釋放處理過(guò)的輸入對(duì)象數(shù)據(jù)包;將顯示對(duì)象數(shù)據(jù)包存儲(chǔ)在內(nèi)存存儲(chǔ)塊中;并釋放處理過(guò)的解碼對(duì)象數(shù)據(jù)包;將顯示對(duì)象數(shù)據(jù)包發(fā)送到播放器進(jìn)行播放,并釋放已顯示過(guò)的顯示對(duì)象數(shù)據(jù)包。本發(fā)明通過(guò)采用內(nèi)存管理器對(duì)內(nèi)存進(jìn)行管理,采用劃分的內(nèi)存塊存儲(chǔ)輸入對(duì)象數(shù)據(jù)包、解碼對(duì)象數(shù)據(jù)包和顯示對(duì)象數(shù)據(jù)包,并釋放已處理過(guò)的對(duì)象數(shù)據(jù)包,實(shí)現(xiàn)了內(nèi)存空間的循環(huán)使用,提高了內(nèi)存的利用率。
文檔編號(hào)G06F12/06GK102123198SQ20111000477
公開(kāi)日2011年7月13日 申請(qǐng)日期2011年1月11日 優(yōu)先權(quán)日2011年1月11日
發(fā)明者甘震, 霍龍社 申請(qǐng)人:中國(guó)聯(lián)合網(wǎng)絡(luò)通信集團(tuán)有限公司