From 5869814f338e3e0ba1c2bde839f505b14736c6f6 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Wed, 7 Feb 2024 14:11:09 +0100 Subject: [PATCH] Make it possible to update transformer options without restarting the processor (#32) --- .changeset/large-eyes-explode.md | 5 + .github/workflows/release.yaml | 4 +- README.md | 24 +- example/ali-kazal-tbw_KQE3Cbg-unsplash.jpg | Bin 0 -> 52339 bytes example/index.html | 18 + example/sample.ts | 23 +- package.json | 6 +- pnpm-lock.yaml | 3764 ++++++++++++++++ ...ocessorPipeline.ts => ProcessorWrapper.ts} | 40 +- src/index.ts | 49 +- src/transformers/BackgroundTransformer.ts | 21 +- src/transformers/DummyTransformer.ts | 11 - .../MediaPipeHolisticTrackerTransformer.ts | 4 +- src/transformers/VideoTransformer.ts | 6 +- src/transformers/types.ts | 33 +- yarn.lock | 3776 ----------------- 16 files changed, 3925 insertions(+), 3859 deletions(-) create mode 100644 .changeset/large-eyes-explode.md create mode 100644 example/ali-kazal-tbw_KQE3Cbg-unsplash.jpg create mode 100644 pnpm-lock.yaml rename src/{ProcessorPipeline.ts => ProcessorWrapper.ts} (72%) delete mode 100644 src/transformers/DummyTransformer.ts delete mode 100644 yarn.lock diff --git a/.changeset/large-eyes-explode.md b/.changeset/large-eyes-explode.md new file mode 100644 index 0000000..53b37ed --- /dev/null +++ b/.changeset/large-eyes-explode.md @@ -0,0 +1,5 @@ +--- +'@livekit/track-processors': minor +--- + +Replace ProcessorPipeline with ProcessorWrapper, allowing for direct transformer updates diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 419410c..82fc947 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -21,14 +21,14 @@ jobs: node-version: 16.x - name: Install Dependencies - run: yarn + run: pnpm i - name: Create Release Pull Request or Publish to npm id: changesets uses: changesets/action@v1 with: # This expects you to have a script called release which does a build for your packages and calls changeset publish - publish: yarn release + publish: pnpm release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/README.md b/README.md index 3bf2278..977349c 100644 --- a/README.md +++ b/README.md @@ -3,33 +3,47 @@ ## Install ``` -yarn add @livekit/track-processors +npm add @livekit/track-processors ``` ## Usage of prebuilt processors +### Available processors + This package exposes `BackgroundBlur` and `VirtualBackground` as pre-prepared processor pipelines. +- `BackgroundBlur(blurRadius)` +- `VirtualBackground(imagePath)` + +### Usage example + ```ts import { BackgroundBlur } from '@livekit/track-processors'; const videoTrack = await createLocalVideoTrack(); -await videoTrack.setProcessor(BackgroundBlur(10)); +const blur = BackgroundBlur(10); +await videoTrack.setProcessor(blur); room.localParticipant.publishTrack(videoTrack); async function disableBackgroundBlur() { await videoTrack.stopProcessor(); } + +async updateBlurRadius(radius) { + return blur.updateTransformerOptions({blurRadius: blur}) +} + + ``` -## Building your own processors +## Developing your own processors -A track processor consists of one or multiple transformers. +A track processor is instantiated with a Transformer. ```ts // src/index.ts export const VirtualBackground = (imagePath: string) => { - const pipeline = new ProcessorPipeline([new BackgroundTransformer({ imagePath })]); + const pipeline = new ProcessorWrapper(new BackgroundTransformer({ imagePath })); return pipeline; }; ``` diff --git a/example/ali-kazal-tbw_KQE3Cbg-unsplash.jpg b/example/ali-kazal-tbw_KQE3Cbg-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5f7e8f6beb4cc897311a9f26353cc438bc8a39e GIT binary patch literal 52339 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%0Dm8Ao1e?*xFNBYeGh`K0D6@ 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 fz9G%s#Y{oXPSdXwDk4?4wnJ@LiveKit track processor sample Flip Video + + +