[minutes] Media WG call - 2023-04-11

The minutes of yesterday's Media WG call are available at:
https://www.w3.org/2023/04/11-mediawg-minutes.html

Text version below.

The group converged on possible next steps on 3 WebCodecs issues (#656, 
#646, #619), and discussed the idea of extending the scope of the Media 
WG to adopt Document Picture-in-Picture as a potential normative 
deliverable (overall feeling in the call being that the proposal would 
be a better fit for a non-media-focused group).

Thanks,
Francois.

-----
Media WG call
11 April 2023

    [2]Agenda. [3]IRC log.

       [2] 
https://github.com/w3c/media-wg/blob/main/meetings/2023-04-11-Media_Working_Group_Teleconference-agenda.md
       [3] https://www.w3.org/2023/04/11-mediawg-irc

Attendees

    Present
           Bernard Aboba, Chris Needham, Dale Curtis, Eugene
           Zemtsov, Francois Daoust, Jer Noble, Peter Thatcher

    Chair
           Chris, Jer

    Scribe
           cpn, tidoust

Contents

     1. [4]Allow decoder to ignore corrupted frames
     2. [5]Allow configuration of AV1 screen content coding tools
     3. [6]Extend EncodedVideoChunk metadata for SVC
     4. [7]Media WG rechartering
     5. [8]TPAC 2023 joint meetings

Meeting minutes

   Allow decoder to ignore corrupted frames

    Slideset: [9]https://lists.w3.org/Archives/Public/www-archive/
    2023Apr/att-0000/MEDIAWG-04-11-23.pdf

       [9] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf

    [10][Slide 2]

      [10] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=2

    [11][Slide 3]

      [11] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=3

    Bernard: WebCodecs encoder and decoder errors are fatal. It
    queue's a task to close the encoder/decoder
    … The issue is: Is there some way to not close?

    <tidoust> [12]#656

      [12] https://github.com/w3c/webcodecs/issues/656

    <ghurlbot> [13]Issue 656 Allow decoder to ignore corrupted
    frames (matanui159) agenda

      [13] https://github.com/w3c/webcodecs/issues/656

    [14][Slide 4]

      [14] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=4

    Bernard: Dale clarified that perhaps the text could clarify
    fatal vs non-fatal
    … The safest thing to do could be to close it

    Dale: All errors are fatal, not sure why I wrote just software
    there

    Bernard: It doesn't interfere with resiliance, FEC, redundant
    error coding, etc
    … Discussed if we could have more tests for sending errors
    … Chromium reports the wrong error type

    Dale: We have a bug open to fix that

    Bernard: Is it a bug? Is more info needed in the error?
    … Question: should all errors be fatal? Dale makes a good point
    why they should be
    … Potential issues with security team review if we don't make
    it fatal

    Dale: If the author wants to handle the error and resume the
    decoding, could be for them to decide

    Bernard: But they can't if it's closed

    Dale: They can create a new decoder

    Bernard: Yes. That would require a keyframe
    … Second question: There are various reasons why you could get
    an error. Hardware decoders may error where a sofware decoder
    wouldn't
    … Hardware resources could be acquired by another app.
    Reconfigure with prefer-hardware could then fail, then you'd
    have to fall back to software
    … Paul asked what's the difference between reset and close, and
    impact on performance?

    Bernard: Any opinions? I've had developers ask whether there's
    truly been a decoder error, or something else, such as a GPU
    crash
    … Does only having EncodingError provide enough info?

    Dale: We're limited on the information available to us. Where a
    software decoder is more permissive it's in a way non-compliant
    to the spec
    … I though we decided among editors that it should be fatal

    Bernard: Is there any objection in the WG to that?

    (none)

    [15][Slide 5]

      [15] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=5

    Bernard: So what to do next? Reconfiguring with prefer-hardware
    could fail.

    Dale: Developers would have to handle it either way. We could
    provide more docs to advise on use a more professional analysis
    tool
    … or ffmpeg

    Bernard: Is EncodingError right?
    … Any other changes to the spec?

    Dale: No spec change, just MDN documentation improvements. My
    team have been working on that

    Eugene: Could add a new optional exception such as corrupted
    stream or corrupted chunk, to say it's something to do with the
    stream
    … and not some kind of infrastructure issue underneath

    Bernard: That would be helpful though
    … Developers would appreciate that. Would it be an error
    message inside EncoderError?

    Eugene: That error type doesn't sound right

    Dale: I'm not sure why we didn't add that. Technically it's an
    error in the encoding...

    Bernard: Not sure it's a requirement to change the type, but
    the extra info would be useful

    Eugene: If we can see the data is noncompliant, and maybe an
    OperationError when it's a GPU crash or out of resources, would
    be useful distinction
    … Hardware decoders don't always give the reason for error
    though

    Bernard: Next step would be to see if that's feasible and
    prepare a PR if so

    Eugene: I can do that

   Allow configuration of AV1 screen content coding tools

    [16][Slide 6]

      [16] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=6

    <tidoust> [17]#646

      [17] https://github.com/w3c/webcodecs/issues/646

    <ghurlbot> [18]Issue 646 Support for Screen Content Coding
    (aboba) PR exists

      [18] https://github.com/w3c/webcodecs/issues/646

    Bernard: We've added a PR to initialise the AV1 quantizer

    <tidoust> PR [19]#662

      [19] https://github.com/w3c/webcodecs/issues/662

    <ghurlbot> [20]Pull Request 662 Enable configuration of AV1
    screen content coding tools (aboba)

      [20] https://github.com/w3c/webcodecs/issues/662

    Bernard: This PR adds a boolean for forceScreenContentTools.
    Default is false
    … when true, the AV1 spec sets a seek force screen content
    tools, then it uses the palette and block copy tools

    [21][Slide 7]

      [21] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=7

    Bernard: The PR adds this boolean attribute, default false,
    with an explanation

    Eugene: Difference with the other PR?

    Bernard: I rebased it due to a merge conflict

    Eugene: Another one proposed adding the flag to
    VideoEncodingConfig. The distinction is you configure it once,
    but now you'd set it per-frame

    Bernard: Quantizer is per-frame as well

    Eugene: So need to decide where it goes: per frame or not

    Bernard: Should be per frame. Content could change during
    screen capture, e.g., go from slides to a video presentation
    where you'd disable screen content tools
    … I closed the other PR

    Eugene: It belongs per-frame. I checked libaom, it does allow
    setting per-frame

    Bernard: If can change, but how you know to change it is a
    different story...

    Dale: Quantizer makes sense as an encoder, but the screen tools
    feels like a per-frame metadata thing
    … Then under the hood we'd automatically do the right thing

    Bernard: WebRTC does it that way, by checking whether it comes
    from a screen - but could be a game or sports event which are
    not amenable to screen content tools

    Eugene: IIRC, we'll have the same for VP9

    Bernard: I guess so, the AV1 tools are more sophisticated.
    Would that use the same kind of parameter?

    Eugene: As far as I know there's a global setting, not per
    frame

    Bernard: HEVC has screen content tools, but it's hardware only,
    so doesn't make sense to add it, as it woulnd't be used
    … Looking at the WebRTC code, it mostly changed the quantizer

    Chris: So proposed resolution is to add this per-frame for AV1,
    then consider VP9 separately. It's very much codec-specific

   Extend EncodedVideoChunk metadata for SVC

    [22][Slide 8]

      [22] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=8

    <tidoust> [23]#619

      [23] https://github.com/w3c/webcodecs/issues/619

    <ghurlbot> [24]Issue 619 Consistent SVC metadata between
    WebCodecs and Encoded Transform API (aboba) agenda, PR exists

      [24] https://github.com/w3c/webcodecs/issues/619

    <tidoust> PR [25]#654

      [25] https://github.com/w3c/webcodecs/issues/654

    <ghurlbot> [26]Pull Request 654 Extend
    EncodedVideoChunkMetadata for Spatial SVC (aboba)

      [26] https://github.com/w3c/webcodecs/issues/654

    Bernard: For background: In WebCodecs we support temporal
    scalablity, and WebRTC supports temporal and spatial
    scalability
    … In the WebRTC encoded transform, we provide metadata for
    these encoded frames
    … WebCodecs has an encodeded metadata, but there's a mismatch -
    if you want temporal scalability you need to use the WebRTC API
    … Since it's in WebRTC, why not bring it also to WebCodecs?

    [27][Slide 9]

      [27] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=9

    Bernard: First question is compare WebCodecs and WebRTC APIs.
    WebCodecs API is more structured, not just one big blob of
    stuff as in WebRTC

    [28][Slide 10]

      [28] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=10

    Bernard: The SVC sub-dictionary design has a frame number
    (unsigned short), not the same as frame id
    … frameId is a globally unique id for the frame
    … It's something you want to serialize on the wire, so the
    sender and receiver could want the information. Frame number is
    a modulo 2^16 of the frame id, to use less space in the wire
    serialization
    … When you describe dependencies you are referencing a series
    of frame numbers
    … In real life you typically don't have 2^16 or 2^32 frame-ago
    dependencies
    … Different names compares to the WebRTC version
    … Decode targets and chain links. A forwarder keeps state, and
    the frame rate and spatial resolution for a particular client.
    This determines what layers I forward to that client
    … It's useful to have this from the encoder, as the forwarder
    has state about the target, and compare against the frame
    itself
    … It makes it possible forwarder to quickly decide whether to
    forward or not
    … Protect the WebCodecs decoder against things that would cause
    a decoder error
    … Chain links. If you get a frame as a receiver, with
    dependencies, is it true that if I submit it ot the WebCodecs
    decoder I should get an error?
    … The dependencies might have dependencies? So you'd still get
    a decoder error
    … Chain links look at the whole chain of dependencies, and see
    if you'd get an error
    … Easier for the encoder to send the data than for the receiver
    to calculate the dependency graph, and avoid duplicate work
    across each client
    … We're thinking this should go in the SVC dictionary
    … One thing is there's no unsigned short, just unsigned long.
    Is this headed in the right direction?

    Eugene: As a superficial comment, we should everything as
    unsigned long. It wouldn't cost anything

    Bernard: Agree

    Eugene: I'm not sure when this would be implemented

    Bernard: It's in the Chromium code base. The SVC modes and
    depedency descriptor is there

    Dale: I think we'd need to check what our encoders produce. We
    should get one software encoder working before landing the spec
    change

    [29][Slide 11]

      [29] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=11

    [30][Slide 12]

      [30] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=12

    [31][Slide 13]

      [31] 
https://lists.w3.org/Archives/Public/www-archive/2023Apr/att-0000/MEDIAWG-04-11-23.pdf#page=13

    Bernard: I think it's possible to enable it. Next steps?

    Dale: Can you share a link to the Chromium code?

    Bernard: Will do

    Chris: Prototyping as Dale suggested?

    Bernard: It's in WebRTC spec, concern about the alternative
    version showing up in WebRTC

    Dale: I feel like having it working end to end, either WebRTC
    or WebCodecs, would be good

    Bernard: If the WG approves the approach, could follow it up in
    WebRTC

    Dale: Would prefer to see it working first though

    Eugene: We only have the temporal layer ID, as that's the only
    thing implemented, and we can add more dictionary entries when
    we're happy

    Bernard: We could submit a PR to remove from WebRTC, then when
    it's implemented add it in both places
    … It's dangeous for both to be out of sync

    Chris: Has this shipped in WebRTC or is it only a spec change
    for now?

    Bernard: Would have to check

    Chris: Happy to organise joint meeting discussion between both
    groups

    Chris: So check if shipped, get working end to end in either
    WebRTC and WebCodecs, then ensure specs are consistent across
    both

   Media WG rechartering

    Repository: w3c/charter-media-wg

    [32]#38

      [32] https://github.com/w3c/charter-media-wg/issues/38

    <ghurlbot> [33]Issue 38 Document Picture-in-Picture
    (steimelchrome)

      [33] https://github.com/w3c/charter-media-wg/issues/38

    <Github> [34]w3c/media-wg#38 : Add webcodecs quantizer mode to
    agenda listing.

      [34] https://github.com/w3c/media-wg/pull/38

    cpn: Open question related to rechartering and the Document
    Picture-in-Picture.
    … The Media WG was suggested in the TAG review as venue for
    Recommendation track progress.
    … Suggestion at this stage would not be that it become a WG
    deliverable but rather a potential normative deliverable as
    we've done in the past with the Audio Focus API.
    … With the goal being to avoid rechartering when spec is ready
    to enter the Recommendation track.
    … Question here is whether we should consider the document to
    our scope as a potential normative spec.
    … François pointed out that this would change the scope of the
    WG a little, because the group is focused on media related
    features.
    … Document PiP is broader in scope.
    … While it has interest from media companies to using it for
    media content, it's not restricted to that at all.
    … Question is: is the Media WG the right venue to continue work
    on the spec?
    … In favor: Picture-in-Picture is developed by the Media WG
    … I have a concern about the broader scope though.

    jernoble: The original media element supported fullscreen mode.
    The Fullscreen API is a more general purpose API. I think that
    is a WHATWG deliverable and that there are lots of parallel
    there.
    … As an implementer, I don't know that working on the spec in
    the Media WG makes sense.

    cpn: I think François suggested an alternate ohme for the spec,
    WebApps WG.
    … I don't think there's a barrier to landing that on the
    Recommendation track somewhere.
    … I'll just start an email thread with Tommy and chairs to
    thrash this out.
    … We don't want to hold up too much on that because draft
    charter is mostly ready otherwise.

    Dale: Most use cases are media-related but argument and
    comparison with Fullscreen makes sense to me.

    jernoble: If it becomes necessary to integrate with other
    specs, such as CSS, etc. it also makes sense to use a group
    that's more used to doing that.

    cpn: I agree. My proposal would be not to do it here.

    jernoble: Even more importantly, I think it would be even more
    successful in another group.

   TPAC 2023 joint meetings

    cpn: I think what I'm going to propose for our group is similar
    to last year: full morning or full afternoon to go through
    discussions. The other thing I'm interested in exploring is
    joint meetings.

    Bernard: Ongoing poll to figure out who's going to show up
    in-person. If not enough people, my sense is that W3C
    guidelines are not to request TPAC time.
    … I'll be remote.

    cpn: I'm planning to be there in-person.

    tidoust: I wouldn't worry too much about the requirement for
    number of people. The venue is large enough

    Bernard: Joint meeting with WebRTC will be useful. Lots of
    ongoing discussions.

    cpn: I'll follow-up via email on the specifics of that.

Received on Wednesday, 12 April 2023 09:01:23 UTC