欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于國產(chǎn)CPU和操作系統(tǒng)的流數(shù)據(jù)的處理引擎及方法與流程

文檔序號(hào):11386719閱讀:369來源:國知局
基于國產(chǎn)CPU和操作系統(tǒng)的流數(shù)據(jù)的處理引擎及方法與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎及方法。



背景技術(shù):

流數(shù)據(jù)的處理,有著其特殊性,主要原因在于流數(shù)據(jù)的數(shù)據(jù)量大,采集、壓縮、傳輸過程、解碼、播放過程中對(duì)硬件性能和軟件的穩(wěn)定性要求很高,對(duì)機(jī)器造成很大的處理壓力。

在現(xiàn)有技術(shù)中,流數(shù)據(jù)的處理過程中,整個(gè)處理過程中的各個(gè)單元是固定不變的,當(dāng)需要修改某個(gè)單元的功能時(shí),需要對(duì)整個(gè)處理流程進(jìn)行修改。

通過上述描述可見,現(xiàn)有技術(shù)中的流數(shù)據(jù)處理過程不夠靈活。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎及方法,能夠更加靈活地實(shí)現(xiàn)流數(shù)據(jù)處理。

第一方面,本發(fā)明實(shí)施例提供了一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎,包括:

組裝器接口、組裝器、至少一個(gè)可用的流組件和組圖接口;

每個(gè)所述可用的流組件具有至少一種處理流數(shù)據(jù)的功能;

所述組裝器接口,用于當(dāng)接收到組裝指令時(shí),運(yùn)行所述組裝器;

所述組裝器,用于從所述至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例,其中,在所述組圖實(shí)例中,每個(gè)所述待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

所述組圖接口,用于當(dāng)接收到運(yùn)行指令時(shí),控制所述組圖實(shí)例進(jìn)行流數(shù)據(jù)處理;

所述組圖實(shí)例中的每個(gè)所述待組裝的流組件,用于判斷對(duì)應(yīng)的至少一個(gè)所述輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的所述至少一種處理流數(shù)據(jù)的功能,處理所述待處理的流數(shù)據(jù)。

進(jìn)一步地,該引擎進(jìn)一步包括:描述文件加載接口;

所述描述文件加載接口,用于加載預(yù)設(shè)的數(shù)據(jù)流xml(extensiblemarkuplanguage,可擴(kuò)展標(biāo)記語言)描述文件;

所述組裝器,用于解析所述描述文件加載接口加載的所述數(shù)據(jù)流xml描述文件,根據(jù)所述數(shù)據(jù)流xml描述文件,確定所述至少一個(gè)待組裝的流組件。

進(jìn)一步地,所述組裝器接口,進(jìn)一步用于接收外部發(fā)來的至少一個(gè)選擇指令,其中,每個(gè)所述選擇指令對(duì)應(yīng)所述待組裝的流組件,每個(gè)所述選擇指令中攜帶對(duì)應(yīng)的所述待組裝的流組件的組件信息;

所述組裝器,用于根據(jù)每個(gè)所述選擇指令中攜帶的所述組件信息,確定每個(gè)所述選擇指令對(duì)應(yīng)的所述待組裝的流組件。

進(jìn)一步地,該引擎進(jìn)一步包括:流組件注冊(cè)器;

所述流組件注冊(cè)器,用于掃描預(yù)先設(shè)置的目錄中是否存在未注冊(cè)的流組件,如果是,則實(shí)現(xiàn)所述未注冊(cè)的流組件的注冊(cè),將注冊(cè)后的流組件作為所述可用的流組件。

進(jìn)一步地,所述組圖接口,進(jìn)一步用于當(dāng)接收到暫停指令時(shí),控制所述組圖實(shí)例暫停流數(shù)據(jù)處理,當(dāng)接收到銷毀指令時(shí),銷毀所述組圖實(shí)例。

進(jìn)一步地,所述組裝器,進(jìn)一步用于為所述組圖實(shí)例創(chuàng)建至少一個(gè)調(diào)度器,從所述至少一個(gè)待組裝的流組件中,為每個(gè)所述調(diào)度器分配至少一個(gè)待調(diào)度的流組件;

每個(gè)所述調(diào)度器,用于周期性地喚起所述組裝器分配的所述至少一個(gè)待調(diào)度的流組件。

進(jìn)一步地,該引擎進(jìn)一步包括:生成器;

所述組裝器,在所述根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例之前,進(jìn)一步用于調(diào)用所述生成器;

所述生成器,用于初始化所述至少一個(gè)待組裝的流組件。

進(jìn)一步地,所述生成器,用于為每個(gè)所述待組裝的流組件設(shè)置至少一個(gè)輸入隊(duì)列;

