本發(fā)明涉及音頻,尤其涉及一種音頻播放的調(diào)頻方法及電子設(shè)備。
背景技術(shù):
1、在資源和性能受限的小型嵌入式系統(tǒng)中,播放音頻時(shí),音頻文件解碼時(shí)間過(guò)長(zhǎng),會(huì)出現(xiàn)音頻聲音卡頓不流暢的情況。例如,mcu(microcontroller?unit,單片機(jī))從外部存儲(chǔ)設(shè)備(比如u盤、flash等)讀取音頻文件,一次只能讀取少量數(shù)據(jù),然后依據(jù)文件編碼方式解碼出原始的pcm(pulse?code?modulation,脈沖編碼調(diào)制)數(shù)據(jù)進(jìn)行播放。在此過(guò)程中,一次解碼播放的數(shù)據(jù)比較少,可播放的時(shí)間只有幾百毫秒。由于系統(tǒng)其它任務(wù)的調(diào)度運(yùn)行,讀取下一段數(shù)據(jù)并解碼完成的時(shí)間可能會(huì)大于上一段數(shù)據(jù)可播放的時(shí)間,因此音頻聽起來(lái)就像是丟失了部分內(nèi)容,出現(xiàn)噪聲,甚至卡頓。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)上述背景技術(shù)中提及的相關(guān)技術(shù)存在的至少一個(gè)缺陷:播放音頻時(shí),音頻文件解碼時(shí)間過(guò)長(zhǎng),會(huì)出現(xiàn)音頻聲音卡頓不流暢的情況,提供一種音頻播放的調(diào)頻方法及電子設(shè)備。
2、本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:構(gòu)造一種音頻播放的調(diào)頻方法,應(yīng)用于處理器,包括以下步驟:
3、s11:進(jìn)入正式播放階段,獲取第i-1次解碼后的總可播放時(shí)間、當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間和當(dāng)前處理器頻率下解碼所需時(shí)間,其中i≥2;
4、s12:通過(guò)判斷第i-1次解碼后的總可播放時(shí)間、當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間和當(dāng)前處理器頻率下解碼所需時(shí)間的關(guān)系,來(lái)調(diào)整或保持當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
5、s13:調(diào)度任務(wù)來(lái)對(duì)獲取到的至少一音頻片段進(jìn)行解碼;
6、s14:判斷音頻文件中的所有音頻片段是否解碼完成,若否,則執(zhí)行步驟s15;若是,則結(jié)束;
7、s15:計(jì)算第i次解碼后的總可播放時(shí)間;
8、s16:令i?=i+1,并返回執(zhí)行步驟s11。
9、優(yōu)選地,步驟s12包括:
10、s121-1:根據(jù)第i-1次解碼后的總可播放時(shí)間和當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間,計(jì)算得到第i-1次解碼后的剩余播放時(shí)間;
11、s122-1:通過(guò)對(duì)比第i-1次解碼后的剩余播放時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間,來(lái)調(diào)整或保持當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
12、或者,步驟s12包括:
13、s121-2:根據(jù)第i-1次解碼后的總可播放時(shí)間、當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間和當(dāng)前處理器頻率下解碼所需時(shí)間,計(jì)算得到第i-1次解碼后的剩余播放時(shí)間;
14、s122-2:通過(guò)對(duì)比加權(quán)后的第i-1次解碼后的剩余播放時(shí)間與當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間和當(dāng)前處理器頻率下解碼所需時(shí)間之和,來(lái)調(diào)整或保持當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段。
15、優(yōu)選地,步驟s121-1包括:
16、利用第i-1次解碼后的總可播放時(shí)間減去當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間,得到第i-1次解碼后的剩余播放時(shí)間;
17、步驟s122-1包括:
18、判斷第i-1次解碼后的剩余播放時(shí)間大于2倍的當(dāng)前處理器頻率下解碼所需時(shí)間時(shí),則降低當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
19、判斷第i-1次解碼后的剩余播放時(shí)間小于或等于當(dāng)前處理器頻率下解碼所需時(shí)間時(shí),則提高當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
20、判斷第i-1次解碼后的剩余播放時(shí)間大于當(dāng)前處理器頻率下解碼所需時(shí)間,且小于或等于2倍的當(dāng)前處理器頻率下解碼所需時(shí)間時(shí),則保持當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段。
21、優(yōu)選地,步驟s121-2包括:
22、利用第i-1次解碼后的總可播放時(shí)間減去當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間和當(dāng)前處理器頻率下解碼所需時(shí)間,得到第i-1次解碼后的剩余播放時(shí)間;
23、步驟122-2包括:
24、對(duì)第i-1次解碼后的剩余播放時(shí)間進(jìn)行加權(quán),得到第一閾值;
25、判斷第一閾值大于2倍的當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和,則降低當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
26、判斷第一閾值小于或等于當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和時(shí),則提高當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段;
27、判斷第一閾值大于當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和,且小于或等于2倍的當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和時(shí),則保持當(dāng)前處理器的頻率,并獲取用于進(jìn)行第i次解碼的至少一音頻片段。
28、優(yōu)選地,步驟s15包括:
29、s151-1:獲取第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間以及重新獲取當(dāng)前處理器頻率下解碼所需時(shí)間;
30、s152-1:根據(jù)第i-1次解碼后的剩余播放時(shí)間、當(dāng)前處理器頻率下解碼所需時(shí)間以及第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間,計(jì)算得到第i次解碼后的總可播放時(shí)間;
31、或者,步驟s15包括:
32、s151-2:獲取第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間以及重新獲取當(dāng)前處理器頻率下解碼所需時(shí)間和當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間;
33、s152-2:根據(jù)加權(quán)后的第i-1次解碼后的剩余播放時(shí)間、當(dāng)前處理器頻率下解碼所需時(shí)間、當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間以及第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間,計(jì)算得到第i次解碼后的總可播放時(shí)間。
34、優(yōu)選地,步驟s152-1包括:
35、利用第i-1次解碼后的剩余播放時(shí)間減去當(dāng)前處理器頻率下解碼所需時(shí)間,并加上第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間,得到第i次解碼后的總可播放時(shí)間;
36、或者,步驟s152-2包括:
37、利用加權(quán)后的第i-1次解碼后的剩余播放時(shí)間減去當(dāng)前處理器頻率下解碼所需時(shí)間和當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間,并加上第i次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間,得到第i次解碼后的總可播放時(shí)間。
38、優(yōu)選地,步驟s11之前還包括:
39、進(jìn)入正式播放階段,獲取用于進(jìn)行第1次解碼的至少一音頻片段;
40、調(diào)度任務(wù)來(lái)對(duì)獲取到的至少一音頻片段進(jìn)行解碼,獲得第1次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間;
41、將第1次解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間作為第1次解碼后的總可播放時(shí)間。
42、優(yōu)選地,所述方法還包括:
43、s21:進(jìn)入預(yù)播放階段,獲取用于進(jìn)行第j次預(yù)解碼的至少一音頻片段,其中j≥1;
44、s22:調(diào)度任務(wù)來(lái)對(duì)獲取到的至少一音頻片段進(jìn)行解碼,獲得當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間、當(dāng)前處理器頻率下解碼所需時(shí)間以及第j次預(yù)解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間;
45、s23:根據(jù)當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間、當(dāng)前處理器頻率下解碼所需時(shí)間以及第j次預(yù)解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間,來(lái)預(yù)判斷是否滿足正式播放條件;
46、s24:若否,則調(diào)整當(dāng)前處理器的頻率,令j=j+1,并返回執(zhí)行步驟s21;
47、s25:若是,則確定當(dāng)前處理器的頻率,以進(jìn)入正式播放階段。
48、優(yōu)選地,步驟s23包括:
49、判斷第j次預(yù)解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間是否大于或等于當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和;
50、或者,步驟s23包括:
51、對(duì)第j次預(yù)解碼后的至少一音頻片段的對(duì)應(yīng)可播放時(shí)間進(jìn)行加權(quán),得到第二閾值;
52、判斷第二閾值是否大于或等于當(dāng)前處理器頻率下每次任務(wù)調(diào)度的間隔時(shí)間與當(dāng)前處理器頻率下解碼所需時(shí)間之和;
53、且,步驟s24包括:
54、若否,則提高當(dāng)前處理器的頻率,令j=j+1,并返回執(zhí)行步驟s21。
55、本發(fā)明還構(gòu)造了一種電子設(shè)備,包括:
56、一個(gè)或多個(gè)處理器;
57、存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序,當(dāng)所述一個(gè)或多個(gè)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如上述任一項(xiàng)所述的音頻播放的調(diào)頻方法。
58、通過(guò)實(shí)施本發(fā)明,具有以下有益效果:
59、本發(fā)明通過(guò)正式播放階段的調(diào)頻方法,可以對(duì)處理器的頻率進(jìn)行動(dòng)態(tài)調(diào)整,從而在正式播放音頻時(shí)能夠保證聲音的流暢,減少卡頓的情況。
60、另外,還通過(guò)預(yù)播放階段的調(diào)頻方法,可以在正式播放前對(duì)處理器的頻率進(jìn)行調(diào)整,進(jìn)一步保證正式播放音頻時(shí)聲音的流暢。