android.media.cts.CamcorderProfileTest -- testGetWithId

本文分析了CameraCTS测试失败的原因,主要是由于featuretable配置中缺少特定的videosize(352x288)。提供了修改配置文件的具体步骤,以确保CTS测试通过。

[DESCRIPTION]
使用不在SensorAvailable List中的YUV sensor 时,或者改动feature table 配置之后
CTS fail issue:
Camera CTS通不过
testGeWithId(android.media.cts.CamcorderProfileTest)
[ANALYSE]
从log中看,不支持352x288 的video size
videoFrameWidth=352,videoFrameHeight=288, audioCodec=3, audioBitRate=128000, audioSampleRate=48000, audioChannels=2

10-24 16:17:07.541 5391 5407 E CamcorderProfileTest: Size (352x288) is not supported
10-24 16:17:07.543 5391 5407 I TestRunner: failed: testGetWithId(android.media.cts.CamcorderProfileTest)

是使用的sensor 对应的feature table 中video size 提供的不全,未提供352x288 的video size导致CTS fail
[SOLUTION]
请参考Camera Framework&mhal这个category下“sendepfeature配置表config.ftbl..h文件 对应的是IC名称


video size 一项中加入352x288。

#if 1
    //  Video Size
    FTABLE_CONFIG_AS_TYPE_OF_DEFAULT_VALUES(
        KEY_AS_(MtkCameraParameters::KEY_VIDEO_SIZE), 
        SCENE_AS_DEFAULT_SCENE(
            ITEM_AS_DEFAULT_("640x480"), 
            ITEM_AS_VALUES_(
                "
176x144",     "352x288", "480x320",      "640x480", 
                "864x480",      "1280x720",     "1920x1080", 
            )
        ), 
    )
#endif
分析一下这个报错: There were 10 failures: java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119) java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119) java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119) java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119) java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119) java.lang.AssertionError: Found 1 of 7 expected frames at org.junit.Assert.fail(Assert.java:89) at android.media.codec.cts.EncodeVirtualDisplayTest.doTestEncodeVirtual(EncodeVirtualDisplayTest.java:494) at android.media.codec.cts.EncodeVirtualDisplayTest.encodeVirtualDisplayTest(EncodeVirtualDisplayTest.java:284) at android.media.codec.cts.EncodeVirtualDisplayTest.-$$Nest$mencodeVirtualDisplayTest(Unknown Source:0) at android.media.codec.cts.EncodeVirtualDisplayTest$EncodeVirtualWrapper.run(EncodeVirtualDisplayTest.java:233) at java.lang.Thread.run(Thread.java:1119)
最新发布
10-19
`java.lang.AssertionError: Found 1 of 7 expected frames` 是一个断言错误,通常在 Java 程序中的断言失败时抛出。断言是编程时用来检查程序状态的一种机制,允许开发者在代码中放置检查点,在开发阶段帮助验证程序的状态是否符合预期。如果断言失败(即检查的条件为假),则会抛出 `AssertionError` [^2]。 在 `android.media.codec.cts.EncodeVirtualDisplayTest` 类中出现此错误,可能有以下原因: - **逻辑错误**:代码中断言的条件未满足。在这个测试类中,可能存在对帧数的预期与实际情况不符的逻辑,导致只找到了 1 帧,而期望是 7 帧。例如,编码过程中出现异常,使得只有 1 帧被正确编码,而后续的帧未能正常处理 [^3]。 - **未启用断言**:`assert` 语句未被启用,导致逻辑问题未被及时捕获。不过这种情况相对较少,因为已经抛出了 `AssertionError`,说明断言是被启用的,但也不能完全排除配置问题导致部分断言未生效 [^3]。 - **断言的输入或状态不正确**:例如断言依赖的变量或对象状态与预期不符。可能在测试开始前,某些关键变量的初始化有误,或者在测试过程中,相关对象的状态发生了意外改变,影响了帧数的统计 [^3]。 - **误用断言**:将断言用于检查程序运行时的重要逻辑,而非仅用于开发调试。如果断言被用于处理程序运行时的关键逻辑,当出现异常情况时,就可能导致断言失败。在这个测试类中,可能将断言用于检查帧数,而没有对各种可能的异常情况进行充分的异常处理 [^3]。 ### 示例代码分析 以下是一个简单的示例,模拟可能出现此错误的代码情况: ```java public class EncodeVirtualDisplayTest { public void testEncodeFrames() { int expectedFrames = 7; int actualFrames = encodeFrames(); // 模拟编码帧的方法 assert actualFrames == expectedFrames : "Found " + actualFrames + " of " + expectedFrames + " expected frames"; } private int encodeFrames() { // 模拟编码过程,只编码了 1 帧 return 1; } } ``` 在上述代码中,`encodeFrames` 方法只返回了 1 帧,而断言期望的是 7 帧,因此会抛出 `AssertionError`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值