專利名稱:Yuv文件的存儲(chǔ)、播放方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻處理領(lǐng)域,特別涉及視頻處理領(lǐng)域中的存儲(chǔ)、播放技術(shù)。
背景技術(shù):
現(xiàn)有的YUV文件的存儲(chǔ)方法只存儲(chǔ)原始YUV數(shù)據(jù),無封裝層。同時(shí),YUV文件都是按順序一幀一幀的存儲(chǔ)在單個(gè)文件中。由于在單個(gè)文件中,是一種YUV幀數(shù)據(jù)的順序堆積, 幀與幀之間沒有明顯的分隔符,因此在播放YUV數(shù)據(jù)的時(shí)候,如果在未知YUV幀寬高的情況下,是無法正確顯示YUV圖像的。而且如果不知道幀率則無法還原原有視頻的播放效果。另外,對(duì)于在單個(gè)YUV文件實(shí)現(xiàn)多個(gè)分辨率YUV幀的播放,則需要保存更多的信息,如不同的分辨率的寬高,及何時(shí)變化等等。在目前的現(xiàn)有技術(shù)中,YUV播放器是從文件頭開始讀取一幀幀固定長(zhǎng)度的數(shù)據(jù),因此將YUV幀寬高、幀率等屬性信息作為參數(shù)信息保存在其他參數(shù)文件中,然后在播放YUV文件時(shí),通過對(duì)參數(shù)文件的解析實(shí)現(xiàn)YUV文件的播放。然而,通過對(duì)參數(shù)文件的解析實(shí)現(xiàn)YUV文件的播放,需要手動(dòng)輸入解析到的參數(shù), 無法實(shí)現(xiàn)YUV文件的自適應(yīng)播放。而且,將參數(shù)信息保存在其他參數(shù)文件中,很可能會(huì)因參數(shù)文件與YUV文件的分離而導(dǎo)致參數(shù)文件的丟失或者參數(shù)文件與YUV文件的誤匹配,從而致使YUV文件無法進(jìn)行正確播放。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種YUV文件的存儲(chǔ)、播放方法及其裝置,實(shí)現(xiàn)YUV單文件的多分辨率、變幀率的自適應(yīng)播放。為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種YUV文件的存儲(chǔ)方法,包含以下步驟將YUV幀順序?qū)懭隮UV文件中,并將同類型的YUV幀作為一個(gè)片段,生成該片段的
屬性信息;當(dāng)待存儲(chǔ)的YUV幀已全部寫入YUV文件后,在YUV文件中寫入?yún)?shù)信息,并在參數(shù)信息后,將參數(shù)信息的長(zhǎng)度寫入該YUV文件中,參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示;其中,參數(shù)信息為依次生成的各片段的屬性信息的集合。本發(fā)明的實(shí)施方式還提供了一種YUV文件的播放方法,對(duì)應(yīng)于上文的YUV文件的存儲(chǔ)方法,包含以下步驟從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度;根據(jù)參數(shù)信息長(zhǎng)度,得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,并在YUV文件中讀取參數(shù)信息;根據(jù)參數(shù)信息中包含的各片段的屬性信息,播放YUV文件中存儲(chǔ)的YUV幀。本發(fā)明的實(shí)施方式還提供了一種YUV文件的存儲(chǔ)裝置,包含
YUV數(shù)據(jù)寫入模塊,用于將YUV幀順序?qū)懭隮UV文件中;屬性信息生成模塊,用于將同類型的YUV幀作為一個(gè)片段,生成該片段的屬性信息;參數(shù)信息寫入模塊,用于當(dāng)YUV數(shù)據(jù)寫入模塊已將待存儲(chǔ)的YUV幀全部寫入YUV 文件后,在YUV文件中寫入?yún)?shù)信息,參數(shù)信息為屬性信息生成模塊依次生成的各片段的屬性信息的集合;長(zhǎng)度信息寫入模塊,用于在參數(shù)信息寫入模塊將參數(shù)信息寫入YUV文件后,將參數(shù)信息的長(zhǎng)度寫入該YUV文件中,參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示。本發(fā)明的實(shí)施方式還提供了一種YUV文件的播放裝置,對(duì)應(yīng)于上文的YUV文件的存儲(chǔ)裝置,包含參數(shù)信息長(zhǎng)度獲取模塊,用于從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度;參數(shù)信息讀取模塊,用于根據(jù)參數(shù)信息長(zhǎng)度,得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,并在YUV文件中讀取參數(shù)信息;播放模塊,用于根據(jù)參數(shù)信息中包含的各片段的屬性信息,播放YUV文件中存儲(chǔ)的YUV幀。本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于將參數(shù)信息(即各片段的屬性信息)寫在YUV幀數(shù)據(jù)之后,并在參數(shù)信息之后,寫入?yún)?shù)信息的長(zhǎng)度,該參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示。由于在YUV文件的尾部寫入了參數(shù)信息長(zhǎng)度,并且該參數(shù)信息長(zhǎng)度是以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示的,因此在播放時(shí), 只需從該YUV文件尾部先讀取該預(yù)定長(zhǎng)度的字節(jié)數(shù),即可獲取到參數(shù)信息的長(zhǎng)度,根據(jù)該參數(shù)信息長(zhǎng)度,可得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,進(jìn)而讀取到參數(shù)信息。 由于參數(shù)信息包含了依次生成的各片段的屬性信息(如幀高、幀寬等),因此可以根據(jù)該參數(shù)信息還原出各片段中YUV幀的顯示參數(shù),完成YUV幀的播放。對(duì)于傳統(tǒng)的播放器而言,仍是從從文件頭開始讀取一幀幀固定長(zhǎng)度的數(shù)據(jù),并且無需手動(dòng)輸入?yún)?shù),無需額外保存參數(shù)信息,極大的改善了 YUV文件的播放可控性,實(shí)現(xiàn)YUV文件的自適應(yīng)播放。而且,由于不同片段中包含的是不同類型的幀,因此可以實(shí)現(xiàn)YUV單文件的多分辨率的,變幀率的播放。進(jìn)一步地,在將參數(shù)信息的長(zhǎng)度寫入該YUV文件后,還需在YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符。通過標(biāo)識(shí)符的設(shè)置,可使得播放裝置能輕易地判別YUV文件為攜帶參數(shù)信息的YUV文件,還是純YUV數(shù)據(jù)的文件,從而選擇相應(yīng)的播放方法,因此能夠較好地與現(xiàn)有技術(shù)相兼容。進(jìn)一步地,標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。由于四字節(jié)的數(shù)據(jù)一共是32位,出現(xiàn)偽標(biāo)識(shí)符的概率至少是1/232,因此可以較好地避免發(fā)生出現(xiàn)偽標(biāo)識(shí)符的情況。進(jìn)一步地,生成的各片段的屬性信息,分別保存在相同的數(shù)據(jù)結(jié)構(gòu)中,不同片段所對(duì)應(yīng)的用于保存本片段的屬性信息的數(shù)據(jù)結(jié)構(gòu),使用不同的結(jié)構(gòu)名稱。采用相同的數(shù)據(jù)結(jié)構(gòu)保存各片段的屬性信息,有利于在播放時(shí)能夠更方便地讀取對(duì)各片段的屬性信息。
圖1是根據(jù)本發(fā)明第一實(shí)施方式的YUV文件的存儲(chǔ)方法流程圖2是根據(jù)本發(fā)明第一實(shí)施方式中的YUV文件存儲(chǔ)示意圖;圖3是根據(jù)本發(fā)明第二實(shí)施方式的YUV文件的播放方法流程圖;圖4是根據(jù)本發(fā)明第三實(shí)施方式中的YUV文件存儲(chǔ)示意圖;圖5是根據(jù)本發(fā)明第三實(shí)施方式的YUV文件的存儲(chǔ)方法流程圖;圖6是根據(jù)本發(fā)明第四實(shí)施方式的YUV文件的播放方法流程圖;圖7是根據(jù)本發(fā)明第五實(shí)施方式的YUV文件的存儲(chǔ)裝置示意圖;圖8是根據(jù)本發(fā)明第六實(shí)施方式的YUV文件的播放裝置示意圖。
具體實(shí)施例方式在以下的敘述中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請(qǐng)各權(quán)利要求所要求保護(hù)的技術(shù)方案。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明第一實(shí)施方式涉及一種YUV文件的存儲(chǔ)方法,在本實(shí)施方式中,預(yù)先設(shè)置
如下數(shù)據(jù)結(jié)構(gòu)
struct framelnfo {
startPos; //(4字節(jié))片段數(shù)據(jù)的開始位置 endPos; // (4字節(jié))片段數(shù)椐的結(jié)束位置 frameWidth;//(2 字節(jié))幀寬 frameHeight;//(2 字節(jié))幀高 YUVForamt; // (2 字節(jié))YUV 格式 frameRate; //(2 字節(jié))幀率一個(gè)上述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)一個(gè)片段(同類型的YUV幀屬于同一個(gè)片段),用于保存該片段的屬性信息(即該片段的數(shù)據(jù)開始位置、片段的數(shù)據(jù)結(jié)束位置、屬于該片段的YUV幀的幀寬、幀高、YUV格式、幀率等等)。也就是說,如果待存儲(chǔ)的YUV幀共有N種類型,則這N 種類型的YUV幀分別屬于N個(gè)片段,利用N個(gè)上述數(shù)據(jù)結(jié)構(gòu)保存各片段的屬性信息。不同片段所對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),使用不同的結(jié)構(gòu)名稱。采用相同的數(shù)據(jù)結(jié)構(gòu)保存各片段的屬性信息,有利于在播放時(shí)能夠更方便地讀取對(duì)各片段的屬性信息。通常一個(gè)數(shù)據(jù)結(jié)構(gòu)的大小占 16個(gè)字節(jié)。本實(shí)施方式的具體流程如圖1所示,在步驟101中,獲取一幀待存儲(chǔ)的YUV幀。接著,進(jìn)入步驟102,獲取待存儲(chǔ)的YUV幀的相關(guān)信息,如該YUV幀的幀寬、幀高、YUV格式、幀率等等。接著,進(jìn)入步驟103,判斷步驟101中獲取的YUV幀是否屬于已有片段的幀,本實(shí)施方式中,將同類型的YUV幀作為一個(gè)片段。如果判定為不屬于已有片段的幀,則進(jìn)入步驟 104 ;如果屬于已有片段的幀,則進(jìn)入步驟105。比如說,如果步驟101中獲取的YUV幀是待存儲(chǔ)的第一幀,則由于尚未存在任何片段,此時(shí)該YUV幀不可能屬于已有片段,需要進(jìn)入步驟104?;蛘?,如果該YUV幀的相關(guān)信息 (如幀寬、幀高、YUV格式、幀率等等),與之前獲取的YUV幀的相關(guān)信息發(fā)生了變化,則說明該YUV幀屬于一個(gè)新的片段,不屬于已有片段,也同樣需要進(jìn)入步驟104。在步驟104中,生成該YUV幀所屬片段的屬性信息,并將生成的該片段的屬性信息保存在一個(gè)上述數(shù)據(jù)結(jié)構(gòu)中。當(dāng)然,不同片段所對(duì)應(yīng)的用于保存本片段的屬性信息的數(shù)據(jù)結(jié)構(gòu),需要使用不同的結(jié)構(gòu)名稱。在步驟105中,將獲取的YUV幀寫入YUV文件中。接著,進(jìn)入步驟106,判斷待存儲(chǔ)的YUV幀是否已全部存儲(chǔ)結(jié)束,即判斷待存儲(chǔ)的 YUV幀是否已全部寫入YUV文件中。如果已全部寫入YUV文件中,則進(jìn)入步驟107,如果尚未全部寫入YUV文件中,則回到步驟101,繼續(xù)獲取一幀YUV,直至待存儲(chǔ)的YUV幀已全部寫入YUV文件,進(jìn)入步驟107。在步驟107中,在YUV文件中寫入?yún)?shù)信息,參數(shù)信息為依次生成的各片段的屬性信息的集合。也就是說,如果有N個(gè)片段,則該參數(shù)信息為依次生成的N個(gè)上述數(shù)據(jù)結(jié)構(gòu), 每個(gè)數(shù)據(jù)結(jié)構(gòu)中保存有所對(duì)應(yīng)的片段的屬性信息。由于在進(jìn)入本步驟之前,待存儲(chǔ)的YUV 幀勢(shì)必已全部寫入YUV文件中,因此參數(shù)信息勢(shì)必是寫在所有待存儲(chǔ)的YUV幀的數(shù)據(jù)之后。 在實(shí)際應(yīng)用中,可以采用四字節(jié)對(duì)齊的方式,將參數(shù)信息寫入YUV文件中,以避免內(nèi)存讀取偏移的問題。接著,進(jìn)入步驟108,在參數(shù)信息后,將參數(shù)信息的長(zhǎng)度寫入該YUV文件中,參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示。在本實(shí)施方式中,參數(shù)信息的長(zhǎng)度用四個(gè)字節(jié)表示。也就是說,YUV文件的末尾4個(gè)字節(jié),為參數(shù)信息的長(zhǎng)度,如圖2所示。本發(fā)明第二實(shí)施方式涉及一種YUV文件的播放方法,本實(shí)施方式的YUV文件的播放方法與第一實(shí)施方式的YUV文件的存儲(chǔ)方法相對(duì)應(yīng)。具體流程如圖3所示,在步驟301中,從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度。由于在第一實(shí)施方式中,預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù)為4個(gè)字節(jié),因此在本步驟中,讀取YUV文件尾部的4個(gè)字節(jié),即讀取YUV文件中倒數(shù)的第1至第4個(gè)字節(jié),獲取參數(shù)信息長(zhǎng)度。接著,在步驟302中,根據(jù)參數(shù)信息長(zhǎng)度,得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,并在YUV文件中讀取參數(shù)信息。由于參數(shù)信息中包含了各片段的屬性信息,因此可通過讀取參數(shù)信息,得到各片段所對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中保存的本片段的屬性信息。接著,在步驟303中,讀取一個(gè)片段的屬性信息,即讀取一個(gè)片段所對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。接著,在步驟304中,根據(jù)讀取的數(shù)據(jù)結(jié)構(gòu)中所保存的片段的屬性信息(包括該片段的數(shù)據(jù)開始位置、該片段的數(shù)據(jù)結(jié)束位置、該片段中的幀寬、幀高、YUV格式、幀率),重設(shè)顯示參數(shù)。
7
接著,在步驟305中,讀取一幀YUV幀。接著,在步驟306中,根據(jù)重設(shè)的顯示參數(shù),還原所讀取的YUV幀。接著,在步驟307中,判斷該YUV幀所屬的片段是否已結(jié)束,如果已經(jīng)結(jié)束,則進(jìn)入步驟308,如果尚未結(jié)束,則回到步驟305,繼續(xù)讀取一幀YUV幀。在步驟308中,判斷YUV文件是否已經(jīng)結(jié)束,即該YUV文件中所存儲(chǔ)的YUV數(shù)據(jù)是否已全部播放完,如果已全部播放完,則結(jié)束本流程;如果尚未全部播放完,則回到步驟 303,繼續(xù)讀取一個(gè)片段的屬性信息。也就是說,對(duì)于YUV文件中的每個(gè)片段,根據(jù)從該片段的屬性信息中獲取的該片段的數(shù)據(jù)開始位置、該片段的數(shù)據(jù)結(jié)束位置、該片段中的幀寬、幀高、YUV格式、幀率,播放該片段中的YUV幀,直至完成YUV文件中所有存儲(chǔ)的YUV幀的播放。由于在YUV文件的尾部寫入了參數(shù)信息長(zhǎng)度,并且該參數(shù)信息長(zhǎng)度是以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示的,因此在播放時(shí),只需從該YUV文件尾部先讀取該預(yù)定長(zhǎng)度的字節(jié)數(shù),即可獲取到參數(shù)信息的長(zhǎng)度,根據(jù)該參數(shù)信息長(zhǎng)度,可得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,進(jìn)而讀取到參數(shù)信息。由于參數(shù)信息包含了依次生成的各片段的屬性信息(如幀高、幀寬等),因此可以根據(jù)該參數(shù)信息還原出各片段中YUV幀的顯示參數(shù),完成YUV幀的播放。對(duì)于傳統(tǒng)的播放器而言,仍是從從文件頭開始讀取一幀幀固定長(zhǎng)度的數(shù)據(jù),并且無需手動(dòng)輸入?yún)?shù),無需額外保存參數(shù)信息,極大的改善了 YUV文件的播放可控性,實(shí)現(xiàn)YUV文件的自適應(yīng)播放。而且,由于不同片段中包含的是不同類型的幀,因此可以實(shí)現(xiàn)YUV單文件的多分辨率的,變幀率的播放。本發(fā)明第三實(shí)施方式涉及一種YUV文件的存儲(chǔ)方法。第三實(shí)施方式在第一實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于在本實(shí)施方式中,在將參數(shù)信息的長(zhǎng)度寫入該 YUV文件后,還需在YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符,如圖4所示。具體地說,本實(shí)施方式的流程如圖5所示,步驟501至步驟508分別與步驟101至步驟108相同,在此不再贅述。在步驟509中,在將參數(shù)信息的長(zhǎng)度寫入該YUV文件后,在YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符(如HYUV)。在本實(shí)施方式中,標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。在本實(shí)施方式中,通過標(biāo)識(shí)符的設(shè)置,可使得播放裝置能輕易地判別YUV文件為攜帶參數(shù)信息的YUV文件,還是純YUV數(shù)據(jù)的文件,從而選擇相應(yīng)的播放方法,因此能夠較好地與現(xiàn)有技術(shù)相兼容。而且,由于四字節(jié)的數(shù)據(jù)一共是32位,出現(xiàn)偽標(biāo)識(shí)符的概率至少是1/232,因此可以較好地避免發(fā)生出現(xiàn)偽標(biāo)識(shí)符的情況。此外,可以理解,在實(shí)際應(yīng)用中,也可以采用小于 4個(gè)字節(jié)的字節(jié)數(shù)表示標(biāo)識(shí)符。本發(fā)明第四實(shí)施方式涉及一種YUV文件的播放方法,本實(shí)施方式的YUV文件的播放方法與第三實(shí)施方式的YUV文件的存儲(chǔ)方法相對(duì)應(yīng)。本實(shí)施方式在第二實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于在從YUV 文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù)之前,還需判斷YUV文件的尾部的固定長(zhǎng)度的字節(jié)數(shù),是否為標(biāo)識(shí)符,如果是標(biāo)識(shí)符,則將標(biāo)識(shí)符在YUV文件中的起始位置,作為該YUV文件的尾部,讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù)。具體地說,由于在YUV文件中,在參數(shù)信息的長(zhǎng)度后,還設(shè)置了長(zhǎng)度至少為4個(gè)字
8節(jié)的標(biāo)識(shí)符。因此,在本實(shí)施方式中,需要先從YUV文件的末尾處讀取固定長(zhǎng)度的字節(jié)數(shù)。 比如說,標(biāo)識(shí)符為4個(gè)字節(jié),那么需讀取YUV文件中倒數(shù)的第1至第4字節(jié),判斷YUV文件中倒數(shù)的第1至第4個(gè)字節(jié)是否為標(biāo)識(shí)符,如果是標(biāo)識(shí)符,則將標(biāo)識(shí)符在YUV文件中的起始位置,作為該YUV文件的尾部,讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),即讀取YUV 文件中倒數(shù)的第5至第8個(gè)字節(jié),獲取參數(shù)信息長(zhǎng)度,之后的流程與第二實(shí)施方式相同,在此不再贅述。如果YUV文件中倒數(shù)的第1至第4個(gè)字節(jié)不是標(biāo)識(shí)符,則說明該YUV文件不是攜帶參數(shù)信息的YUV文件,因此采用常規(guī)的方法播放該YUV文件,如圖6所示。需要說明的是,本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。 不管本發(fā)明是以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲(chǔ)在任何類型的計(jì)算機(jī)可訪問的存儲(chǔ)器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲(chǔ)器可以例如是可編程陣列邏輯 (Programmable ArrayLogic,簡(jiǎn)稱 “PAL”)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,簡(jiǎn)稱 “RAM”)、可編程只讀存儲(chǔ)器(Programmable Read Only Memory,簡(jiǎn)稱“PROM”)、只讀存儲(chǔ)器 (Read-Only Memory,簡(jiǎn)稱 “ROM”)、電可擦除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable ROM,簡(jiǎn)稱“EEPROM”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc, 簡(jiǎn)稱“DVD”)等等。本發(fā)明第五實(shí)施方式涉及一種YUV文件的存儲(chǔ)裝置。如圖7所示,該YUV文件的存儲(chǔ)裝置包含YUV數(shù)據(jù)寫入模塊,用于將YUV幀順序?qū)懭隮UV文件中。屬性信息生成模塊,用于將同類型的YUV幀作為一個(gè)片段,生成該片段的屬性信肩、ο參數(shù)信息寫入模塊,用于當(dāng)YUV數(shù)據(jù)寫入模塊已將待存儲(chǔ)的YUV幀全部寫入YUV 文件后,在YUV文件中寫入?yún)?shù)信息,參數(shù)信息為屬性信息生成模塊依次生成的各片段的屬性信息的集合。長(zhǎng)度信息寫入模塊,用于在參數(shù)信息寫入模塊將參數(shù)信息寫入YUV文件后,將參數(shù)信息的長(zhǎng)度寫入該YUV文件中,參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示。其中,每個(gè)片段的屬性信息包含以下信息片段的數(shù)據(jù)開始位置、片段的數(shù)據(jù)結(jié)束位置、幀寬、幀高、YUV格式、幀率。值得一提的是,屬性信息生成模塊將生成的各片段的屬性信息,分別保存在相同的數(shù)據(jù)結(jié)構(gòu)中,不同片段所對(duì)應(yīng)的用于保存本片段的屬性信息的數(shù)據(jù)結(jié)構(gòu),使用不同的結(jié)構(gòu)名稱。不難發(fā)現(xiàn),第一實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。本發(fā)明第六實(shí)施方式涉及一種YUV文件的播放裝置,該YUV文件的播放裝置用于播放第五實(shí)施方式中存儲(chǔ)的YUV文件。具體如圖8所示,包含參數(shù)信息長(zhǎng)度獲取模塊,用于從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度。
參數(shù)信息讀取模塊,用于根據(jù)參數(shù)信息長(zhǎng)度,得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,并在YUV文件中讀取參數(shù)信息。播放模塊,用于根據(jù)參數(shù)信息中包含的各片段的屬性信息,播放YUV文件中存儲(chǔ)的YUV幀。其中,播放模塊在根據(jù)參數(shù)信息中包含的各片段的屬性信息,播放YUV文件中存儲(chǔ)的YUV幀時(shí),對(duì)于每個(gè)片段,根據(jù)從該片段的屬性信息中獲取的該片段的數(shù)據(jù)開始位置、 該片段的數(shù)據(jù)結(jié)束位置、該片段中的幀寬、幀高、YUV格式、幀率,播放該片段中的YUV幀。不難發(fā)現(xiàn),第二實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實(shí)施方式中。本發(fā)明第七實(shí)施方式涉及一種YUV文件的存儲(chǔ)裝置,第七實(shí)施方式在第五實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于長(zhǎng)度信息寫入模塊還用于在將參數(shù)信息的長(zhǎng)度寫入該YUV文件后,在YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符。其中,標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。不難發(fā)現(xiàn),第三實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第三實(shí)施方式互相配合實(shí)施。第三實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第三實(shí)施方式中。本發(fā)明第八實(shí)施方式涉及一種YUV文件的播放裝置,該YUV文件的播放裝置用于播放第七實(shí)施方式中存儲(chǔ)的YUV文件。第八實(shí)施方式在第六實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于YUV文件的播放裝置還包含標(biāo)識(shí)符判斷模塊,用于在參數(shù)信息長(zhǎng)度獲取模塊獲取參數(shù)信息長(zhǎng)度之前,判斷YUV 文件的尾部的固定長(zhǎng)度的字節(jié)數(shù),是否為標(biāo)識(shí)符,如果是標(biāo)識(shí)符,則觸發(fā)參數(shù)信息長(zhǎng)度獲取模塊將標(biāo)識(shí)符在YUV文件中的起始位置,作為該YUV文件的尾部,獲取參數(shù)信息長(zhǎng)度。其中, 標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。不難發(fā)現(xiàn),第四實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第四實(shí)施方式互相配合實(shí)施。第四實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第四實(shí)施方式中。需要說明的是,本發(fā)明各設(shè)備實(shí)施方式中提到的各單元都是邏輯單元,在物理上, 一個(gè)邏輯單元可以是一個(gè)物理單元,也可以是一個(gè)物理單元的一部分,還可以以多個(gè)物理單元的組合實(shí)現(xiàn),這些邏輯單元本身的物理實(shí)現(xiàn)方式并不是最重要的,這些邏輯單元所實(shí)現(xiàn)的功能的組合是才解決本發(fā)明所提出的技術(shù)問題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各設(shè)備實(shí)施方式并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元引入,這并不表明上述設(shè)備實(shí)施方式并不存在其它的單元。雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對(duì)本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種YUV文件的存儲(chǔ)方法,其特征在于,包含以下步驟將YUV幀順序?qū)懭隮UV文件中,并將同類型的YUV幀作為一個(gè)片段,生成該片段的屬性 fn息;當(dāng)待存儲(chǔ)的YUV幀已全部寫入YUV文件后,在YUV文件中寫入?yún)?shù)信息,并在所述參數(shù)信息后,將所述參數(shù)信息的長(zhǎng)度寫入該YUV文件中,所述參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示;其中,所述參數(shù)信息為依次生成的各片段的屬性信息的集合。
2.根據(jù)權(quán)利要求1所述的YUV文件的存儲(chǔ)方法,其特征在于,每個(gè)片段的屬性信息包含以下信息片段的數(shù)據(jù)開始位置、片段的數(shù)據(jù)結(jié)束位置、幀寬、幀高、YUV格式、幀率。
3.根據(jù)權(quán)利要求1所述的YUV文件的存儲(chǔ)方法,其特征在于,在將所述參數(shù)信息的長(zhǎng)度寫入該YUV文件后,還包含以下步驟在所述YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符。
4.根據(jù)權(quán)利要求3所述的YUV文件的存儲(chǔ)方法,其特征在于,所述標(biāo)識(shí)符的長(zhǎng)度至少為 4個(gè)字節(jié)。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的YUV文件的存儲(chǔ)方法,其特征在于,所述生成的各片段的屬性信息,分別保存在相同的數(shù)據(jù)結(jié)構(gòu)中,不同片段所對(duì)應(yīng)的用于保存本片段的屬性信息的數(shù)據(jù)結(jié)構(gòu),使用不同的結(jié)構(gòu)名稱。
6.一種YUV文件的播放方法,對(duì)應(yīng)于權(quán)利要求1所述的YUV文件的存儲(chǔ)方法,其特征在于,包含以下步驟從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度;根據(jù)所述參數(shù)信息長(zhǎng)度,得到所述參數(shù)信息在所述YUV文件的起始位置和結(jié)束位置, 并在所述YUV文件中讀取所述參數(shù)信息;根據(jù)所述參數(shù)信息中包含的各片段的屬性信息,播放所述YUV文件中存儲(chǔ)的YUV幀。
7.根據(jù)權(quán)利要求6所述的YUV文件的播放方法,其特征在于,所述根據(jù)參數(shù)信息中包含的各片段的屬性信息,播放所述YUV文件中存儲(chǔ)的YUV幀的步驟中,包含以下子步驟對(duì)于每個(gè)所述片段,根據(jù)從該片段的屬性信息中獲取的該片段的數(shù)據(jù)開始位置、該片段的數(shù)據(jù)結(jié)束位置、該片段中的幀寬、幀高、YUV格式、幀率,播放該片段中的YUV幀。
8.根據(jù)權(quán)利要求6所述的YUV文件的播放方法,其特征在于,在所述從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù)的步驟之前,還包含以下步驟判斷所述YUV文件的尾部的固定長(zhǎng)度的字節(jié)數(shù),是否為標(biāo)識(shí)符,如果是標(biāo)識(shí)符,則將所述標(biāo)識(shí)符在所述YUV文件中的起始位置,作為該YUV文件的尾部,進(jìn)入所述從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù)的步驟。
9.根據(jù)權(quán)利要求8所述的YUV文件的播放方法,其特征在于,所述標(biāo)識(shí)符的長(zhǎng)度至少為 4個(gè)字節(jié)。
10.一種YUV文件的存儲(chǔ)裝置,其特征在于,包含YUV數(shù)據(jù)寫入模塊,用于將YUV幀順序?qū)懭隮UV文件中;屬性信息生成模塊,用于將同類型的YUV幀作為一個(gè)片段,生成該片段的屬性信息;參數(shù)信息寫入模塊,用于當(dāng)所述YUV數(shù)據(jù)寫入模塊已將待存儲(chǔ)的YUV幀全部寫入YUV 文件后,在YUV文件中寫入?yún)?shù)信息,所述參數(shù)信息為所述屬性信息生成模塊依次生成的各片段的屬性信息的集合;長(zhǎng)度信息寫入模塊,用于在所述參數(shù)信息寫入模塊將所述參數(shù)信息寫入所述YUV文件后,將所述參數(shù)信息的長(zhǎng)度寫入該YUV文件中,所述參數(shù)信息的長(zhǎng)度以預(yù)定長(zhǎng)度的字節(jié)數(shù)表不。
11.根據(jù)權(quán)利要求10所述的YUV文件的存儲(chǔ)裝置,其特征在于,每個(gè)片段的屬性信息包含以下信息片段的數(shù)據(jù)開始位置、片段的數(shù)據(jù)結(jié)束位置、幀寬、幀高、YUV格式、幀率。
12.根據(jù)權(quán)利要求10所述的YUV文件的存儲(chǔ)裝置,其特征在于,所述長(zhǎng)度信息寫入模塊還用于在將所述參數(shù)信息的長(zhǎng)度寫入該YUV文件后,在所述YUV文件的末尾設(shè)置長(zhǎng)度固定的標(biāo)識(shí)符。
13.根據(jù)權(quán)利要求12所述的YUV文件的存儲(chǔ)裝置,其特征在于,所述標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。
14.根據(jù)權(quán)利要求10至13中任一項(xiàng)所述的YUV文件的存儲(chǔ)裝置,其特征在于,所述屬性信息生成模塊將生成的各片段的屬性信息,分別保存在相同的數(shù)據(jù)結(jié)構(gòu)中,不同片段所對(duì)應(yīng)的用于保存本片段的屬性信息的數(shù)據(jù)結(jié)構(gòu),使用不同的結(jié)構(gòu)名稱。
15.一種YUV文件的播放裝置,對(duì)應(yīng)于權(quán)利要求10所述的YUV文件的存儲(chǔ)裝置,其特征在于,包含參數(shù)信息長(zhǎng)度獲取模塊,用于從YUV文件的尾部讀取預(yù)定長(zhǎng)度的用于表示參數(shù)信息長(zhǎng)度的字節(jié)數(shù),獲取參數(shù)信息長(zhǎng)度;參數(shù)信息讀取模塊,用于根據(jù)所述參數(shù)信息長(zhǎng)度,得到所述參數(shù)信息在所述YUV文件的起始位置和結(jié)束位置,并在所述YUV文件中讀取所述參數(shù)信息;播放模塊,用于根據(jù)所述參數(shù)信息中包含的各片段的屬性信息,播放所述YUV文件中存儲(chǔ)的YUV幀。
16.根據(jù)權(quán)利要求15所述的YUV文件的播放裝置,其特征在于,所述播放模塊在根據(jù)所述參數(shù)信息中包含的各片段的屬性信息,播放所述YUV文件中存儲(chǔ)的YUV幀時(shí),對(duì)于每個(gè)所述片段,根據(jù)從該片段的屬性信息中獲取的該片段的數(shù)據(jù)開始位置、該片段的數(shù)據(jù)結(jié)束位置、該片段中的幀寬、幀高、YUV格式、幀率,播放該片段中的YUV幀。
17.根據(jù)權(quán)利要求15所述的YUV文件的播放裝置,其特征在于,YUV文件的播放裝置還包含標(biāo)識(shí)符判斷模塊,用于在所述參數(shù)信息長(zhǎng)度獲取模塊獲取參數(shù)信息長(zhǎng)度之前,判斷所述YUV文件的尾部的固定長(zhǎng)度的字節(jié)數(shù),是否為標(biāo)識(shí)符,如果是標(biāo)識(shí)符,則觸發(fā)所述參數(shù)信息長(zhǎng)度獲取模塊將所述標(biāo)識(shí)符在所述YUV文件中的起始位置,作為該YUV文件的尾部,獲取所述參數(shù)信息長(zhǎng)度。
18.根據(jù)權(quán)利要求17所述的YUV文件的播放裝置,其特征在于,所述標(biāo)識(shí)符的長(zhǎng)度至少為4個(gè)字節(jié)。
全文摘要
本發(fā)明涉及視頻處理領(lǐng)域,公開了一種YUV文件的存儲(chǔ)、播放方法及其裝置。本發(fā)明中,將參數(shù)信息(即各片段的屬性信息)寫在YUV幀數(shù)據(jù)之后,并在參數(shù)信息之后,寫入?yún)?shù)信息的長(zhǎng)度,并且該參數(shù)信息長(zhǎng)度是以預(yù)定長(zhǎng)度的字節(jié)數(shù)表示,因此在播放時(shí),只需從該YUV文件尾部先讀取該預(yù)定長(zhǎng)度的字節(jié)數(shù),即可獲取到參數(shù)信息的長(zhǎng)度,根據(jù)該參數(shù)信息長(zhǎng)度,可得到參數(shù)信息在YUV文件的起始位置和結(jié)束位置,進(jìn)而讀取到參數(shù)信息。可以根據(jù)該參數(shù)信息還原出各片段中YUV幀的顯示參數(shù),完成YUV幀的播放,從而實(shí)現(xiàn)YUV單文件的多分辨率的,變幀率的自適應(yīng)播放。
文檔編號(hào)G11B20/12GK102169706SQ20111003061
公開日2011年8月31日 申請(qǐng)日期2011年1月28日 優(yōu)先權(quán)日2011年1月28日
發(fā)明者王川艷, 胡揚(yáng)忠, 賈永華, 鄔偉琪, 郭斌 申請(qǐng)人:杭州??低曑浖邢薰?