-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Eye gaze correction #56
Conversation
58442d8
to
a87b208
Compare
@alvestrand: Could you merge this PR? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, we should unify our usage of User Agent, user agent and UA in this document
6c43f7a
to
6e12e1e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eye gaze correction is still a rather new and novel feature, which makes me wonder where the web platform should draw the line. Mozilla is still clarifying its position on this API in mozilla/standards-positions#706 so I'd like another week to run this past some of my colleagues, if that's ok.
From #46 (comment):
Sorry if I missed the answer to this in a more recent presentation, but has information surfaced that "users are more comfortable with this" now than in 2021? Also, could you clarify why an application would need to control this feature? For blur, I think a valid argument was made that it was to avoid double-blurring, but that doesn't seem to apply here as much. Isn't this something users can configure in their user agent or OS today and leave it on? Same question for face framing. |
If face framing is on in the OS, the web page UI might not want to show this option (or might want to show it but unmodifiable). |
b439256
to
bb24084
Compare
const videoCapabilities = videoTrack.getCapabilities(); | ||
if ((videoCapabilities.eyeGazeCorrection || []).includes(true)) { | ||
await videoTrack.applyConstraints({eyeGazeCorrection: {exact: true}}); | ||
} else { | ||
// Eye gaze correction is not supported by the platform or by the camera. | ||
// Consider falling back to some other method. | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const videoCapabilities = videoTrack.getCapabilities(); | |
if ((videoCapabilities.eyeGazeCorrection || []).includes(true)) { | |
await videoTrack.applyConstraints({eyeGazeCorrection: {exact: true}}); | |
} else { | |
// Eye gaze correction is not supported by the platform or by the camera. | |
// Consider falling back to some other method. | |
} | |
const capabilities = videoTrack.getCapabilities(); | |
if (("eyeGazeCorrection" in capabilities) { | |
await videoTrack.applyConstraints({eyeGazeCorrection: true}); | |
} else { | |
// Eye gaze correction is not supported by the platform or by the camera. | |
// Consider falling back to some other method. | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not the same thing.
if ((videoCapabilities.eyeGazeCorrection || []).includes(true))
tests if eye gaze correction can be enabled and the else branch can then fall back to some other method.
if ("eyeGazeCorrection" in capabilities)
tests only if the UA and the track know about eye gaze correction but the capability can be either [false]
, [false, true]
or [true]
. The await videoTrack.applyConstraints({eyeGazeCorrection: true});
will of course always succeed regardless the capability of the lack of it because only optional constraints are used. But now the else branch is reached only if there are no eye gaze correction capabilities but not if the eye gaze correction capability is [false]
which contradicts the comment in and the intent of that else branch.
We should fix the test example and probably file an issue about quality of implementation. |
This issue was mentioned in WEBRTCWG-2023-02-21 (Page 46) |
@eehakkin is there still interest in this one? After reviewing the editors feel this PR should have a note stating the feature lacks consensus if it is to merge ahead of a CfC. |
Yes. We are still interested to continue with this feature. I have put up an Explainer also. There are 2 modes of Eye Gaze Correction on Windows, so it also an option to have a enum as shown in the Explainer. Happy to discuss here at TPAC how to move forward on this. |
Editor's meeting: @riju could you rebase it and we will plan to merge it next week? |
78f35ac
to
14b2e44
Compare
I rebased it. |
Gentle ping @jan-ivar @alvestrand |
Should we start a Call for Consensus? |
Yes.
…On Thu, Nov 2, 2023 at 5:02 PM Bernard Aboba ***@***.***> wrote:
Should we start a Call for Consensus?
—
Reply to this email directly, view it on GitHub
<#56 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AADVM7MZGCVAYC5BHW5R3YLYCO7Z3AVCNFSM5NB45VT2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCNZZGEYDEMJTHEYA>
.
You are receiving this because you modified the open/close state.Message
ID: ***@***.***>
|
Eye gaze correction corrects the eye gaze then a user is looking at the display and not the camera while the camera is far from the point the user is looking at. This problem is widespread especially with large displays. For an example and background, see #46.
Please see #49 (comment) why a constrainable property is most suitable for the purpose.
Preview | Diff