所述組裝器,用于針對(duì)所述組圖實(shí)例中任一所述待組裝的流組件,將當(dāng)前待組裝的流組件的輸入隊(duì)列作為相鄰的前端的所述待組裝的流組件的輸出隊(duì)列,鏈接所述至少一個(gè)待組裝的流組件,生成所述組圖實(shí)例。

進(jìn)一步地,該引擎進(jìn)一步包括:初始化接口和核心模塊;

所述初始化接口,用于當(dāng)接收到啟動(dòng)引擎指令時(shí),啟動(dòng)所述核心模塊;

所述核心模塊,用于啟動(dòng)所述流組件注冊(cè)器。

第二方面,本發(fā)明實(shí)施例提供了一種利用第一方面中任一所述的基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的流數(shù)據(jù)的處理方法,包括:

組裝器接口在接收到組裝指令時(shí),運(yùn)行組裝器;

所述組裝器從至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例,其中,在所述組圖實(shí)例中,每個(gè)所述待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

組圖接口在接收到運(yùn)行指令時(shí),控制所述組圖實(shí)例進(jìn)行流數(shù)據(jù)處理;

所述組圖實(shí)例中的每個(gè)所述待組裝的流組件判斷對(duì)應(yīng)的至少一個(gè)所述輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的所述至少一種處理流數(shù)據(jù)的功能,處理所述待處理的流數(shù)據(jù)。

在本發(fā)明實(shí)施例中,在引擎中設(shè)置有至少一個(gè)可用的流組件,當(dāng)組裝器接口接到的組裝指令時(shí),組裝器可以從至少一個(gè)可用的流組件中選擇出需要的至少一個(gè)待組裝的流組件,生成組圖實(shí)例,通過組圖實(shí)例中的各個(gè)流組件實(shí)現(xiàn)流數(shù)據(jù)的處理,通過上述描述可見,用于進(jìn)行流數(shù)據(jù)的處理的各個(gè)流組件可以從預(yù)先設(shè)置至少一個(gè)可用的流組件中靈活選擇,進(jìn)而能夠更加靈活地實(shí)現(xiàn)流數(shù)據(jù)處理。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明一實(shí)施例提供的一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖2是本發(fā)明一實(shí)施例提供的另一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖3是本發(fā)明一實(shí)施例提供的又一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖4是本發(fā)明一實(shí)施例提供的在一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖5是本發(fā)明一實(shí)施例提供的還一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖6是本發(fā)明一實(shí)施例提供的又一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的示意圖;

圖7是本發(fā)明一實(shí)施例提供的一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的類結(jié)構(gòu)圖;

圖8是本發(fā)明一實(shí)施例提供的一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理方法的流程圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明實(shí)施例提供了一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎,包括:

組裝器接口、組裝器、至少一個(gè)可用的流組件和組圖接口;

每個(gè)所述可用的流組件具有至少一種處理流數(shù)據(jù)的功能;

所述組裝器接口,用于當(dāng)接收到組裝指令時(shí),運(yùn)行所述組裝器;

所述組裝器,用于從所述至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例,其中,在所述組圖實(shí)例中,每個(gè)所述待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

所述組圖接口,用于當(dāng)接收到運(yùn)行指令時(shí),控制所述組圖實(shí)例進(jìn)行流數(shù)據(jù)處理;

所述組圖實(shí)例中的每個(gè)所述待組裝的流組件,用于判斷對(duì)應(yīng)的至少一個(gè)所述輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的所述至少一種處理流數(shù)據(jù)的功能,處理所述待處理的流數(shù)據(jù)。

在本發(fā)明實(shí)施例中,在引擎中設(shè)置有至少一個(gè)可用的流組件,當(dāng)組裝器接口接到的組裝指令時(shí),組裝器可以從至少一個(gè)可用的流組件中選擇出需要的至少一個(gè)待組裝的流組件,生成組圖實(shí)例,通過組圖實(shí)例中的各個(gè)流組件實(shí)現(xiàn)流數(shù)據(jù)的處理,通過上述描述可見,用于進(jìn)行流數(shù)據(jù)的處理的各個(gè)流組件可以從預(yù)先設(shè)置至少一個(gè)可用的流組件中靈活選擇,進(jìn)而能夠更加靈活地實(shí)現(xiàn)流數(shù)據(jù)處理。

如圖1所示,本發(fā)明實(shí)施例提供了一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎,包括:

組裝器接口101、組裝器102、三個(gè)可用的流組件103和組圖接口104;

每個(gè)可用的流組件103具有至少一種處理流數(shù)據(jù)的功能;

組裝器接口104,用于當(dāng)接收到組裝指令時(shí),運(yùn)行組裝器102;

組裝器102,用于從至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,根據(jù)至少一個(gè)待組裝的流組件,生成組圖實(shí)例,其中,在組圖實(shí)例中,每個(gè)待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

