本發(fā)明涉及信息處理技術(shù)領(lǐng)域,特別是涉及一種基于多通道電視音頻數(shù)據(jù)的播放方法、一種基于多通道電視音頻數(shù)據(jù)的播放裝置和一種基于多通道電視音頻數(shù)據(jù)的播放系統(tǒng)。
背景技術(shù):
在數(shù)字電視SoC(System-on-a-Chip,片上系統(tǒng))芯片的開發(fā)過(guò)程中,音頻后處理是其要實(shí)現(xiàn)的重要功能。如果該功能的性能存在不足,則在應(yīng)用該SoC的電視產(chǎn)品播放音頻數(shù)據(jù)時(shí)就會(huì)出現(xiàn)一系列的問(wèn)題,比如電視通路切換瞬間,如由ATV通道切換到HDMI通道時(shí),音頻讀取裝置仍需要把上一通路的已傳入的音頻數(shù)據(jù)讀完,才能開始讀新通路傳入的音頻,這樣會(huì)出現(xiàn)先播放殘留的上一通路的音頻數(shù)據(jù),再播放新切換到的通路的音頻數(shù)據(jù)的現(xiàn)象。該問(wèn)題及現(xiàn)象的出現(xiàn),會(huì)影響電視節(jié)目或影片的正常收看。解決該問(wèn)題的傳統(tǒng)方法是,在通路切換的瞬間執(zhí)行靜音操作以期靜掉上一通路殘留的聲音,但該方式的弊端是如果設(shè)置靜音的時(shí)間過(guò)短,會(huì)導(dǎo)致解除靜音時(shí)上一通路殘留的音頻數(shù)據(jù)還在播放。如果延長(zhǎng)通路切換過(guò)程中的靜音時(shí)間,又會(huì)出現(xiàn)通路切換時(shí)讓用戶等待的時(shí)間過(guò)長(zhǎng)的問(wèn)題,進(jìn)而降低設(shè)備的視聽品質(zhì),影響用戶的視聽體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于多通道電視音頻數(shù)據(jù)的播放方法、裝置及系統(tǒng),以解決切換通路時(shí),先播放一會(huì)上一通路殘留的音頻數(shù)據(jù)再播放新切換到的通路的音頻數(shù)據(jù)的問(wèn)題,同時(shí),實(shí)施本發(fā)明可以使得所在電視通路的音頻數(shù)據(jù)實(shí)時(shí)、有序、流暢及穩(wěn)定地播放。
為了解決上述問(wèn)題,本發(fā)明公開了一種基于多通道電視音頻數(shù)據(jù)的播放方法,所述的方法包括:
設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
當(dāng)判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù);
當(dāng)檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn)。
本發(fā)明還公開了一種基于多通道電視音頻數(shù)據(jù)的播放裝置,所述的裝置包括:
鏈表設(shè)定模塊,用于設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
配置模塊,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
播放模塊,用于播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù);
第一釋放模塊,用于在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn)。
本發(fā)明還公開了一種基于多通道電視音頻數(shù)據(jù)的播放系統(tǒng),所述的系統(tǒng)包括:
輸入單元,用于接收多個(gè)電視通道輸入的音頻數(shù)據(jù);
通道切換單元,用于切換不同的電視通道;
音頻緩沖區(qū),用于緩存所述輸入單元接收的音頻數(shù)據(jù);
音頻讀取單元,用于讀取所述音頻緩沖區(qū)中的音頻數(shù)據(jù);
控制調(diào)度單元,用于控制所述音頻讀取單元讀取所述音頻緩沖區(qū)中的音 頻數(shù)據(jù);
音頻后處理單元,用于對(duì)所述音頻讀取單元讀取的音頻數(shù)據(jù)進(jìn)行預(yù)設(shè)音效處理;
輸出單元,用于播放所述處理后的音頻數(shù)據(jù);
其中,所述控制調(diào)度單元包括:
鏈表設(shè)定模塊,用于設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
配置模塊,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
第一釋放模塊,用于在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn);
所述輸出單元包括:
播放模塊,用于播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn):
在本發(fā)明實(shí)施例中,設(shè)定用于維護(hù)待播放音頻數(shù)據(jù)的第一鏈表,當(dāng)判定第一鏈表非空時(shí),從第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置,在配置完成后,播放該配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù),并在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn),該卸載及釋放的動(dòng)作非常迅速,以毫秒級(jí)計(jì)算,可以大大降低用戶等待通道切換完成的時(shí)間,進(jìn)而間接提升用戶的視聽體驗(yàn)。使用鏈表的形式可以有效區(qū)分待播及已播音頻數(shù)據(jù),以鏈表的形式對(duì)待播音頻數(shù)據(jù)和已播音頻數(shù)據(jù)分塊、分別進(jìn)行管理,可以實(shí)時(shí)配置待播放音頻數(shù)據(jù),實(shí)時(shí)播放已配置音頻數(shù)據(jù),以保證所在通路的音頻數(shù)據(jù)可以實(shí)時(shí)、有序、流暢及穩(wěn)定地播放。同時(shí),可以有效解決切換通路時(shí),先播放一會(huì)上一通路殘留的音頻數(shù)據(jù)再播放新切換到的通路的音頻數(shù)據(jù)的問(wèn)題。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例一的步驟流程圖;
圖2是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例二的步驟流程圖;
圖3是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例二的第一鏈表及第二鏈表交互示意圖;
圖4是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例二的環(huán)形緩沖區(qū)關(guān)系示意圖;
圖5是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例二的RDMA的初始化流程圖;
圖6是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放裝置實(shí)施例的結(jié)構(gòu)框圖;
圖7是本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明實(shí)施例的核心構(gòu)思之一在于,設(shè)定用于維護(hù)待播放音頻數(shù)據(jù)的第一鏈表,當(dāng)判定第一鏈表非空時(shí),從第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置,在配置完成后,播放該配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù),并在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn),該卸載及釋放的動(dòng)作非常迅速,以毫秒級(jí)計(jì)算,可以大大降低用戶的等待通道切換的時(shí)間,進(jìn)而提升用戶的視聽體驗(yàn)。另外,使用鏈表的形式可以有效區(qū)分待播及已播音頻數(shù)據(jù)??傊?,以鏈表的形式對(duì)待播音頻數(shù)據(jù)和已播音頻數(shù)據(jù)分塊、分別進(jìn)行管理,可以實(shí)時(shí)配置待播放音頻數(shù)據(jù),實(shí)時(shí)播放已配置音頻數(shù)據(jù),以保證所在通路的音頻數(shù)據(jù)可以實(shí)時(shí)、有序、流暢及穩(wěn)定地播放。同時(shí),可以有效解決切換通路時(shí),先 播放一會(huì)上一通路殘留的音頻數(shù)據(jù)再播放新切換到的通路的音頻數(shù)據(jù)的問(wèn)題。
參照?qǐng)D1,示出了本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放方法實(shí)施例一的步驟流程圖,可以包括如下步驟:
步驟101,設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
步驟102,當(dāng)判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn);
步驟103,對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
步驟104,播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù);
步驟105,當(dāng)檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn)。
在本發(fā)明實(shí)施例中,接收第一電視通道發(fā)送的待播放音頻數(shù)據(jù),設(shè)定用于維護(hù)該待播放音頻數(shù)據(jù)的第一鏈表,當(dāng)判定第一鏈表非空時(shí),從第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置,在配置完成后,播放該配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù),并在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn),該卸載及釋放的動(dòng)作非常迅速,以毫秒級(jí)計(jì)算,可以大大降低用戶的等待通道切換的時(shí)間,進(jìn)而提升用戶的視聽體驗(yàn)。使用鏈表的形式可以有效區(qū)分待播及已播音頻數(shù)據(jù),以鏈表的形式對(duì)待播音頻數(shù)據(jù)和已播音頻數(shù)據(jù)分塊、分別進(jìn)行管理,可以實(shí)時(shí)配置待播放音頻數(shù)據(jù),實(shí)時(shí)播放已配置音頻數(shù)據(jù),以保證所在通路的音頻數(shù)據(jù)可以實(shí)時(shí)、有序、流暢及穩(wěn)定地播放。同時(shí)解決切換通路時(shí),先播放一會(huì)上一通路殘留的音頻數(shù)據(jù)再播放新切換到的通路的音頻數(shù)據(jù)的問(wèn)題。
參照?qǐng)D2,示出了本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放 方法實(shí)施例二的步驟流程圖,本發(fā)明實(shí)施例可以應(yīng)用于電視音頻數(shù)據(jù)播放領(lǐng)域,該電視音頻數(shù)據(jù)可以為來(lái)源于多個(gè)電視通道(或通路)的PCM(Pulse Code Modulation,脈沖編碼調(diào)制)音頻數(shù)據(jù),其中,電視通道可以包括模擬通道和數(shù)字通道,模擬通道包括電視機(jī)的ATV Demod通路、AV通路、分量通路、VGA通路、HDMI通路等;數(shù)字通道包括DMP(Digital Multimedia Player,數(shù)字多媒體播放器)等。每個(gè)電視通道的采樣率各不相同,例如,ATV通路的數(shù)據(jù)采樣率通常固定為35.15625KHz,AV、COMP及VGA通路固定為48KHz,HDMI、DMP通路支持從32KHz~192KHz頻段的所有常用采樣率。
本發(fā)明實(shí)施例可以包括如下步驟:
步驟201,設(shè)定第一鏈表及第二鏈表,其中,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述第二鏈表用于維護(hù)已播放音頻數(shù)據(jù);
應(yīng)用于本發(fā)明實(shí)施例,可以設(shè)定兩個(gè)鏈表用于音頻數(shù)據(jù)維護(hù),即第一鏈表及第二鏈表,其中,鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn)(結(jié)點(diǎn)也可以稱為節(jié)點(diǎn)))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。通常,每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域(設(shè)域名為data),另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域(設(shè)域名為next),指針域中存儲(chǔ)的信息又稱做指針或鏈。使用鏈表結(jié)構(gòu)可以充分利用計(jì)算機(jī)內(nèi)存空間,實(shí)現(xiàn)靈活的內(nèi)存動(dòng)態(tài)管理。
本發(fā)明實(shí)施例的第一鏈表用于維護(hù)待播放的音頻數(shù)據(jù),也稱為tobe_played鏈表;第二鏈表用于維護(hù)已播放的音頻數(shù)據(jù),也稱為played鏈表。該待播放音頻數(shù)據(jù)配置有攜帶信息,第一鏈表包括多個(gè)存儲(chǔ)所述未播放音頻數(shù)據(jù)的攜帶信息的第一結(jié)點(diǎn),第二鏈表包括多個(gè)存儲(chǔ)所述已播放音頻數(shù)據(jù)的攜帶信息的第二結(jié)點(diǎn)。具體來(lái)說(shuō),如圖3的第一鏈表及第二鏈表交互示意圖所示,來(lái)源于一個(gè)或多個(gè)電視通道的待播放的音頻數(shù)據(jù),可以為其配置攜帶信息,并將未播放音頻數(shù)據(jù)的攜帶信息鏈接(chain)到tobe_played鏈表上,已播放的音頻數(shù)據(jù)的攜帶信息,可以將其chian到played鏈表上。在具體實(shí)現(xiàn)中,tobe_played鏈表中維護(hù)的待播放音頻數(shù)據(jù)為待配置的數(shù)據(jù), played鏈表中維護(hù)的已播放音頻數(shù)據(jù)為待卸載并釋放的數(shù)據(jù)。新到來(lái)的待配置或待釋放的數(shù)據(jù)的結(jié)點(diǎn)chain到鏈表尾,unchain數(shù)據(jù)進(jìn)行配置或釋放時(shí)可以從鏈表頭部卸載。
步驟202,采用直接內(nèi)存讀取RDMA讀取待播放音頻數(shù)據(jù);
在具體實(shí)現(xiàn)中,來(lái)源于多個(gè)通道的PCM音頻數(shù)據(jù)可以存儲(chǔ)在音頻緩沖區(qū)中,在音頻緩沖區(qū)中的音頻數(shù)據(jù)是未經(jīng)配置以及未播放的數(shù)據(jù),即待配置音頻數(shù)據(jù)。本發(fā)明實(shí)施例可以采用RDMA(Read Direct Memory Access,直接內(nèi)存讀取)來(lái)讀取音頻緩沖區(qū)中的待配置音頻數(shù)據(jù),其中,RDMA實(shí)際上是讀取DMA,DMA便于不同速度的硬件裝置間的溝通,而無(wú)需依賴于CPU的大量中斷負(fù)載。
在具體實(shí)現(xiàn)中,RDMA具有對(duì)應(yīng)的緩沖區(qū)buffer,該緩沖區(qū)buffer包括寫指針(write pointer,wpt)、讀指針(read pointer,rpt)以及多個(gè)控制節(jié)點(diǎn)item,每個(gè)控制節(jié)點(diǎn)item具有控制信息。RDMA的音頻數(shù)據(jù)讀取工作主要是依靠其寫指針和讀指針來(lái)控制完成的。其中,寫指針主要由CPU(或軟件)控制,讀指針由RDMA自己維護(hù)。
在實(shí)際中,對(duì)于RDMA,IC(Integrated Circuit,即集成電路)可以將其對(duì)應(yīng)的緩沖區(qū)buffer實(shí)現(xiàn)為一個(gè)環(huán)形緩沖區(qū)Ring Buffer,其中,環(huán)形緩沖區(qū)是一種數(shù)據(jù)結(jié)構(gòu)用于表示一個(gè)固定尺寸、頭尾相連的緩沖區(qū),適合緩存數(shù)據(jù)流,環(huán)形緩沖區(qū)的一個(gè)有用特性是:其存儲(chǔ)空間可以被循環(huán)利用。
應(yīng)用于本發(fā)明實(shí)施例,可以將該環(huán)形緩沖區(qū)實(shí)現(xiàn)為一個(gè)一個(gè)的控制節(jié)點(diǎn)item,該item主要是用來(lái)控制RDMA讀取音頻數(shù)據(jù)的,其中,每個(gè)item由64bit組成,第一個(gè)32bit,即第一個(gè)字,為起始地址參數(shù)start address,指向RDMA要讀取的PCM音頻數(shù)據(jù)存儲(chǔ)于內(nèi)存的物理地址。第二個(gè)32bit,即第二個(gè)字,主要包括長(zhǎng)度參數(shù)length成員,該length表示該待讀取的PCM音頻數(shù)據(jù)的長(zhǎng)度。RDMA的寫指針、讀指針以及環(huán)形緩沖區(qū)的控制節(jié)點(diǎn)item的關(guān)系如圖4所示,在環(huán)形緩沖區(qū)中,讀指針指向環(huán)形緩沖區(qū)中可讀的item,寫指針指向環(huán)形緩沖區(qū)中可寫的item。
需要說(shuō)明的是,環(huán)形緩沖區(qū)中item的個(gè)數(shù)由軟件決定,每個(gè)item的start address以及l(fā)engh等控制信息,也由軟件實(shí)時(shí)更新。
在實(shí)際應(yīng)用中,要使得RDMA正常工作,需要初始化RDMA,RDMA的初始化流程如圖5所示,首先執(zhí)行步驟501,關(guān)閉(disable)RDMA的閾值(threshold)中斷,其中,中斷是指RDMA的讀指針與寫指針的差值為幾個(gè)item時(shí)觸發(fā)該中斷,即寫指針-讀指針=閾值中斷;該中斷主要是提醒軟件及時(shí)的配置item以讓RDMA的讀指針有數(shù)據(jù)可讀。在實(shí)際中,IC提供enable及disable該中斷的寄存器,軟件將該寄存器管控該threshold中斷的比特置1或置0,即可達(dá)到enable及disable該中斷的目的。
接著,執(zhí)行步驟502,配置RDMA的起始地址,該起始地址即RDMA所控制環(huán)形緩沖區(qū)存儲(chǔ)于內(nèi)存中的起始位置。在具體實(shí)現(xiàn)中,IC提供該起始地址的寄存器供軟件配置;但需要說(shuō)明的是,軟件配置的一定要是物理地址,而非虛擬地址,這是由DMA的特性決定的,DMA操作數(shù)據(jù)時(shí)會(huì)直接與DDR打交道,無(wú)須經(jīng)過(guò)CPU。
在步驟503中,配置所述RDMA的閾值,例如,當(dāng)閾值配置為1時(shí),則當(dāng)RDMA的wpt與其rpt的差值大于等于1時(shí),即觸發(fā)該中斷,執(zhí)行該中斷的中斷處理程序,比如及時(shí)配置新的item給RDMA讀取等。
在步驟504中,配置RDMA的寫指針指向所述RDMA所對(duì)應(yīng)環(huán)形緩沖區(qū)本身所在的內(nèi)存位置,即,設(shè)置RDMA的寫指針為RDMA的起始地址,同時(shí),該位置也是起始item的位置。
在步驟505中,設(shè)置RDMA的長(zhǎng)度,在實(shí)際中,該長(zhǎng)度指的是環(huán)形緩沖區(qū)中item的個(gè)數(shù),如20個(gè)。
在步驟506中,使能所述RDMA的閾值中斷;
在步驟507中,重置所述RDMA,在具體實(shí)現(xiàn)中,IC提供重置(reset)RDMAD寄存器,軟件配置該寄存器即可重置RDMA。
在步驟508中,若重置所述RDMA成功,開啟所述RDMA。在具體實(shí)現(xiàn)中,IC提供reset status寄存器,軟件讀取該寄存器,如果顯示reset done,則reset完畢。否則,軟件延時(shí)一段時(shí)間再讀取該寄存器,直至該寄存器顯示reset done。
執(zhí)行RDMA的初始化流程后,若判定RDMA初始化成功,則RDMA可以正常工作了。在具體實(shí)現(xiàn)中,判斷RDMA是否初始化成功可以采用如下方式:通過(guò)讀取RDMA的rpt(read pointer,讀指針),看其是否自動(dòng)關(guān)聯(lián)到設(shè)置的RDMA的wpt(write pointer,寫指針)的位置上,即RDMA對(duì)應(yīng)DDR的起始位置,來(lái)判斷RDMA是否初始化成功。如果關(guān)聯(lián)成功,則說(shuō)明RDMA的初始化正常結(jié)束,RDMA可以正常工作了。其中,判斷RDMA的rpt是否自動(dòng)關(guān)聯(lián)到設(shè)置的RDMA的wpt的位置上,可以為:假如軟件配置的RDMA的wpt為0x07000000(物理地址),reset RDMA后,讀取RDMA的rpt(通過(guò)讀取rpt所對(duì)應(yīng)的寄存器),如果rpt=0x7000000,則說(shuō)明rpt已經(jīng)關(guān)聯(lián)到wpt所在的位置。
步驟203,當(dāng)判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn);
在具體實(shí)現(xiàn)中,在執(zhí)行步驟203以前,本發(fā)明實(shí)施例首先判斷第一鏈表(tobe_played鏈表)是否為空,如果為空,則繼續(xù)chain新到來(lái)的數(shù)據(jù)的攜帶信息到該鏈表尾部;如果非空,則從第一鏈表中卸載(unchain)單位數(shù)據(jù)的結(jié)點(diǎn),具體是從tobe_played鏈表頭unchain單位數(shù)據(jù)的結(jié)點(diǎn)(此時(shí),新來(lái)的音頻數(shù)據(jù)的攜帶信息會(huì)繼續(xù)chain到該鏈表的尾部)。其中,單位數(shù)據(jù)優(yōu)選可以為一個(gè)結(jié)點(diǎn),該結(jié)點(diǎn)所維護(hù)的音頻數(shù)據(jù),也稱為一筆數(shù)據(jù)。
在本發(fā)明實(shí)施例中,設(shè)定待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),其中第一電視通道可以為多種通道中的一種。
步驟204,對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
當(dāng)unchain單位數(shù)據(jù)的結(jié)點(diǎn)以后,則可以依據(jù)該結(jié)點(diǎn)配置RDMA中對(duì)應(yīng)的item。在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,步驟204可以包括如下子步驟:
子步驟S11,確定所述寫指針?biāo)赶虻哪繕?biāo)控制節(jié)點(diǎn)item;
在具體實(shí)現(xiàn)中,可以采用兩種方式來(lái)確定目標(biāo)item,一是讀取wpt所對(duì)應(yīng)的寄存器,寄存器中保存有對(duì)應(yīng)的item信息;二是將RDMA的item(假如為20個(gè))實(shí)現(xiàn)為一個(gè)結(jié)構(gòu)體數(shù)組,通過(guò)該數(shù)組wpt所對(duì)應(yīng)的的索引即可 獲取wpt所在位置的目標(biāo)item。
子步驟S12,依據(jù)所述卸載的結(jié)點(diǎn)配置所述目標(biāo)控制節(jié)點(diǎn)item的控制信息。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,待播放音頻數(shù)據(jù)的攜帶信息可以包括所述待播放音頻數(shù)據(jù)所在的存儲(chǔ)器的物理地址信息,以及,所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度,當(dāng)控制信息包括控制節(jié)點(diǎn)item的起始地址參數(shù)及對(duì)應(yīng)的長(zhǎng)度參數(shù)時(shí),子步驟S12進(jìn)一步可以包括如下子步驟:
子步驟S121,將所述目標(biāo)控制節(jié)點(diǎn)item的起始地址參數(shù)指向所述物理地址信息;
子步驟S122,將所述目標(biāo)控制節(jié)點(diǎn)item的長(zhǎng)度參數(shù)設(shè)置為所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
具體而言,本發(fā)明實(shí)施例獲取目標(biāo)item后,配置該目標(biāo)item的第一個(gè)字(即起始地址參數(shù)),使之指向該筆待播音頻數(shù)據(jù)所在的DDR的物理地址,再配置該item的第二個(gè)字(即長(zhǎng)度參數(shù)),使其存儲(chǔ)該單位數(shù)據(jù)的待播放音頻數(shù)據(jù)的長(zhǎng)度。需要說(shuō)明的是,該長(zhǎng)度優(yōu)選可以為硬件要求的128字節(jié)的倍數(shù)。
步驟205,播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù);
配置完上述卸載的結(jié)點(diǎn)以后,該配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù)即可以被播放,在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,步驟205可以包括如下子步驟:
子步驟S21,更新所述寫指針;
由于RDMA的對(duì)應(yīng)緩沖區(qū)為環(huán)形緩沖區(qū),在一種優(yōu)選實(shí)現(xiàn)方式中,子步驟S21進(jìn)一步可以包括如下子步驟:
子步驟S211,判斷所述目標(biāo)控制節(jié)點(diǎn)item是否為所述環(huán)形緩沖區(qū)的最后一個(gè)控制節(jié)點(diǎn);若是,則執(zhí)行子步驟S212,否則,執(zhí)行子步驟S213;
子步驟S212,配置所述寫指針為所述RDMA的起始地址對(duì)應(yīng)的第一個(gè)控制節(jié)點(diǎn)item所在的位置;
子步驟S213,配置所述寫指針為所述環(huán)形緩沖區(qū)中所述目標(biāo)控制節(jié)點(diǎn) item的下一個(gè)控制節(jié)點(diǎn)的位置。
具體來(lái)說(shuō),由于RDMA被實(shí)現(xiàn)為Ring Buffer,因此,可以判斷該目標(biāo)item是否是ring buffer中的最后一個(gè)item,如果該目標(biāo)item為ring buffer中的最后一個(gè)item,則配置其wpt為RDMA起始位置的第一個(gè)item所在的位置。否則,配置其wpt為該目標(biāo)item的緊接著的下一個(gè)item的位置。
子步驟S22,計(jì)算所述RDMA的寫指針與讀指針的差值;
子步驟S23,若所述差值大于或等于預(yù)設(shè)的閾值,則讀取讀指針?biāo)赶虻目刂乒?jié)點(diǎn)item對(duì)應(yīng)的音頻數(shù)據(jù)進(jìn)行播放。
由于RDMA的wpt由軟件控制,其rpt由硬件自己維護(hù)。在上述配置完目標(biāo)item,更新了寫指針wpt后,當(dāng)更新了位置的wpt與RDMA的rpt的差值大于等于閾值(例如1個(gè)item)時(shí),RDMA便會(huì)自動(dòng)讀取其rpt指向的item對(duì)應(yīng)的內(nèi)存位置中的指定長(zhǎng)度的PCM音頻數(shù)據(jù)。
同時(shí),本發(fā)明實(shí)施例的RDMA還可以更新讀指針rpt,將rpt自動(dòng)更新至rpt所在位置的下一個(gè)item的位置上。由于RDMA的buffer為環(huán)形buffer,當(dāng)其rpt走到buffer尾部時(shí),會(huì)自動(dòng)ring到該buffer的起始位置,而wpt則需要軟件維護(hù)至環(huán)形buffer頭,從而循環(huán)利用該段內(nèi)存空間。
步驟206,將所述已播放音頻數(shù)據(jù)對(duì)應(yīng)的結(jié)點(diǎn)chain到第二鏈表尾部;
如圖3所示,對(duì)于配置完的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù)隨即進(jìn)行播放,播放完以后,則該結(jié)點(diǎn)可以chain到played鏈表尾部。
步驟207,當(dāng)檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn);
本發(fā)明實(shí)施例中的第二電視通道為異于第一電視通道的通道,在檢測(cè)到第一電視通道切換為第二電視通道時(shí),卸載并釋放第一鏈表中剩余的結(jié)點(diǎn)。具體來(lái)說(shuō),因?yàn)樵谕非袚Q前分配的音頻數(shù)據(jù),對(duì)應(yīng)的是上一電視通路中的音頻數(shù)據(jù),而通路切換完畢開始新切換到的通路的音頻數(shù)據(jù)的播放時(shí),會(huì)先從tobe_played鏈表頭unchain下一個(gè)結(jié)點(diǎn),如果該鏈表上仍然有未釋放的上個(gè)通路的音頻數(shù)據(jù),這些音頻數(shù)據(jù)會(huì)先配置給RDMA的item,從而RDMA會(huì)先讀走這些item對(duì)應(yīng)的音頻數(shù)據(jù),再播放實(shí)時(shí)配置的新通路的音頻數(shù)據(jù)。 因此,會(huì)產(chǎn)生通路切換后,先播放一會(huì)上一通路殘留的音頻數(shù)據(jù),再播放新切換到的通路的音頻數(shù)據(jù)的現(xiàn)象。本發(fā)明實(shí)施例在每次通路切換時(shí),可以將chain到tobe_played鏈表上從鏈表頭到鏈表尾的每筆未配置給RDMA的item,即剩余的未播放的音頻數(shù)據(jù)對(duì)應(yīng)的第一結(jié)點(diǎn)卸載并釋放掉,以解決切換通路時(shí),先播放一會(huì)上一通路殘留的音頻數(shù)據(jù)再播放新切換到的通路的音頻數(shù)據(jù)的問(wèn)題。另外,該卸載及釋放的動(dòng)作非常迅速,以毫秒級(jí)計(jì)算,如此,可以大大降低用戶的等待通道切換的時(shí)間,進(jìn)而提升用戶的視聽體驗(yàn)。對(duì)于已配置的音頻數(shù)據(jù)對(duì)應(yīng)的結(jié)點(diǎn)chain到第二鏈表中,后續(xù)步驟208對(duì)其進(jìn)行釋放。
需要說(shuō)明的是,步驟207與步驟205、步驟206可以并行執(zhí)行,也可以串行執(zhí)行,并沒(méi)有特定的先后執(zhí)行順序。
步驟208,若判定所述第二鏈表非空時(shí),從所述第二鏈表中卸載并釋放所述已播放音頻數(shù)據(jù)對(duì)應(yīng)的第二結(jié)點(diǎn)。
在played鏈表中,對(duì)于已播放的音頻數(shù)據(jù)對(duì)應(yīng)的第二結(jié)點(diǎn),還可以對(duì)其進(jìn)行卸載并釋放處理。具體來(lái)說(shuō),如果判定played鏈表非空,則從played鏈表頭unchain一個(gè)已播音頻數(shù)據(jù)對(duì)應(yīng)的第二結(jié)點(diǎn),卸載并釋放其占用的內(nèi)存空間,以利于存儲(chǔ)音頻數(shù)據(jù)內(nèi)存空間的循環(huán)利用。
在本發(fā)明實(shí)施例中,使用鏈表的形式可以有效區(qū)分待播及已播音頻數(shù)據(jù)。另外,以鏈表的形式對(duì)待播音頻數(shù)據(jù)和已播音頻數(shù)據(jù)分塊、分別進(jìn)行管理,可以實(shí)時(shí)配置待播放音頻數(shù)據(jù),實(shí)時(shí)播放已配置音頻數(shù)據(jù)以及實(shí)時(shí)釋放已播放音頻數(shù)據(jù)。同時(shí),控制硬件通過(guò)二級(jí)映射的方式去配置、尋址及播放指定位置、指定長(zhǎng)度的音頻數(shù)據(jù),可以很大程度地提高電視音頻數(shù)據(jù)的管理效率,確保音頻數(shù)據(jù)實(shí)時(shí)、高效、穩(wěn)定、有序地播放。
進(jìn)一步的,本發(fā)明實(shí)施例使得電視各通路音頻數(shù)據(jù)的管理更加靈活,對(duì)待播放及已播放音頻數(shù)據(jù)的控制條理更加分明,內(nèi)存釋放更加及時(shí),重用效率更高,各電視音頻模塊協(xié)調(diào)、調(diào)度邏輯性更加縝密,音頻數(shù)據(jù)實(shí)時(shí)播放更加穩(wěn)定、高效、流暢,可以很大程度地提升電視設(shè)備的視聽品質(zhì),提升用戶的視聽體驗(yàn)。
對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
參照?qǐng)D6,示出了本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放裝置實(shí)施例的結(jié)構(gòu)框圖,可以包括以下模塊:
鏈表設(shè)定模塊601,用于設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
配置模塊602,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
播放模塊603,用于播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù);
第一釋放模塊604,用于在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中剩余的結(jié)點(diǎn)。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述鏈表設(shè)定模塊601還用于設(shè)定第二鏈表,所述第二鏈表用于維護(hù)已播放音頻數(shù)據(jù),所述第二鏈表包括多個(gè)存儲(chǔ)所述已播放音頻數(shù)據(jù)的攜帶信息的第二結(jié)點(diǎn);所述裝置還包括:
第二釋放模塊,用于在判定所述第二鏈表非空時(shí),從所述第二鏈表中卸載并釋放所述已播放音頻數(shù)據(jù)對(duì)應(yīng)的第二結(jié)點(diǎn)。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述裝置還包括:
讀取模塊,用于采用直接內(nèi)存讀取RDMA讀取待播放音頻數(shù)據(jù),其中,所述RDMA具有對(duì)應(yīng)的緩沖區(qū),所述緩沖區(qū)包括讀指針、寫指針以及多個(gè)控制節(jié)點(diǎn)item,所述控制節(jié)點(diǎn)item具有控制信息。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述配置模塊602包括:
卸載子模塊,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載 單位數(shù)據(jù)的結(jié)點(diǎn);
目標(biāo)節(jié)點(diǎn)確定子模塊,用于確定所述寫指針?biāo)赶虻哪繕?biāo)控制節(jié)點(diǎn)item;
節(jié)點(diǎn)配置子模塊,用于依據(jù)所述卸載的結(jié)點(diǎn)配置所述目標(biāo)控制節(jié)點(diǎn)item的控制信息。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述攜帶信息包括所述待播放音頻數(shù)據(jù)所在的存儲(chǔ)器的物理地址信息,以及,所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度,所述控制信息包括控制節(jié)點(diǎn)item的起始地址參數(shù)及對(duì)應(yīng)的長(zhǎng)度參數(shù),所述節(jié)點(diǎn)配置子模塊還用于:
將所述目標(biāo)控制節(jié)點(diǎn)item的起始地址參數(shù)指向所述物理地址信息;
將所述目標(biāo)控制節(jié)點(diǎn)item的長(zhǎng)度參數(shù)設(shè)置為所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述播放模塊603包括:
指針更新子模塊,用于更新所述寫指針;
差值計(jì)算子模塊,用于計(jì)算所述RDMA的寫指針與讀指針的差值;
讀取子模塊,用于在所述差值大于或等于預(yù)設(shè)的閾值時(shí),則讀取讀指針?biāo)赶虻目刂乒?jié)點(diǎn)item對(duì)應(yīng)的音頻數(shù)據(jù)進(jìn)行播放。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述緩沖區(qū)為環(huán)形緩沖區(qū),所述指針更新子模塊還用于:
判斷所述目標(biāo)控制節(jié)點(diǎn)item是否為所述環(huán)形緩沖區(qū)的最后一個(gè)控制節(jié)點(diǎn);
若是,則配置所述寫指針為所述RDMA的起始地址對(duì)應(yīng)的第一個(gè)控制節(jié)點(diǎn)item所在的位置;
若否,則配置所述寫指針為所述環(huán)形緩沖區(qū)中所述目標(biāo)控制節(jié)點(diǎn)item的下一個(gè)控制節(jié)點(diǎn)的位置。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述裝置還包括:
初始化模塊,用于初始化所述直接內(nèi)存讀取RDMA;
所述初始化模塊進(jìn)一步用于:
關(guān)閉所述RDMA的閾值中斷;
配置所述RDMA的起始地址;
配置所述RDMA的閾值;
配置所述RDMA的寫指針為所述RDMA的起始地址;
設(shè)置所述RDMA的長(zhǎng)度;
使能所述RDMA的閾值中斷;
重置所述RDMA;
若重置所述RDMA成功,開啟所述RDMA。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
參照?qǐng)D7,示出了本發(fā)明實(shí)施例的一種基于多通道電視音頻數(shù)據(jù)的播放系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖,可以包括以下模塊:
輸入單元701,用于接收多個(gè)電視通道輸入的音頻數(shù)據(jù);
通道切換單元702,用于切換不同的電視通道;
在具體實(shí)現(xiàn)中,通道切換單元702的通路切換的動(dòng)作,可以由軟件更改音頻IC設(shè)計(jì)提供的負(fù)責(zé)音頻通路切換的寄存器實(shí)現(xiàn),比如0xbf540280[28:26],負(fù)責(zé)音頻輸入源的切換(即通路切換),軟件只需修改IC提供的datasheet中該寄存器相應(yīng)比特的值,即可達(dá)到切換到相應(yīng)通道的目的。
音頻緩沖區(qū)703,用于緩存所述輸入單元接收的音頻數(shù)據(jù);
音頻讀取單元704,用于讀取所述音頻緩沖區(qū)中的音頻數(shù)據(jù);
控制調(diào)度單元705,用于控制所述音頻讀取單元讀取所述音頻緩沖區(qū)中的音頻數(shù)據(jù);
音頻后處理單元706,用于對(duì)所述音頻讀取單元讀取的音頻數(shù)據(jù)進(jìn)行預(yù)設(shè)音效處理;
在具體實(shí)現(xiàn)中,音頻后處理單元706進(jìn)行的預(yù)設(shè)音效處理可以包括AVC(Automatic Volume Control,自動(dòng)音量控制)、SRC(Sample Rate Convert,采樣率轉(zhuǎn)換)、EQ、Balance等處理。
輸出單元707,用于播放所述處理后的音頻數(shù)據(jù);
輸出單元707將處理后的音頻數(shù)據(jù)經(jīng)由喇叭/耳機(jī)播放輸出。
其中,所述控制調(diào)度單元705包括:
鏈表設(shè)定模塊,用于設(shè)定第一鏈表,所述第一鏈表用于維護(hù)待播放音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)為來(lái)源于第一電視通道的音頻數(shù)據(jù),所述待播放音頻數(shù)據(jù)包括攜帶信息,所述第一鏈表包括多個(gè)存儲(chǔ)所述攜帶信息的第一結(jié)點(diǎn);
配置模塊,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載單位數(shù)據(jù)的結(jié)點(diǎn),并對(duì)所述卸載的結(jié)點(diǎn)進(jìn)行配置;
第一釋放模塊,用于在檢測(cè)到所述第一電視通道切換為第二電視通道時(shí),卸載并釋放所述第一鏈表中的剩余的結(jié)點(diǎn);
所述輸出單元707包括:
播放模塊,用于播放所述配置完成的結(jié)點(diǎn)對(duì)應(yīng)的待播放音頻數(shù)據(jù)。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述鏈表設(shè)定模塊還用于設(shè)定第二鏈表,所述第二鏈表用于維護(hù)已播放音頻數(shù)據(jù),所述第二鏈表包括多個(gè)存儲(chǔ)所述已播放音頻數(shù)據(jù)的攜帶信息的第二結(jié)點(diǎn);所述控制調(diào)度單元705還包括:
第二釋放模塊,用于在判定所述第二鏈表非空時(shí),從所述第二鏈表中釋放所述已播放音頻數(shù)據(jù)對(duì)應(yīng)的第二結(jié)點(diǎn)。
在具體實(shí)現(xiàn)中,音頻讀取模塊將音頻數(shù)據(jù)從音頻緩沖區(qū)經(jīng)由AXI(Advanced eXtensible Interface)高速總線讀取到音頻信號(hào)線上,在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,音頻讀取單元704可以由軟件控制RDMA實(shí)現(xiàn),包括如下模塊:
讀取模塊,用于采用直接內(nèi)存讀取RDMA讀取待播放音頻數(shù)據(jù),其中,所述RDMA具有對(duì)應(yīng)的緩沖區(qū),所述緩沖區(qū)包括讀指針、寫指針以及多個(gè)控制節(jié)點(diǎn)item,所述控制節(jié)點(diǎn)item具有控制信息。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述配置模塊包括:
卸載子模塊,用于在判定所述第一鏈表非空時(shí),從所述第一鏈表中卸載 單位數(shù)據(jù)的結(jié)點(diǎn);
目標(biāo)節(jié)點(diǎn)確定子模塊,用于確定所述寫指針?biāo)赶虻哪繕?biāo)控制節(jié)點(diǎn)item;
節(jié)點(diǎn)配置子模塊,用于依據(jù)所述卸載的結(jié)點(diǎn)配置所述目標(biāo)控制節(jié)點(diǎn)item的控制信息。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述攜帶信息包括所述待播放音頻數(shù)據(jù)所在的存儲(chǔ)器的物理地址信息,以及所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度,所述控制信息包括控制節(jié)點(diǎn)item的起始地址參數(shù)及對(duì)應(yīng)的長(zhǎng)度參數(shù),所述節(jié)點(diǎn)配置子模塊還用于:
將所述目標(biāo)控制節(jié)點(diǎn)item的起始地址參數(shù)指向所述物理地址信息;
將所述目標(biāo)控制節(jié)點(diǎn)item的長(zhǎng)度參數(shù)設(shè)置為所述待播放音頻數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述播放模塊包括:
指針更新子模塊,用于更新所述寫指針;
差值計(jì)算子模塊,用于計(jì)算所述RDMA的寫指針與讀指針的差值;
讀取子模塊,用于在所述差值大于或等于預(yù)設(shè)的閾值時(shí),讀取讀指針?biāo)赶虻目刂乒?jié)點(diǎn)item對(duì)應(yīng)的音頻數(shù)據(jù)進(jìn)行播放。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述緩沖區(qū)為環(huán)形緩沖區(qū),所述指針更新子模塊還用于:
判斷所述目標(biāo)控制節(jié)點(diǎn)item是否為所述環(huán)形緩沖區(qū)的最后一個(gè)控制節(jié)點(diǎn);
若是,則配置所述寫指針為所述RDMA的起始地址對(duì)應(yīng)的第一個(gè)控制節(jié)點(diǎn)item所在的位置;
若否,則配置所述寫指針為所述環(huán)形緩沖區(qū)中所述目標(biāo)控制節(jié)點(diǎn)item的下一個(gè)控制節(jié)點(diǎn)的位置。
在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述輸出單元707還包括:
初始化模塊,用于初始化所述直接內(nèi)存讀取RDMA;
所述初始化模塊進(jìn)一步用于:
關(guān)閉所述RDMA的閾值中斷;
配置所述RDMA的起始地址;
配置所述RDMA的閾值;
配置所述RDMA的寫指針為所述RDMA的起始地址;
設(shè)置所述RDMA的長(zhǎng)度;
使能所述RDMA的閾值中斷;
重置所述RDMA;
若重置所述RDMA成功,開啟所述RDMA。
對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的基于多通道電視音頻數(shù)據(jù)的播放方法、裝置及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。