一種內存分配方法及裝置制造方法
【專利摘要】本發明公開了一種內存分配方法及裝置,所述方法包括:在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,視頻數據包括多個視頻數據塊;獲取目標內存池中預先分配的預設內存塊的大小,目標內存池包括多個預設內存塊;比較視頻數據塊的大小和預設內存塊的大小,在視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊。通過本發明實施例,可根據實時的視頻數據中的視頻數據塊的大小進行內存分配,分配的內存塊大小與視頻數據塊的大小適配,提升了視頻數據內存分配方案的靈活性,提高了內存使用率。
【專利說明】—種內存分配方法及裝置
【技術領域】
[0001]本發明涉及計算機領域,尤其涉及一種內存分配方法及裝置。
【背景技術】
[0002]在對播放的視頻數據進行緩存時,將視頻數據緩存到內存池中,內存池包括多個內存塊,每個內存塊的大小一樣,多個內存塊的總大小多于視頻數據的大小,為每一個視頻數據塊分配一個空閑的內存塊,其中,視頻數據包括多個視頻數據塊,視頻數據塊可以為一幀視頻數據,也可以為幾幀視頻數據。視頻數據在不同分辨率的播放界面下,視頻數據塊的大小是不相同的,例如不同大小的播放界面對應不同的分辨率,但為每個視頻數據塊分配的內存塊的大小固定不變,若視頻數據塊的大小多于內存塊的大小,則視頻數據塊無法完整存儲到內存間中,若視頻數據塊的大小少于內存空間的大小,則會造成內存空間的浪費,該內存分配方案缺乏靈活性,且大大降低了內存使用率。
【發明內容】
[0003]本發明實施例提供一種內存分配方法及裝置,可提高視頻數據的內存分配方案的靈活性,且可提高內存使用率。
[0004]本發明第一方面提供一種內存分配方法,可包括:
[0005]在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,所述視頻數據包括多個所述視頻數據塊;
[0006]獲取目標內存池中預先分配的預設內存塊的大小,所述目標內存池包括多個所述預設內存塊;
[0007]比較所述視頻數據塊的大小和所述預設內存塊的大小;
[0008]在所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致時,根據所述視頻數據塊的大小為所述視頻數據分配目標內存塊。
[0009]本發明第二方面提供一種內存分配裝置,可包括:
[0010]數據塊獲取模塊,用于在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,所述視頻數據包括多個所述視頻數據塊;
[0011]內存塊獲取模塊,用于獲取目標內存池中預先分配的預設內存塊的大小,所述目標內存池包括多個預設內存塊;
[0012]比較模塊,用于比較所述視頻數據塊的大小和所述預設內存塊的大小;
[0013]分配模塊,用于在所述比較模塊的比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致時,根據所述視頻數據塊的大小為所述視頻數據分配目標內存塊。
[0014]實施本發明實施例,具有如下有益效果:
[0015]本發明實施例可在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,還可獲取目標內存池中預先分配的預設內存塊的大小,進而可比較視頻數據塊的大小和預設內存塊的大小,在比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊,本發明實施例可根據實時的視頻數據中的視頻數據塊的大小進行內存分配,分配的內存塊大小與視頻數據塊的大小適配,提升了視頻數據內存分配方案的靈活性,提高了內存使用率。
【專利附圖】
【附圖說明】
[0016]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0017]圖1為本發明實施例提供的一種內存分配方法的流程圖;
[0018]圖2為本發明實施例提供的另一種內存分配方法的流程圖
[0019]圖3為本發明實施例提供的一種內存分配示意圖;
[0020]圖4為本發明實施例提供的一種內存分配裝置的結構示意圖;
[0021]圖5為本發明實施例提供的比較模塊的結構示意圖;
[0022]圖6為本發明實施例提供的分配模塊的結構示意圖。
【具體實施方式】
[0023]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0024]本發明實施例提供一種內存分配方法及裝置,可為視頻數據分配目標內存塊,其中,視頻數據包括多個視頻數據塊,視頻數據塊可以為一幀視頻數據,也可以為幾幀視頻數據,視頻數據的視頻數據塊的大小是變化的,例如,對于同一視頻數據,在手機中播放時,手機橫屏與手機豎屏的情況下分別對應不同的播放界面分辨率,則不同的播放界面分辨率下的視頻數據塊的大小不一樣。本發明實施例中,可根據當前獲取到的視頻數據塊的大小,與預設內存塊的大小比較,在視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊,從而避免了視頻數據塊的大小多于內存塊的大小導致視頻數據塊無法完整存儲到內存間中的情況,也避免了視頻數據塊的大小少于內存空間的大小造成內存空間的浪費的情況。
[0025]進一步的,本發明實施例中的預設內存塊為目標內存池中空閑的內存塊,本發明實施例中的目標內存塊為目標內存池中空閑的內存塊。
[0026]進一步可選的,本發明實施例在播放視頻數據之前進行,在為視頻數據分配目標內存塊之后,視頻數據的視頻數據塊緩存到目標內存塊中,再從目標內存塊中讀取一幀的視頻數據,從而進行視頻數據的播放,從而可自適應各種視頻質量,使得視頻數據的視頻數據塊大小與目標內存塊的大小適配,提升了視頻數據內存分配方案的靈活性。
[0027]本發明實施例提供一種內存分配裝置可以為個人計算機、平板電腦、智能手機、筆記本電腦等可播放視頻數據的終端設備,也可以為終端設備中的如:視頻播放器客戶端、網頁瀏覽器客戶端等客戶端模塊。本發明實施例提供的一種內存分配方案例如:在網頁中播放視頻時,緩存視頻時需對緩存的視頻數據進行內存分配的場景等等。
[0028]下面將結合附圖1?附圖3,對本發明實施例提供的內存分配方法進行詳細介紹。
[0029]請參見圖1,為本發明實施例提供的一種內存分配方法的流程圖;該方法可包括以下步驟SlOl?S104。
[0030]S101,在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,視頻數據包括多個視頻數據塊。
[0031 ] 作為一種可選的實施方式,在檢測到視頻數據的內存請求時,具體的,可以在接收到用戶對視頻數據的播放操作時確定檢測到視頻數據的內存請求,在檢測到視頻數據的內存請求后,獲取視頻數據塊的大小,其中,視頻數據包括多個視頻數據塊,視頻數據塊可以為一幀視頻數據,也可以為幾幀視頻數據,具體不受本發明實施例的限制。
[0032]進一步的,步驟SlOl獲取視頻數據塊的大小具體可以包括:
[0033]獲取預設時間內接收到的每個視頻數據塊的大小,在預設時間內接收到的每個視頻數據塊的大小與預設內存塊的大小不一致時,確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致;或
[0034]獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,在接收到的前N個視頻數據塊中每個視頻數據塊的大小與預設內存塊的大小不一致時,確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0035]具體實現中,預設時間可以為根據每幀視頻數據的傳送時間的整數倍進行設置的時間數值,例如20ms、15ms等,預設時間可設置定時器進行控制,則預設時間內可接收到M個視頻數據塊,M為大于I的正整數,獲取M個視頻數據塊中每個視頻數據塊的大小。
[0036]進一步的,獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,具體的,還可對視頻數據塊的數量進行計數,每收到一個視頻數據塊,遞增內部計數,在內部計數的數值達到預設數量N時,獲取該N個視頻數據塊中每個視頻數據塊的大小,即對接收到的第一個視頻數據塊、第二個視頻數據塊……第N個視頻數據塊進行處理,獲取前N個視頻數據塊中每個視頻數據塊的大小。
[0037]S102,獲取目標內存池中預先分配的預設內存塊的大小,目標內存池包括多個預設內存塊。
[0038]作為一種可選的實施方式,可獲取目標內存池中預先分配的預設內存塊的大小,其中,目標內存池包括多個預設內存塊,預設內存塊的大小為預先設定的一數值,目標內存池為在接收到內存請求時從內存池中申請的一個足夠內存空間的內存池,目標內存池的大小多于視頻數據的大小。
[0039]進一步可選的,步驟S101、S102的執行無先后之分,可以先執行其中一個,再執行另一個步驟,也可同時執行。
[0040]S103,比較視頻數據塊的大小和預設內存塊的大小。
[0041]作為一種可選的實施方式,可比較視頻數據塊的大小和預設內存塊的大小。具體實現中,可計算視頻數據塊的大小與預設內存塊的大小的差值。進一步的,可比較預設內存塊的大小是否多于視頻數據塊的大小的第一比例值,或比較預設內存塊的大小是否少于視頻數據塊的大小的第二比例值。其中,第一比例值可以為預先設定的預設內存塊的大小比視頻數據塊的大小多的比例值,例如第一比例值可以為120%,若預設內存塊的大小為80KB,視頻數據塊的大小為30KB,則80>30*120% ;第二比例值可以為預先設定的預設內存塊的大小比視頻數據塊的大小少的比例值,例如第二比例值可以為110%,若預設內存塊的大小為80KB,視頻數據塊的大小為80KB,則80〈80*110%。
[0042]S104,在比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊。
[0043]作為一種可選的實施方式,在S103的比較結果為視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊。具體的,還可清空預先分配的預設內存塊,再重新為視頻數據分配內存塊,具體為視頻數據分配目標內存塊。進一步的,也可直接根據視頻數據塊的大小為視頻數據分配目標內存塊,具體不受本發明實施例的限制。
[0044]進一步的,在獲取預設時間內接收到的每個視頻數據塊的大小之后,在預設時間內接收到的每個視頻數據塊的大小與預設內存塊的大小不一致時,可確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0045]進一步的,在獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小之后,在接收到的前N個視頻數據塊中每個視頻數據塊的大小與預設內存塊的大小不一致時,確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0046]進一步的,在計算視頻數據塊的大小與預設內存塊的大小的差值中所得到的差值滿足預設第一差值閾值時,確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。其中,預設第一差值閾值為預先設定的視頻數據塊的大小與預設內存塊的大小的差值的最小值和最大值,例如,預設第一差值閾值可以為:[_15,-1](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為-15KB,最大值可以為-1KB。
[0047]進一步的,在預設內存塊的大小多于視頻數據塊的大小的第一比例值,或預設內存塊的大小少于視頻數據塊的大小的第二比例值時,確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0048]作為一種可選的實施方式,根據視頻數據塊的大小為視頻數據分配目標內存塊具體可以包括:
[0049]計算視頻數據塊的大小與預設第二差值閾值的和,或計算視頻數據塊的大小與預設比值閾值的乘積,由計算結果得到目標內存塊的大小;
[0050]根據目標內存塊的大小從目標內存池中申請多個目標內存塊;
[0051]為視頻數據塊分配目標內存塊。
[0052]具體實現中,預設第二差值閾值為預先設定的預設內存塊的大小與視頻數據塊的大小的差值的最小值和最大值,例如,預設第二差值閾值可以為:[1,20](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為1KB,最大值可以為20KB,具體的,可從預設第二差值閾值中選一個作為最終值,例如,可以選1,則若視頻數據塊的大小為30KB,則目標內存塊的大小可以設為30+1 = 31KB。
[0053]其中,預設比值閾值可以為預先設定的目標內存塊的大小與視頻數據塊的大小的比值的最小值和最大值,例如,預設比值閾值可以為[1.1,1.5],即目標內存塊的大小與視頻數據塊的大小的比值的最小值可以為1.1,比值的最大值可以為1.5。例如,視頻數據塊的大小為30KB,則目標內存塊的大小可以設為30*1.1 = 33KB。
[0054]具體實現中,在計算得到目標內存塊的大小后,根據目標內存塊的大小從目標內存池中申請多個目標內存塊,例如,計算得到目標內存塊的大小為31KB,則可從目標內存池中申請多個31KB的目標內存塊。進一步的,為每個視頻數據塊分配一個目標內存塊,從而可將接收到的視頻數據塊緩存到目標內存塊中。
[0055]進一步可選的,在比較結果為:視頻數據塊的大小與預設內存塊的大小一致時,將接收到的視頻數據塊緩存到預設內存塊中。
[0056]進一步可選的,在比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,清空預設內存塊,可為視頻數據分配目標內存塊,其中,目標內存塊的大小與視頻數據塊的大小相同。
[0057]本發明實施例提供一種內存分配方法,可在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,還可獲取目標內存池中預先分配的預設內存塊的大小,進而可比較視頻數據塊的大小和預設內存塊的大小,在比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,清空預設內存塊,并根據視頻數據塊的大小為視頻數據分配目標內存塊,本發明實施例可根據實時的視頻數據中的視頻數據塊的大小進行內存分配,分配的內存塊大小與視頻數據塊的大小適配,提升了視頻數據內存分配方案的靈活性,提高了內存使用率。
[0058]請參見圖2,為本發明實施例提供的另一種內存分配方法的流程圖,該方法可包括以下步驟S201?S207。
[0059]S201,獲取目標內存池中預先分配的預設內存塊的大小。
[0060]作為一種可選的實施方式,目標內存池為在接收到內存請求時從內存池中申請的一個足夠內存空間的內存池,其中,目標內存池包括多個預設內存塊。
[0061]S202,在檢測到視頻數據的內存請求時,獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小。
[0062]進一步的,獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,具體的,還可對視頻數據塊的數量進行計數,每收到一個視頻數據塊,遞增內部計數,在內部計數的數值達到預設數量N時,獲取該N個視頻數據塊中每個視頻數據塊的大小,即對接收到的第一個視頻數據塊、第二個視頻數據塊……第N個視頻數據塊進行處理,獲取前N個視頻數據塊中每個視頻數據塊的大小。
[0063]S203,計算視頻數據塊的大小與預設內存塊的大小的差值。
[0064]S204,判斷計算得到的差值是否滿足預設第一差值閾值。在判斷結果為是時,執行步驟S205?S206,在判斷結果為否時,執行步驟S207。
[0065]作為一種可選的實施方式,預設第一差值閾值為預先設定的視頻數據塊的大小與預設內存塊的大小的差值的最小值和最大值,例如,預設第一差值閾值可以為:[_15,-1](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為-15KB,最大值可以為-1KB。
[0066]S205,由視頻數據塊的大小與預設第二差值閾值的和計算得到目標內存塊的大小。
[0067]作為一種可選的實施方式,在計算得到的差值滿足預設第一差值閾值時,計算視頻數據塊的大小與預設第二差值閾值的和得到目標內存塊的大小,預設第二差值閾值為預先設定的預設內存塊的大小與視頻數據塊的大小的差值的最小值和最大值,例如,預設第二差值閾值可以為:[1,20](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為1KB,最大值可以為20KB,具體的,可從預設第二差值閾值中選一個作為最終值,例如,可以選1,則若視頻數據塊的大小為30KB,則目標內存塊的大小可以設為30+1=31KB。
[0068]S206,由計算得到的目標內存塊的大小為視頻數據分配目標內存塊。
[0069]作為一種可選的實施方式,在計算得到目標內存塊的大小后,可根據目標內存塊的大小從目標內存池中申請多個目標內存塊,例如,計算得到目標內存塊的大小為31KB,則可從目標內存池中申請多個31KB的目標內存塊。
[0070]S207,為視頻數據分配目標內存塊,目標內存塊的大小與視頻數據塊的大小相等。
[0071]進一步可選的,如圖3所示,為本發明實施例提供的一種內存分配示意圖,視頻數據31中包括第一個視頻數據塊311、第二個視頻數據塊312、第三個數據庫塊313……,目標內存池32中包括第一預設內存塊321、第二預設內存塊322、第三預設內存塊323……,目標內存池中還包括:第一目標內存塊331、第二目標內存塊332、第三目標內存塊333……。本發明實施例中,可計算前N個視頻數據塊中每個視頻數據塊的大小,N = 3,計算第一個視頻數據塊311的大小、第二個視頻數據塊312的大小和第三個數據庫塊313的大小。具體的,可計算第一預設內存塊321的大小:bl = 40KB,計算第二預設內存塊322的大小:b2 =40KB、計算第三預設內存塊323的大小:b3 = 40KB……。在接收到第一個視頻數據塊311時,計算第一個視頻數據塊311的大小:al = 30KB,可比較al、bl的大小,在al與bl的差值滿足預設第一差值閾值時,由視頻數據塊的大小與預設第二差值閾值的和計算得到目標內存塊的大小,由此可計算第一目標內存塊331的大小:cl = 3IKB ;在接收到第二個視頻數據塊312時,計算第二個視頻數據塊312的大小:a2 = 30KB,可比較a2、b2的大小,同理可計算第二目標內存塊332的大小:c2 = 3IKB ;在接收到第三個視頻數據塊313時,計算第三個視頻數據塊313的大小:a3 = 30KB,可比較a3、b3的大小,同理可計算第三目標內存塊333的大小:c3 = 31KB……進一步的,在計算目標內存塊的大小之后,可清空預設內存塊,并由計算得到的目標內存塊的大小為視頻數據分配目標內存塊,即為第一個視頻數據塊311分配cl = 3IKB的第一目標內存塊331,為第二個視頻數據塊312分配c2 = 3IKB的第二目標內存塊332、為第三個視頻數據庫塊313分配c3 = 3IKB的第三目標內存塊333。
[0072]本發明實施例提供一種內存分配方法,可獲取目標內存池中預先分配的預設內存塊的大小,可在檢測到視頻數據的內存請求時,獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,進而可計算視頻數據塊的大小與預設內存塊的大小的差值,在計算得到的差值滿足預設第一差值閾值時,由視頻數據塊的大小與預設第二差值閾值的和計算得到目標內存塊的大小,可由計算得到的目標內存塊的大小為視頻數據分配目標內存塊,本發明實施例可根據實時的視頻數據中的視頻數據塊的大小進行內存分配,分配的內存塊大小與視頻數據塊的大小適配,提升了視頻數據內存分配方案的靈活性,提高了內存使用率。
[0073]下面將結合附圖4?圖6,對本發明實施例提供的內存分配裝置進行詳細介紹。需要說明的是,附圖4?圖6所示的內存分配裝置,用于執行本發明圖1或圖2所示實施例的方法,為了便于說明,僅示出了與本發明實施例相關的部分,具體技術細節未揭示的,請參照本發明圖1或圖2所示的實施例。
[0074]請參見圖4,為本發明實施例提供的一種內存分配裝置的結構示意圖;該裝置可包括:數據塊獲取模塊401、內存塊獲取模塊402、比較模塊403和分配模塊404。
[0075]數據塊獲取模塊401,用于在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,視頻數據包括多個視頻數據塊。
[0076]作為一種可選的實施方式,在檢測到視頻數據的內存請求時,具體的,可以在接收到用戶對視頻數據的播放操作時確定檢測到視頻數據的內存請求,在檢測到視頻數據的內存請求后,數據塊獲取模塊401可獲取視頻數據塊的大小,其中,視頻數據包括多個視頻數據塊,視頻數據塊可以為一幀視頻數據,也可以為幾幀視頻數據,具體不受本發明實施例的限制。
[0077]進一步可選的,數據塊獲取模塊401可以包括:第一獲取單元或第二獲取單元。
[0078]第一獲取單元,用于獲取預設時間內接收到的每個視頻數據塊的大小,在預設時間內接收到的每個視頻數據塊的大小與預設內存塊的大小不一致時,確定視頻數據塊的大小與預設內存塊的大小不一致。
[0079]第二獲取單元,用于獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,在接收到的前N個視頻數據塊中每個視頻數據塊的大小與預設內存塊的大小不一致時,確定視頻數據塊的大小與預設內存塊的大小不一致。
[0080]具體實現中,預設時間可以為根據每幀視頻數據的傳送時間的整數倍進行設置的時間數值,例如20ms、15ms等,預設時間可設置定時器進行控制,則預設時間內可接收到M個視頻數據塊,M為大于I的正整數,進而第一獲取單元可獲取M個視頻數據塊中每個視頻數據塊的大小。
[0081]進一步的,第二獲取單元可獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,具體的,還可對視頻數據塊的數量進行計數,每收到一個視頻數據塊,遞增內部計數,在內部計數的數值達到預設數量N時,獲取該N個視頻數據塊中每個視頻數據塊的大小,即對接收到的第一個視頻數據塊、第二個視頻數據塊……第N個視頻數據塊進行處理,獲取前N個視頻數據塊中每個視頻數據塊的大小。
[0082]內存塊獲取模塊402,用于獲取目標內存池中預先分配的預設內存塊的大小,目標內存池包括多個預設內存塊。
[0083]作為一種可選的實施方式,內存塊獲取模塊402可獲取目標內存池中預先分配的預設內存塊的大小,其中,目標內存池包括多個預設內存塊,預設內存塊的大小為預先設定的一數值,目標內存池為在接收到內存請求時從內存池中申請的一個足夠內存空間的內存池,目標內存池的大小多于視頻數據的大小。
[0084]比較模塊403,用于比較視頻數據塊的大小和預設內存塊的大小。
[0085]作為一種可選的實施方式,比較模塊403可比較視頻數據塊的大小和預設內存塊的大小。具體實現中,可計算視頻數據塊的大小與預設內存塊的大小的差值。進一步的,可比較預設內存塊的大小是否多于視頻數據塊的大小的第一比例值,或比較預設內存塊的大小是否少于視頻數據塊的大小的第二比例值。
[0086]進一步可選的,如圖5所示,為本發明實施例提供的比較模塊的結構示意圖,如圖所示,比較模塊403可以包括:第一計算單元51。
[0087]第一計算單元51,用于計算視頻數據塊的大小與預設內存塊的大小的差值,在差值滿足預設第一差值閾值時,確定比較模塊的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0088]進一步可選的,比較模塊403還可以包括:比例值比較單元52。
[0089]比例值比較單元52,用于比較預設內存塊的大小是否多于視頻數據塊的大小的第一比例值,或比較預設內存塊的大小是否少于視頻數據塊的大小的第二比例值;在預設內存塊的大小多于視頻數據塊的大小的第一比例值,或預設內存塊的大小少于視頻數據塊的大小的第二比例值時,確定比較模塊的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0090]具體實現中,第一比例值可以為預先設定的預設內存塊的大小比視頻數據塊的大小多的比例值,例如第一比例值可以為120%,若預設內存塊的大小為80KB,視頻數據塊的大小為30KB,則80>30*120%;第二比例值可以為預先設定的預設內存塊的大小比視頻數據塊的大小少的比例值,例如第二比例值可以為110 %,若預設內存塊的大小為80KB,視頻數據塊的大小為80KB,則80〈80*110%。
[0091]分配模塊404,在比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,根據視頻數據塊的大小為視頻數據分配目標內存塊。
[0092]作為一種可選的實施方式,在比較模塊403的比較結果為視頻數據塊的大小與預設內存塊的大小不一致時,分配模塊404可清空預設內存塊,并根據視頻數據塊的大小為視頻數據分配目標內存塊。具體的,分配模塊404可清空預先分配的預設內存塊,再重新為視頻數據分配內存塊,具體為視頻數據分配目標內存塊。進一步的,也可直接根據視頻數據塊的大小為視頻數據分配目標內存塊,具體不受本發明實施例的限制。
[0093]進一步的,數據塊獲取模塊401在獲取預設時間內接收到的每個視頻數據塊的大小之后,在預設時間內接收到的每個視頻數據塊的大小與預設內存塊的大小不一致時,t匕較模塊403可確定比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0094]進一步的,在獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小之后,在接收到的前N個視頻數據塊中每個視頻數據塊的大小與預設內存塊的大小不一致時,確定比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0095]進一步的,在計算視頻數據塊的大小與預設內存塊的大小的差值中所得到的差值滿足預設第一差值閾值時,可確定比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。其中,預設第一差值閾值為預先設定的視頻數據塊的大小與預設內存塊的大小的差值的最小值和最大值,例如,預設第一差值閾值可以為:[_15,-1](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為-15KB,最大值可以為-1KB0
[0096]進一步的,在預設內存塊的大小多于視頻數據塊的大小的第一比例值,或預設內存塊的大小少于視頻數據塊的大小的第二比例值時,課確定比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致。
[0097]進一步可選的,如圖6所示,為本發明實施例提供的分配模塊的結構示意圖,如圖所示,分配模塊404可以包括:第二計算單元61和分配單元62。
[0098]第二計算單元61,用于計算視頻數據塊的大小與預設第二差值閾值的和,或計算視頻數據塊的大小與預設比值閾值的乘積,由計算結果得到目標內存塊的大小。
[0099]分配單元62,用于根據目標內存塊的大小從目標內存池中申請多個目標內存塊,并為視頻數據塊分配目標內存塊。
[0100]具體實現中,預設第二差值閾值為預先設定的預設內存塊的大小與視頻數據塊的大小的差值的最小值和最大值,例如,預設第二差值閾值可以為:[1,20](單位為KB),即視頻數據塊的大小與預設內存塊的大小的差值的最小值可以為1KB,最大值可以為20KB,具體的,可從預設第二差值閾值中選一個作為最終值,例如,可以選1,則若視頻數據塊的大小為30KB,則目標內存塊的大小可以設為30+1 = 31KB。
[0101]其中,預設比值閾值可以為預先設定的目標內存塊的大小與視頻數據塊的大小的比值的最小值和最大值,例如,預設比值閾值可以為[1.1,1.5],即目標內存塊的大小與視頻數據塊的大小的比值的最小值可以為1.1,比值的最大值可以為1.5。例如,視頻數據塊的大小為30KB,則目標內存塊的大小可以設為30*1.1 = 33KB。
[0102]具體實現中,在第二計算單元61計算得到目標內存塊的大小后,分配單元62可根據目標內存塊的大小從目標內存池中申請多個目標內存塊,例如,計算得到目標內存塊的大小為31KB,則可從目標內存池中申請多個31KB的目標內存塊。進一步的,為每個視頻數據塊分配一個目標內存塊,從而可將接收到的視頻數據塊緩存到目標內存塊中。
[0103]進一步可選的,在比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小一致時,分配模塊404還可將接收到的視頻數據塊緩存到預設內存塊中。
[0104]進一步可選的,在比較模塊403的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,清空預設內存塊,分配模塊404可為視頻數據分配目標內存塊,其中,目標內存塊的大小與視頻數據塊的大小相同。
[0105]本發明實施例提供一種內存分配裝置,數據塊獲取模塊可在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,內存塊獲取模塊可獲取目標內存池中預先分配的預設內存塊的大小,進而比較模塊可比較視頻數據塊的大小和預設內存塊的大小,在比較模塊的比較結果為:視頻數據塊的大小與預設內存塊的大小不一致時,分配模塊可根據視頻數據塊的大小為視頻數據分配目標內存塊,本發明實施例可根據實時的視頻數據中的視頻數據塊的大小進行內存分配,分配的內存塊大小與視頻數據塊的大小適配,提升了視頻數據內存分配方案的靈活性,提高了內存使用率。
[0106]本發明實施例還公開了一種終端,包括圖4?圖6任一所示的裝置;該裝置的結構和功能可參見圖4?圖6任一所示實施例的相關描述,在此不贅述。需要說明的是,本實施例提供的服務器與圖1、圖2所示的內存分配方法相對應,為基于圖1或圖2所示的內存分配方法的執行主體。
[0107]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
[0108]以上所揭露的僅為本發明較佳實施例而已,當然不能以此來限定本發明之權利范圍,因此依本發明權利要求所作的等同變化,仍屬本發明所涵蓋的范圍。
【權利要求】
1.一種內存分配方法,其特征在于,所述方法包括: 在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,所述視頻數據包括多個所述視頻數據塊; 獲取目標內存池中預先分配的預設內存塊的大小,所述目標內存池包括多個所述預設內存塊; 比較所述視頻數據塊的大小和所述預設內存塊的大小; 在所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致時,根據所述視頻數據塊的大小為所述視頻數據分配目標內存塊。
2.如權利要求1所述的方法,其特征在于,所述獲取視頻數據塊的大小包括: 獲取預設時間內接收到的每個視頻數據塊的大小,在所述預設時間內接收到的每個視頻數據塊的大小與所述預設內存塊的大小不一致時,確定所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致;或 獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,在所述接收到的前N個視頻數據塊中每個視頻數據塊的大小與所述預設內存塊的大小不一致時,確定所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致。
3.如權利要求1所述的方法,其特征在于,所述比較所述視頻數據塊的大小和所述預設內存塊的大小,包括: 計算所述視頻數據塊的大小與所述預設內存塊的大小的差值,在所述差值滿足預設第一差值閾值時,確定所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不—致。
4.如權利要求1所述的方法,其特征在于,所述比較所述視頻數據塊的大小和所述預設內存塊的大小,包括: 比較所述預設內存塊的大小是否多于所述視頻數據塊的大小的第一比例值,或比較所述預設內存塊的大小是否少于所述視頻數據塊的大小的第二比例值;在所述預設內存塊的大小多于所述視頻數據塊的大小的第一比例值,或所述預設內存塊的大小少于所述視頻數據塊的大小的第二比例值時,確定所述比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致。
5.如權利要求1?4任一所述的方法,其特征在于,所述根據所述視頻數據塊的大小為所述視頻數據分配目標內存塊,包括: 計算所述視頻數據塊的大小與預設第二差值閾值的和,或計算所述視頻數據塊的大小與預設比值閾值的乘積,由所述計算結果得到所述目標內存塊的大小; 根據所述目標內存塊的大小從所述目標內存池中申請多個所述目標內存塊,并為所述視頻數據塊分配所述目標內存塊。
6.一種內存分配裝置,其特征在于,所述裝置包括: 數據塊獲取模塊,用于在檢測到視頻數據的內存請求時,獲取視頻數據塊的大小,所述視頻數據包括多個所述視頻數據塊; 內存塊獲取模塊,用于獲取目標內存池中預先分配的預設內存塊的大小,所述目標內存池包括多個所述預設內存塊; 比較模塊,用于比較所述視頻數據塊的大小和所述預設內存塊的大小; 分配模塊,在所述比較模塊的比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致時,根據所述視頻數據塊的大小為所述視頻數據分配目標內存塊。
7.如權利要求6所述的裝置,其特征在于,所述數據塊獲取模塊包括:第一獲取單元或第二獲取單元; 所述第一獲取單元,用于獲取預設時間內接收到的每個視頻數據塊的大小,在所述預設時間內接收到的每個視頻數據塊的大小與所述預設內存塊的大小不一致時,確定所述視頻數據塊的大小與所述預設內存塊的大小不一致; 所述第二獲取單元,用于獲取接收到的前N個視頻數據塊中每個視頻數據塊的大小,其中,N為預設數量,在所述接收到的前N個視頻數據塊中每個視頻數據塊的大小與所述預設內存塊的大小不一致時,確定所述視頻數據塊的大小與所述預設內存塊的大小不一致。
8.如權利要求6所述的裝置,其特征在于,所述比較模塊包括: 第一計算單元,用于計算所述視頻數據塊的大小與所述預設內存塊的大小的差值,在所述差值滿足預設第一差值閾值時,確定所述比較模塊的比較結果為:視頻數據塊的大小與所述預設內存塊的大小不一致。
9.如權利要求6所述的裝置,其特征在于,所述比較模塊還包括: 比例值比較單元,用于比較所述預設內存塊的大小是否多于所述視頻數據塊的大小的第一比例值,或比較所述預設內存塊的大小是否少于所述視頻數據塊的大小的第二比例值;在所述預設內存塊的大小多于所述視頻數據塊的大小的第一比例值,或所述預設內存塊的大小少于所述視頻數據塊的大小的第二比例值時,確定所述比較模塊的比較結果為:所述視頻數據塊的大小與所述預設內存塊的大小不一致。
10.如權利要求6?9任一所述的裝置,其特征在于,所述分配模塊包括: 第二計算單元,用于計算所述視頻數據塊的大小與預設第二差值閾值的和,或計算所述視頻數據塊的大小與預設比值閾值的乘積,由所述計算結果得到所述目標內存塊的大小; 分配單元,用于根據所述目標內存塊的大小從所述目標內存池中申請多個所述目標內存塊,并為所述視頻數據塊分配所述目標內存塊。
【文檔編號】G06F12/02GK104182355SQ201410438502
【公開日】2014年12月3日 申請日期:2014年8月29日 優先權日:2014年8月29日
【發明者】李錦 , 陳杰, 施劍華 申請人:廣州華多網絡科技有限公司