組圖接口104,用于當(dāng)接收到運(yùn)行指令時(shí),控制組圖實(shí)例進(jìn)行流數(shù)據(jù)處理;

組圖實(shí)例中的每個(gè)待組裝的流組件103,用于判斷對(duì)應(yīng)的至少一個(gè)輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的至少一種處理流數(shù)據(jù)的功能,處理待處理的流數(shù)據(jù)。

在本發(fā)明實(shí)施例中,處理流數(shù)據(jù)的功能包括:采集功能、編碼功能、傳輸功能、解碼功能、顯示功能等。例如:流組件a具有采集功能、流組件b具有編碼功能、流組件c具有傳輸功能、流組件d具有解碼功能和顯示功能。另外,在至少一個(gè)可用的流組件中可以有多個(gè)功能相同的流組件,具有功能相同的流組件可以具有不同的處理方式,舉例來說,流組件b和流組件e都具有編碼功能,但是,流組件b采用divx進(jìn)行編碼,流組件e采用xvid進(jìn)行編碼。

基于圖1所示的引擎,如圖2所示,為了能夠快速的生成組圖實(shí)例,在本發(fā)明一實(shí)施例中,該引擎進(jìn)一步包括:描述文件加載接口201;

所述描述文件加載接口201,用于加載預(yù)設(shè)的數(shù)據(jù)流xml描述文件;

所述組裝器,用于解析所述描述文件加載接口加載的所述數(shù)據(jù)流xml描述文件,根據(jù)所述數(shù)據(jù)流xml描述文件,確定所述至少一個(gè)待組裝的流組件。

在本發(fā)明實(shí)施例中,數(shù)據(jù)流xml描述文件中可以攜帶組圖實(shí)例中需要的各個(gè)流組件的相關(guān)信息。組裝器可以通過解析數(shù)據(jù)流xml描述文件,從至少一個(gè)可用的流組件中,確定出該至少一個(gè)待組裝的流組件。組裝器通過解析數(shù)據(jù)流xml描述文件,可以確定組圖實(shí)例中各個(gè)流組件的組成。這里的數(shù)據(jù)流xml描述文件可以是外部根據(jù)需要配置的,例如:外部需要具有divx解碼功能的流組件,則可以在數(shù)據(jù)流xml描述文件描述該需求,或者,直接在數(shù)據(jù)流xml描述文件中攜帶具有divx解碼功能的流組件的信息。

另外,數(shù)據(jù)流xml描述文件中還可以包括組圖實(shí)例中各個(gè)流組件之間的順序,組裝器可以通過該順序來組裝該至少一個(gè)待組裝的流組件,進(jìn)而生成組圖實(shí)例。

在本發(fā)明一實(shí)施例中,所述組裝器接口,進(jìn)一步用于接收外部發(fā)來的至少一個(gè)選擇指令,其中,每個(gè)所述選擇指令對(duì)應(yīng)所述待組裝的流組件,每個(gè)所述選擇指令中攜帶對(duì)應(yīng)的所述待組裝的流組件的組件信息;

所述組裝器,用于根據(jù)每個(gè)所述選擇指令中攜帶的所述組件信息,確定每個(gè)所述選擇指令對(duì)應(yīng)的所述待組裝的流組件。

在本發(fā)明實(shí)施例中,外部可以通過調(diào)用組裝器接口來確定組圖實(shí)例中的各個(gè)流組件,組件信息中可以包括需要的流組件的標(biāo)識(shí)信息。組件信息中也可以包括需要的功能,使得組裝器可以根據(jù)需要的功能找到對(duì)應(yīng)的流組件。

另外,外部還可以通過選擇指令來確定組圖實(shí)例中各個(gè)流組件的順序,例如:組裝器可以通過接收到的選擇指令的順序,來確定組圖實(shí)例中各個(gè)流組件的順序,也可以通過選擇指令中攜帶的關(guān)于順序的信息,來確定組圖實(shí)例中各個(gè)流組件的順序。

基于圖1所示的引擎,如圖3所示,在本發(fā)明一實(shí)施例中,該引擎進(jìn)一步包括:流組件注冊(cè)器301;

所述流組件注冊(cè)器301,用于掃描預(yù)先設(shè)置的目錄中是否存在未注冊(cè)的流組件,如果是,則實(shí)現(xiàn)所述未注冊(cè)的流組件的注冊(cè),將注冊(cè)后的流組件作為所述可用的流組件。

在本發(fā)明實(shí)施例中,外部開發(fā)的流組件可以保存到該預(yù)先設(shè)置的目錄中,通過流組件注冊(cè)器可以將該目錄中的注冊(cè),以使得這些流組件可以被組裝到組圖實(shí)例中。通過該流組件注冊(cè)器使得外部可以根據(jù)需求開發(fā)流組件,進(jìn)而使得流數(shù)據(jù)處理更加靈活。

