无法在Cobalt中触发javascript“已结束”事件

时间:2017-06-20 02:34:22

标签: cobalt

在我们的平台上,“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)的方式解决这个问题吗?或者您还有其他建议吗?

由于

2 个答案:

答案 0 :(得分:0)

你使用哪种钴版? 一些合作伙伴可以通过修改其实施来通过此测试。您也可以在通过此测试时参考最新的Cobalt开源实现。

丹尼尔

答案 1 :(得分:0)

我们正在调查此问题,很可能是我们代码中的错误。我们会及时通知您,以便取得进展。