On Tue, Mar 25, 2025 at 3:13 PM Dale Curtis <dalecur...@chromium.org> wrote:

> On Tue, Mar 25, 2025 at 9:44 AM Stephen Chenney <schen...@chromium.org>
> wrote:
>
>>
>>
>> On Tue, Mar 25, 2025 at 12:10 PM Chromestatus <
>> ad...@cr-status.appspotmail.com> wrote:
>>
>>> Contact emails dalecur...@chromium.org
>>>
>>> Explainer None
>>>
>>> Specification https://www.w3.org/TR/webcodecs
>>>
>>> Summary
>>>
>>> Introduces "rotation: int" and "flip: bool" values to various video
>>> related interfaces in WebCodecs so that developers can work with frame
>>> sources that have orientation (E.g., Android cameras, certain media). The
>>> VideoFrame interface grows the ability to create VideoFrames with arbitrary
>>> rotation and flip as well as accessors for this information on the
>>> VideoFrame object. The VideoDecoderConfig object gains rotation and flip
>>> fields that are emitted on decoded VideoFrame objects automatically. The
>>> VideoEncoder class gains mechanisms for passing rotation and flip
>>> information from encode() to the VideoDecoderConfig emitted as part of
>>> EncodedVideoChunkMetadata. If encode() is called with frames with different
>>> orientations a non-fatal exception will be thrown. configure() may be used
>>> to reset the allowed orientation.
>>>
>> Back in the day I implemented the CSS image-orientation property, which
>> is conceptually addressing the same kind of thing in the image case. There
>> were privacy concerns about exposing image metadata content through the
>> orientation property, leading to the requirement that cross-origin content
>> always render using the image's EXIF orientation. This prevents pages from
>> applying the image-orientation property, detecting a change in rendering,
>> and hence inferring the metadata.
>>
>> As I understand the spec link and this intent, it seems like existing
>> behavior is to always use the encoded video orientation, and this feature
>> allows sites to modify the orientation. If that's so, could it expose
>> information about users' cameras via video length/width, thus leading to
>> additional fingerprinting surface? Did this come up in the spec discussions?
>>
>
> The existing behavior is to ignore orientation entirely, which leads to
> incorrect encoding and decoding. There's no new exposure of information in
> this case:
>
>    - VideoFrames can't be created from cross-origin objects
>    <https://www.w3.org/TR/webcodecs/#videoframe-constructors>, so this
>    can't leak anything about <image> tags or other CanvasImageSource types.
>    - The camera width, height, and aspectRatio
>    <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings>
>    are already available through the MediaStreamTrack information
>    (getUserMedia is permission gated).
>    - Orientation is already indirectly observable per-frame by drawing to
>    canvas with and without image-orientation: none.
>
> Thanks. That clarifies things and addresses any concerns I had.