基于圖3所示的引擎,如圖4所示,在本發(fā)明一實(shí)施例中,該引擎進(jìn)一步包括:初始化接口401和核心模塊402;

所述初始化接口401,用于當(dāng)接收到啟動(dòng)引擎指令時(shí),啟動(dòng)所述核心模塊;

所述核心模塊402,用于啟動(dòng)所述流組件注冊(cè)器301。

在本發(fā)明實(shí)施例中,當(dāng)需要進(jìn)行流數(shù)據(jù)處理時(shí),可以通過初始化接口啟動(dòng)核心模塊,進(jìn)而通過核心模塊啟動(dòng)流組件注冊(cè)器,使得各個(gè)流組件被注冊(cè),成為可用的流組件。

在本發(fā)明實(shí)施例中,核心模塊還可以用于初始化該引擎,可以用于該引擎中各個(gè)模塊的啟動(dòng)及初始化,可以用于該引擎中各個(gè)模塊的調(diào)度。通過核心模塊可以實(shí)現(xiàn)該引擎的核心調(diào)用。

為了更方便控制流數(shù)據(jù)的處理過程,在本發(fā)明一實(shí)施例中,所述組圖接口,進(jìn)一步用于當(dāng)接收到暫停指令時(shí),控制所述組圖實(shí)例暫停流數(shù)據(jù)處理,當(dāng)接收到銷毀指令時(shí),銷毀所述組圖實(shí)例。

在本發(fā)明實(shí)施例中,組圖實(shí)例可以包括:就緒、運(yùn)行、暫停、銷毀這4中狀態(tài)。當(dāng)組裝器生成組圖實(shí)例時(shí),組圖實(shí)例的初始狀態(tài)為就緒狀態(tài),當(dāng)組圖接口接收到運(yùn)行指令時(shí),組圖實(shí)例處于運(yùn)行狀態(tài),組圖實(shí)例可以進(jìn)行流數(shù)據(jù)處理,當(dāng)組圖接口接收到暫停指令時(shí),組圖實(shí)例處于暫停狀態(tài),組圖實(shí)例暫停流數(shù)據(jù)處理,當(dāng)組圖接口接收到銷毀指令時(shí),組圖實(shí)例處于銷毀狀態(tài),組圖實(shí)例被銷毀。其中,暫停狀態(tài)和運(yùn)行狀態(tài)可以相互轉(zhuǎn)換。

在本發(fā)明一實(shí)施例中,為了同步整個(gè)流數(shù)據(jù)處理流程中不同的元素,組圖實(shí)例在就緒狀態(tài)時(shí),為所有的元素選擇并指定一個(gè)全局的時(shí)鐘,當(dāng)組圖實(shí)例的狀態(tài)轉(zhuǎn)化為運(yùn)行狀態(tài)時(shí),該時(shí)鐘會(huì)被重置。這里的元素指的是組圖實(shí)例中的各個(gè)流組件,通過該全局的時(shí)鐘,可以使得組圖實(shí)例中的各個(gè)流組件的時(shí)鐘同步。

在本發(fā)明一實(shí)施例中,所述組裝器,進(jìn)一步用于為所述組圖實(shí)例創(chuàng)建至少一個(gè)調(diào)度器,從所述至少一個(gè)待組裝的流組件中,為每個(gè)所述調(diào)度器分配至少一個(gè)待調(diào)度的流組件;

每個(gè)所述調(diào)度器,用于周期性地喚起所述組裝器分配的所述至少一個(gè)待調(diào)度的流組件。

在本發(fā)明實(shí)施例中,調(diào)度器是組圖實(shí)例的動(dòng)力核心,調(diào)度器可以運(yùn)行在獨(dú)立的線程中,調(diào)度器用于定時(shí)喚起組圖實(shí)例中的各個(gè)流組件,流組件被喚起后,進(jìn)行流數(shù)據(jù)處理。該至少一個(gè)調(diào)度器可以同時(shí)運(yùn)行,例如:一個(gè)調(diào)度器負(fù)責(zé)音頻、一個(gè)調(diào)度器負(fù)責(zé)視頻。

基于圖1所示的引擎,如圖5所示,在本發(fā)明一實(shí)施例中,該引擎進(jìn)一步包括:生成器501;

所述組裝器,在所述根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例之前,進(jìn)一步用于調(diào)用所述生成器;

所述生成器501,用于初始化所述至少一個(gè)待組裝的流組件。

在本發(fā)明實(shí)施例中,通過生成器可以對(duì)流組件的一些參數(shù)進(jìn)行初始化,這些參數(shù)根據(jù)流組件的功能不同而不同,例如:針對(duì)具有采集功能的流組件,該參數(shù)可以包括采集的頻率、采集的波特率等。

在本發(fā)明一實(shí)施例中,所述生成器,用于為每個(gè)所述待組裝的流組件設(shè)置至少一個(gè)輸入隊(duì)列;

