在我们的平台上,“http://qual-e.appspot.com/”中的测试用例“18. MediaElementEvents”由于“已结束”而失败,无法在Cobalt中触发
conformanceTest-20170531180007.js 中的以下js代码:
media.addEventListener('ended', function() {
self.log('onended called');
runner.succeed();
});
我无法收到结束回调,测试用例将失败
html_media_element.cc :
中的以下C代码if (!SbDoubleIsNan(dur) && (0.0f != dur) && now >= dur && playback_rate_0)
{
......
if(!sent_end_event)
{
send_end_event_ = true;
ScheduleOwnEvent(base:Tokens::ended());
}
......
}
您可以看到检查“ now> = dur ”,这可能导致不再触发已结束的回调。 因为平台在EOS的当前时间和持续时间之间可能存在微小的差距。以此测试用例为例,“dur”为1.000s,但“现在”可能在EOS平台上保持0.98ms。
(1) 现在,Stardboard API无法从Cobalt接收持续时间。持续时间始终为-1。 如果Stardboard可以将持续时间传递给我们,我们可以强制EOS的当前时间等于将“kSbPlayerStateEndOfStream”通知给Cobalt时的持续时间。
(2) 也许删除支票“now> = dur”也只是解决了这个问题。
Cobalt可以通过(1)或(2)的方式解决这个问题吗?或者您还有其他建议吗?
由于
答案 0 :(得分:0)
你使用哪种钴版? 一些合作伙伴可以通过修改其实施来通过此测试。您也可以在通过此测试时参考最新的Cobalt开源实现。
丹尼尔
答案 1 :(得分:0)
我们正在调查此问题,很可能是我们代码中的错误。我们会及时通知您,以便取得进展。