01:42:11 RRSAgent has joined #datacue 01:42:11 logging to https://www.w3.org/2019/09/18-datacue-irc 01:42:17 RRSAgent, make log public 01:45:02 Meeting: DataCue and "Time marches on" in HTML 01:50:36 koalie has joined #datacue 01:50:42 koalie has changed the topic to: https://w3c.github.io/tpac-breakouts/sessions.html 01:50:45 koalie has left #datacue 01:56:37 takio has joined #datacue 01:57:22 dom has joined #datacue 01:58:34 romain has joined #datacue 01:58:38 cyril has joined #datacue 01:58:46 rrsagent, start meeting 01:58:46 I'm logging. I don't understand 'start meeting', cyril. Try /msg RRSAgent help 01:58:56 present+ 01:59:01 gkatsev has joined #datacue 01:59:04 Chair: Chris Needham 01:59:08 scribe: Cyril 02:00:16 meeting: DataCue and "Time marches on" in HTML 02:00:21 present+ 02:00:22 pal has joined #datacue 02:00:25 rrsagent, draft minutes 02:00:25 I have made the request to generate https://www.w3.org/2019/09/18-datacue-minutes.html cyril 02:00:27 chcunningham has joined #datacue 02:00:27 present+ 02:00:30 present+ 02:00:44 ericc has joined #datacue 02:00:46 jkamata has joined #datacue 02:00:57 present+ 02:01:19 stepsteg has joined #datacue 02:01:24 chris: topics are discuss the DataCue API and the Time marches on algorithm 02:01:33 Topic: DataCue API 02:01:33 tidoust has joined #datacue 02:01:41 present+ 02:01:42 chris: if anybody is not familiar so far 02:01:51 ... our goal is we want to introduce native user agent support 02:01:55 ... for DASH events 02:02:11 ... as past of support for MPEG CMAF content 02:02:24 ... alongside if UA has native user support for DASH playback 02:02:33 ... we would like to support out of band MPD events 02:02:45 ... HbbTV is an example of a player that has nativd DASH support 02:02:50 present+ 02:03:11 atai has joined #datacue 02:03:13 ... I'd like to discuss implementer interest for other metadata cue formats 02:03:20 ... for example Safari has support for ID3 02:03:41 ... we also want API support for application-generated timed metadata cues 02:03:49 ... when generated by a player 02:04:03 ... the existing approach is to use the VTT cue 02:04:16 ... either inline or as a reference in the VTTCue object 02:04:38 ... having a more convenient datacue API that let us store in the preferred format would be better 02:04:50 ... our goals are: sync arbitrary data with video 02:05:08 ... e.g. dashcams sensor data 02:05:36 ... there is a lot of interest from the Open Geo Consortium 02:05:53 ... the applicability is broader than for the M&E IG 02:06:04 ... [shows current support for DataCue API] 02:06:18 mounir has joined #datacue 02:07:01 ... basically no support so far in Chrome or Firefox 02:07:14 ... some support in Safari with an extended API 02:07:41 nigel has joined #datacue 02:07:52 Present+ Nigel 02:07:57 rrsagent, pointer? 02:07:57 See https://www.w3.org/2019/09/18-datacue-irc#T02-07-57 02:08:44 ... [showing the data structure for emsg] 02:08:54 ... there a 2 versions that differ wrt the timing 02:09:14 ... there would need a mapping between the esmg timing and the cue timing 02:09:17 tk has joined #datacue 02:09:26 MasayaIkeo has joined #datacue 02:09:36 ... in v0 the timing is relative 02:10:02 ... the data is a byte array, so you need a schema to identify the data 02:10:29 ... DASH-IF is working in parallel around specifying a delivery and processing model for DASH events 02:10:41 ... they are considering more types of players, not web platform only 02:10:53 ... one of the requirements they have identified 02:11:07 ... is that in order for an application to get prepared for presenting a cue, e.g. a video overlay 02:11:15 ... that may require fetching other resources 02:11:19 marisa has joined #datacue 02:11:28 ... they signal the event to the application ahead of time 02:11:40 ... to be able to render at the appropriate time 02:11:51 ... so we have 2 events: onreceive and onstart 02:12:03 ... I have a number of questions: 02:12:25 ... it relates to the early discussion around this, should in band events be exposed as a byte array 02:12:37 ... or should they be exposed as objects 02:12:46 ... the second approach makes it easier for app devs 02:12:57 ... this may be desirables for cues that are commonly used 02:13:05 ... for example within DASH players 02:13:26 ... the emsg can be used for application specific events 02:13:37 ... and we don't need support from browsers for those 02:13:51 ... there is a question of how we identify inband tracks 02:13:56 ... there are various fields 02:14:20 ... all of them seem to enable identifying the kind of metadata 02:14:31 ... it is not clear to me reading the spec and comparing implementation 02:14:39 ... what the level of support is 02:14:59 chris_c: on your first bullet 02:15:23 ... is it a reasonable behavior to fallback to the opaque array buffer when you don't understand the type? 02:15:36 chris: I'd like to understand what common subset can be supported? 02:15:58 ... but the fallback could be a good approach if we have an API for that 02:16:24 francois: youll end up with 2 representations for the same data 02:16:36 ... so in the end the devs have to handle the opaque case 02:16:49 ... so in this case we shouldn't bother about the structured object 02:16:55 eric: I disagree strongly 02:17:11 ... there are metadata formats that are very difficult for JS to parse 02:17:15 ... correctly 02:17:29 ... so that's why I added the implementation to WebKit 02:17:39 ... because we had lots of requests to support datacues 02:17:50 ... and just supporting arrays is not doing web authors a servie 02:18:06 francois: it is better to have a system that works across browsers 02:18:21 eric: if we ddecide that structured data is important 02:18:27 ... we need to agree on a set of types 02:18:38 ... that we want to support 02:18:56 ... there will always be custom metadata 02:19:06 ... people can put anything a container format 02:19:13 ... and they want to have access to them 02:19:25 igarashi_ has joined #datacue 02:19:26 ... it does not make sense to have support for limited set 02:19:41 chris: I can imagine a world where an impl wants to provide access to ID3 and another not 02:19:51 ... it's the responsability of the dev to know that 02:20:06 eric: I agree that we should not end up in this situation 02:20:16 mounir: is there benefit in trying to avoid that? 02:20:22 eric: I think so 02:20:28 ... we don't have to end up there 02:20:36 ... if we can come up with a way to describe the cue 02:20:50 ... and require that a browser that uses that identifier have a structured data 02:21:44 mounir: there could be security issues and different parsing if the browser do it themself 02:22:20 richard: if the parsing within the browser and use webassembly, how could there be a security issue? 02:22:32 mounir: if you use webassembly that's ok 02:22:49 ... we try to avoid doing parsing in C++ 02:23:04 chris_c: I'm trying to understand what the fallback would look like 02:23:10 ... maybe the ID3 would not be contentious 02:23:49 chris: having an API structure that lets the application introspect the cue 02:24:11 gkatsev: ID3 in HLS, safari parses it, but in other browsers you have to do it yoursefl 02:24:25 nigel: is the data in the array buffer a registered type 02:24:50 ericc: no the data has no indication 02:24:51 niwamoto has joined #datacue 02:24:54 cyril: no magic number? 02:24:56 ericc: no 02:25:13 chris: the emsg also indicates the scheme id 02:25:27 ericc: with the current data cue api, the array buffer would have that whole thing from start to end 02:25:42 ... and you'd have to snfiff the bits to figure out if it's an emsg or id3 02:26:01 ... and it's going to have to parse it to determine if it's a emsg or not 02:26:47 nigel: imagine that we expose this data through MSE 02:26:54 dontcallmeDOM has joined #datacue 02:27:11 ... the bytestream would be identifiable 02:27:46 ericc: the UA, thing that parses the raw media container, does have a signal about what kind of metadata it is 02:28:00 ... if the data cue had a scheme and identifier for the type of metadata and an array buffer 02:28:10 ... then in theory it could know how to parse it 02:28:20 ... the reason I decided that was not practical for us 02:28:37 ...is that there are metadata values that are extremely complex to parse 02:28:44 ...like HLS has a pList 02:28:52 ... writing a parser for a binary pList in JS 02:29:00 ... is not easy 02:29:23 ... pratically speaking, WebKit does not have access to the raw pList 02:29:29 ... the low level does the parsing 02:29:36 ... and we get it as a native object 02:29:46 ... a representation of the data 02:29:56 ... which WebKit converts into a JS object attached to the datacue 02:30:18 greg: most of the conversation is about inband 02:30:30 ... I can see datacue useful for out of band use cases 02:30:37 ericc: that is a part of this 02:30:50 ... from script you can make a new data cue with start/end 02:30:53 ... and attach anything 02:31:14 chris: the explainer is incomplete and in a very early stage 02:31:17 ... it does not explain everything 02:31:30 ericc: any solution we come up with has to support cues from script 02:31:43 scribe: nigel 02:31:51 cyril: Comment on synchronisation 02:32:02 .. The payload of the metadata may trigger behaviour with unbounded complexity 02:32:15 .. so that's why you probably need to process it in advance and to know in advance the practical bound. 02:32:23 .. To me this is similar to how video content is processed. 02:32:34 .. We don't have two timestamps, one for receiving, the other for presenting. 02:32:41 .. The implementation has to know when to preprocess things. 02:32:42 NJ_ has joined #datacue 02:32:50 .. So I'm not convinced that having two events is a good approach. 02:32:57 ericc: I agree and am strongly opposed to having two. 02:32:58 eric: I strongly oppose to having 2 timestamps 02:33:03 scribe: cyril 02:33:21 ... in addition you cannot predict how much it is going to take in the app to do the processing 02:33:40 ... if what you are suggested is that a cue should be delivered as soon as it is available 02:33:46 ... that's going to vary widely 02:33:56 .. depending on where the parsing happens 02:34:19 francois: perhaps it's useful to look at why 02:34:43 cyril: I agree, 3 categories of event: 02:34:49 .. Overlay, maybe after js processing. 02:34:58 .. Network impact, like making requests or sending messages 02:35:02 .. 3rd, modifying the DOM 02:35:07 s/Ov/1. Ov 02:35:11 s/Ne/2. Ne 02:35:31 .. The 3rd category - you should be able to pre-render in advance and keep your frames until they're ready 02:35:36 .. The other two I'm not sure about yet. 02:35:46 i/cyril:/scribe: nigel 02:35:50 scribe: cyril 02:36:04 chris: I'd like to move on to the next part, synchronization 02:36:07 Topic: Time marches on 02:36:19 chris: web apps use the oncuechange 02:36:30 ... triggered by the time marches on 02:36:40 ... and the spec says there is an upper limit 02:36:54 ... but in practice some implementations do follow the upper limit 02:37:09 ... this means that it is possible for an application to miss a short duration cue entirely 02:37:24 ... the cuechange event is fired, the app inspects the active cues list 02:37:27 ... and acts 02:37:47 ... it's quite possible that in between cues triggered there are cues that app don't see it 02:38:02 ... there is a bug report raised by Jon Piesing, HbbTV 02:38:12 ... and the recommendation is not to create short cues 02:38:18 ... but it's worse than that 02:38:31 ... you have to take execution time into account 02:38:43 ... use of oncuechange is problematic for handling cues 02:38:54 ... the good news is that if you want to avoid missng cues 02:39:07 ... you can attach events to onenter and on exit 02:39:20 q+ foolip 02:39:29 nigel: but if it was missed, enter/exit are triggered at the same time 02:39:51 ... and if there are visual changes they will be missed 02:40:07 foolip: the time marches on step are not defined to run every 250ms 02:40:22 ... it's meant to be continuous 02:40:35 ... only the event are triggered every 250ms 02:40:41 chris: that's not my readinfg of the spec 02:40:59 foolip: the problem is that implementations are not following the spec because that's easier to do 02:41:09 ericc: if you run a test to look at the variance 02:41:15 ... you'll see 10-20ms 02:41:25 because we don't use the time marches on 02:41:29 ... but look at the cues 02:41:37 ... this is a quality of implementation issue 02:41:48 nigel: this is a spec question 02:41:53 ... [reading the spec] 02:42:13 foolip: it's just for the timeupdate event 02:42:17 ... not for the cue events 02:42:55 foolip: [explaining how it worked in Presto] 02:43:06 nigel: chrome does it this way 02:43:13 foolip: not because the spec is wrong 02:43:24 nigel: but the spec allows it 02:43:35 chris: we need a follow-up to understand that 02:43:47 foolip: maybe open a bug in chromium 02:44:04 chris_n: the spec does not mandate 250ms 02:44:19 ericc: so that we are not firing timeupdate events to not overload the system 02:44:30 ... we could, but that would cause other issues 02:44:32 ack 02:44:39 ack foolip 02:44:42 q? 02:45:10 pierre: the spec guarantees that every single cue will be fired 02:45:21 ... regardless of the algorithm ? 02:45:28 gkatsev: no some have been missed 02:45:46 scott: the text says some cues can be skipped 02:46:29 ericc: cues can be dropped 02:47:04 pal: if I have a cue that has a duration of d is there a req that difference between onenter and onexit is close to d? 02:47:06 ericc: no 02:47:18 pal: you could get them simulatenously 02:47:38 ericc: but if there is onenter/onexit it should be fired 02:47:43 foolip: that's a good idea 02:47:58 chris: another related issue is 02:48:06 ... we want a more accurate firing of these events 02:48:19 ... driven by the need to align captions with shots or scene changes in the video 02:48:28 ... and we came up with a number of 20ms 02:48:43 ... that gives a chance to the application 02:48:53 nigel: you want to replace the number 250 with 20? 02:48:56 chris: no 02:49:22 richard: the shorter the time limit goes down, it's exponential the power you're going to have 02:49:47 foolip: the reason the schedulig is poor isnot for battery saving 02:49:59 ericc: it was because it was simpler to write 02:50:19 ... it's not possible to guarantee any kind specific latency 02:50:32 ... because the browser is under the same constraints as anything else 02:50:58 nigel: that depends on the frame rate 02:51:07 ericc: cues are not tied to frames 02:51:17 foolip: but frames have time stamos 02:51:33 ericc: in my system the frames are rendered by a different subsystem 02:52:03 foolip: there is a quality of implementation issue 02:52:18 ericc: no matter what wording we put in the spec 02:52:22 ... it won't help you 02:52:31 ... you have to file bugs to get what you need 02:52:53 chris_n: I wouldn't close an issue because it is ok with the spec 02:53:09 chris: I see some inconsistencies between implementations 02:53:17 ... when the application moves cues around in the timeline 02:53:25 ... if you change time of the cues 02:53:28 ... and if you seek the media 02:53:35 ... and seek over some cues 02:53:43 ericc: have you filed bugs? 02:53:46 chris: not yet 02:54:13 chris_n: a spec update is not necessary but it may be useful to avoid others doing the same mistake 02:54:22 ericc: we should not wait for TPAC to file bugs 02:54:35 ... if we want to have the issue fixed quickly 02:54:43 nigel: it's hard to file a bug with the given spec 02:55:07 ericc: if you file a bug with an example and it is not good enough even if it matches the spec we should fix it 02:55:20 ... we could get the spec improved 02:55:36 foolip: all specs are wrong every other paragraph! 02:56:09 richard: sometimes I've asked to fix an implementation but been told that the impl is within the spec 02:56:33 foolip: it happens that implementers consider the spec as untouchable but you should escalate 02:57:07 chris: [showing a waverform library demo] 02:57:21 ... I'm using VTTCues 02:57:40 ... adjusting the times on cues 02:57:48 ... it's not the only use case 02:58:34 ... [showing a table of what events get fired in practice] 02:59:30 ericc: you should file a bug 03:00:34 chris: the next stage is the meeting on Friday, joint Media WG and Timed Text 03:00:44 ... we should figure out how to use that time productively 03:00:46 -> https://bugs.chromium.org/p/chromium/issues/detail?id=576310 Blink bug 03:00:55 -> https://bugs.chromium.org/p/chromium/issues/detail?id=907459 blink bug 03:00:58 ... it seems filing bug is the recommendation 03:01:08 rrsagent, make minutes 03:01:09 I have made the request to generate https://www.w3.org/2019/09/18-datacue-minutes.html cyril 03:10:35 ericc has joined #datacue 03:20:30 ericc_ has joined #datacue 03:34:32 ericc has joined #datacue 03:37:46 pal has joined #datacue 03:39:51 ericc has joined #datacue 04:18:39 tidoust has joined #datacue 04:22:15 marisa has joined #datacue 04:27:59 marisa has joined #datacue 04:28:25 romain has joined #datacue 04:28:32 romain has left #datacue 04:29:20 atai has joined #datacue 04:29:39 dontcallmeDOM has joined #datacue 04:30:51 ericc_ has joined #datacue 04:34:10 MasayaIkeo has joined #datacue 04:43:52 dom has left #datacue 04:51:38 atai has joined #datacue 05:26:03 MasayaIkeo has joined #datacue 05:27:47 ericc has joined #datacue 05:31:19 tidoust has joined #datacue 05:32:56 pal has joined #datacue 05:35:58 atai has joined #datacue 05:35:59 marisa has joined #datacue 05:36:16 marisa has joined #datacue 05:36:19 marisa has left #datacue 05:39:12 MasayaIkeo has joined #datacue 06:32:05 MasayaIkeo has joined #datacue 06:44:06 MasayaIkeo has joined #datacue 07:18:47 tidoust has joined #datacue 07:27:28 ericc has joined #datacue 07:31:52 tidoust_ has joined #datacue 07:45:25 atai has joined #datacue 07:47:17 MasayaIkeo has joined #datacue 07:51:57 tidoust_ has joined #datacue 07:59:56 tidoust has joined #datacue 08:00:52 atai1 has joined #datacue 08:31:24 tidoust has joined #datacue 08:34:44 ericc has joined #datacue 08:37:41 MasayaIkeo has joined #datacue 08:38:14 MasayaIkeo has joined #datacue 09:33:21 MasayaIk_ has joined #datacue 10:06:29 MasayaIkeo has joined #datacue 11:55:32 tidoust has joined #datacue