所述組裝器,用于針對(duì)所述組圖實(shí)例中任一所述待組裝的流組件,將當(dāng)前待組裝的流組件的輸入隊(duì)列作為相鄰的前端的所述待組裝的流組件的輸出隊(duì)列,鏈接所述至少一個(gè)待組裝的流組件,生成所述組圖實(shí)例。

在本發(fā)明實(shí)施例中,在組圖實(shí)例中,任意兩個(gè)相鄰的流組件之間通過隊(duì)列相連。組裝器通過各個(gè)待組裝的流組件的輸入隊(duì)列將各個(gè)待組裝的流組件鏈接到組圖實(shí)例中。在組圖實(shí)例中,前一個(gè)處理節(jié)點(diǎn)的輸出作為后一個(gè)處理節(jié)點(diǎn)的輸入,其中,處理節(jié)點(diǎn)指的是組圖實(shí)例中的各個(gè)流組件。

在本發(fā)明實(shí)施例中,在組圖實(shí)例中,每個(gè)流組件都有對(duì)應(yīng)的輸入隊(duì)列和輸出隊(duì)列,組裝器通過這些輸入隊(duì)列和輸出隊(duì)列將流組件連接成一個(gè)組圖實(shí)例中。在組圖實(shí)例中,有一個(gè)起始節(jié)點(diǎn),一個(gè)結(jié)束節(jié)點(diǎn),數(shù)據(jù)在組圖實(shí)例中單向流動(dòng),前一個(gè)節(jié)點(diǎn)的輸出作為后一個(gè)節(jié)點(diǎn)的輸入,每個(gè)節(jié)點(diǎn)可以支持多個(gè)輸入、輸出,這里的節(jié)點(diǎn)是指組圖實(shí)例中的各個(gè)流組件。流組件會(huì)順序讀取輸入隊(duì)列中的待處理的流數(shù)據(jù),對(duì)讀取的待處理的流數(shù)據(jù)做處理后寫入輸出隊(duì)列。每個(gè)流組件會(huì)啟動(dòng)處理線程,來處理輸入隊(duì)列的數(shù)據(jù),并將處理完成的數(shù)據(jù)寫入輸出隊(duì)列。

舉例來說,在一個(gè)組圖實(shí)例中,包括:流組件1、流組件2、流組件3、流組件4、流組件5,其中,流組件1具有采集功能、流組件2具有編碼功能、流組件3具有傳輸功能、流組件4具有解碼功能、流組件5具有顯示功能。在組圖實(shí)例中,起始的流組件為流組件1,結(jié)束的流組件為流組件5。其中,流組件1的輸入隊(duì)列為隊(duì)列1,流組件2的輸入隊(duì)列為隊(duì)列2,流組件3的輸入隊(duì)列為隊(duì)列3,流組件4的輸入隊(duì)列為隊(duì)列4,流組件5的輸入隊(duì)列為隊(duì)列5。根據(jù)各個(gè)流組件的功能,流組件在組圖實(shí)例中的順序?yàn)椋毫鹘M件1、流組件2、流組件3、流組件4、流組件5。其中,隊(duì)列2即是流組件2的輸入隊(duì)列,又是流組件1的輸出隊(duì)列;隊(duì)列3即是流組件3的輸入隊(duì)列,又是流組件2的輸出隊(duì)列;隊(duì)列4即是流組件4的輸入隊(duì)列,又是流組件3的輸出隊(duì)列;隊(duì)列5即是流組件5的輸入隊(duì)列,又是流組件4的輸出隊(duì)列。這樣,流組件1通過采集功能處理后的流數(shù)據(jù)輸出到隊(duì)列2中,流組件2從隊(duì)列2中獲取流數(shù)據(jù),通過編碼功能處理后輸出到隊(duì)列3中,流組件3從隊(duì)列3中獲取流數(shù)據(jù),通過傳輸功能處理后輸出到隊(duì)列4中,流組件4從隊(duì)列4中獲取流數(shù)據(jù),通過解碼功能處理后輸出到隊(duì)列5中,流組件5從隊(duì)列5中獲取流數(shù)據(jù),通過顯示功能處理后輸出。

在本發(fā)明實(shí)施例中,流組件,進(jìn)一步用于提供數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括:流組件的唯一id、名稱、功能描述、輸入隊(duì)列個(gè)數(shù)、輸出隊(duì)列個(gè)數(shù)、初始化函數(shù)、預(yù)處理函數(shù)、處理函數(shù)、后處理函數(shù)、釋放函數(shù)、參數(shù)設(shè)置調(diào)用函數(shù)列表結(jié)構(gòu)和流組件類別中的任意一個(gè)或多個(gè)。

