0

在我们的平台上,“ 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,但“now”在EOS平台上可能停留0.98ms。

(1) 现在,Stardboard API 无法从 Cobalt 接收持续时间。持续时间始终为 -1。如果 Stardboard 可以将持续时间传递给我们,我们可以在向 Cobalt 通知“kSbPlayerStateEndOfStream”时强制 EOS 的当前时间等于持续时间。

(2) 也许删除检查“now >= dur”也可以解决这个问题。

Cobalt 可以通过 (1) 或 (2) 的方式解决这个问题吗?或者你有什么其他建议吗?

谢谢

4

2 回答 2

0

您使用哪个钴版本?一些合作伙伴可以通过修改其实现来通过此测试。你可以参考最新的 Cobalt 开源实现,因为它也通过了这个测试。

丹尼尔

于 2017-06-20T02:42:00.393 回答
0

我们正在调查这个问题,它很可能是我们代码中的一个错误。我们将在此处为您提供最新信息以了解任何进展。

于 2017-07-19T20:41:10.567 回答