add color converter for NV12 to RGB
(cherry-picked from https://android-review.googlesource.com/c/platform/frameworks/av/+/773126/ with fixes on non-zero crops) CTS-on-gsi test, CtsMediaTestCases -- android.media.cts.MediaMetadataRetrieverTest#testGetFrameAtIndex failed CtsMediaTestCases -- android.media.cts.MediaMetadataRetrieverTest#testGetFramesAtIndex failed CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_Grid_Handler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_Grid_NoHandler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_Handler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_NoHandler fail [Android Version]: VTS Version 9.0_r2 [CTS pachage version] Suite / Plan VTS / cts-on-gsi Suite / Build 9.0_R2 [device](Any device config may relate this failure) unisoc's device size:1080*1920 [bugzilla bugid] 117044023 [CTS Test Pre–Condition] 1.Language set to EN; 2.Keyguard set to none; 3.Enable GPS, Wifi network, USB debugging, Stay awake, Allow mock locations. 4.CTS version is VTS / cts-on-gsi 9.0_r2 [CTS Test Step]: 1 ./vts-tradefed 2 run cts-on-gsi [Expected Result ]: This case will pass. [Testing Result]: case failed: CtsMediaTestCases android.media.cts.MediaMetadataRetrieverTest#testGetFrameAtIndex failed android.media.cts.MediaMetadataRetrieverTest#testGetFramesAtIndex failed android.media.cts.HeifWriterTest#testInputBitmap_Grid_Handler fail android.media.cts.HeifWriterTest#testInputBitmap_Grid_NoHandler fail android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_Handler fail android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_NoHandler fail [Analysize]: log: 07-30 12:21:07.795 364 489 E FrameDecoder: Unable to convert from format 0x00000015 to 0x7f00a000 07-30 12:21:07.795 364 489 E FrameDecoder: failed to get video frame (err -1010) From the log, we find the testcase is related with colorformat. Bug #117044023 [root cause]: 1. we can get below information from source code: OMX_COLOR_FormatYUV420SemiPlanar = 0x00000015 ; OMX_COLOR_Format32BitRGBA8888 = 0x7f00a000; “ MediaMetadataRetrieverTest#testGetFrameAtIndex” cts case requires the color format of the frame data to be OMX_COLOR_Format32BitRGBA8888 color format. Frameworks\av\media\libstagefright\colorconversion\ColorConverter.cpp : bool ColorConverter::isValid() const { …… case OMX_COLOR_FormatYUV420Planar: return mDstFormat == OMX_COLOR_Format16bitRGB565 || mDstFormat == OMX_COLOR_Format32BitRGBA8888 || mDstFormat == OMX_COLOR_Format32bitBGRA8888; case OMX_COLOR_FormatYUV420SemiPlanar: case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar: return mDstFormat == OMX_COLOR_Format16bitRGB565; ……} ColorConverter does not support color format conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. 2. The input data of this case should be OMX_COLOR_Format32BitRGBA8888 color format, and the ColorConverter in frameworks only support color format conversion from OMX_COLOR_FormatYUV420Planar to OMX_COLOR_Format32BitRGBA8888, does not support from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. But the video hardware decoder of Unisoc device can output YUV data with OMX_COLOR_FormatYUV420SemiPlanar color format, it can not output OMX_COLOR_FormatYUV420Planar color format. So this case failed. [changes]: Add a color conversion code to ColorConverter(Frameworks\av\media\libstagefright\colorconversion\ColorConverter.cpp, the patch is listed below). Enable ColorConverter to support color conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. Because the hardware decoder of Spreadtrum phone does not support OMX_COLOR_FormatYUV420Planar. we need the ColorConverter in frameworks support color format conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. We will request to waive for this. Could you help us or give us a waiver? Thanks a lot. [side effects]:No [self test]: pass [download normally]:Yes [power on/off normally]:Yes [do common repository/branch inspection]:Yes [is there dependence]:No [confirm dependent commit]:No [board]: unisoc device [change_type ] fix [tag_product ] common [test Case]:as testing steps [reviewers]: wenan.hu [Patch Link]: https://android-review.googlesource.com/c/platform/frameworks/av/+/773126 Change-Id: I882f3729a9620b4c5c456a3099b5e8809b4b5545 Signed-off-by: melvin xu <melvin.xu@spreadtrum.com> DO NOT MERGE: add color converter for NV12 to RGB (cherry-picked from aosp/773126, with more fixes on offset for non-zero crop) CTS-on-gsi test, CtsMediaTestCases -- android.media.cts.MediaMetadataRetrieverTest#testGetFrameAtIndex failed CtsMediaTestCases -- android.media.cts.MediaMetadataRetrieverTest#testGetFramesAtIndex failed CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_Grid_Handler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_Grid_NoHandler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_Handler fail CtsMediaTestCases -- android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_NoHandler fail [Android Version]: VTS Version 9.0_r2 [CTS pachage version] Suite / Plan VTS / cts-on-gsi Suite / Build 9.0_R2 [device](Any device config may relate this failure) unisoc's device size:1080*1920 [bugzilla bugid] 117044023 [CTS Test Pre–Condition] 1.Language set to EN; 2.Keyguard set to none; 3.Enable GPS, Wifi network, USB debugging, Stay awake, Allow mock locations. 4.CTS version is VTS / cts-on-gsi 9.0_r2 [CTS Test Step]: 1 ./vts-tradefed 2 run cts-on-gsi [Expected Result ]: This case will pass. [Testing Result]: case failed: CtsMediaTestCases android.media.cts.MediaMetadataRetrieverTest#testGetFrameAtIndex failed android.media.cts.MediaMetadataRetrieverTest#testGetFramesAtIndex failed android.media.cts.HeifWriterTest#testInputBitmap_Grid_Handler fail android.media.cts.HeifWriterTest#testInputBitmap_Grid_NoHandler fail android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_Handler fail android.media.cts.HeifWriterTest#testInputBitmap_NoGrid_NoHandler fail [Analysize]: log: 07-30 12:21:07.795 364 489 E FrameDecoder: Unable to convert from format 0x00000015 to 0x7f00a000 07-30 12:21:07.795 364 489 E FrameDecoder: failed to get video frame (err -1010) From the log, we find the testcase is related with colorformat. Bug #117044023 [root cause]: 1. we can get below information from source code: OMX_COLOR_FormatYUV420SemiPlanar = 0x00000015 ; OMX_COLOR_Format32BitRGBA8888 = 0x7f00a000; “ MediaMetadataRetrieverTest#testGetFrameAtIndex” cts case requires the color format of the frame data to be OMX_COLOR_Format32BitRGBA8888 color format. Frameworks\av\media\libstagefright\colorconversion\ColorConverter.cpp : bool ColorConverter::isValid() const { …… case OMX_COLOR_FormatYUV420Planar: return mDstFormat == OMX_COLOR_Format16bitRGB565 || mDstFormat == OMX_COLOR_Format32BitRGBA8888 || mDstFormat == OMX_COLOR_Format32bitBGRA8888; case OMX_COLOR_FormatYUV420SemiPlanar: case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar: return mDstFormat == OMX_COLOR_Format16bitRGB565; ……} ColorConverter does not support color format conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. 2. The input data of this case should be OMX_COLOR_Format32BitRGBA8888 color format, and the ColorConverter in frameworks only support color format conversion from OMX_COLOR_FormatYUV420Planar to OMX_COLOR_Format32BitRGBA8888, does not support from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. But the video hardware decoder of Unisoc device can output YUV data with OMX_COLOR_FormatYUV420SemiPlanar color format, it can not output OMX_COLOR_FormatYUV420Planar color format. So this case failed. [changes]: Add a color conversion code to ColorConverter(Frameworks\av\media\libstagefright\colorconversion\ColorConverter.cpp, the patch is listed below). Enable ColorConverter to support color conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. Because the hardware decoder of Spreadtrum phone does not support OMX_COLOR_FormatYUV420Planar. we need the ColorConverter in frameworks support color format conversion from OMX_COLOR_FormatYUV420SemiPlanar to OMX_COLOR_Format32BitRGBA8888. We will request to waive for this. Could you help us or give us a waiver? Thanks a lot. [side effects]:No [self test]: pass [download normally]:Yes [power on/off normally]:Yes [do common repository/branch inspection]:Yes [is there dependence]:No [confirm dependent commit]:No [board]: unisoc device [change_type ] fix [tag_product ] common [test Case]:as testing steps [reviewers]: wenan.hu [Patch Link]: https://android-review.googlesource.com/c/platform/frameworks/av/+/773126 Change-Id: I882f3729a9620b4c5c456a3099b5e8809b4b5545 Signed-off-by: melvin xu <melvin.xu@spreadtrum.com>
Loading
Please register or sign in to comment