流組件對(duì)外提供統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。流組件注冊(cè)器可以通過該數(shù)據(jù)結(jié)構(gòu)對(duì)流組件進(jìn)行注冊(cè),生成器可以通過該數(shù)據(jù)結(jié)構(gòu)對(duì)流組件進(jìn)行初始化。具體地,流組件注冊(cè)器可以通過數(shù)據(jù)結(jié)構(gòu)中的唯一id、名稱、功能描述、類別等信息進(jìn)行注冊(cè)。生成器可以通過數(shù)據(jù)結(jié)構(gòu)中的輸入隊(duì)列個(gè)數(shù)、輸出隊(duì)列個(gè)數(shù)、初始化函數(shù)、預(yù)處理函數(shù)、處理函數(shù)、后處理函數(shù)、釋放函數(shù)、參數(shù)設(shè)置調(diào)用函數(shù)列表結(jié)構(gòu)等信息進(jìn)行初始化。這里的類別包括:采集類別、編碼類別、傳輸類別、解碼類別、顯示類別等。

在本發(fā)明實(shí)施例中,開發(fā)人員可以利用本發(fā)明實(shí)施例提供的引擎開發(fā)所需要的流數(shù)據(jù)處理裝置,例如:播放器等。

如圖6所示,本發(fā)明實(shí)施例提供的一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎,包括:

組裝器接口601、組裝器602、三個(gè)可用的流組件603、組圖接口604、描述文件加載接口605、流組件注冊(cè)器606、生成器607、初始化接口608和核心模塊609。

每個(gè)可用的流組件603具有至少一種處理流數(shù)據(jù)的功能;

初始化接口608,用于當(dāng)接收到啟動(dòng)引擎指令時(shí),啟動(dòng)核心模塊609;

核心模塊609,用于啟動(dòng)流組件注冊(cè)器606;

流組件注冊(cè)器606,用于掃描預(yù)先設(shè)置的目錄中是否存在未注冊(cè)的流組件,如果是,則實(shí)現(xiàn)未注冊(cè)的流組件的注冊(cè),將注冊(cè)后的流組件作為可用的流組件603;

組裝器接口601,用于當(dāng)接收到組裝指令時(shí),運(yùn)行組裝器602;

描述文件加載接口605,用于加載預(yù)設(shè)的數(shù)據(jù)流xml描述文件;

組裝器602,用于解析所述描述文件加載接口加載的所述數(shù)據(jù)流xml描述文件,根據(jù)所述數(shù)據(jù)流xml描述文件,從至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,調(diào)用生成器607,針對(duì)組圖實(shí)例中任一待組裝的流組件,將當(dāng)前待組裝的流組件的輸入隊(duì)列作為相鄰的前端的待組裝的流組件的輸出隊(duì)列,鏈接至少一個(gè)待組裝的流組件,生成所述組圖實(shí)例,其中,在組圖實(shí)例中,每個(gè)待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

生成器607,用于初始化至少一個(gè)待組裝的流組件,為每個(gè)所述待組裝的流組件設(shè)置至少一個(gè)輸入隊(duì)列;

組圖接口604,用于當(dāng)接收到運(yùn)行指令時(shí),控制組圖實(shí)例進(jìn)行流數(shù)據(jù)處理,當(dāng)接收到暫停指令時(shí),控制組圖實(shí)例暫停流數(shù)據(jù)處理,當(dāng)接收到銷毀指令時(shí),銷毀組圖實(shí)例;

組圖實(shí)例中的每個(gè)待組裝的流組件603,用于判斷對(duì)應(yīng)的至少一個(gè)輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的至少一種處理流數(shù)據(jù)的功能,處理待處理的流數(shù)據(jù)。

本發(fā)明實(shí)施例提供的引擎支持視頻流數(shù)據(jù)的處理和音頻流數(shù)據(jù)的處理,但不限于這類數(shù)據(jù)。

本發(fā)明實(shí)施例提供的引擎采用開放式的架構(gòu),是一種輕量級(jí)的流數(shù)據(jù)處理引擎。該引擎定義了基本的功能模塊類型及標(biāo)準(zhǔn)的接口和參數(shù),允許開發(fā)者按統(tǒng)一的開發(fā)規(guī)范和接口,根據(jù)自己的需求開發(fā)自己的功能模塊,注冊(cè)后可以和已有功能模塊無縫融合。該引擎的功能模塊包括:核心模塊、流組件注冊(cè)器、組裝器、生成器、組圖、流組件。

流組件的加載可以通過下述方式來實(shí)現(xiàn):

按照流組件開發(fā)規(guī)范及對(duì)外接口,完成實(shí)現(xiàn)特定功能的流組件研發(fā),編譯成二進(jìn)制文件,放置到預(yù)先設(shè)置的目錄中。

