520)含有與整個(gè)呈現(xiàn)相關(guān)的語法元素,比如持續(xù)時(shí)間,時(shí)間范圍、優(yōu)選的重放速 率和優(yōu)選的音量。每個(gè)軌道容器(53U532)含有軌道頭部(54U542)和用于媒體信息的 容器(551、552)。軌道頭部(54U542)含有關(guān)于軌道的語法元素,比如軌道標(biāo)識符、持續(xù)時(shí) 間和(針對視頻的)寬度、高度和層。用于媒體信息的容器(55U552)包括媒體頭部(561、 562)和用于樣本的定時(shí)、樣本描述、針對樣本的已編碼媒體內(nèi)容的組塊的位置等等的附 加信息(571、572)。對于關(guān)于示例容器格式中的語法元素的附加細(xì)節(jié),參見例如IS0/IEC 14496-12,- 14 和-15 或者 CFF 規(guī)范。
[0064] 替換地,媒體文件包括其他和/或附加容器格式語法元素。
[0065] 返回到圖3,容器格式源(360)接收并且處理按照容器格式的媒體文件。容器格式 源(360)移除根據(jù)容器格式(比如MP4、ASF、WebM或另外的容器格式)被組織在媒體文件中 的已編碼媒體內(nèi)容。在示例實(shí)現(xiàn)方式中,容器格式源(360)是MP4源或CFF源。容器格式 源(360)可以檢測并且校正容器格式語法元素的某些類型的問題,如在第IV中所說明的那 樣。
[0066] 根據(jù)實(shí)現(xiàn)方式,容器格式源(360)可以根據(jù)容器格式將已被聚集來作為媒體流進(jìn) 行傳送或者作為文件進(jìn)行存儲的已編碼媒體內(nèi)容解包,在這種情況下,容器格式源(360) 對作為媒體文件的語法的一部分添加的語法元素進(jìn)行解析。或者,更一般地,容器格式源 (360)可以實(shí)施針對容器格式的一個(gè)或多個(gè)媒體系統(tǒng)多路分解協(xié)議或傳輸協(xié)議。容器格式 源(360)可以被實(shí)施為操作系統(tǒng)模塊、應(yīng)用庫的一部分、獨(dú)立應(yīng)用的一部分,或者使用專用 硬件來實(shí)施。
[0067] 從容器格式源(360 )輸出的已編碼媒體內(nèi)容(作為一個(gè)或多個(gè)基本媒體比特流)被 存儲在臨時(shí)已編解碼數(shù)據(jù)區(qū)域中,直到足夠數(shù)量的這樣的數(shù)據(jù)被接收到為止。作為基本媒 體比特流的語法的一部分,被緩存的已編碼媒體內(nèi)容可以包括與已編碼媒體內(nèi)容相關(guān)的媒 體元數(shù)據(jù)。
[0068] -般而言,解碼器(不論音頻解碼器(371)、視頻解碼器(372)還是其他解碼器)接 收由容器格式源(360 )在基本媒體比特流中提供的已編碼媒體內(nèi)容并且生成重建的媒體內(nèi) 容。解碼器(37U372)可以是能夠以多種解碼模式中的任何一種(比如,用于實(shí)時(shí)通信的低 等待時(shí)間解碼模式和用于從文件或流進(jìn)行媒體重放的常見解碼模式)來操作的通用解碼工 具,或者其可以是適合于一個(gè)這樣的解碼模式的專用解碼工具。解碼器(37U372)可以被 實(shí)施為操作系統(tǒng)模塊、應(yīng)用庫的一部分、獨(dú)立應(yīng)用的一部分,或者使用專用硬件來實(shí)施。
[0069] -般地,解碼器(37U372)包括實(shí)施解碼任務(wù)(比如熵解碼、反量化、頻率逆變換和 預(yù)測)的多個(gè)解碼模塊。由解碼器(37U372)實(shí)施的確切操作可以根據(jù)編解碼器格式而變 化。對于視頻,已編碼視頻內(nèi)容的格式可以是Windows Media Video格式、VC-I格式、MPEG-x 格式(例如,MPEG- I、MPEG-2、或者 MPEG-4)、Η· 26x 格式(例如,Η· 261、Η· 262、 Η. 263、Η. 264)、HEVC格式,VPx格式或者其他格式。對于圖像,已編碼圖像內(nèi)容的格式可 以是JPEG格式、JPEG-XR格式或另外的格式。對于音頻,已編碼的音頻內(nèi)容的格式可以是 AAC格式(例如,HE AAC)、WMA格式或其他格式。
[0070] 已解碼幀臨時(shí)存儲器存儲區(qū)域可以包括用于重建的媒體內(nèi)容的多個(gè)幀緩存器存 儲區(qū)域。渲染引擎(38U382)處理用于輸出的重建的媒體內(nèi)容。音頻渲染引擎(381)處理 用于輸出的重建的音頻,并且視頻渲染引擎(382)處理用于輸出的重建的視頻。在示例實(shí) 現(xiàn)方式中,視頻渲染引擎(382)包括顏色轉(zhuǎn)換器和顯示模塊。
[0071] IV.對于容器格式語法元素的知曉語法的操縱 這里所描述的創(chuàng)新提供了對媒體文件中根據(jù)容器格式定義的按層級組織的語法元素 實(shí)施知曉語法的操縱的方式。
[0072] 圖6示出了用于對媒體文件中根據(jù)容器格式定義的按層級組織的語法元素進(jìn) 行知曉語法的操縱的一般技術(shù)(600)。比如參照圖3描述的容器格式處理工具實(shí)施技術(shù) (600)〇
[0073] 容器格式處理工具接收(610)用于呈現(xiàn)的按照容器格式的媒體文件。該呈現(xiàn)包括 音頻內(nèi)容、圖像內(nèi)容和/或視頻內(nèi)容。容器格式是樹結(jié)構(gòu)的,使得媒體文件包括根據(jù)容器格 式定義的按照層級組織的語法元素。例如,容器格式是MP4、CFF或另一種容器格式。更一 般地,根據(jù)容器格式定義的按層級組織的語法元素是根據(jù)容器格式嵌套在層級結(jié)構(gòu)中的對 象和對象屬性。
[0074] 容器格式處理工具對于媒體文件中根據(jù)容器格式定義的按層級組織的語法元素 中的至少一些實(shí)施(620)知曉語法的操縱。例如,知曉語法的操縱可以包括,遵循驗(yàn)證(第 IV節(jié)的A)、對于媒體文件的破壞的模仿(第IV節(jié)的B)和/或?qū)τ诿襟w文件的其他編輯(第 IV節(jié)的C)。
[0075] A.遵循驗(yàn)證 對于遵循驗(yàn)證,容器格式處理工具的容器格式驗(yàn)證器檢查媒體文件的容器格式語法元 素遵循容器格式規(guī)范。這可以有助于確保由各種各樣的源生成的媒體文件的互操作性。
[0076] 圖7示出了用于驗(yàn)證按照容器格式的媒體文件的遵循的技術(shù)(700)。比如參照圖 3描述的容器格式處理工具實(shí)施技術(shù)(700)。
[0077] 圖7示出了用于遵循驗(yàn)證的操作的四個(gè)主要階段。替換地,作為遵循驗(yàn)證的一部 分,容器格式處理工具實(shí)施其他和/或不同操作。具體地,工具不需要實(shí)施圖7中所示出的 所有操作。
[0078] 根據(jù)圖7中所示出的技術(shù)(700),該工具驗(yàn)證(710)被單獨(dú)對待的容器格式語法元 素。例如,作為對于根據(jù)容器格式定義的按層級組織的語法元素進(jìn)行的這樣的單一元素驗(yàn) 證的一部分,對于給定語法元素,工具檢查該語法元素的值滿足用于該語法元素的一個(gè)或 多個(gè)約束。典型地,在相關(guān)容器格式規(guī)范中定義用于該語法元素的所述約束。工具可以檢 查媒體文件中的所有語法元素(盒子、屬性)或者檢查語法元素子集。工具可以在根據(jù)容器 格式規(guī)范解析媒體文件的語法元素期間或者在隨后的階段實(shí)施單一元素驗(yàn)證。
[0079] 容器格式處理工具還對所選容器格式語法元素的值進(jìn)行交叉驗(yàn)證(720)。例如,作 為對于根據(jù)容器格式定義的按層級組織的語法元素集合進(jìn)行的這樣的交叉驗(yàn)證的一部分, 對于給定語法元素,工具檢查該語法元素的值與所述按層級組織的語法元素中的一個(gè)或多 個(gè)其他語法元素的值相一致。這驗(yàn)證了所述給定語法元素和媒體文件內(nèi)的其他語法元素之 間的交互是有效的。表1描述了對于示例實(shí)現(xiàn)方式中的一些MP4語法元素進(jìn)行交叉驗(yàn)證的 實(shí)例。
[0080] 替換地,容器格式處理工具檢查交叉驗(yàn)證的其他和/或附加實(shí)例。
[0081] 圖8示出了交叉驗(yàn)證的一般示例。在圖8中,容器(571)具有關(guān)于樣本的定時(shí)、樣本 描述和針對樣本的已編碼媒體內(nèi)容的組塊的位置的信息。容器(571)包括具有關(guān)于視頻的 使用的屬性的視頻頭部(810)、具有關(guān)于樣本組塊的位置的屬性的媒體數(shù)據(jù)源(820)對象 和包括對象(840、850、860)的容器(830),所述對象(840、850、860)具有關(guān)于樣本的定時(shí)、 樣本描述等的信息。對于交叉驗(yàn)證,該工具驗(yàn)證對象1 (840)的屬性2的值與對象2 (850) 的屬性3的值和對象3 (860)的屬性1的值相一致。
[0082] 返回到圖7,容器格式處理工具還驗(yàn)證(730)根據(jù)容器格式定義的按層級組織的 語法元素中的任何強(qiáng)制性語法元素的存在性。例如,該工具檢查任何媒體文件所要求的任 何容器格式語法元素是存在的。此外,考慮用于給定媒體文件的特征(例如,對于影片片段 的隨機(jī)訪問),該工具可以檢查支持該特征的容器格式語法元素的存在性。(這可以被視為 一種交叉驗(yàn)證的情形)。
[0083] 最后,容器格式處理工具驗(yàn)證(740 )同步。例如,為了檢查呈現(xiàn)中的音頻樣本與視 頻樣本之間的同步,該工具檢查音頻樣本之一的時(shí)間戳充分地靠近(例如,根據(jù)預(yù)定義的閾 值)所述視頻樣本中的對應(yīng)的一個(gè)視頻樣本的時(shí)間戳。按照這種方式,該工具驗(yàn)證時(shí)間戳離 得不太遠(yuǎn)。如果時(shí)間戳離得太遠(yuǎn),則該工具可以調(diào)整時(shí)間戳、丟棄幀(例如,視頻幀),以便改 善同步或者使得重放失效。
[0084] B.樽仿破壞 容器格式處理工具還可以模仿對于按照容器格式的媒體文件的破壞。破壞的媒體文件 可以導(dǎo)致容器格式源在解析期間崩潰,或者以其他方式導(dǎo)致拒絕服務(wù)。通過模仿對于媒體 文件的破壞,該工具促進(jìn)了測試容器格式源的能力。
[0085] 容器格式處理工具可以以不同方式改動媒體文件以便模仿對于媒體文件的不同 種類的破壞。在一些情況下,按照容器格式的媒體文件由于在流送或會議期間的隨機(jī)比特 反轉(zhuǎn)而被破壞。容器格式工具可以使用圖9中所示的技術(shù)(900)來模仿這樣的破壞。比如 參照圖3描述的容器格式處理工具實(shí)施技術(shù)(900)。
[0086] 容器格式處理工具獲得(910)在媒體文件中要改動的下一個(gè)容器格式語法元素。 例如,該工具跳到在媒體文件內(nèi)或者在媒體文件中的對象內(nèi)的前頭,以便識別要改動的下 一個(gè)容器格式語法元素。或者,該工具識別由用戶選擇的類型的要改動的下一個(gè)容器格式 語法元素。
[0087] 該工具利用另一個(gè)值來替代該容器格式語法元素的值。例如,該工具在其替代該 語法元素的值時(shí)模仿了一個(gè)或多個(gè)隨機(jī)比特反轉(zhuǎn)。替換地,該工具以某種其他方式替代該 值。
[0088] 該工具檢查(930)是否還要改動容器格式語法元素,如果是,則獲得(910)要改動 的下一個(gè)容器格式語法元素。按照這種方式,該工具可以改動媒體文件中的一個(gè)或多個(gè)容 器格式語法元素。
[00