>
>> Stephen.
>>
>>
>>>
>>>
>>> Blink component Blink>Media>WebCodecs
>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EMedia%3EWebCodecs%22>
>>>
>>> Search tags webcodecs <http:///features#tags:webcodecs>, videoframe
>>> <http:///features#tags:videoframe>, orientation
>>> <http:///features#tags:orientation>, videodecoder
>>> <http:///features#tags:videodecoder>, videoencoder
>>> <http:///features#tags:videoencoder>
>>>
>>> TAG review None
>>>
>>> TAG review status Not applicable
>>>
>>> Risks
>>>
>>>
>>> Interoperability and Compatibility
>>>
>>> Low, feature designed in conjunction with Firefox and the Media WG.
>>>
>>>
>>> *Gecko*: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1955904)
>>> Spec co-editor, approved all spec changes, implementation planned.
>>>
>>> *WebKit*: No signal (
>>> https://github.com/WebKit/standards-positions/issues/475) Participated
>>> in some of the standards discussions around this feature.
>>>
>>> *Web developers*: Positive (https://github.com/w3c/webcodecs/issues/351)
>>> Active requests from Zoom and others developers (see issue) who are working
>>> with cameras with orientation metadata.
>>>
>>> *Other signals*:
>>>
>>> Ergonomics
>>>
>>> No risk. Small incremental change to WebCodecs API.
>>>
>>>
>>> Activation
>>>
>>> No risk. Small incremental change to WebCodecs API. MDN documentation
>>> will be updated.
>>>
>>>
>>> Security
>>>
>>> No risk. No new control surfaces. Video elements already have this
>>> functionality.
>>>
>>>
>>> WebView application risks
>>>
>>> Does this intent deprecate or change behavior of existing APIs, such
>>> that it has potentially high risk for Android WebView-based applications?
>>>
>>> Some cameras and media will immediately begin exposing orientation
>>> information. In uncommon cases this orientation may change. If orientation
>>> changes during encoding through VideoEncoder frames with different
>>> orientation than the first are currently encoded with incorrect size and
>>> orientation. However the operation completes without a hard error. During
>>> discussions in the media working group it was decided that these cases
>>> should instead throw a non-fatal exception during encode(). There is
>>> already precedent for exception handling during encode() so authors should
>>> already be handling this case.
>>>
>>>
>>> Debuggability
>>>
>>> Rotation information shows up in media configs emitted in media dev
>>> tools.
>>>
>>>
>>> Will this feature be supported on all six Blink platforms (Windows, Mac,
>>> Linux, ChromeOS, Android, and Android WebView)? Yes
>>>
>>> Mostly just exposes existing under the hood information used by video
>>> elements, so is already supported everywhere.
>>>
>>>
>>> Is this feature fully tested by web-platform-tests
>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>> ? Yes
>>>
>>>
>>> https://wpt.fyi/results/webcodecs?label=master&label=experimental&aligned&q=orientation
>>>
>>>
>>> Flag name on about://flags WebCodecsOrientation
>>>
>>> Finch feature name WebCodecsOrientation
>>>
>>> Requires code in //chrome? False
>>>
>>> Tracking bug https://crbug.com/40243431
>>>
>>> Measurement WebCodecs has use counters, but no specific use counter has
>>> been added for the rotation and flip usage.
>>>
>>> Availability expectation Available on all platforms except for iOS.
>>>
>>> Adoption expectation Should be adopted by sites consuming camera feeds
>>> with WebCodecs.
>>>
>>> Estimated milestones
>>> Shipping on desktop 137
>>> DevTrial on desktop 136
>>> Shipping on Android 137
>>> DevTrial on Android 136
>>> Shipping on WebView 137
>>>
>>> Anticipated spec changes
>>>
>>> Open questions about a feature may be a source of future web compat or
>>> interop issues. Please list open issues (e.g. links to known github issues
>>> in the project for the feature specification) whose resolution may
>>> introduce web compat/interop risk (e.g., changing to naming or structure of
>>> the API in a non-backward-compatible way).
>>> Spec changes have already been landed after review with Firefox and the
>>> Media Working Group: * https://github.com/w3c/webcodecs/pull/884 *
>>> https://github.com/w3c/webcodecs/pull/874 *
>>> https://github.com/w3c/webcodecs/pull/840 *
>>> https://github.com/w3c/webcodecs/pull/559
>>>
>>> Link to entry on the Chrome Platform Status
>>> https://chromestatus.com/feature/5128855343595520?gate=5187346531876864
>>>
>>> This intent message was generated by Chrome Platform Status
>>> <https://chromestatus.com>.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to blink-dev+unsubscr...@chromium.org.
>>> To view this discussion visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67e2d562.170a0220.e1a1e.07a6.GAE%40google.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67e2d562.170a0220.e1a1e.07a6.GAE%40google.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGsbWzQL9F0yDuG76rhdsa%3DS_wu9NTbTn_Qy1h70GpKhmyC3kA%40mail.gmail.com.

Reply via email to