該引擎在啟動(dòng)時(shí),啟動(dòng)流組件注冊(cè)器,流組件注冊(cè)器定時(shí)掃描預(yù)先設(shè)置的目錄,對(duì)未注冊(cè)的流組件進(jìn)行動(dòng)態(tài)注冊(cè),歸類,統(tǒng)一管理。

當(dāng)組裝器調(diào)用該流組件,構(gòu)建組圖實(shí)例時(shí),生成器會(huì)動(dòng)態(tài)加載該流組件,并對(duì)流組件進(jìn)行初始化。

組裝器將初始化好的流組件鏈接到組圖實(shí)例中,完成流組件的動(dòng)態(tài)加載。

流組件的數(shù)據(jù)結(jié)構(gòu)如表1所示。

表1

如圖7所示,本發(fā)明實(shí)施例提供的一種基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的類結(jié)構(gòu)圖。

如圖8所示,本發(fā)明實(shí)施例提供了一種利用本發(fā)明實(shí)施例中任一所述的基于國產(chǎn)cpu和操作系統(tǒng)的流數(shù)據(jù)的處理引擎的流數(shù)據(jù)的處理方法,包括:

步驟801:組裝器接口在接收到組裝指令時(shí),運(yùn)行組裝器;

步驟802:所述組裝器從至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例,其中,在所述組圖實(shí)例中,每個(gè)所述待組裝的流組件設(shè)置有至少一個(gè)輸入隊(duì)列;

步驟803:組圖接口在接收到運(yùn)行指令時(shí),控制所述組圖實(shí)例進(jìn)行流數(shù)據(jù)處理;

步驟804:所述組圖實(shí)例中的每個(gè)所述待組裝的流組件判斷對(duì)應(yīng)的至少一個(gè)所述輸入隊(duì)列中是否存在待處理的流數(shù)據(jù),如果是,則根據(jù)對(duì)應(yīng)的所述至少一種處理流數(shù)據(jù)的功能,處理所述待處理的流數(shù)據(jù)。

在本發(fā)明一實(shí)施例中,在步驟802之前,進(jìn)一步包括:

描述文件加載接口加載預(yù)設(shè)的數(shù)據(jù)流xml描述文件;

所述組裝器從所述至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,包括:

所述組裝器解析所述描述文件加載接口加載的所述數(shù)據(jù)流xml描述文件,根據(jù)所述數(shù)據(jù)流xml描述文件,確定所述至少一個(gè)待組裝的流組件。

在本發(fā)明一實(shí)施例中,在步驟802之前,進(jìn)一步包括:

所述組裝器接口接收外部發(fā)來的至少一個(gè)選擇指令,其中,每個(gè)所述選擇指令對(duì)應(yīng)所述待組裝的流組件,每個(gè)所述選擇指令中攜帶對(duì)應(yīng)的所述待組裝的流組件的組件信息;

所述組裝器從所述至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件,包括:

所述組裝器根據(jù)每個(gè)所述選擇指令中攜帶的所述組件信息,確定每個(gè)所述選擇指令對(duì)應(yīng)的所述待組裝的流組件。

在本發(fā)明一實(shí)施例中,在所述組裝器從所述至少一個(gè)可用的流組件中,確定至少一個(gè)待組裝的流組件之前,進(jìn)一步包括:

流組件注冊(cè)器掃描預(yù)先設(shè)置的目錄中是否存在未注冊(cè)的流組件,如果是,則實(shí)現(xiàn)所述未注冊(cè)的流組件的注冊(cè),將注冊(cè)后的流組件作為所述可用的流組件。

在本發(fā)明一實(shí)施例中,在所述流組件注冊(cè)器掃描預(yù)先設(shè)置的目錄中是否存在未注冊(cè)的流組件之前,進(jìn)一步包括:

初始化接口在接收到啟動(dòng)引擎指令時(shí),啟動(dòng)核心模塊;

核心模塊啟動(dòng)流組件注冊(cè)器。

在本發(fā)明一實(shí)施例中,在生成組圖實(shí)例之后,進(jìn)一步包括:

組圖接口在接收到暫停指令時(shí),控制所述組圖實(shí)例暫停流數(shù)據(jù)處理,在接收到銷毀指令時(shí),銷毀所述組圖實(shí)例。

在本發(fā)明一實(shí)施例中,在生成組圖實(shí)例之后,進(jìn)一步包括:組裝器為所述組圖實(shí)例創(chuàng)建至少一個(gè)調(diào)度器,從所述至少一個(gè)待組裝的流組件中,為每個(gè)所述調(diào)度器分配至少一個(gè)待調(diào)度的流組件;

每個(gè)所述調(diào)度器周期性地喚起所述組裝器分配的所述至少一個(gè)待調(diào)度的流組件。

在本發(fā)明一實(shí)施例中,在所述根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例之前,進(jìn)一步包括:組裝器調(diào)用生成器;

生成器初始化所述至少一個(gè)待組裝的流組件。

