问题描述
CtsVideoTestCases
android.video.cts.VideoEncoderDecoderTest#testAvcOther0Perf0320x0240
fail
junit.framework.AssertionFailedError: Expected achievable frame rates forOMX.MTK.VIDEO.ENCODER.AVC video/avc 320x240: [161.0, 561.0].
fail
junit.framework.AssertionFailedError: Expected achievable frame rates forOMX.MTK.VIDEO.ENCODER.AVC video/avc 320x240: [161.0, 561.0].
android.video.cts.VideoEncoderDecoderTest#testAvcOther0Perf0720x0480
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 720x480: [67.0, 234.0].
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 720x480: [67.0, 234.0].
android.video.cts.VideoEncoderDecoderTest#testAvcOther0Perf1280x0720
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 1280x720: [29.0, 102.0].
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 1280x720: [29.0, 102.0].
android.video.cts.VideoEncoderDecoderTest#testAvcOther0Perf1920x1080
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 1920x1080: [29.0, 102.0].android.media.cts.VideoDecoderPerfTest#testVp8Goog0Perf1920x1080
fail
junit.framework.AssertionFailedError: Expected achievable frame rates for OMX.MTK.VIDEO.ENCODER.AVC video/avc 1920x1080: [29.0, 102.0].android.media.cts.VideoDecoderPerfTest#testVp8Goog0Perf1920x1080
android.video.cts.VideoEncoderDecoderTest#testAvcGoog0Perf0720x0480
Fail:
junit.framework.AssertionFailedError: Expected achievable frame rates for c2.android.avc.encoder video/avc 720x480: [45.0, 156.0].
Measured frame rate: [31.523520894659264, 29.52814031772279].
at junit.framework.Assert.fail(Assert.java:50)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertNull(Assert.java:237)
at android.video.cts.VideoEncoderDecoderTest.doTest(VideoEncoderDecoderTest.java:844)
at android.video.cts.VideoEncoderDecoderTest.perf(VideoEncoderDecoderTest.java:206)
at android.video.cts.VideoEncoderDecoderTest.testAvcGoog0Perf0720x0480(VideoEncoderDecoderTest.java:243)
XML 提供的 google avc codec framerate range 不符合 CTS 預期
解决方案
将以下的值修改一下
c2.android.vp8.decoder | 1920x1080 | Range值:4-8 | ||
OMX.MTK.VIDEO.ENCODER.AVC | 0320x0240 | Range值:14-30 | ||
OMX.MTK.VIDEO.ENCODER.AVC | 0720x0480 | Range值:11-24 | ||
OMX.MTK.VIDEO.ENCODER.AVC | 1280x0720 | Range值:7-15 | ||
OMX.MTK.VIDEO.ENCODER.AVC | 1920x1080 | Range值:7-15 |
調整 XML google avc codec framerate range
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-720x480" range="11-25" />
由於Google codec都是軟件實現且由Google直接維護
MTK只需要依照跑出來的數據填進xml即可
官方指導方針:
https://source.android.com/devices/media/oem.html#2_achievable_frame_rates_for_video_codecs
确保有合入以下两笔patch:
ALPS04979477
ALPS05065973