專利名稱:流數據處理裝置的制作方法
技術領域:
本發明涉及一種對流數據進行多步處理的流數據處理裝置。更特別地,本發明涉及一種在多個處理部分之間發送或接收數據并且在它們之間實現同步化的流數據處理裝置。
發明技術背景眾所周知,流數據處理裝置適用于對諸如音頻數據或視頻數據進行多步處理。一種典型的流數據處理裝置包括輸入部分、處理部分和輸出部分,使得處理部分可對輸入的流數據進行預定的處理,并輸出由此獲得的處理結果。在很多情況下,流數據處理裝置對輸入的流數據進行包據多個步驟的處理。至此,流數據處理裝置包括多個用于執行相應處理步驟的處理部分,并且在這樣的處理部分之間發送或接收數據。因此,流數據處理裝置以流水線方式對輸入的流數據執行多步處理。有時會向流數據處理裝置發出指令,如中斷處理或定位(即,從給定的處理數據流中的一個不同的位置開始處理)。為了確保當接收到這樣的指令時的正確操作,流數據處理裝置進行數據交換并且在多個處理部分之間實現同步化。
日本專利No.3095290揭示了一種方法,在流數據處理裝置中進行數據交換并且在多個處理部分之間實現同步化。根據該方法,每個處理部分都可以通過通信獲取另一與之交換數據的處理部分的狀態,并且根據那一處理部分的狀態切換它自己的操作。例如,當向流數據處理裝置發出一個定位指令,在數據接收端的處理部分必須推遲數據的接收,直到在數據發送端的處理部分開始發送對應于新位置的數據的處理結果。為了實現這樣的功能,每個處理部分根據接收到數據的內容、處理的進程以及另一處理部分的狀態來控制它自己的操作防止讀取任何不正確的數據。因此,通過在多個處理部分之間正確交換數據并且在它們之間實現同步化,流數據處理裝置能夠以良好的整體完整性運行。
然而,使用上述方法在多個處理部分之間實現同步化會存在下列問題。由于每個處理部分都需要根據接收到的數據的內容、處理的進程以及另一處理部分的狀態來控制它自己的操作,所述每個處理部分的結構就變得復雜。當用軟件實現各個處理部分時,構成每個處理部分的軟件組件的結構變得特別復雜。再者,由于沒有在上述方法中的相應的處理部分中使用統一的接口,因此就很難將構成每個處理部分的軟件組件移植到另一個系統。
發明內容
因此,本發明的一個目標是提供一種在多個處理部分之間發送或接收數據并且在它們之間實現同步化的流數據處理裝置,使得每個處理部分能夠進行數據交換而不用考慮數據的內容、處理的進程以及另一處理部分的狀態。本發明的另一個目標是統一流數據處理裝置所包含的處理部分之間的接口,從而簡化每個處理部分的結構并提高每個處理部分的再利用率。
根據本發明的流數據處理裝置包括發送端處理部分、接收端處理部分、控制部分、數據臨時存儲部分、空數據存儲部分和連接管理部分,并且對流數據進行多步處理。發送端處理部分進行多步處理中的一個處理。接收端處理部分進行多步處理中的另一個處理。連接管理部分使用數據臨時存儲部分作為允許從發送端處理部分發送和由接收端處理部分接收的數據緩沖器。如果由于定位或流數據的改變需要改變處理的內容,每個處理部分響應來自控制部分的指令向連接管理部分輸出一個清除請求。連接管理部分根據它是否處于正常操作狀態,來切換寫的目的地和讀的源,該操作狀態可包括在接收到發送端清除請求之后和直到接收到接收端清除請求時存在的接收端清除等待狀態,或者在接收到發送端清除請求之后和直到接收到接收端清除請求時存在的發送端清除等待狀態。當空數據存儲部分作為這類切換的目的地時,就響應數據寫操作刪除任何寫入空數據存儲部分的數據并響應數據讀操作返回空數據。
作為切換方法的第一個例子,連接管理部分可以在接收端清除等待狀態下選擇空數據存儲部分作為讀的源,并且在發送端清除等待狀態下選擇空數據存儲部分作為寫的目的地。當采用這種切換方法時,如果在正常操作狀態下收到任何一個清除請求,連接管理部分就刪除存儲在數據臨時存儲部分中的數據。
作為切換方法的第二個例子,連接管理部分可以在發送端清除等待狀態選擇空數據存儲部分作為寫的目的地,并且在接收端清除等待狀態下,將在已經接收到發送端清除請求時存儲在數據臨時存儲部分中的任何數據都當作舊數據,選擇數據臨時存儲部分中沒有存儲舊數據的一個區域作為寫的目的地,并且選擇在數據臨時存儲部分中存儲舊數據而且存在舊數據(并且當舊數據不再存在時選擇空數據存儲部分作為讀的源)的一個區域作為讀的源。當采用這種切換方法時,如果在正常存在狀態下接收到接收端清除請求,連接管理部分就刪除存儲在數據臨時存儲部分中的數據,并且如果在接收端清除等待狀態下接收到接收端清除請求,連接管理部分就刪除舊數據。
發送端處理部分和接收端處理部分可以輸出發送端清除請求和接收端清除請求并通過使用具有對連接管理部分的訪問功能的數據發送/接收部分來進行數據的發送和接收。
連接管理部分可以構建成在發送端處理部分發送的數據不能被寫入到數據臨時存儲部分時,能夠選擇是進行立即向發送端處理部分通知錯誤的處理,還是等待直到有可能將數據與入到數據臨時存儲部分并通知發送端處理部分數據寫入到數據臨時存儲部分的結果。另一種選擇是,連接管理部分可以構建成在不能從數據臨時存儲部分讀取由接收端處理部分接收的數據時,能夠選擇是立即向接收端處理部分通知錯誤的處理,還是等待直到有可能從數據臨時存儲部分讀取數據并通知接收端處理部分從數據臨時存儲部分讀取數據的結果。
流數據處理裝置可以進一步包括用來輸入流數據的數據輸入部分和/或用來輸出對流數據進行多步處理的結果的數據輸出部分。數據輸入部分可以從可移動記錄媒介輸入流數據。數據輸出部分可以將進行多步處理的結果輸出到可移動記錄媒介。
本發明的這些和其它的目標、特性、方面和優點將通過本發明下面的詳細說明及附圖來闡明。
圖1是說明根據本發明的第一和第二實施例的流數據處理裝置的結構的方框圖;圖2是說明根據本發明的第一個和第二實施例的流數據處理裝置在處理停止狀態下指示開始處理時的操作的流程圖;圖3是說明根據本發明的第一和第二實施例的流數據處理裝置在正常操作狀態下指示改變處理項目時的操作流程圖。
圖4是說明根據本發明的第一實施例的流數據處理裝置的連接管理部分的操作的流程圖;
圖5是說明根據本發明的第一和第二實施例的流數據處理裝置在正常操作狀態下發送或接收數據方式的示意圖;圖6是說明根據本發明的第一實施例的流數據處理裝置接收端清除等待狀態下發送或接收數據方式的示意圖;圖7是說明根據本發明的第一和第二實施例的流數據處理裝置在發送端清除等待狀態下發送或接收數據方式的示意圖;圖8是說明根據本發明的第一實施例的流數據處理裝置的連接管理部分的操作;圖9是說明根據本發明的第二實施例的流數據處理裝置的連接管理部分的操作的流程圖;圖10是說明根據本發明的第二實施例的流數據處理裝置在接收端清除等待狀態下存在舊數據時發送或接收數據方式的示意圖;圖11是說明根據本發明的第二實施例的流數據處理裝置在接收端清除等待狀態下不再存在舊數據時發送或接收數據方式的示意圖;圖12是說明根據本發明的第二實施例的流數據處理裝置的連接管理部分的操作的表格;及圖13是說明根據本發明的一個變體的流數據處理裝置的結構。
首選實施例說明(第一個實施例)圖1為方框圖,用于說明根據本發明的第一實施例的流數據處理裝置的結構。圖1所示的流數據處理裝置10包括控制部分11、數據輸入部分12、第一個處理部分13、第二個處理部分14、數據輸出部分15、連接管理部分21、數據臨時存儲部分22、空數據存儲部分23、數據發送部分24及數據接收部分25。流數據處理裝置10對輸入的流數據進行兩個步驟的處理。在此,“流數據”指以時間順序輸入/輸出或處理的數據,例如,音頻數據或視頻數據。
控制部分11是用于控制流數據處理裝置10的操作的部件。例如,當用戶輸入一個命令或當在裝置中發生異常時,控制部分11分別將控制信號31和32輸出到第一個處理部分13和第二個處理部分14。
數據輸入部分12是輸入流數據的部件。例如,數據輸入部分12可以為如硬盤驅動器或存儲器這樣的存儲設備。數據輸入部分12,當由這樣的存儲設備構成時,以預定的格式存儲流數據,并以時間順序輸出包含在流數據中的數據。另一種選擇,數據輸入部分12可以是諸如與一個通過網絡與數據輸入部分12耦聯的服務器(未標出)通信的通信控制設備。數據輸入部分12,當由這樣的通信控制設備構成時,通過通信以時間順序接收包含在流數據中的數據,并且以所接收這些數據的順序輸出它們。
第一個和第二個處理部分13和14對輸入的數據進行兩個步驟的處理。更具體地是,第一個處理部分13對以時間順序通過數據輸入部分12輸入的數據進行第一個步驟的處理,并且發送處理過的數據到第二個處理部分14。第二個處理部分14接收從第一個處理部分13發送的數據,并對接收到的數據進行第二個步驟的處理。在圖1所示的結構中,第一個處理部分13具有發送端處理部分的功能,以及第二個處理部分14具有作接收端處理部分的功能。
由第一個處理部分13和第二個處理部分14所進行的處理的內容可以是任意的。第一個處理部分13和第二個處理部分14的例子可以為MPEG(運動圖像專家組)編碼器、MPEG解碼器、用來將數字音頻數據轉換為模擬音頻數據的D/A轉換器、用來從存儲器或類似設備獲取數據而使用的源濾波器,或用來調整視頻信號輸出時間的呈現濾波器。
數據輸出部分15是輸出通過對輸入的流數據進行兩個步驟的處理而獲得的處理結果的輸出部件。數據輸出部分15為輸出設備,如顯示設備或揚聲器。另一種選擇,數據輸出部分15可以為如硬盤驅動器或存儲器這樣的存儲設備。數據輸出部分15,當由這樣的存儲設備構成時,以預定的格式存儲以時間順序輸出的處理結果。作為另一種選擇,數據輸出部分15可以為如與一個通過網絡與數據輸出部分15耦聯的服務器(未標出)通信的通信控制設備。數據輸出部分15,當由這樣的通信控制設備構成時,通過通信以輸出上述處理結果的順序發送它們。
連接管理部分21利用數據臨時存儲部分22來允許從第一個處理部分13發送的數據由第二個處理部分14接收。更具體地說,響應來自第一個處理部分13的發送請求,連接管理部分21將從第一個處理部分13發送的數據寫入到數據臨時存儲部分22。響應來自第二個處理部分14的接收請求,連接管理部分21允許第二個處理部分14接收從數據臨時存儲部分22讀取的數據。數據臨時存儲部分22臨時地存儲從第一個處理部分13發送的數據。數據臨時存儲部分22可以由如硬盤驅動器或存儲器這樣的存儲設備構成。為了確保數據的有效管理和存儲,可以對數據臨時存儲部分22采用緩沖器結構,例如,隊列,雙緩沖,或環形緩沖。
如果不能將從第一個處理部分13發送的數據寫入到數據臨時存儲部分22(例如,如果數據臨時存儲部分22已滿),連接管理部分21等待直到有可能將數據寫入到數據臨時存儲部分22,并向第一個處理部分13通知數據寫入到臨時存儲部分22的結果。如果不能從數據臨時存儲部分22讀取任何將由第二個處理部分14接收的數據(例如,如果數據臨時存儲部分22為空),則連接管理部分21等待直到有可能從數據臨時存儲部分22讀取數據,并且向第二個處理部分14通知從臨時存儲部分22讀取數據的結果。在包括以這種方式操作的連接管理部分21的流數據處理裝置10中,取決于數據臨時存儲部分22的狀態,由第一個處理部分13進行的處理可以被中斷直到完成數據發送,或由第二個處理部分14進行的處理可以被中斷直到完成數據接收。在這樣的情況下,流數據處理裝置10被稱為以“塊模式”工作。
在流數據處理裝置10中,當訪問連接管理部分21時,數據發送部分24和數據接收部分25都被用到。數據發送部分24提供通過連接管理部分21實現的數據發送功能。數據接收部分25提供通過連接管理部分21實現的數據接收功能。由數據發送部分24提供的數據發送功能及由數據接收部分25提供的數據接收功能都是通過統一的接口來實現的。在流數據處理裝置10中,第一個處理部分13在通過連接管理部分21發送數據到第二個處理部分14時使用數據發送部分24。第二個處理部分14在通過連接管理部分21接收來自第一個處理部分13的數據時使用數據接收部分25。
下面對數據發送部分24和數據接收部分25的具體例子進行說明。例如,在一種情況下流,數據處理裝置10是作為運行在特定操作系統(下面簡稱為“OS”)中的多線程系統來實現的。在這種情況下,可將流數據處理裝置10設計成可使用由OS支持的線程間通信功能來設計。注意,通過向流數據處理裝置10的設計者提供可利用OS功能的系統庫,流數據處理裝置10的設計者可以通過簡單地使用所提供的系統庫,而無需了解該OS操作原則的細節設計完成線程間通信的線程。根據圖1,連接管理部分21可對應于OS中支持線程間通信功能的一部分,并且數據發送部分24和數據接收部分25對應于系統庫中和使用線程間通信功能相關的一部分。因此,通過利用數據發送部分24和數據接收部分25,流數據處理裝置10的設計者能夠設計第一個處理部分13和第二個處理部分14使之能夠通過連接管理部分21進行數據交換,而無需了解連接管理部分21的操作細節。
在正常操作狀態下,流數據處理裝置的組成部分以上述方式工作。因此流數據處理裝置10對所輸入的流數據進行兩個步驟的流水線處理。例如,假設數據輸入部分12為存儲MPEG視頻流的存儲設備;第一個處理部分13為MPEG視頻解碼器;第二個處理設備14為呈現濾波器;并且數據輸出部分15為顯示設備,流數據處理裝置10可通過兩個步驟進行解碼和顯示MPEG視頻流的處理。
在流數據處理裝置10中,有時需要改變處理的內容,例如,當用戶輸入一個命令,或裝置中出現異常時。例如,正如本文所使用的 “改變處理的內容”稱之為定位(即,從給定的被處理的數據流中的一個不同的位置開始處理),或流數據的改變(即,開始處理不同于正在處理的給定數據流的另一數據流)。
當需要改變處理的內容時,控制部分11將指示改變處理內容的控制信號31輸出到第一個處理部分13,并且與此同時或稍早或稍晚將同樣指示的控制信號32輸入到第二個處理部分14。如果從控制部分11接收到控制信號31,第一個處理部分13通過使用數據發送部分24向連接管理部分21輸出發送端清除請求41,以刪除存儲在數據臨時存儲部分22中的數據。類似地,如果從控制部分11接收到控制信號32,第二個處理部分14通過使用數據接收部分25向連接管理部分21輸出接收端清除請求42。
基于發送端清除請求41或接收端清除請求42,連接管理部分21以下列方式工作。連接管理部分21處于正常操作狀態直到接收到發送端清除請求41或接收端清除請求42。在正常操作狀態,從第一個處理部分13發送的數據寫入到數據臨時存儲部分22,并且從數據臨時存儲部分22中讀取將由第二個處理部分14接收的數據。如果在正常操作狀態中接收到發送端清除請求41,連接管理部分21轉換到接收端清除等待狀態,其中,從空數據存儲部分23中讀取將由第二個處理部分14接收的數據。如果在正常操作狀態接收到接收端清除請求42,連接管理部分21轉換到發送端清除等待狀態,其中,從第一個處理部分13發送的數據寫入到空數據存儲部分23。如果在接收端清除等待狀態接收到接收端清除請求42或在發送端清除等待狀態接收到發送端清除請求41,連接管理部分21轉換到正常操作狀態。連接管理部分21操作的細節將在后面說明(參考圖4)。
空數據存儲部分23是緩沖器,它可刪除任何寫到上面的數據,并返回空數據給任何嘗試從其中讀取數據的設備。換句話說,任何被寫到空數據存儲部分23的數據都不會存儲在空數據存儲部分23中。即使嘗試從空數據存儲部分23中讀取數據,也只能從空數據存儲部分23中讀到空數據(即0字節)。空數據存儲部分23的一個具體例子是由某些OS支持的零設備。
在此參考圖2到圖4對流數據處理裝置10的操作細節進行說明。圖2為流程圖,用于說明流數據處理裝置在處理停止狀態下指示開始處理時的操作。圖3為流程圖,用于說明流數據處理裝置在正常操作狀態下指示改變處理內容時的操作。圖4為流程圖,用于說明連接管理部分的操作。
如果在處理停止狀態下指示開始處理,流數據處理裝置10進行圖2所示處理。圖2所示處理在用戶向流數據處理裝置10輸入開始處理命令時開始。如果用戶輸入開始處理命令,則控制部分11就接收所輸入的開始處理命令(步驟S101)。然后,控制部分11向第一個處理部分13輸出指示開始處理的控制信號31,并與此同時或稍早或稍晚將同樣指示的控制信號32輸出到第二個處理部分14(步驟S102)。
在執行步驟S102后,第一個處理部分13執行步驟S111到S114,并且第二個處理部分14執行步驟S131到S134。同時,連接管理部分21獨立于第一個處理部分13和第二個處理部分14進行圖4所示在下面說明的處理(步驟S121)。換句話說,在執行步驟S102后,第一個處理部分13進行的處理、第二個處理部分14進行的處理及連接管理部分21進行的處理在流數據處理裝置10中是并行或并發的。
第一個處理部分13按如下所述反復執行步驟S111到S114直到它完成對流數據的處理。第一個處理部分13從數據輸入部分12接收包含在流數據中將被處理的數據作為輸入(步驟S111)。然后,第一個處理部分13對輸入的數據進行特定于第一個處理部分13的處理(步驟S112)。然后,通過使用數據發送部分24,第一個處理部分13發送處理過的數據到連接管理部分21(步驟S113)。然后,第一個處理部分13確定它對流數據的處理是否已完成(步驟S114)。如果它確定該處理已完成,第一個處理部分13停止處理。另一方面,如果它確定該處理還未完成,第一個處理部分13繼續步驟S111。
第二個處理部分14按如下所述反復執行步驟S131到S134直到完成它對流數據的處理。通過使用數據接收部分25,第二個處理部分14從連接管理部分21接收從第一個處理部分13發送的數據(步驟S131)。然后,第二個處理部分14對接收到的數據進行特定于第二個處理部分14的處理(步驟S132)。然后,第二個處理部分14輸出處理過的數據到數據輸出部分15(步驟S134)。然后,第二個處理部分14確定它對流數據的處理是否已完成(步驟S134)。如果它確定該處理已完成,第二個處理部分14停止處理。另一方面,如果它確定該處理還未完成,第二個處理部分14繼續步驟S131。
如果在正常操作狀態指示改變處理內容,流數據處理裝置10進行圖3所示的處理。圖3所示處理在用戶輸入定位命令、流數據改變命令,或類似命令時開始。如果用戶輸入定位命令、流數據改變命令,或類似命令,則控制部分11就接收輸入的命令(步驟S141)。然后,控制部分11輸出指示開始處理的控制信號31到第一個處理部分13,并與此同時或稍早或稍晚輸出同樣指示的控制信號32到第二個處理部分14(步驟S142)。
在執行步驟S142后,第一個處理部分13通過使用數據發送部分24向連接管理部分21輸出發送端清除請求41(步驟S110),并且第二個處理部分14通過使用數據接收部分25向連接管理部分21輸出接收端清除請求42(步驟S130)。此時,發送端清除請求41和接收端清除請求42之中的哪一個先輸出取決于流數據處理裝置10的結構或操作狀態。
如在圖2中所示的情況,在執行步驟S110后,第一個處理部分13重復執行步驟S111到S114。同樣,如在圖2中所示的情況,在執行步驟S130后,第二個處理部分14重復執行步驟S131到S134。自此之后,如在圖2中所示的情況,在流數據處理裝置10中,第一個處理部分13進行的處理、第二個處理部分14進行的處理及連接管理部分21進行的處理在流數據處理裝置10中是并行或并發的。
如圖4所示,連接管理部分21在正常操作狀態執行步驟S201和S202,在接收端清除等待狀態(即,接收到發送端清除請求41后并且直到接收到接收端清除請求42時的存在狀態)執行步驟S211到S213,并且在發送端清除等待狀態(即,接收到接收端清除請求42后并且直到接收到接收端清除請求41時的存在狀態)執行步驟S221到S223。在下面的說明中,從第一個處理部分13發送的數據被稱為“發送數據”,以及由第二個處理部分接收的數據被稱為“將被接收的數據”。
在正常操作狀態,連接管理部分21選擇數據臨時存儲部分22既作為寫發送數據的目的地(以下稱為“發送數據的寫目的地”)又作為讀取將被接收的數據的源(以下稱為“將被接收的數據的讀取源”)。因此,在正常操作狀態,連接管理部分21將發送數據寫入到數據臨時存儲部分22,并且從數據臨時存儲部分22讀取將被接收的數據(步驟S201)。然后,連接管理部分21確定是否從第一個處理部分13或第二個處理部分14接收到清除請求(步驟S202)。如果已經接收到發送端清除請求41,連接管理部分21繼續步驟S211;如果已經接收到接收端清除請求42,連接管理部分21繼續步驟S221;如果未接收到任何清除請求,連接管理部分21繼續步驟S201。
圖5為示意圖,說明了在步驟201發送或接收數據的方式。在圖5中,發送數據的寫入目的地和將被接收的數據的讀取源都被設為數據臨時存儲部分22。所說明的數據臨時存儲部分22存儲著已從第一個處理部分13發送出但尚未由第二個處理部分14接收到的三塊數據。
參考圖4,如果步驟S202發現已經接收到了發送端清除請求41,連接管理部分21就刪除存儲在數據臨時存儲部分22的數據(步驟S211)。然后,連接管理部分21選擇空數據存儲部分23作為將被接收的數據的讀取源,而且仍然選擇數據臨時存儲部分22作為發送數據的寫目的地。因此,在接收端清除等待狀態,連接管理部分21將發送數據寫入到數據臨時存儲部分22,并且從空數據存儲部分23讀取將被接收的數據(步驟S212)。然后,連接管理部分21確定是否已經接收到來自第二個處理部分14的接收端清除請求42(步驟S213)。如果,接收到接收端清除請求42,連接管理部分21繼續步驟S201;否則,控制轉到步驟S212。
圖6為示意圖,說明了在步驟212發送或接收數據的方式。在圖6中,發送數據的寫目的地被設為數據臨時存儲部分22,而將被接收的數據的讀取源被設為空數據存儲部分23。存儲在數據臨時存儲部分22中的任何數據都在步驟S221被刪除。在圖6中,所說明的數據臨時存儲部分22存儲著已在刪除后但尚未由第二個處理部分14接收到從第一個處理部分13發送出的三塊數據。
當連接管理部分21在接收端清除等待狀態,第二個處理部分14將請求連接管理部分21接收第二個處理部分14正在處理的數據的其余部分,而不管第一個處理部分13已經改變了它的處理的內容。然而,當連接管理部分21在正常操作狀態時存儲在數據臨時存儲部分22中的“其余的”數據已經由于連接管理部分21執行了步驟S211而被刪除。此外,當連接管理部分21為接收端清除等待狀態,第一個處理部分13請求連接管理部分21發送在改變處理的內容之后產生的新數據,并且因此連接管理部分21將這樣的發送數據寫入到數據臨時存儲部分22。因此,若不解決這個問題,第二個處理部分14會錯誤地接收在改變處理的內容之后產生的從第一個處理部分13發送的新數據,并將這樣的數據作為第二個處理部分14正在處理的數據的其余部分來處理。作為這個問題的解決方法,如上所述,連接管理部分21在接收端清除等待狀態設置將被接收的數據的讀取源為空數據存儲部分23。作為結果,當連接管理部分21為接收端清除等待狀態時,第二個處理部分14避免接收任何東西只能接收到空數據。因此,上述問題得到解決從而流數據處理裝置10不會因此出錯。
參考圖4,如果步驟S202發現已經接收到接收端清除請求42,連接管理部分21刪除存儲在數據臨時存儲部分22的數據(步驟S221)。然后,連接管理部分21選擇空數據存儲部分23作為發送數據的寫入目的地,而且仍然選擇數據臨時存儲部分22作為將被接收的數據的讀取源。因此,在發送端清除等待狀態,連接管理部分21將發送數據寫入到空數據存儲部分23,并且從數據臨時存儲部分22讀取將被接收的數據(步驟S222)。然后,連接管理部分21確定是否從第一個處理部分13接收到發送端清除請求41(步驟S223)。如果,已經接收到發送端清除請求41,連接管理部分21繼續步驟S201;否則,控制轉到步驟S222。
圖7為示意圖,說明了在步驟222發送或接收數據的方式。在圖7中,發送數據的寫入目的地被設為空數據存儲部分23,而將接收的數據的讀取源被設為數據臨時存儲部分22。在步驟S221,存儲在數據臨時存儲部分22中的任何數據都被刪除,并且在數據刪除之后從第一個處理部分13發送的任何數據都被寫到空數據存儲部分23。作為結果,在圖7中,數據臨時存儲部分22未存儲任何數據。
當連接管理部分21在發送端清除等待狀態,第一個處理部分13將請求連接管理部分21發送第一個處理部分13正在處理的數據的其余部分,而不管第二個處理部分14已經改變了它的處理的內容。然而,第二個處理部分14請求連接管理部分21接收在改變處理的內容之后產生的新數據。因此,若不解決這個問題,第二個處理部分14會錯誤地接收在第一個處理部分13正在處理的數據的其余部分,并將這些數據當作在改變處理的內容之后產生的新數據來處理。作為這個問題的解決方法,如上所述,連接管理部分21在發送端清除等待狀態設置發送數據的寫入目的地為空數據存儲部分23。作為結果,當連接管理部分21為發送端清除等待狀態,第二個處理部分14避免接收任何東西只能接收到空數據。因此,上述問題得到解決從而流數據處理裝置10不會因此出錯。
圖8為表格,說明了連接管理部分2 1的上述操作(圖4)。在表8中,在左上列和右下列中說明的處理為正常操作狀態進行的處理(步驟S201);在左下列中說明的處理為接收端清除等待狀態進行的處理(步驟S212);而在右上列中說明的處理為發送端清除等待狀態進行的處理(步驟S222)。
如上所述,根據本實施例中的流數據處理裝置,在正常操作狀態,連接管理部分利用數據臨時存儲部分作為允許從第一個處理部分(作為發送端處理部分)發送的數據由第二個處理部分(作為接收端處理部分)接收的緩沖器。如果由于定位或流數據的改變需要改變處理的內容,第一個處理部分和第二個處理部分各自輸出一個發送端清除請求和一個接收端清除請求,以響應來自控制部分的指令。當接收到任一種清除請求時,若在正常操作狀態,連接管理部分刪除存儲在數據臨時存儲部分上的任何數據,若在接收端清除等待狀態則設置將被接收的數據的讀取源為空數據存儲部分,若在發送端清除等待狀態則設置發送數據的寫目的地為空數據存儲部分。
因此,當改變處理的內容時,第二個處理部分不會錯誤地接收到任何在改變處理的內容后產生的新數據并且將這樣的數據作為第二個處理部分14正在處理的數據的其余部分來處理,接收到第一個處理部分過去處理的數據并且將這樣的數據作為在改變處理的內容之后產生的新數據來處理。因此,通過正確地在多個處理部分之間交換數據而且在它們之間實現同步化,流數據處理裝置能夠以良好的整體完整性運行。
此外,每個處理部分不僅需要通過輸出清除請求來響應來自控制部分的改變處理的內容的指令;而且處理部分還可以通過請求數據發送/接收繼續正確地交換數據。因此,每個處理部分能夠正確地進行數據交換而不用關心數據的內容或與之交換數據的另一處理部分的狀態。作為結果,每個處理部分的結構得到簡化。更特別地,當每個處理部分是以軟件實現時,每個處理部分的軟件結構可以被簡化,從而有利于實現處理部分的軟件組件的設計。更簡單的軟件結構提供的優點是降低程序代碼的數量,從而提高軟件質量。
此外,每個處理部分通過使用統一的接口的方法來實現由數據發送部分的數據發送和由數據接收部分提供的數據接收功能的交換數據。其結果,每個處理部分的結構進一步得到簡化。當每個處理部分是以軟件實現時,每個處理部分的軟件結構可以被進一步簡化,并且每個處理部分的再利用率得到提高。因此,當每個處理部分是以軟件實現時,這使得將構成每個處理部分的軟件組件移植到另一個系統更加容易。
(第二個實施例)根據本發明第一個實施例的流數據處理裝置是通過在正常操作狀態下當輸出了發送端清除請求或接收端清除請求時刪除存儲在數據臨時存儲部分的任何數據來說明的。另一方面,根據本發明第二實施例的流數據處理裝置的的特征是如果在正常操作狀態先輸出了發送端清除請求,則存儲在數據臨時存儲部分中的任何數據都不被刪除,并且在接收端清除等待狀態,新數據和舊數據都存儲在數據臨時存儲部分,采用新數據和舊數據區分開存儲的方式。
本實施例中的流數據處理裝置和第一個實施例中的流數據處理裝置有相同的結構(如圖1所示),并且在處理停止狀態指示開始處理(圖2)或在正常操作狀態指示改變處理內容(圖3)時進行與第一個實施例中的流數據處理裝置相同的處理。因此,這些方面的任何說明都在本實施例中略去。本實施例中的流數據處理裝置與第一個實施例中的流數據處理裝置不同之處在于連接管理部分21在接收端清除等待狀態下的操作。
圖9為流程圖,說明了根據本發明第二個實施例的流數據處理裝置的連接管理部分的操作。如圖9所示,連接管理部分21在正常操作狀態執行步驟S201和S202;在接收端清除等待狀態執行步驟S231到S233;并且在發送端清除等待狀態執行步驟S221到S223。由于在正常操作狀態和發送端清除等待狀態進行的處理與第一個實施例中的流數據處理裝置進行的處理相同,這部分說明在此略去(見圖4)。在下面的說明中,在已經輸出發送端清除清除41時任何存儲在數據臨時存儲部分22中的數據將被稱為“舊數據”,而從第一個處理部分13發送的任何數據在連接管理部分21處于接收端清除等待狀態時將被稱為“新數據”。在數據臨時存儲部分22中存儲舊數據的區域將被稱為“舊數據區域”,而在數據臨時存儲部分22中未存儲舊數據的區域將被稱為“新數據區域”。
如圖9所示,當步驟S202發現已經接收到發送端清除請求41時,連接管理部分21繼續步驟S231而不刪除舊數據。在這種情況下,連接管理部分21選擇新數據區域作為發送數據的寫入目的地,并且選擇舊數據區域作為將被接收的數據的讀取源。然而,值得注意的是,僅當存在任何未讀取的舊數據時,舊數據區域才被選擇作為將被接收數據的讀取源。一旦不再存在舊數據,空數據存儲部分23就被選擇作為將被接收數據的讀取源。因此,在接收端清除等待狀態,連接管理部分21在新數據區域中寫入發送數據,并且從舊數據區域讀取將被接收的數據(或當不存在舊數據時,從空數據存儲部分23中讀取)(步驟S231)。
接下來,連接管理部分21確定是否接收到來自第二個處理部分14的接收端清除請求42(步驟S232)。如果已經接收到接收端清除請求42,連接管理部分21繼續步驟S233;否則,控制轉移到步驟S231。在步驟233,連接管理部分21刪除任何存在的舊數據(步驟S233),然后繼續步驟S201。
圖10和11為示意圖,說明了在步驟S231中發送或接收數據的方式。圖10說明了舊數據存在的情況。在圖10中,數據臨時存儲部分22存儲兩塊舊數據(OLD_DATA5和OLD_DATA6)及一塊新數據(NEW_DATA1),這兩種數據以它們能夠相互區分開的方式存儲。如果第一個處理部分13在如圖10所示的狀態下請求發送下一塊新數據,連接管理部分21將該數據寫入數據臨時存儲部分22中的新數據區域(例如,在新數據NEW_DATA1的下一個空檔)。如果第二個處理部分14在如圖10所示的狀態下請求接收下一塊舊數據(OLD_DATA5),連接管理部分21將從數據臨時存儲部分22中的舊數據區域中讀取該數據并將該數據發送到第二個處理部分14。
圖11說明了舊數據不存在的情況。如果在如圖10所示的狀態下第二個處理部分14請求接收兩塊舊數據同時第一個處理部分13請求發送一塊新的數據,結果會出現圖11所示的狀態。在圖11中,數據臨時存儲部分22存儲兩塊新數據(NEW_DATA1和NEW_DATA2)。如果第一個處理部分13在如圖11所示的狀態下請求發送下一塊新數據,連接管理部分21將該數據寫入到數據臨時存儲部分22中的新數據區域(例如,在新數據NEW_DATA2的下一個空檔)。如果第二個處理部分14在如圖11所示的狀態下請求接收下一塊舊數據,連接管理部分21將從空數據存儲部分23中讀取空數據。由于流數據處理裝置10以塊模式工作,由第二個處理部分14進行的處理將中斷直到數據接收完成。
如在第一個實施例中,當連接管理部分21在接收端清除等待狀態,第二個處理部分14將請求接收舊數據,而不管第一個處理部分13已經改變了它處理的內容。記得在第一個實施例中,連接管理部分21執行步驟S211,使得舊數據將被刪除。然而在本實施例中,在這一點上舊數據不會被刪除。再者,在接收端清除等待狀態,連接管理部分21把發送數據作為新數據寫入到數據臨時存儲部分22,并且從數據臨時存儲部分22中讀取舊數據作為將被接收的數據。作為結果,當連接管理部分21在接收端清除等待狀態,第二個處理部分14可以接收任何存在的舊數據,但在舊數據不再存在時只能接收到空數據。因此,第二個處理部分14可以正確地接收存儲在數據臨時存儲部分22中的舊數據并將這些數據作為第二個處理部分14正在處理的數據的其余部分來處理。
圖12為表格,說明了連接管理部分21的上述操作(圖9)。在表12中,在左上列和右下列中說明的處理為正常操作狀態所進行的處理(步驟S201);在左下列中說明的處理為接收端清除等待狀態所進行的處理(步驟S231);而右上列中說明的處理為發送端清除等待狀態所進行的處理(步驟S222)。
如上所述,根據本實施例中的流數據處理裝置,在正常操作狀態或發送端清除等待狀態,連接管理部分進行與第一個實施例中的流數據處理裝置相同的操作。另一方面,在接收端清除等待狀態,當已經接收到發送端清除請求時,連接管理部分保留存儲在數據臨時存儲部分中的任何數據,并設置發送數據的寫入目的地為數據臨時存儲部分中的新數據區域,以及設置將被接收的數據的讀取源為數據臨時存儲部分中的舊數據區域(或當舊數據不再存在時為空數據存儲部分)。
因此,除了第一個實施例的流數據處理裝置提供的優點之外,本實施例的流數據處理裝置提供的一個優點是第二個處理部分可以在輸出發送端清除請求之后直到輸出接收端清除請求期間對存儲在數據臨時存儲部分中舊數據進行正確的處理。
如下所述,根據本發明的每個實施例的流數據處理裝置可能有不同的變體。
上述每個實施例的流數據處理裝置是用包含對輸入的流數據進行兩個步驟的處理的兩個處理部分來說明的。作為其一種選擇,流數據處理裝置可以包括三個或更多的處理部分對輸入的流數據進行三個或多個步驟的處理。在這種情況下,流數據處理裝置可以通過連接管理部分在任何以及所有的處理部分之間實現數據交換。
圖13說明了流數據處理裝置的一個變體,對輸入的流數據進行三個步驟的處理。圖13所示的流數據處理裝置50包括第一個處理部分53、第二個處理部分54及第三個處理部分55,用來對通過數據輸入部分52輸入的流數據進行三個步驟的處理,并且從數據輸出部分56輸出處理結果。當用戶輸入定位命令或類似的命令,控制部分51分別輸出控制信號61、62和63到第一個處理部分53、第二個處理部分54及第三個處理部分55。第一個處理部分53使用數據發送部分24a來發送數據到第二個處理部分54。第二個處理部分54使用數據接收部分25a從第一個處理部分53接收數據。基于發送端清除請求41a和接收端清除請求42a,連接管理部分21a對數據臨時存儲部分22a和空數據存儲部分23a進行數據寫和數據讀,從而允許從第一個處理部分53發送的數據由第二個處理部分54接收。第二個處理部分54和第三個處理部分55之間的數據交換以類似的方式進行。
包含三個或多個處理部分的流數據處理裝置并不一定需要通過連接管理部分來實現在任意和所有的處理部分之間的數據交換。相反,通過連接管理部分的數據交換可以僅在部分處理部分之間實現。例如,在圖13所示的流數據處理裝置50中,可以在第一個處理部分53和第二個處理部分54之間通過連接管理部分進行數據交換,可以在第二個處理部分54和第三個處理部分55之間進行不涉及連接管理部分的數據交換。
雖然上述每個實施例的流數據處理裝置都是以工作在塊模式來說明的,流數據處理裝置也可以工作在非塊模式,如下所述。進一步作為另一種選擇,流數據處理裝置可以構建成能夠選擇塊操作模式和非塊操作模式。在那種情況下,可任意地控制由每個處理部分基于該裝置的操作狀態或類似狀態,使得由每個處理部分所進行的處理可在數據接收/發送等待狀態中斷或不中斷。
在以非塊模式工作的流數據處理裝置中,如果發送數據不能寫入到數據臨時存儲部分,或者不能從數據臨時存儲部分讀取將要被接收的數據,連接管理部分馬上向產生發送數據或等待接收數據的處理部分發出出錯的提示。在這種情況下,在通過連接管理部分請求數據發送或接收之后,每個處理部分通過執行諸如輪詢或選擇的數據處理一直等待直到完成數據發送或接收。因此,即使在等待的過程中,有其它事件發生,處理部分仍能立即進行和該事件相關的處理。例如,如果用戶在等待的過程中向控制部分指示中斷處理,處理部分可以立即停止處理以響應從控制部分輸出的處理中斷指令。因此,每個處理部分即使處于數據發送/接收等待狀態仍可以進行和另一個事件相關的處理。其結果,當用戶輸入了一個指令,流數據處理裝置可以立即響應該用戶的指令,而無需新激活一個進程來響應該指令。
在上述的實施例中,提到數據輸入部分12和/或數據輸出部分15可以為硬盤或存儲器這樣的存儲設備。更具體的是,可以構建數據輸入部分12和/或數據輸出部分15來對可移動記錄媒介如存儲器卡寫數據或讀數據。對包含這樣的數據輸入部分12和這樣的數據輸出部分15的流數據處理裝置,可以將第一個裝置獲得的處理結果存儲到可移動記錄媒介,從第一個裝置移至該記錄媒介,并加載該記錄媒介到第二個裝置。采用這種方式,第二個裝置能夠繼續第一個裝置的處理來進行重現流數據、進行定位,或類似的處理。
根據本發明的流數據處理裝置,能夠采用一個處理部分不需關心其它處理部分的狀態的方式,在處理部分之間的數據發送或接收。因此,根據本發明的流數據處理裝置可以作為一種處理流數據的設備使用,例如,音頻數據或視頻數據的回放設備。
雖然在此對本發明進行了詳細的說明,但上面的說明僅為示意性的而非限制性的。應理解在不偏離本發明范圍的前提下可以設計出大量的其它更改和變體。
權利要求
1.一種用于對流數據進行多步處理的流數據處理裝置,所述裝置包括發送端處理部分(13),用來對流數據中獲得的數據進行的多步處理中的一步處理,并發送處理過的數據;接收端處理部分(14),用來接收從發送端處理部分發送的數據,并對接收到的數據進行多步處理中的下一步處理;控制部分(11),用來向發送端處理部分和接收端處理部分指示處理內容的改變;數據臨時存儲部分(22),用來臨時存儲從發送端處理部分發送的數據;空數據存儲部分(23),用來刪除任何寫到其上的數據,以響應數據寫入操作,并且返回空數據,以響應數據讀取操作;及連接管理部分(21),用來通過對數據臨時存儲部分和空數據存儲部分進行數據寫入和數據讀取從而允許從發送端處理部分發送的數據被接收端處理部分接收;其特征在于,如果控制部分指示改變處理的內容,發送端處理部分(13)和接收端處理部分(14)分別向連接管理部分輸出發送端清除請求(41)和接收端清除請求(41);及連接管理部分(21)根據連接管理部分是否處于正常操作狀態、在接收到發送端清除請求并直到接收到接收端清除請求期間的接收端清除等待狀態,或在接收到接收端清除請求并直到接收到發送端清除請求期間的發送端清除等待狀態,來切換從發送端處理部分發送的數據的寫入目的地和由接收端處理部分接收的數據的讀取源。
2.如權利要求1所述的流數據處理裝置(10),其特征在于,所述連接管理部分(21)的操作包括選擇數據臨時存儲部分作為在正常操作狀態下寫入操作的目的地和讀取操作的源(201);如果在正常操作狀態下接收到發送端清除請求或接收端清除請求,則刪除存儲在數據臨時存儲部分中的數據(S211,S221);選擇空數據存儲部分作為在接收端清除等待狀態下讀取操作的源(S212);及選擇空數據存儲部分作為在發送端清除等待狀態下寫入操作的目的地(S222)。
3.如權利要求1所述的流數據處理裝置(10),其特征在于,所述連接管理部分(21)的操作包括選擇數據臨時存儲部分作為在正常操作狀態下寫入操作的目的地和讀取操作的源(S201);如果在正常操作狀態下接收到接收端清除請求,則刪除存儲在數據臨時存儲部分中的數據(S221);選擇空數據存儲部分作為在發送端清除等待狀態下寫入操作的目的地(S222);在接收端清除等待狀態下,將存儲在數據臨時存儲部分中的任何數據作為舊數據,當接收到發送端清除請求時,選擇數據臨時存儲部分中未存儲舊數據的一個區域作為寫入操作的目的地,并且選擇數據臨時存儲部分中存儲舊數據且其中有舊數據的一個區域作為讀取操作的源,并且一旦舊數據不再存在時選擇空數據存儲部分作為讀取操作的源(S231);及如果在接收端清除等待狀態下接收到接收端清除請求,則刪除舊數據(S233)。
4.如權利要求1所述的流數據處理裝置(10),其特征在于,所述發送端處理部分(13)和接收端處理部分(14)輸出發送端清除請求和接收端清除請求并通過使用具有對連接管理部分訪問功能的數據發送/接收部分(24,25)來進行數據發送和接收。
5.如權利要求1所述的流數據處理裝置(10),其特征在于,所述連接管理部分(21)包括如果從發送端處理部分發送的數據不能寫入數據臨時存儲部分,能夠選擇是否立即進行向發送端處理部分通知錯誤的處理,或進行等待直到有可能將數據寫入到數據臨時存儲部分并通知發送端處理部分將數據寫入到數據臨時存儲部分的結果的處理。
6.如權利要求1所述的流數據處理裝置(10),其特征在于,所述連接管理部分(21)包括如果不能從數據臨時存儲部分中讀取將由接收端處理部分接收的數據,能夠選擇立即進行向接收端處理部分通知錯誤的處理,或進行等待直到有可能從數據臨時存儲部分中讀取數據并通知接收端處理部分從數據臨時存儲部分中讀取數據的結果的處理。
7.如權利要求1所述的流數據處理裝置(10),其特征在于,進一步包括通過其輸入流數據的數據輸入部分(12)。
8.如權利要求7所述的流數據處理裝置(10),其特征在于,所述數據輸入部分(12)從可移動記錄媒介輸入流數據。
9.如權利要求1所述的流數據處理裝置(10),其特征在于,進一步包括用來輸出對流數據進行多步處理的結果的數據輸出部分(15)。
10.如權利要求9所述的流數據處理裝置,其特征在于,所述數據輸出部分(15)輸出對流數據進行多步處理的結果到可移動記錄媒介。
全文摘要
在正常操作狀態下,連接管理部分(21)將第一個處理部分(13)發送來的數據寫入到數據臨時存儲部分(22),并從數據臨時存儲部分(22)讀取將由第二個處理部分(14)接收的數據。一旦接收到指示改變處理內容的控制信號(31)和(32)時,第一個處理部分(13)和第二個處理部分(14)分別輸出一個發送端清除請求(41)和一個接收端清除請求(42)。在接收到發送端清除請求(41)之后及直到接收到接收端清除請求(42)時,連接管理部分(21)從空數據存儲部分(23)讀數據;在接收到接收端清除請求(42)之后并且直到接收到發送端清除請求(41)時,連接管理部分(21)將數據寫入到空數據存儲部分(23)。
文檔編號H04N5/00GK1489071SQ0315777
公開日2004年4月14日 申請日期2003年8月28日 優先權日2002年8月30日
發明者稻見聰, 前田茂則, 宮崎秋弘, 小野正, 關根福太郎, J·弗格勒, G·普法伊弗, 高木利匡, ㄒ糧, 則, 匡, 太郎, 弘, 窶 申請人:松下電器產業株式會社