在本發(fā)明一實(shí)施例中,在所述根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例之前,進(jìn)一步包括:

生成器為每個(gè)所述待組裝的流組件設(shè)置至少一個(gè)輸入隊(duì)列;

所述根據(jù)所述至少一個(gè)待組裝的流組件,生成組圖實(shí)例,包括:

組裝器針對(duì)所述組圖實(shí)例中任一所述待組裝的流組件,將當(dāng)前待組裝的流組件的輸入隊(duì)列作為相鄰的前端的所述待組裝的流組件的輸出隊(duì)列,鏈接所述至少一個(gè)待組裝的流組件,生成所述組圖實(shí)例。

本發(fā)明各個(gè)實(shí)施例至少具有如下有益效果:

1、在本發(fā)明實(shí)施例中,在引擎中設(shè)置有至少一個(gè)可用的流組件,當(dāng)組裝器接口接到的組裝指令時(shí),組裝器可以從至少一個(gè)可用的流組件中選擇出需要的至少一個(gè)待組裝的流組件,生成組圖實(shí)例,通過組圖實(shí)例中的各個(gè)流組件實(shí)現(xiàn)流數(shù)據(jù)的處理,通過上述描述可見,用于進(jìn)行流數(shù)據(jù)的處理的各個(gè)流組件可以從預(yù)先設(shè)置至少一個(gè)可用的流組件中靈活選擇,進(jìn)而能夠更加靈活地實(shí)現(xiàn)流數(shù)據(jù)處理。

2、在本發(fā)明實(shí)施例中,該引擎具有很好的擴(kuò)展性,允許動(dòng)態(tài)注冊(cè)、加載新的流組件,而不影響其他既有的流組件??梢葬槍?duì)各國產(chǎn)cpu平臺(tái),研制針對(duì)平臺(tái)優(yōu)化的音視頻編解碼等流組件,通過動(dòng)態(tài)注冊(cè)及加載,實(shí)現(xiàn)在基于國產(chǎn)cpu和操作系統(tǒng)的平臺(tái)下的高效音視頻處理。

3、本發(fā)明實(shí)施例基于開放式的核心架構(gòu),允許流組件的動(dòng)態(tài)加載,實(shí)現(xiàn)輕量級(jí)的流數(shù)據(jù)處理引擎,提供簡(jiǎn)潔的開發(fā)調(diào)用接口,易于二次開發(fā)和調(diào)用。

4、在本發(fā)明實(shí)施例中,可以根據(jù)需要實(shí)現(xiàn)的功能將處理節(jié)點(diǎn)組合成為一種鏈?zhǔn)浇Y(jié)構(gòu),數(shù)據(jù)在鏈?zhǔn)浇Y(jié)構(gòu)內(nèi)由起始節(jié)點(diǎn)到結(jié)束節(jié)點(diǎn)流轉(zhuǎn),前一個(gè)節(jié)點(diǎn)的輸出作為后一個(gè)處理節(jié)點(diǎn)的輸入,極大的增強(qiáng)了處理的靈活性。

5、在本發(fā)明實(shí)施例中,使用類似鏈?zhǔn)浇Y(jié)構(gòu)將處理節(jié)點(diǎn)連接起來,前一個(gè)處理節(jié)點(diǎn)輸出作為后一個(gè)處理節(jié)點(diǎn)的輸入,使用這種方式,前一個(gè)處理節(jié)點(diǎn)在處理數(shù)據(jù)的同時(shí),后一個(gè)處理節(jié)點(diǎn)會(huì)接收前一個(gè)節(jié)點(diǎn)的輸出數(shù)據(jù)并行處理,提高了數(shù)據(jù)處理的效率。

6、本發(fā)明實(shí)施例支持組成器通過解析處理流程xml描述文件的方式,實(shí)現(xiàn)流數(shù)據(jù)處理流程的動(dòng)態(tài)生成,簡(jiǎn)化音視頻處理的開發(fā)過程,并且易于維護(hù)。

7、本發(fā)明實(shí)施例不但可以處理視頻、音頻流數(shù)據(jù),還可以處理其他任何需要高效率處理的流數(shù)據(jù)。

需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)〃·····”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)中。

最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
金川县| 孝昌县| 城口县| 喀什市| 马关县| 祥云县| 泽库县| 湘潭县| 鄂尔多斯市| 石渠县| 洪洞县| 五峰| 林口县| 西乌珠穆沁旗| 徐汇区| 姚安县| 靖江市| 宝丰县| 玉溪市| 常宁市| 阿尔山市| 太湖县| 北辰区| 桂阳县| 河间市| 内江市| 枣强县| 南靖县| 武威市| 拜城县| 彩票| 新平| 兰溪市| 巴彦县| 拉萨市| 禹城市| 湟源县| 峨眉山市| 龙门县| 锡林郭勒盟| 无极县|