[{"author": "Christian Huitema", "text": "<p>Good evening everybody!</p>", "time": "2024-03-18T03:04:51Z"}, {"author": "Luke Curley", "text": "<p>the newborn is crying atm</p>", "time": "2024-03-18T03:06:24Z"}, {"author": "Luke Curley", "text": "<p>feels bad</p>", "time": "2024-03-18T03:06:46Z"}, {"author": "Ali Begen", "text": "<p>good luck, Luke</p>", "time": "2024-03-18T03:07:06Z"}, {"author": "Spencer Dawkins", "text": "<p>Luke, I spent my afternoon at a first birthday party for a friend's daughter. It gets better. Please tell the newborn that. <span aria-label=\"wink\" class=\"emoji emoji-1f609\" role=\"img\" title=\"wink\">:wink:</span></p>", "time": "2024-03-18T03:08:39Z"}, {"author": "Zaheduzzaman Sarker", "text": "<p>notified to fix the mic</p>", "time": "2024-03-18T03:10:08Z"}, {"author": "Christian Huitema", "text": "<p>Last is the one just before current in the picture, but it may be way before if something prevented complete reception of the groups in between.</p>", "time": "2024-03-18T03:12:38Z"}, {"author": "Victor Vasiliev", "text": "<p>We may solve some form of this with \"NACK objects\"</p>", "time": "2024-03-18T03:23:18Z"}, {"author": "Chris Lemmons", "text": "<p>Youngest IETF attendee's opinions are always welcome. :)</p>", "time": "2024-03-18T03:24:18Z"}, {"author": "Luke Curley", "text": "<p>yeah, I'd like GROUP_DROPPED in both FETCH/SUBSCRIBE</p>", "time": "2024-03-18T03:24:36Z"}, {"author": "Luke Curley", "text": "<p>or similar</p>", "time": "2024-03-18T03:24:42Z"}, {"author": "Kirill Pugin", "text": "<p>Dropped where?</p>", "time": "2024-03-18T03:25:01Z"}, {"author": "Luke Curley", "text": "<p>or RELIABLE_RESET_STREAM after the object header...</p>", "time": "2024-03-18T03:25:02Z"}, {"author": "Ted Hardie", "text": "<p>Note that this means a simple design with a single group for the track cannot meet that requirement.</p>", "time": "2024-03-18T03:25:10Z"}, {"author": "Suhas Nandakumar", "text": "<p>what dp you mean by Group dropped?</p>", "time": "2024-03-18T03:25:16Z"}, {"author": "Peter Thatcher", "text": "<p>I like that idea of something like that <br>\n if it comes all the way from the publisher.  But should it be \"you will not get X\" or should it be \"you should have gotten A-Z.  If you didn't something is missing\"?  Or do we just assume there are no gaps in object IDs and group IDs?</p>", "time": "2024-03-18T03:25:56Z"}, {"author": "Luke Curley", "text": "<p>@kirill publisher decides, could be due to a TTL expiring due to massive congestion</p>", "time": "2024-03-18T03:26:13Z"}, {"author": "Luke Curley", "text": "<p>relay would propagate, potentially retry in the future if it's 404 vs 409</p>", "time": "2024-03-18T03:26:37Z"}, {"author": "Suhas Nandakumar", "text": "<p>Groups are not sequential always .. Using it for gap detection is error prone ..</p>", "time": "2024-03-18T03:26:39Z"}, {"author": "Jonathan Lennox", "text": "<p>If that's any kind of bandwidth limitation upstream of the relay there will be things you don't get.</p>", "time": "2024-03-18T03:26:48Z"}, {"author": "Luke Curley", "text": "<p>yeah, assume a mobile phone only has RAM for a few seconds of buffer, SOMETHING will be permanently dropped</p>", "time": "2024-03-18T03:27:14Z"}, {"author": "Kirill Pugin", "text": "<p>Knowing that something has never been sent by publisher and not going to be is useful, agree</p>", "time": "2024-03-18T03:27:25Z"}, {"author": "Martin Duke", "text": "<p>I like this but I am going to have to change so much code</p>", "time": "2024-03-18T03:27:51Z"}, {"author": "Luke Curley", "text": "<p>yeah, right now groups only have two states: Unknown or Received</p>", "time": "2024-03-18T03:27:52Z"}, {"author": "Suhas Nandakumar", "text": "<p>things can be  dropped in transit too</p>", "time": "2024-03-18T03:27:53Z"}, {"author": "Luke Curley", "text": "<p>I'd like to add a Missing/Dropped state</p>", "time": "2024-03-18T03:28:22Z"}, {"author": "Jonathan Lennox", "text": "<p>But you want to make sure you don't use up a whole lot of bandwidth saying you've dropped things to save bandwidth.</p>", "time": "2024-03-18T03:28:25Z"}, {"author": "Suhas Nandakumar", "text": "<p>in original quicr, we used marker groups t indicate if there was an intentional drop</p>", "time": "2024-03-18T03:28:26Z"}, {"author": "Jonathan Lennox", "text": "<p>Audio objects could be similar in size to the drop message.</p>", "time": "2024-03-18T03:28:58Z"}, {"author": "Ali Begen", "text": "<p>Why not use a masking field like we do in some RTP payload headers?</p>", "time": "2024-03-18T03:29:36Z"}, {"author": "Luke Curley", "text": "<p>@jonathan something like NACK with ranges if you really want to optimize</p>", "time": "2024-03-18T03:29:38Z"}, {"author": "Alan Frindell", "text": "<p>Maybe Victor's idea from the interim is a nice optimization here - SUBSCRIBE_AND_FETCH, where you get a FETCH up to the live head and subscribe starting from there?</p>", "time": "2024-03-18T03:30:24Z"}, {"author": "Peter Thatcher", "text": "<p>If they are sent in a reliable stream, QUIC can do a pretty good job of piggy backing the bits other streams if there are any.</p>", "time": "2024-03-18T03:30:43Z"}, {"author": "Peter Thatcher", "text": "<p>But the reliability is only hop-by-hop.  If the relay gets an \"object NACK\" form the publisher, what does it forward?  I guess it could indicate where it was dropped, by the publisher or by the relay.</p>", "time": "2024-03-18T03:31:49Z"}, {"author": "Ted Hardie", "text": "<p>Please remember to say your name when you reach the mic</p>", "time": "2024-03-18T03:32:19Z"}, {"author": "Victor Vasiliev", "text": "<p>I believe the main value of \"object NACK\" is that it is fully propagated downstream</p>", "time": "2024-03-18T03:32:44Z"}, {"author": "Christian Huitema", "text": "<p>PEEK</p>", "time": "2024-03-18T03:33:49Z"}, {"author": "Ted Hardie", "text": "<p>Note as well that we may have media that is not inherently serial (like the 3d media where the adjacent blocks are the likely targets of next selectioins).   So we should check our design against that style of media to make sure it still works.  I think those end up being Fetch-heavy but still work.</p>", "time": "2024-03-18T03:35:19Z"}, {"author": "Christian Huitema", "text": "<p>I mean, what Martin describe is something like the classic \"peek\": get dta but not change the state. So \"peek\" would return the ID of the current, last, etc.</p>", "time": "2024-03-18T03:35:41Z"}, {"author": "Peter Thatcher", "text": "<p>It's tricky making sure something can be propagated downstream reliably.  What if the relay dies and a subscriber connects to a new relay?  Will it be able to know what it missed during the failover?</p>", "time": "2024-03-18T03:35:47Z"}, {"author": "Peter Thatcher", "text": "<p>A subcribe is not just a range filter.  It also expresses the desire that the relay also subscribe upstream.</p>", "time": "2024-03-18T03:39:02Z"}, {"author": "Mike English", "text": "<p>I'm fine with a world where fetch+subscribe end up being a single verb on the wire. I think describing them as conceptually separate just makes it easier to describe expected behavior of all the different permutations.</p>", "time": "2024-03-18T03:39:11Z"}, {"author": "Jana Iyengar", "text": "<p>@Luke -- is your Subscribe semantically similar to our Fetch (in the proposal today)?</p>", "time": "2024-03-18T03:39:16Z"}, {"author": "Luke Curley", "text": "<p>@jana pretty much, except without the race conditions involved with fetch can only serve old stuff, and subscribe can only serve new stuff</p>", "time": "2024-03-18T03:40:01Z"}, {"author": "Luke Curley", "text": "<p>the main victim of FETCH is the HLS/DASH use-case</p>", "time": "2024-03-18T03:41:01Z"}, {"author": "Jana Iyengar", "text": "<p>Could you do what you want to do with the following:</p>\n<ol>\n<li>Subscribe (get the current group number)</li>\n<li>Fetch from group 0 to current</li>\n<li>Prioritize as you want</li>\n</ol>", "time": "2024-03-18T03:41:22Z"}, {"author": "Ted Hardie", "text": "<p>@Luke I don't think anyone is suggesting FETCH replaces SUBSCRIBE</p>", "time": "2024-03-18T03:41:29Z"}, {"author": "Luke Curley", "text": "<p>@ted SUBSCRIBE can't do relative offsets with this proposal</p>", "time": "2024-03-18T03:42:09Z"}, {"author": "Luke Curley", "text": "<p>so if I want to start a few groups back, like HLS/DASH, then I have to use FETCH first</p>", "time": "2024-03-18T03:42:25Z"}, {"author": "Suhas Nandakumar", "text": "<p>@luke there is last for that ..</p>", "time": "2024-03-18T03:42:30Z"}, {"author": "Kirill Pugin", "text": "<p>@Jana, while I am fetching from 0 to current, current changes, how do I continue?</p>", "time": "2024-03-18T03:42:34Z"}, {"author": "Luke Curley", "text": "<p>and I somehow need to advertise the absolute group IDs to the player prior to playback</p>", "time": "2024-03-18T03:42:50Z"}, {"author": "Luke Curley", "text": "<p>@suhas only serving the latest group means a random jitter buffer between 0.1s and 2s</p>", "time": "2024-03-18T03:43:10Z"}, {"author": "Ted Hardie", "text": "<p>@Luke, okay, I see the point now.  I thought you were worried that you'd have to repeat the fetch many times to get the data.</p>", "time": "2024-03-18T03:43:11Z"}, {"author": "Suhas Nandakumar", "text": "<p>@luke i meant last , not the latest .. from a streaming app, that would be 5-8 seconds</p>", "time": "2024-03-18T03:43:48Z"}, {"author": "Kirill Pugin", "text": "<p>So I asked what current is - it's 100, I fetched 0 - 100 how do I continue? do I subscibe? or do I fetch 101 and keep fetching?</p>", "time": "2024-03-18T03:44:02Z"}, {"author": "Jana Iyengar", "text": "<p>@Kirill: I'll clarify:</p>\n<ol>\n<li>Subscribe (get the current group number, say 15), start to receive group 15 and forward</li>\n<li>Fetch from group 0:15</li>\n<li>Prioritize as you want, so that you can decide what groups you want to receive urgently</li>\n</ol>", "time": "2024-03-18T03:44:04Z"}, {"author": "Kirill Pugin", "text": "<p>3) who does priotization?</p>", "time": "2024-03-18T03:44:33Z"}, {"author": "Suhas Nandakumar", "text": "<p>+1 to Jana, that was my understanding on what is presented</p>", "time": "2024-03-18T03:44:40Z"}, {"author": "Suhas Nandakumar", "text": "<p>on 3) ,  priortization needs to be discussed in detail ..</p>", "time": "2024-03-18T03:45:07Z"}, {"author": "Jana Iyengar", "text": "<p>The client can/probably should, but I don't think we've solved this yet.</p>", "time": "2024-03-18T03:45:08Z"}, {"author": "Luke Curley", "text": "<p>@suhas okay a better word is probably \"prev\"</p>", "time": "2024-03-18T03:45:22Z"}, {"author": "Kirill Pugin", "text": "<p>ok, that makes sense assuming that we can figure out prioritization</p>", "time": "2024-03-18T03:45:31Z"}, {"author": "Jana Iyengar", "text": "<p>yup, and we HAVE to figure out prioritization, otherwise we're in trouble</p>", "time": "2024-03-18T03:45:49Z"}, {"author": "Suhas Nandakumar", "text": "<p>yes .. we need to figure out  for anything sensible regardless of fetch/subscribe</p>", "time": "2024-03-18T03:46:05Z"}, {"author": "Victor Vasiliev", "text": "<p>I'm not entirely sure there is a huge difference between \"give me a group in the past\" and \"give me N groups in past\"</p>", "time": "2024-03-18T03:46:05Z"}, {"author": "Suhas Nandakumar", "text": "<p>@victor .. the challenge is  relative offsets leads to lot of edge cases</p>", "time": "2024-03-18T03:46:35Z"}, {"author": "Jana Iyengar", "text": "<p>@victor, the edges are a bit hairy.</p>", "time": "2024-03-18T03:46:43Z"}, {"author": "Peter Thatcher", "text": "<p>What if the groups are very large?  It seems like we're assuming they are small.</p>", "time": "2024-03-18T03:46:50Z"}, {"author": "Victor Vasiliev", "text": "<p>Are they? I think that's only the case in current draft cause we allow object-relative ones</p>", "time": "2024-03-18T03:47:44Z"}, {"author": "Peter Thatcher", "text": "<p>Even just \"last\" or \"current\" might be really big</p>", "time": "2024-03-18T03:47:46Z"}, {"author": "Suhas Nandakumar", "text": "<p>@peter .. in that case the application might not want to last as starting point if it is live edge case</p>", "time": "2024-03-18T03:48:08Z"}, {"author": "Suhas Nandakumar", "text": "<p>ALso the idea of \"now\" looks  nice</p>", "time": "2024-03-18T03:48:26Z"}, {"author": "Jana Iyengar", "text": "<p>I thought about that @peter... I don't think there's an assumption here about that.</p>\n<ol>\n<li>The relay SHOULD cache two groups. I expect one of the cases it can't if the group size is too large</li>\n<li>There is an expectation that the client and the content server know what they're doing... as in, the client should know what the sizes are to make sensible requests</li>\n</ol>", "time": "2024-03-18T03:48:27Z"}, {"author": "Peter Thatcher", "text": "<p>I think publisher TTL solves this, so I'm happy with Cullen's answer</p>", "time": "2024-03-18T03:50:35Z"}, {"author": "Peter Thatcher", "text": "<p>If feels like a follow-up should be the \"NACK object\" question</p>", "time": "2024-03-18T03:51:21Z"}, {"author": "Alan Frindell", "text": "<p>I'd like to see the PR.  I'm concerned about interaction with forwarding preference, and the bit about how to know the largest object in an old group, etc.</p>", "time": "2024-03-18T03:53:10Z"}, {"author": "Ali Begen", "text": "<p>is it me or is this mic getting softer and softer?</p>", "time": "2024-03-18T03:54:07Z"}, {"author": "Luke Curley", "text": "<p>how do you prioritize FETCH vs SUBSCRIBE?</p>", "time": "2024-03-18T03:55:13Z"}, {"author": "Luke Curley", "text": "<p>etc</p>", "time": "2024-03-18T03:55:15Z"}, {"author": "altanai", "text": "<p><span class=\"user-mention\" data-user-id=\"841\">@Ali Begen</span>  Agree with you ..  m continuously working on the volume up and down buttons</p>", "time": "2024-03-18T03:56:00Z"}, {"author": "Victor Vasiliev", "text": "<p>I think FETCH vs SUBSCRIBE is same as one track vs another -- you set priorities per track or a fetch request</p>", "time": "2024-03-18T03:56:19Z"}, {"author": "Luke Curley", "text": "<p>@victor imo FETCH is meant to deliver in ascending group order, while SUBSCRIBE is based on send_order</p>", "time": "2024-03-18T03:57:13Z"}, {"author": "Luke Curley", "text": "<p>but we also need a way of performing HLS/DASH style head-of-line blocking via SUBSCRIBE</p>", "time": "2024-03-18T03:57:25Z"}, {"author": "Victor Vasiliev", "text": "<p>FETCH can be useful in both asc and desc order</p>", "time": "2024-03-18T03:57:42Z"}, {"author": "Kirill Pugin", "text": "<p>in theory if player doesn't need to start playback asap, SUBSCRIBE would be sufficient for most cases</p>", "time": "2024-03-18T03:58:38Z"}, {"author": "Kirill Pugin", "text": "<p>for Live streaming usecases, FETCH is only needed to build buffer</p>", "time": "2024-03-18T03:59:32Z"}, {"author": "Suhas Nandakumar", "text": "<p>agree ..having a delivery preference for the order in fetch is not a bad idea ..</p>", "time": "2024-03-18T03:59:35Z"}, {"author": "Suhas Nandakumar", "text": "<p>@kiril , only if last is not sufficient enough for your playout buffer</p>", "time": "2024-03-18T04:00:06Z"}, {"author": "Luke Curley", "text": "<p>@kirill time to first frame is really important, we can't wait</p>", "time": "2024-03-18T04:00:08Z"}, {"author": "Kirill Pugin", "text": "<p>it pretty much always not enough ;)</p>", "time": "2024-03-18T04:00:25Z"}, {"author": "Kirill Pugin", "text": "<p>@luke, if only TTF matter than subscribe LAST solves that, right?</p>", "time": "2024-03-18T04:01:01Z"}, {"author": "Suhas Nandakumar", "text": "<p>@kiril what is your typical group size</p>", "time": "2024-03-18T04:01:24Z"}, {"author": "Kirill Pugin", "text": "<p>the problem is that if your bandwidth suck and you are not going to get next group in time</p>", "time": "2024-03-18T04:01:30Z"}, {"author": "Luke Curley", "text": "<p>SUBSCRIBE sends in send_order, which means you'll receive the live playhead before the actual start playhead</p>", "time": "2024-03-18T04:01:33Z"}, {"author": "Luke Curley", "text": "<p>we need head-of-line blocking for SUBSCRIBE for larger jitter buffers</p>", "time": "2024-03-18T04:01:50Z"}, {"author": "Luke Curley", "text": "<p>and I don't want to do that with a piecewise FETCH for each group like HLS/DASH</p>", "time": "2024-03-18T04:02:22Z"}, {"author": "Kirill Pugin", "text": "<p>@luke, hm... right...</p>", "time": "2024-03-18T04:02:23Z"}, {"author": "Luke Curley", "text": "<p>I filed a proposal to add order=ASC|DESC to SUBSCRIBE</p>", "time": "2024-03-18T04:02:40Z"}, {"author": "Luke Curley", "text": "<p>which is half-way to FETCH</p>", "time": "2024-03-18T04:02:51Z"}, {"author": "Luke Curley", "text": "<p>#411</p>", "time": "2024-03-18T04:03:09Z"}, {"author": "Kirill Pugin", "text": "<p>@Suhas, remind me what we consider group? GOP?</p>", "time": "2024-03-18T04:03:31Z"}, {"author": "Suhas Nandakumar", "text": "<p>for video , yes it is GOP</p>", "time": "2024-03-18T04:03:48Z"}, {"author": "Kirill Pugin", "text": "<p>1-5s</p>", "time": "2024-03-18T04:03:56Z"}, {"author": "Peter Thatcher", "text": "<p>Could be a lot more than 1-5s</p>", "time": "2024-03-18T04:04:07Z"}, {"author": "Kirill Pugin", "text": "<p>1s buffer may not be enough</p>", "time": "2024-03-18T04:04:10Z"}, {"author": "Alan Frindell", "text": "<p>The FETCH proposal from today said you might not get things in any particular order, right?</p>", "time": "2024-03-18T04:04:12Z"}, {"author": "Luke Curley", "text": "<p>yeah so SUBSCRIBE last will add startup latency, since current will be delivered first</p>", "time": "2024-03-18T04:04:21Z"}, {"author": "Cullen Jennings", "text": "<p>It seems like ASC / DESC is largely what gets sent next which is the prioritization conversation. I can easily imagine us wanting to add info to sub or fetch that helped the relay decide what to send next</p>", "time": "2024-03-18T04:04:34Z"}, {"author": "Suhas Nandakumar", "text": "<p>@luke .. that's not my read ot it</p>", "time": "2024-03-18T04:04:39Z"}, {"author": "Kirill Pugin", "text": "<p>@Peter, in practice for Live streaming, that what we've been using, you can go higher but that become not practical and you not gaining anything</p>", "time": "2024-03-18T04:04:50Z"}, {"author": "Luke Curley", "text": "<p>@suhas if SUBSCRIBE follows send_order, yes it does</p>", "time": "2024-03-18T04:04:51Z"}, {"author": "Luke Curley", "text": "<p>unless you want to ignore the send order for the first group?</p>", "time": "2024-03-18T04:05:06Z"}, {"author": "Suhas Nandakumar", "text": "<p>again , subscribe last , means statr from current-1 and into future</p>", "time": "2024-03-18T04:05:28Z"}, {"author": "Peter Thatcher", "text": "<p>@Kirill If the app wants to have large groups, it should be up to the app.  We shouldn't bake the assumption of small groups into MoQ.</p>", "time": "2024-03-18T04:05:42Z"}, {"author": "Suhas Nandakumar", "text": "<p>current - 1 as an example .. wtaever the last group</p>", "time": "2024-03-18T04:05:47Z"}, {"author": "Luke Curley", "text": "<p>@suhas yeah but current may have 1.9s of data, which will be delivered before last</p>", "time": "2024-03-18T04:05:48Z"}, {"author": "Luke Curley", "text": "<p>while the player waits for last before starting playback</p>", "time": "2024-03-18T04:06:08Z"}, {"author": "Kirill Pugin", "text": "<p>@Peter I was answering Suhas' qeustion about group size.</p>", "time": "2024-03-18T04:06:34Z"}, {"author": "Peter Thatcher", "text": "<p>@Kirill.  Ah, sorry.  I misunderstood.</p>", "time": "2024-03-18T04:07:03Z"}, {"author": "Kirill Pugin", "text": "<p>@Peter, np. But I am not sure if we not thinking about groups as somthing that is not big :D</p>", "time": "2024-03-18T04:08:04Z"}, {"author": "Kirill Pugin", "text": "<p>so your point is valid</p>", "time": "2024-03-18T04:08:16Z"}, {"author": "Jana Iyengar", "text": "<p>@luke: I'm missing it. Why will current be delivered first if the client says \"Subscribe Last\"?</p>", "time": "2024-03-18T04:09:49Z"}, {"author": "Luke Curley", "text": "<p>@jana SUBSCRIBE start=-1 will start delivering -1 (last) and 0  (current)</p>", "time": "2024-03-18T04:10:33Z"}, {"author": "Luke Curley", "text": "<p>and they will be transmitted according to their priority</p>", "time": "2024-03-18T04:10:45Z"}, {"author": "Jana Iyengar", "text": "<p>yes</p>", "time": "2024-03-18T04:10:52Z"}, {"author": "Luke Curley", "text": "<p>and for live, new will be higher priority</p>", "time": "2024-03-18T04:11:18Z"}, {"author": "Luke Curley", "text": "<p>so the incomplete current group is delivered first</p>", "time": "2024-03-18T04:11:32Z"}, {"author": "Luke Curley", "text": "<p>while the player waits for the previous group to start playback</p>", "time": "2024-03-18T04:11:42Z"}, {"author": "Luke Curley", "text": "<p>HLS/DASH work by requesting something like 4s back, but starting playback if the first 1s has been received</p>", "time": "2024-03-18T04:12:03Z"}, {"author": "Jana Iyengar", "text": "<p>So yeah, I think we need to clearly articulate what is prioritized with Subscribe.</p>", "time": "2024-03-18T04:12:08Z"}, {"author": "Luke Curley", "text": "<p>so if we deliver 3s-4s first, then 0-1s</p>", "time": "2024-03-18T04:12:17Z"}, {"author": "Luke Curley", "text": "<p>2-4s first, then 0-1s*</p>", "time": "2024-03-18T04:12:24Z"}, {"author": "Luke Curley", "text": "<p>then we just increase startup time</p>", "time": "2024-03-18T04:12:29Z"}, {"author": "Zafer G\u00fcrel", "text": "<p>@luke Is it not possible for the relay to set the priority of last higher than current one's as an exception?</p>", "time": "2024-03-18T04:13:06Z"}, {"author": "Luke Curley", "text": "<p>that's one solution, gross of course, and it's not clear how FETCH interacts</p>", "time": "2024-03-18T04:14:02Z"}, {"author": "Jana Iyengar", "text": "<p>It's not clear to me which should be prioritized though... if the new is higher priority for the application, does it make sense to Subscribe to Last? Is there a clear answer in your mind as to exactly what should be prioritized when the client subscribes (in the general sense) for anything other than Now?</p>", "time": "2024-03-18T04:14:02Z"}, {"author": "Zafer G\u00fcrel", "text": "<p>If there is an intention for the last, then isn't it a signal to get it earlier than the current one?</p>", "time": "2024-03-18T04:14:12Z"}, {"author": "Jana Iyengar", "text": "<p>But yeah -- I think the prio question is one that we can address. It's a matter of understanding exaclty what we want to express.</p>", "time": "2024-03-18T04:14:28Z"}, {"author": "Luke Curley", "text": "<p>@Jana in #411 I have a proposal for SUBSCRIBE order=ASC if you want head-of-line blocking</p>", "time": "2024-03-18T04:14:40Z"}, {"author": "Mike English", "text": "<p>Up till now we've considered priority as being defined by the original publisher</p>", "time": "2024-03-18T04:14:50Z"}, {"author": "Luke Curley", "text": "<p>but I want that to work for more than just -1 group</p>", "time": "2024-03-18T04:14:56Z"}, {"author": "Luke Curley", "text": "<p>yeah the subscriber needs the ability to specify the priority too for HLS/DASH style playback</p>", "time": "2024-03-18T04:15:17Z"}, {"author": "Zafer G\u00fcrel", "text": "<p>I think relays should also have a say in setting priorities for such cases.</p>", "time": "2024-03-18T04:15:34Z"}, {"author": "Luke Curley", "text": "<p>order=ASC if you want to buffer to avoid dropping,  order=DESC if you want to skip to keep latency low</p>", "time": "2024-03-18T04:15:56Z"}, {"author": "Jana Iyengar", "text": "<p>having the client express priority makes sense to me. Luke, you proposal seems like a fine starting point</p>", "time": "2024-03-18T04:16:44Z"}, {"author": "Lucas Pardue", "text": "<p>the http model is to allow client and server signalling, and place the burden on the tranmitter (relay) to figure out how best to resolve that by combining those signals with information only it knows (like local network conditions)</p>", "time": "2024-03-18T04:17:04Z"}, {"author": "Suhas Nandakumar", "text": "<p>Sender has idea of what is important . we should be careful on anyone in the middle flipping it .. each recv may end up getting different thing on who decidees to change</p>", "time": "2024-03-18T04:17:21Z"}, {"author": "Kirill Pugin", "text": "<p>@luke, won't we need to change ASC to DESC as client had built buffer? :D</p>", "time": "2024-03-18T04:17:25Z"}, {"author": "Luke Curley", "text": "<p>@kirill not for HLS/DASH, they still do ASC to buffer instead of skip video</p>", "time": "2024-03-18T04:17:49Z"}, {"author": "Alan Frindell", "text": "<p>I think if moq allows sender and receiver priority signals, we may need more normative guidance for how relays merge them than HTTP does</p>", "time": "2024-03-18T04:18:02Z"}, {"author": "Jana Iyengar", "text": "<p>@Lucas -- I think we should really aspire to making this simpler.</p>", "time": "2024-03-18T04:18:13Z"}, {"author": "Suhas Nandakumar", "text": "<p>HLS --&gt; MLS <br>\nDASH -&gt; DASM</p>", "time": "2024-03-18T04:18:41Z"}, {"author": "Jana Iyengar", "text": "<p>But this is the prioritization conversation we should be having soon.</p>", "time": "2024-03-18T04:18:57Z"}, {"author": "Suhas Nandakumar", "text": "<p>+1  Jana</p>", "time": "2024-03-18T04:19:06Z"}, {"author": "Kirill Pugin", "text": "<p>@Luke, well, yeah, but they do it because they only have FETCH ;)</p>", "time": "2024-03-18T04:19:10Z"}, {"author": "Luke Curley", "text": "<p>yeah, and I think FETCH is secretly about prioritization, since the goal is to deliver in order without loss</p>", "time": "2024-03-18T04:19:23Z"}, {"author": "Lucas Pardue", "text": "<p>I won't advocate for more complexity than needed. But the simpler the language, the biiger the risk we just build artificial constraints that will be ignored in practice</p>", "time": "2024-03-18T04:19:34Z"}, {"author": "Kirill Pugin", "text": "<p>at the end of the day, I want build buffer and then do normal Subscribe-like delivery</p>", "time": "2024-03-18T04:19:50Z"}, {"author": "Mike English", "text": "<p>I've started looking into adding LOC support to my implementation, too. Leaning on WebCodecs for the registry of elemental stream formats is handy. :)</p>", "time": "2024-03-18T04:21:32Z"}, {"author": "Kirill Pugin", "text": "<p>FWIW, when we built RUSH it was basically LOC :D</p>", "time": "2024-03-18T04:22:14Z"}, {"author": "Lucas Pardue", "text": "<p>e.g. I'm going to ignore client that are sending BS priority signals that are trying to disrupt the operation of my relay</p>", "time": "2024-03-18T04:22:45Z"}, {"author": "Luke Curley", "text": "<p>yeah, I think the publisher could still choose the priority, but the subscriber could override it</p>", "time": "2024-03-18T04:23:14Z"}, {"author": "Luke Curley", "text": "<p>like order=DESC from broadcaster -&gt; origin, but order=DESC from origin -&gt; vod playback</p>", "time": "2024-03-18T04:23:41Z"}, {"author": "Mike English", "text": "<p>+1 to Streaming (or \"Media\" now?) Format and Container as separately defined things</p>", "time": "2024-03-18T04:23:47Z"}, {"author": "Suhas Nandakumar", "text": "<p>@luke by susbcribe do you mean end receiver or the relay ?</p>", "time": "2024-03-18T04:23:49Z"}, {"author": "Lucas Pardue", "text": "<p>that model works Luke</p>", "time": "2024-03-18T04:24:20Z"}, {"author": "Luke Curley", "text": "<p>@suhas both? I don't want to treat the last mile separately</p>", "time": "2024-03-18T04:24:27Z"}, {"author": "Luke Curley", "text": "<p>a relay could override the publisher preferences I guess</p>", "time": "2024-03-18T04:24:51Z"}, {"author": "Suhas Nandakumar", "text": "<p>how does the relay know to make that decision ?</p>", "time": "2024-03-18T04:25:00Z"}, {"author": "Victor Vasiliev", "text": "<p>I think there's no need to make a \"moq-on-disc\" loc-specific</p>", "time": "2024-03-18T04:25:03Z"}, {"author": "Luke Curley", "text": "<p>maybe we have a MoQT on disk format</p>", "time": "2024-03-18T04:25:24Z"}, {"author": "Victor Vasiliev", "text": "<p>We just need a file with a catalog, a way to annotate groups/objects, and an index at the end</p>", "time": "2024-03-18T04:25:32Z"}, {"author": "Lucas Pardue", "text": "<p><span class=\"user-mention silent\" data-user-id=\"1045\">Suhas Nandakumar</span> <a href=\"#narrow/stream/304-moq/topic/ietf-119/near/107912\">said</a>:</p>\n<blockquote>\n<p>how does the relay know to make that decision ?</p>\n</blockquote>\n<p>spec guidance and operational experience</p>", "time": "2024-03-18T04:26:21Z"}, {"author": "Luke Curley", "text": "<p>if a relay has 5 viewers who want order=ASC and 0 who want order=DESC, the relay could choose to fetch ASC from upstream</p>", "time": "2024-03-18T04:27:12Z"}, {"author": "Luke Curley", "text": "<p>if it wants to ignore the publisher's preference for DESC and add extra complexity I guess</p>", "time": "2024-03-18T04:27:31Z"}, {"author": "Victor Vasiliev", "text": "<p>let's do less drafts</p>", "time": "2024-03-18T04:27:48Z"}, {"author": "Mike English", "text": "<p>WARP</p>", "time": "2024-03-18T04:27:53Z"}, {"author": "Christian Huitema", "text": "<p>In the prototype that I did last year, I had a \"number of object in previous group\" as a property of the first object in the next group. Plus a control message stating the number of \"last group, last object\".</p>", "time": "2024-03-18T04:34:25Z"}, {"author": "Alan Frindell", "text": "<p>I don't know if I'd make that an object property, but could see that metadata being present at the beginning of the next group stream.</p>", "time": "2024-03-18T04:37:10Z"}, {"author": "Martin Duke", "text": "<p>+1 to Luke. If we put it in the data plane it has bad data-plane reliability guarantees</p>", "time": "2024-03-18T04:38:00Z"}, {"author": "Christian Huitema", "text": "<p>I agree with Luke</p>", "time": "2024-03-18T04:38:12Z"}, {"author": "Cullen Jennings", "text": "<p>I suspect 3 designs we could go down A) last object has flag B) an extra object at the end of group that is a tombstone C) info in next group that  says what the end of prev group is</p>", "time": "2024-03-18T04:38:17Z"}, {"author": "Christian Huitema", "text": "<p>The flag is a nice way to optimize the golden path. Although if we have a \"stream per group\" model, the FIN of stream also provides a signal.</p>", "time": "2024-03-18T04:39:39Z"}, {"author": "Luke Curley", "text": "<p>I like the FIN of the stream to signal the end of a group on success, but we still need a message to signal the end on failure</p>", "time": "2024-03-18T04:40:17Z"}, {"author": "Luke Curley", "text": "<p>(unless we encode the group/object ID into RESET_STREAM...)</p>", "time": "2024-03-18T04:40:30Z"}, {"author": "Suhas Nandakumar", "text": "<p>We need these explicit messages, no doubt . we can make it reliable on data path</p>", "time": "2024-03-18T04:40:46Z"}, {"author": "altanai", "text": "<p>+1 for use-case wise prioritization  by <span class=\"user-mention\" data-user-id=\"640\">@Mo Zanaty</span></p>", "time": "2024-03-18T04:42:14Z"}, {"author": "Christian Huitema", "text": "<p>Also, think of the audio stream, one object per group, 50 objects per second. Signalling that on the control path would be very expensive.</p>", "time": "2024-03-18T04:42:31Z"}, {"author": "Luke Curley", "text": "<p>and I do want to add that adding priority to SUBSCRIBE aligns with HTTP/3 priorities</p>", "time": "2024-03-18T04:46:43Z"}, {"author": "Luke Curley", "text": "<p>+1 prioritization is absolutely required for MoQ</p>", "time": "2024-03-18T04:50:07Z"}, {"author": "Lucas Pardue", "text": "<p>I disagree it didn't matter as much for HTTP/3</p>", "time": "2024-03-18T04:50:25Z"}, {"author": "Lucas Pardue", "text": "<p>you can absoultely tank the performance of web pages with bad scheduling, to the point of unacceptability</p>", "time": "2024-03-18T04:50:44Z"}, {"author": "Luke Curley", "text": "<p>@lucas let me clarify, for real-time use-cases</p>", "time": "2024-03-18T04:50:45Z"}, {"author": "Luke Curley", "text": "<p>if you're trying to build a WebRTC alternative</p>", "time": "2024-03-18T04:50:54Z"}, {"author": "Lucas Pardue", "text": "<p>I think we were alway agreed luke, I was pushing back on Jana's microphone point :D</p>", "time": "2024-03-18T04:52:09Z"}, {"author": "Cullen Jennings", "text": "<p>Section 4.1.1 and 4.1.2 are pretty specific proposal</p>", "time": "2024-03-18T04:52:24Z"}, {"author": "Luke Curley", "text": "<p>ah okay</p>", "time": "2024-03-18T04:52:51Z"}, {"author": "Suhas Nandakumar", "text": "<p>+1 . it came after lots of discussions .. we need to see why they don't work or what needs fixing</p>", "time": "2024-03-18T04:53:02Z"}, {"author": "Mike English", "text": "<p>Ali and Zafer have some data :)</p>", "time": "2024-03-18T04:54:09Z"}, {"author": "Suhas Nandakumar", "text": "<p>our implementation works today on priotities (like HTTP/3) and it works pretty well</p>", "time": "2024-03-18T04:54:42Z"}, {"author": "Mike English", "text": "<p>But I agree, it'd be nice to have a place to put subscriber side priority signals if we want to compare</p>", "time": "2024-03-18T04:55:05Z"}, {"author": "Luke Curley", "text": "<p>@suhas HTTP/3 priorities are decided by the subscriber, while send_order is decided by the publisher today</p>", "time": "2024-03-18T04:55:19Z"}, {"author": "Victor Vasiliev", "text": "<p>I don't think I personally would be able to gather any form of data before Vancouver</p>", "time": "2024-03-18T04:55:38Z"}, {"author": "Lucas Pardue", "text": "<p>HTTP/3 priorities are <em>merged</em> from client and server signals</p>", "time": "2024-03-18T04:57:39Z"}, {"author": "Lucas Pardue", "text": "<p>how to weight the merge can easily be tilted differently for MoQ</p>", "time": "2024-03-18T04:58:11Z"}, {"author": "Mike English", "text": "<p>+1 to having discussion. Like Alan, I'm unsure if we'll have much to look at before Vancouver</p>", "time": "2024-03-18T04:58:29Z"}, {"author": "Mike English", "text": "<p>Mostly because I don't know if I'll have time to gather the data I'd like to have in that timeframe with other priorities</p>", "time": "2024-03-18T04:59:22Z"}]