出現(xiàn)Acodec using color format in place of及ImageReader overriding buffer format的原因分析

轉(zhuǎn)載自:Penguin

背景

在使用MediaCodec解碼時可能出現(xiàn)如ACodec: [OMX.IMG.MSVDX.Decoder.AVC] using color format 0x15 in place of 0x7f420888,實際解碼的顏色格式與指定的顏色格式不一致;以及在使用ImageReader時出現(xiàn)ImageReader_imageSetup: Overriding buffer format YUV_420_888 to 32315659,實際的圖片顏色格式與指定的顏色格式不一樣。

出現(xiàn)這兩種情況都是正常的,而且在大部分情況下是必須的。

原因分析

MediaCodec

首先來說using color format 0x15 in place of 0x7f420888,這個的意思是解碼前給解碼器設(shè)定的顏色格式是0x7f420888,但實際解碼時顏色格式被自動替換成了0x15。

0x7f420888是在MediaCodecInfo.CodecCapabilities中定義的,代表的顏色格式是COLOR_FormatYUV420Flexible,而這種顏色格式從來都不是一個確定的格式,只是代表YUV420這一類格式。從官方文檔中可以看到,COLOR_FormatYUV420Flexible可以代表的顏色格式包括:COLOR_FormatYUV411Planar,COLOR_FormatYUV411PackedPlanarCOLOR_FormatYUV420Planar,COLOR_FormatYUV420PackedPlanar,COLOR_FormatYUV420SemiPlanar以及COLOR_FormatYUV420PackedSemiPlanar

當在MediaCodec解碼器中指定顏色格式為COLOR_FormatYUV420Flexible,實際上是在解碼時由解碼器在COLOR_FormatYUV420Flexible包括的格式中,選擇一種支持的格式進行解碼,同時會在日志中記下這個過程。所以說出現(xiàn)這個提示是正常的,你指定需要解碼為COLOR_FormatYUV420Flexible顏色格式,實際解碼后給你的也是COLOR_FormatYUV420Flexible格式。

ImageReader

Overriding buffer format YUV_420_888 to 32315659也是同樣的道理,意思是指定ImageReader接收Image的顏色格式為YUV_420_888,但實際Image的顏色格式為32315659。

YUV_420_888是在ImageFormat中定義的,代表YUV420這類格式,其中每個顏色分量都是8bit。而32315659則代表YV12,同樣是YUV420格式中的一種;實際上還有NV21,NV16等也屬于YUV420這類格式。

當在ImageReader中指定顏色格式為YUV_420_888時,實際只要顏色格式屬于YUV420ImageImageReader都會接收,同時會在日志中記下這個正常的顏色格式不一致。所以說出現(xiàn)這個提示也是正常的,你指定ImageReader接收YUV_420_888,實際接收到的Image也是YUV_420_888格式。

獲取具體顏色格式?

想必有人還是會想要知道具體的顏色格式,而不僅僅是一條日志。就像日志出現(xiàn)了using color format 0x15 in place of 0x7f420888,能不能用代碼獲取到現(xiàn)在的顏色格式已經(jīng)是0x15了呢?很抱歉,就我目前所知,是不能獲取到的。

甚至,當你能看到這個日志記錄時,說你你已經(jīng)用上API 21了,而我上面說到的具體的顏色格式,其中絕大多數(shù)在API 21已經(jīng)deprecated掉了;也就是說我們不用太指望還會有Android方法能夠應(yīng)用這些具體的顏色格式。

我的建議是,你可以好好看看Image類,并且試著去用Image類,不要再糾結(jié)于過于具體的顏色格式。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容