Skip to content
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

Video frame capabilities and attributes #2383

Merged
merged 15 commits into from
Jul 26, 2024
Merged

Conversation

tonerdo
Copy link
Contributor

@tonerdo tonerdo commented Jul 1, 2024

For more information about how to contribute to this repo, visit this page.

Description

This updates the internal video frame API to allow a video app to specify required capabilities to be applied to the video frame and also read arbitrary attributes on the video frame added by any of the specified capabilities.

Main changes in the PR:

  1. Added requiredCapabilities field to VideoFrameConfig.
  2. Added attributes field to VideoFrameData.
  3. Updated extractVideoFrameAndMetadata to read and populate the attributes field.

Validation

Validation performed:

  1. orange web
  2. Testing with internal bits to ensure specified capabilities and attributes are successfully applied to video frames

Unit Tests added:

Updated existing videoEffectsEx unit tests.

End-to-end tests added:

Updated existing VideoEffectsExAPI e2e tests.

Additional Requirements

Change file added:

Ensure the change file meets the formatting requirements.

Yes

Next/remaining steps:

List the next or remaining steps in implementing the overall feature in subsequent PRs (or is the feature 100% complete after this?).

  • Update Teams client to use requiredCapabilities field
  • Update Avatars app to read attributes field

@tonerdo tonerdo changed the title [Draft] Video frame capabilities and attributes Video frame capabilities and attributes Jul 3, 2024
@tonerdo tonerdo marked this pull request as ready for review July 3, 2024 17:11
@tonerdo tonerdo requested a review from a team as a code owner July 3, 2024 17:11
): Promise<{ videoFrame: VideoFrame; metadata: { audioInferenceResult?: Uint8Array } }> => {
): Promise<{
videoFrame: VideoFrame;
metadata: { audioInferenceResult?: Uint8Array; attributes?: ReadonlyMap<string, Uint8Array> };
Copy link
Contributor

@AE-MS AE-MS Jul 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

What is the expectation on the difference between when someone receives undefined for this value vs when they receive a defined but empty map object?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

attributes will be undefined for hosts that do not (yet) support using the required capabilities specified by the app. Otherwise, it will be empty for apps that don't specify any required capabilities.

Copy link
Contributor

@AE-MS AE-MS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕐

Copy link
Contributor

@AE-MS AE-MS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@tonerdo tonerdo merged commit 5debfff into main Jul 26, 2024
21 checks passed
@tonerdo tonerdo deleted the tonerdo/video-frame-attributes branch July 26, 2024 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants