From 20b382fc2d166bfae3af563489afb7fb91ebd100 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:19:29 +0000 Subject: [PATCH] deploy: 9357efe698c3eeefac683fbdc9eb2022f07ac75a --- 404.html | 2 +- .../js/{5e68c76a.af3f3b17.js => 5e68c76a.cb281847.js} | 2 +- assets/js/d30da6cd.734583fc.js | 1 - assets/js/d30da6cd.abf6c8bc.js | 1 + ...ntime~main.87f8ccb4.js => runtime~main.09ec93e0.js} | 2 +- docs/api/components/Image.html | 2 +- docs/api/components/InputStream.html | 2 +- docs/api/components/Rescaler.html | 2 +- docs/api/components/Shader.html | 2 +- docs/api/components/Text.html | 2 +- docs/api/components/Tiles.html | 2 +- docs/api/components/View.html | 2 +- docs/api/components/WebView.html | 2 +- docs/api/generated/component-Image.html | 2 +- docs/api/generated/component-InputStream.html | 2 +- docs/api/generated/component-Rescaler.html | 2 +- docs/api/generated/component-Text.html | 2 +- docs/api/generated/component-Tiles.html | 2 +- docs/api/generated/component-View.html | 2 +- docs/api/generated/component-WebView.html | 2 +- docs/api/generated/renderer-Mp4.html | 2 +- docs/api/generated/renderer-OutputStream.html | 10 ++++++++-- docs/api/generated/renderer-RtpInputStream.html | 2 +- docs/api/generated/renderer-Shader.html | 2 +- docs/api/generated/renderer-WebRenderer.html | 2 +- docs/api/inputs/mp4.html | 2 +- docs/api/inputs/rtp.html | 2 +- docs/api/outputs/rtp.html | 10 ++++++++-- docs/api/renderers/image.html | 2 +- docs/api/renderers/shader.html | 2 +- docs/api/renderers/web.html | 2 +- docs/api/routes.html | 2 +- docs/category/api-reference.html | 2 +- docs/category/deployment.html | 2 +- docs/common/absolute-position.html | 2 +- docs/concept/component.html | 2 +- docs/concept/layouts.html | 2 +- docs/concept/shaders.html | 2 +- docs/concept/web.html | 2 +- docs/deployment/configuration.html | 2 +- docs/get-started.html | 2 +- docs/get-started/elixir.html | 2 +- docs/get-started/node.html | 2 +- docs/intro.html | 2 +- index.html | 2 +- 45 files changed, 58 insertions(+), 46 deletions(-) rename assets/js/{5e68c76a.af3f3b17.js => 5e68c76a.cb281847.js} (58%) delete mode 100644 assets/js/d30da6cd.734583fc.js create mode 100644 assets/js/d30da6cd.abf6c8bc.js rename assets/js/{runtime~main.87f8ccb4.js => runtime~main.09ec93e0.js} (65%) diff --git a/404.html b/404.html index 18d0b8662..b5caa076f 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | Live Compositor - + diff --git a/assets/js/5e68c76a.af3f3b17.js b/assets/js/5e68c76a.cb281847.js similarity index 58% rename from assets/js/5e68c76a.af3f3b17.js rename to assets/js/5e68c76a.cb281847.js index 445887b13..093d803f4 100644 --- a/assets/js/5e68c76a.af3f3b17.js +++ b/assets/js/5e68c76a.cb281847.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[7247],{936:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var t=i(5893),r=i(1151);const s={},o=void 0,d={id:"api/generated/renderer-OutputStream",title:"renderer-OutputStream",description:"OutputStream",source:"@site/pages/api/generated/renderer-OutputStream.md",sourceDirName:"api/generated",slug:"/api/generated/renderer-OutputStream",permalink:"/docs/api/generated/renderer-OutputStream",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},l={},c=[{value:"OutputStream",id:"outputstream",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"Resolution",id:"resolution",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"OutputAudioOptions",id:"outputaudiooptions",level:2},{value:"Properties",id:"properties-4",level:4},{value:"Audio",id:"audio",level:2},{value:"Properties",id:"properties-5",level:4},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-6",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"outputstream",children:"OutputStream"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputStream = {\n output_id: string;\n port: string | u16;\n ip?: string;\n transport_protocol?: "udp" | "tcp_server";\n video?: OutputVideoOptions;\n audio?: OutputAudioOptions;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"output_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"port"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ip"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"transport_protocol"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"udp"'})," - UDP protocol."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"tcp_server"'})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"video"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"audio"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputVideoOptions = {\n resolution: Resolution;\n encoder_preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n initial: Component;\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"resolution"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"encoder_preset"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"initial"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"resolution",children:"Resolution"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Resolution = {\n width: u32;\n height: u32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"width"})," - Width in pixels."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"height"})," - Height in pixels."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type OutputEndCondition = {\n any_of?: string[];\n all_of?: string[];\n any_input?: bool;\n all_inputs?: bool;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_of"})," - Output will be terminated if any of the listed input streams are finished.\nInput stream is considered finished if: - Input never existed - RTCP Goodbye packet was received - MP4 track has ended - Input was unregistered (before or after output registration)\nIn particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_of"})," - Output will be terminated if all of the listed input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_input"})," - Output will be terminated in any of the input streams did terminate. This includes streams added after the output was registered. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_inputs"})," - Output will be terminated if all of the input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputaudiooptions",children:"OutputAudioOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputAudioOptions = {\n initial: Audio;\n channels: "mono" | "stereo";\n forward_error_correction?: bool;\n encoder_preset?: "quality" | "voip" | "lowest_latency";\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"initial"})," - Initial audio for output."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"channels"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"mono"'})," - Mono audio (single channel)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"stereo"'})," - Stereo audio (two channels)."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,t.jsxs)(n.strong,{children:["default=",(0,t.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,t.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"encoder_preset"})," - (",(0,t.jsx)(n.strong,{children:'default="voip"'}),") Specifies preset for audio output encoder.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"quality"'})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"voip"'})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"lowest_latency"'})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"audio",children:"Audio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Audio = {\n inputs: InputAudio[];\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-5",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"inputs"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-6",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"input_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"volume"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>d,a:()=>o});var t=i(7294);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[7247],{936:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>a,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var t=i(5893),r=i(1151);const s={},o=void 0,l={id:"api/generated/renderer-OutputStream",title:"renderer-OutputStream",description:"OutputStream",source:"@site/pages/api/generated/renderer-OutputStream.md",sourceDirName:"api/generated",slug:"/api/generated/renderer-OutputStream",permalink:"/docs/api/generated/renderer-OutputStream",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},d={},c=[{value:"OutputStream",id:"outputstream",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"Resolution",id:"resolution",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"OutputAudioOptions",id:"outputaudiooptions",level:2},{value:"Properties",id:"properties-4",level:4},{value:"Audio",id:"audio",level:2},{value:"Properties",id:"properties-5",level:4},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-6",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"outputstream",children:"OutputStream"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputStream = {\n output_id: string;\n port: string | u16;\n ip?: string;\n transport_protocol?: "udp" | "tcp_server";\n video?: OutputVideoOptions;\n audio?: OutputAudioOptions;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"output_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"port"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ip"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"transport_protocol"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"udp"'})," - UDP protocol."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"tcp_server"'})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"video"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"audio"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputVideoOptions = {\n resolution: Resolution;\n encoder_preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n initial: Component;\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"resolution"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"encoder_preset"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"initial"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"resolution",children:"Resolution"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Resolution = {\n width: u32;\n height: u32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"width"})," - Width in pixels."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"height"})," - Height in pixels."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type OutputEndCondition = {\n any_of?: string[];\n all_of?: string[];\n any_input?: bool;\n all_inputs?: bool;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_of"})," - Output will be terminated if any of the listed input streams are finished.\nInput stream is considered finished if: - Input never existed - RTCP Goodbye packet was received - MP4 track has ended - Input was unregistered (before or after output registration)\nIn particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_of"})," - Output will be terminated if all of the listed input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_input"})," - Output will be terminated in any of the input streams did terminate. This includes streams added after the output was registered. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_inputs"})," - Output will be terminated if all of the input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputaudiooptions",children:"OutputAudioOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputAudioOptions = {\n initial: Audio;\n channels: "mono" | "stereo";\n forward_error_correction?: bool;\n encoder_preset?: "quality" | "voip" | "lowest_latency";\n mixing_strategy?: "SumClip" | "SumScale";\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"initial"})," - Initial audio for output."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"channels"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"mono"'})," - Mono audio (single channel)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"stereo"'})," - Stereo audio (two channels)."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,t.jsxs)(n.strong,{children:["default=",(0,t.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,t.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"encoder_preset"})," - (",(0,t.jsx)(n.strong,{children:'default="voip"'}),") Specifies preset for audio output encoder.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"quality"'})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"voip"'})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"lowest_latency"'})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"mixing_strategy"}),' - (**default="sum_clip") Specifies how audio should be mixed.',"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumClip"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumScale"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, nearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"audio",children:"Audio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Audio = {\n inputs: InputAudio[];\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-5",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"inputs"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-6",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"input_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"volume"})}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>o});var t=i(7294);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d30da6cd.734583fc.js b/assets/js/d30da6cd.734583fc.js deleted file mode 100644 index d93cedbac..000000000 --- a/assets/js/d30da6cd.734583fc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[6010],{7181:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var s=t(5893),r=t(1151);const i={},o="RTP",d={id:"api/outputs/rtp",title:"RTP",description:"An output type that allows streaming video and audio from the compositor over RTP.",source:"@site/pages/api/outputs/rtp.md",sourceDirName:"api/outputs",slug:"/api/outputs/rtp",permalink:"/docs/api/outputs/rtp",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"sidebar",previous:{title:"Web Renderer",permalink:"/docs/api/renderers/web"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},c=[];function a(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"rtp",children:"RTP"}),"\n",(0,s.jsx)(n.p,{children:"An output type that allows streaming video and audio from the compositor over RTP."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type RegisterOutputStream = {\n output_id: string;\n transport_protocol?: "udp" | "tcp_server";\n port: u16;\n ip?: string;\n video?: Video;\n audio?: Audio;\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"Register a new RTP output stream."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_id"})," - An identifier for the output stream. It can be used in the ",(0,s.jsx)(n.code,{children:"UpdateOutput"})," request to define what to render for the output stream."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transport_protocol"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"udp"'})]}),") Transport layer protocol that will be used to send RTP packets.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - UDP protocol."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"port"})," - Depends on the value of the ",(0,s.jsx)(n.code,{children:"transport_protocol"})," field:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - An UDP port number that RTP packets will be sent to."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - A local TCP port number or a port range that LiveCompositor will listen for incoming connections."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ip"})," - Only valid if ",(0,s.jsx)(n.code,{children:'transport_protocol="udp"'}),". IP address where RTP packets should be sent to."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Video = {\n resolution: { width: number; height: number };\n encoder_preset?: VideoEncoderPreset;\n send_eos_when?: EosCondition;\n initial: Component;\n}\n\ntype VideoEncoderPreset =\n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,s.jsx)(n.code,{children:"FFmpeg"})," ",(0,s.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,s.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Audio = {\n channels: "stereo" | "mono";\n forward_error_correction?: boolean;\n encoder_preset?: AudioEncoderPreset;\n send_eos_when?: EosCondition;\n initial: {\n inputs: AudioInput[];\n };\n}\n\ntype AudioInput = {\n input_id: string;\n volume?: number;\n}\n\ntype AudioEncoderPreset =\n | "quality"\n | "voip"\n | "lowest_latency"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"channels"})," - Channel configuration for output audio."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,s.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"voip"'})]}),") Preset for an encoder.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"quality"})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"voip"})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"lowest_latency"})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Initial configuration for audio mixer for this output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].input_id"})," - Input ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].volume"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"1.0"})]}),") Float in ",(0,s.jsx)(n.code,{children:"[0, 1]"})," range representing volume."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"type EosCondition = {\n any_input?: bool;\n all_inputs?: bool;\n any_of?: InputId[];\n all_of?: InputId[];\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time."}),"\n",(0,s.jsx)(n.p,{children:"Unless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,s.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,s.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,s.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,s.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_input"})," - Terminate output stream if any of the input streams ends. This includes streams added after the output was registered. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>o});var s=t(7294);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d30da6cd.abf6c8bc.js b/assets/js/d30da6cd.abf6c8bc.js new file mode 100644 index 000000000..a84626a38 --- /dev/null +++ b/assets/js/d30da6cd.abf6c8bc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[6010],{7181:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var s=t(5893),i=t(1151);const r={},o="RTP",d={id:"api/outputs/rtp",title:"RTP",description:"An output type that allows streaming video and audio from the compositor over RTP.",source:"@site/pages/api/outputs/rtp.md",sourceDirName:"api/outputs",slug:"/api/outputs/rtp",permalink:"/docs/api/outputs/rtp",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"sidebar",previous:{title:"Web Renderer",permalink:"/docs/api/renderers/web"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},c=[];function a(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"rtp",children:"RTP"}),"\n",(0,s.jsx)(n.p,{children:"An output type that allows streaming video and audio from the compositor over RTP."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type RegisterOutputStream = {\n output_id: string;\n transport_protocol?: "udp" | "tcp_server";\n port: u16;\n ip?: string;\n video?: Video;\n audio?: Audio;\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"Register a new RTP output stream."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_id"})," - An identifier for the output stream. It can be used in the ",(0,s.jsx)(n.code,{children:"UpdateOutput"})," request to define what to render for the output stream."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transport_protocol"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"udp"'})]}),") Transport layer protocol that will be used to send RTP packets.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - UDP protocol."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"port"})," - Depends on the value of the ",(0,s.jsx)(n.code,{children:"transport_protocol"})," field:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - An UDP port number that RTP packets will be sent to."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - A local TCP port number or a port range that LiveCompositor will listen for incoming connections."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ip"})," - Only valid if ",(0,s.jsx)(n.code,{children:'transport_protocol="udp"'}),". IP address where RTP packets should be sent to."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Video = {\n resolution: { width: number; height: number };\n encoder_preset?: VideoEncoderPreset;\n send_eos_when?: EosCondition;\n initial: Component;\n}\n\ntype VideoEncoderPreset =\n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,s.jsx)(n.code,{children:"FFmpeg"})," ",(0,s.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,s.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Audio = {\n channels: "stereo" | "mono";\n forward_error_correction?: boolean;\n encoder_preset?: AudioEncoderPreset;\n send_eos_when?: EosCondition;\n initial: {\n inputs: AudioInput[];\n };\n mixing_strategy?: "sum_clip" | "sum_scale" \n}\n\ntype AudioInput = {\n input_id: string;\n volume?: number;\n}\n\ntype AudioEncoderPreset =\n | "quality"\n | "voip"\n | "lowest_latency"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"channels"})," - Channel configuration for output audio."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,s.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"voip"'})]}),") Preset for an encoder.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"quality"})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"voip"})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"lowest_latency"})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Initial configuration for audio mixer for this output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].input_id"})," - Input ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].volume"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"1.0"})]}),") Float in ",(0,s.jsx)(n.code,{children:"[0, 1]"})," range representing volume."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mixing_strategy"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"sum_clip"})]}),") Specifies how input samples should be mixed:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_clip"})," - Firstly, input samples are summed. If the result sample is outside the i16 PCM range, it gets clipped."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_scale"})," - Firstly, input samples are summed. If the result wave is outside the i16 PCM range, nearby samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"type EosCondition = {\n any_input?: bool;\n all_inputs?: bool;\n any_of?: InputId[];\n all_of?: InputId[];\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time."}),"\n",(0,s.jsx)(n.p,{children:"Unless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,s.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,s.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,s.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,s.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_input"})," - Terminate output stream if any of the input streams ends. This includes streams added after the output was registered. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>o});var s=t(7294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.87f8ccb4.js b/assets/js/runtime~main.09ec93e0.js similarity index 65% rename from assets/js/runtime~main.87f8ccb4.js rename to assets/js/runtime~main.09ec93e0.js index a8999b357..95221df72 100644 --- a/assets/js/runtime~main.87f8ccb4.js +++ b/assets/js/runtime~main.09ec93e0.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,r,f,c={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={exports:{}};return c[e].call(t.exports,t,t.exports,o),t.exports}o.m=c,e=[],o.O=(a,t,r,f)=>{if(!t){var c=1/0;for(i=0;i=f)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(d=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var c={};a=a||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,o.d(f,c),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({2:"4e76d5b1",53:"935f2afb",222:"583850f4",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1252:"914825a2",1342:"9641c2a9",1361:"be91778b",1538:"14eaa339",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",3237:"1df93b7f",3268:"7ef038ae",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",6439:"dcfd3d15",7140:"03d586bf",7180:"3d0d9de9",7247:"5e68c76a",7508:"b542e828",7598:"20fb3f1d",7613:"21a024a3",7721:"6402fa87",7918:"17896441",8196:"9280379f",8260:"2a8dccce",8407:"e17b63fd",8421:"d654602c",8422:"31161cd8",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{2:"46794a55",53:"fbddf355",222:"9afb887a",580:"774f0535",821:"b784e312",1015:"d55ee15a",1252:"74196099",1342:"a1147615",1361:"58c8ae9e",1538:"16ccf94c",1724:"a6d697f6",1772:"225f8635",1778:"cad88329",1792:"3e71971a",2402:"f2420e08",2676:"f2ad333a",2692:"e9a2af06",3237:"b8b89c37",3268:"caa6b389",4368:"e2a61cf4",4771:"3a18c4f9",4775:"de58a3fb",5195:"0057c1c1",5874:"2d9c84b0",6010:"734583fc",6279:"70b35cd5",6439:"fe7de27f",7140:"e5ae3d1e",7180:"d89f74eb",7247:"af3f3b17",7508:"0357c40a",7598:"97a9db77",7613:"2640735a",7721:"f595f69a",7918:"83ee43b0",8015:"529d47f0",8196:"dba23a16",8260:"8e842ddb",8407:"d3046dc5",8421:"f127afd6",8422:"b4534a52",8508:"eaaccdac",8518:"6cbc061c",8646:"afacd7df",8780:"9b474854",8930:"33e48f0e",9318:"d3b416a7",9651:"6e4b4ac8",9661:"0cf0e896",9817:"f7dcb3c5"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="compositor-live:",o.l=(e,a,t,c)=>{if(r[e])r[e].push(a);else{var d,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),b&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","4e76d5b1":"2","935f2afb":"53","583850f4":"222","19a7aa20":"580","5732f308":"821",d81783d9:"1015","914825a2":"1252","9641c2a9":"1342",be91778b:"1361","14eaa339":"1538",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","1df93b7f":"3237","7ef038ae":"3268",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279",dcfd3d15:"6439","03d586bf":"7140","3d0d9de9":"7180","5e68c76a":"7247",b542e828:"7508","20fb3f1d":"7598","21a024a3":"7613","6402fa87":"7721","9280379f":"8196","2a8dccce":"8260",e17b63fd:"8407",d654602c:"8421","31161cd8":"8422","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var c=o.p+o.u(a),d=new Error;o.l(c,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;d.message="Loading chunk "+a+" failed.\n("+f+": "+c+")",d.name="ChunkLoadError",d.type=f,d.request=c,r[1](d)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,c=t[0],d=t[1],b=t[2],n=0;if(c.some((a=>0!==e[a]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(b)var i=b(o)}for(a&&a(t);n{"use strict";var e,a,t,r,f,d={},c={};function o(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return d[e].call(t.exports,t,t.exports,o),t.exports}o.m=d,e=[],o.O=(a,t,r,f)=>{if(!t){var d=1/0;for(i=0;i=f)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var d={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,o.d(f,d),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({2:"4e76d5b1",53:"935f2afb",222:"583850f4",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1252:"914825a2",1342:"9641c2a9",1361:"be91778b",1538:"14eaa339",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",3237:"1df93b7f",3268:"7ef038ae",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",6439:"dcfd3d15",7140:"03d586bf",7180:"3d0d9de9",7247:"5e68c76a",7508:"b542e828",7598:"20fb3f1d",7613:"21a024a3",7721:"6402fa87",7918:"17896441",8196:"9280379f",8260:"2a8dccce",8407:"e17b63fd",8421:"d654602c",8422:"31161cd8",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{2:"46794a55",53:"fbddf355",222:"9afb887a",580:"774f0535",821:"b784e312",1015:"d55ee15a",1252:"74196099",1342:"a1147615",1361:"58c8ae9e",1538:"16ccf94c",1724:"a6d697f6",1772:"225f8635",1778:"cad88329",1792:"3e71971a",2402:"f2420e08",2676:"f2ad333a",2692:"e9a2af06",3237:"b8b89c37",3268:"caa6b389",4368:"e2a61cf4",4771:"3a18c4f9",4775:"de58a3fb",5195:"0057c1c1",5874:"2d9c84b0",6010:"abf6c8bc",6279:"70b35cd5",6439:"fe7de27f",7140:"e5ae3d1e",7180:"d89f74eb",7247:"cb281847",7508:"0357c40a",7598:"97a9db77",7613:"2640735a",7721:"f595f69a",7918:"83ee43b0",8015:"529d47f0",8196:"dba23a16",8260:"8e842ddb",8407:"d3046dc5",8421:"f127afd6",8422:"b4534a52",8508:"eaaccdac",8518:"6cbc061c",8646:"afacd7df",8780:"9b474854",8930:"33e48f0e",9318:"d3b416a7",9651:"6e4b4ac8",9661:"0cf0e896",9817:"f7dcb3c5"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="compositor-live:",o.l=(e,a,t,d)=>{if(r[e])r[e].push(a);else{var c,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),b&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","4e76d5b1":"2","935f2afb":"53","583850f4":"222","19a7aa20":"580","5732f308":"821",d81783d9:"1015","914825a2":"1252","9641c2a9":"1342",be91778b:"1361","14eaa339":"1538",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","1df93b7f":"3237","7ef038ae":"3268",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279",dcfd3d15:"6439","03d586bf":"7140","3d0d9de9":"7180","5e68c76a":"7247",b542e828:"7508","20fb3f1d":"7598","21a024a3":"7613","6402fa87":"7721","9280379f":"8196","2a8dccce":"8260",e17b63fd:"8407",d654602c:"8421","31161cd8":"8422","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var d=o.p+o.u(a),c=new Error;o.l(d,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",c.name="ChunkLoadError",c.type=f,c.request=d,r[1](c)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,d=t[0],c=t[1],b=t[2],n=0;if(d.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(b)var i=b(o)}for(a&&a(t);n Image | Live Compositor - + diff --git a/docs/api/components/InputStream.html b/docs/api/components/InputStream.html index 3363a6782..9077790ad 100644 --- a/docs/api/components/InputStream.html +++ b/docs/api/components/InputStream.html @@ -4,7 +4,7 @@ InputStream | Live Compositor - + diff --git a/docs/api/components/Rescaler.html b/docs/api/components/Rescaler.html index c90919aa4..6e608b807 100644 --- a/docs/api/components/Rescaler.html +++ b/docs/api/components/Rescaler.html @@ -4,7 +4,7 @@ Rescaler | Live Compositor - + diff --git a/docs/api/components/Shader.html b/docs/api/components/Shader.html index 2222c2d4c..97e3434c3 100644 --- a/docs/api/components/Shader.html +++ b/docs/api/components/Shader.html @@ -4,7 +4,7 @@ Shader | Live Compositor - + diff --git a/docs/api/components/Text.html b/docs/api/components/Text.html index 7f448804c..b4ada254a 100644 --- a/docs/api/components/Text.html +++ b/docs/api/components/Text.html @@ -4,7 +4,7 @@ Text | Live Compositor - + diff --git a/docs/api/components/Tiles.html b/docs/api/components/Tiles.html index ce1c11f30..f83bad8d2 100644 --- a/docs/api/components/Tiles.html +++ b/docs/api/components/Tiles.html @@ -4,7 +4,7 @@ Tiles | Live Compositor - + diff --git a/docs/api/components/View.html b/docs/api/components/View.html index 580c911c0..9e3b83219 100644 --- a/docs/api/components/View.html +++ b/docs/api/components/View.html @@ -4,7 +4,7 @@ View | Live Compositor - + diff --git a/docs/api/components/WebView.html b/docs/api/components/WebView.html index 2fffe014a..4f43b9f29 100644 --- a/docs/api/components/WebView.html +++ b/docs/api/components/WebView.html @@ -4,7 +4,7 @@ WebView | Live Compositor - + diff --git a/docs/api/generated/component-Image.html b/docs/api/generated/component-Image.html index a10bf6d68..e467bc103 100644 --- a/docs/api/generated/component-Image.html +++ b/docs/api/generated/component-Image.html @@ -4,7 +4,7 @@ component-Image | Live Compositor - + diff --git a/docs/api/generated/component-InputStream.html b/docs/api/generated/component-InputStream.html index 757f24ad6..a5683d57b 100644 --- a/docs/api/generated/component-InputStream.html +++ b/docs/api/generated/component-InputStream.html @@ -4,7 +4,7 @@ component-InputStream | Live Compositor - + diff --git a/docs/api/generated/component-Rescaler.html b/docs/api/generated/component-Rescaler.html index 5078e1fc1..ea927f7f3 100644 --- a/docs/api/generated/component-Rescaler.html +++ b/docs/api/generated/component-Rescaler.html @@ -4,7 +4,7 @@ component-Rescaler | Live Compositor - + diff --git a/docs/api/generated/component-Text.html b/docs/api/generated/component-Text.html index 9d7f4b647..5b741220a 100644 --- a/docs/api/generated/component-Text.html +++ b/docs/api/generated/component-Text.html @@ -4,7 +4,7 @@ component-Text | Live Compositor - + diff --git a/docs/api/generated/component-Tiles.html b/docs/api/generated/component-Tiles.html index 2633d3724..2e8e2850f 100644 --- a/docs/api/generated/component-Tiles.html +++ b/docs/api/generated/component-Tiles.html @@ -4,7 +4,7 @@ component-Tiles | Live Compositor - + diff --git a/docs/api/generated/component-View.html b/docs/api/generated/component-View.html index d7d259d03..54ba3af3a 100644 --- a/docs/api/generated/component-View.html +++ b/docs/api/generated/component-View.html @@ -4,7 +4,7 @@ component-View | Live Compositor - + diff --git a/docs/api/generated/component-WebView.html b/docs/api/generated/component-WebView.html index 28d0c366d..36dbec15b 100644 --- a/docs/api/generated/component-WebView.html +++ b/docs/api/generated/component-WebView.html @@ -4,7 +4,7 @@ component-WebView | Live Compositor - + diff --git a/docs/api/generated/renderer-Mp4.html b/docs/api/generated/renderer-Mp4.html index f4040b91e..156b6be1f 100644 --- a/docs/api/generated/renderer-Mp4.html +++ b/docs/api/generated/renderer-Mp4.html @@ -4,7 +4,7 @@ renderer-Mp4 | Live Compositor - + diff --git a/docs/api/generated/renderer-OutputStream.html b/docs/api/generated/renderer-OutputStream.html index a18848035..2ae26fa22 100644 --- a/docs/api/generated/renderer-OutputStream.html +++ b/docs/api/generated/renderer-OutputStream.html @@ -4,7 +4,7 @@ renderer-OutputStream | Live Compositor - + @@ -52,7 +52,7 @@

Propertiesall_inputs - Output will be terminated if all of the input streams are finished. In particular, output stream will be terminated if no inputs were ever connected.

OutputAudioOptions​

-
type OutputAudioOptions = {
initial: Audio;
channels: "mono" | "stereo";
forward_error_correction?: bool;
encoder_preset?: "quality" | "voip" | "lowest_latency";
send_eos_when?: OutputEndCondition;
}
+
type OutputAudioOptions = {
initial: Audio;
channels: "mono" | "stereo";
forward_error_correction?: bool;
encoder_preset?: "quality" | "voip" | "lowest_latency";
mixing_strategy?: "SumClip" | "SumScale";
send_eos_when?: OutputEndCondition;
}

Properties​

+
  • mixing_strategy - (**default="sum_clip") Specifies how audio should be mixed. +
      +
    • "SumClip" - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped.
    • +
    • "SumScale" - Firstly, input samples are summed. If the result is outside the i16 PCM range, nearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range.
    • +
    +
  • send_eos_when - Condition for termination of output stream based on the input streams states.
  • Audio​

    diff --git a/docs/api/generated/renderer-RtpInputStream.html b/docs/api/generated/renderer-RtpInputStream.html index d64630bf5..92c8f611f 100644 --- a/docs/api/generated/renderer-RtpInputStream.html +++ b/docs/api/generated/renderer-RtpInputStream.html @@ -4,7 +4,7 @@ renderer-RtpInputStream | Live Compositor - + diff --git a/docs/api/generated/renderer-Shader.html b/docs/api/generated/renderer-Shader.html index d65928b6a..3aa8ccc56 100644 --- a/docs/api/generated/renderer-Shader.html +++ b/docs/api/generated/renderer-Shader.html @@ -4,7 +4,7 @@ renderer-Shader | Live Compositor - + diff --git a/docs/api/generated/renderer-WebRenderer.html b/docs/api/generated/renderer-WebRenderer.html index 85b91cd18..1947a2a63 100644 --- a/docs/api/generated/renderer-WebRenderer.html +++ b/docs/api/generated/renderer-WebRenderer.html @@ -4,7 +4,7 @@ renderer-WebRenderer | Live Compositor - + diff --git a/docs/api/inputs/mp4.html b/docs/api/inputs/mp4.html index 89188aee0..0e26d50fd 100644 --- a/docs/api/inputs/mp4.html +++ b/docs/api/inputs/mp4.html @@ -4,7 +4,7 @@ MP4 | Live Compositor - + diff --git a/docs/api/inputs/rtp.html b/docs/api/inputs/rtp.html index 5e5869c03..7cc2b8c17 100644 --- a/docs/api/inputs/rtp.html +++ b/docs/api/inputs/rtp.html @@ -4,7 +4,7 @@ RTP | Live Compositor - + diff --git a/docs/api/outputs/rtp.html b/docs/api/outputs/rtp.html index 386c4ffb3..a79702040 100644 --- a/docs/api/outputs/rtp.html +++ b/docs/api/outputs/rtp.html @@ -4,7 +4,7 @@ RTP | Live Compositor - + @@ -35,7 +35,7 @@
  • send_eos_when - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both.
  • initial - Root of a component tree/scene that should be rendered for the output. Use update_output request to update this value after registration. Learn more.
  • -
    type Audio = {
    channels: "stereo" | "mono";
    forward_error_correction?: boolean;
    encoder_preset?: AudioEncoderPreset;
    send_eos_when?: EosCondition;
    initial: {
    inputs: AudioInput[];
    };
    }

    type AudioInput = {
    input_id: string;
    volume?: number;
    }

    type AudioEncoderPreset =
    | "quality"
    | "voip"
    | "lowest_latency"

    +
    type Audio = {
    channels: "stereo" | "mono";
    forward_error_correction?: boolean;
    encoder_preset?: AudioEncoderPreset;
    send_eos_when?: EosCondition;
    initial: {
    inputs: AudioInput[];
    };
    mixing_strategy?: "sum_clip" | "sum_scale"
    }

    type AudioInput = {
    input_id: string;
    volume?: number;
    }

    type AudioEncoderPreset =
    | "quality"
    | "voip"
    | "lowest_latency"

    • channels - Channel configuration for output audio.
    • forward_error_correction - (default=false) Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out RFC.
    • @@ -50,6 +50,12 @@
    • initial - Initial configuration for audio mixer for this output. Use update_output request to update this value after registration.
    • initial.inputs[].input_id - Input ID.
    • initial.inputs[].volume - (default=1.0) Float in [0, 1] range representing volume.
    • +
    • mixing_strategy - (default=sum_clip) Specifies how input samples should be mixed: +
        +
      • sum_clip - Firstly, input samples are summed. If the result sample is outside the i16 PCM range, it gets clipped.
      • +
      • sum_scale - Firstly, input samples are summed. If the result wave is outside the i16 PCM range, nearby samples are scaled down by factor, such that the summed wave is in the i16 PCM range.
      • +
      +
    type EosCondition = {
    any_input?: bool;
    all_inputs?: bool;
    any_of?: InputId[];
    all_of?: InputId[];
    }

    This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time.

    diff --git a/docs/api/renderers/image.html b/docs/api/renderers/image.html index 133bdd8c3..df4c5f0a9 100644 --- a/docs/api/renderers/image.html +++ b/docs/api/renderers/image.html @@ -4,7 +4,7 @@ Image | Live Compositor - + diff --git a/docs/api/renderers/shader.html b/docs/api/renderers/shader.html index 89a178df5..174ee23b9 100644 --- a/docs/api/renderers/shader.html +++ b/docs/api/renderers/shader.html @@ -4,7 +4,7 @@ Shader | Live Compositor - + diff --git a/docs/api/renderers/web.html b/docs/api/renderers/web.html index 793b7e752..31ebad087 100644 --- a/docs/api/renderers/web.html +++ b/docs/api/renderers/web.html @@ -4,7 +4,7 @@ Web Renderer | Live Compositor - + diff --git a/docs/api/routes.html b/docs/api/routes.html index 857bfc195..50d99a66a 100644 --- a/docs/api/routes.html +++ b/docs/api/routes.html @@ -4,7 +4,7 @@ Routes | Live Compositor - + diff --git a/docs/category/api-reference.html b/docs/category/api-reference.html index 0356c4905..f237a575d 100644 --- a/docs/category/api-reference.html +++ b/docs/category/api-reference.html @@ -4,7 +4,7 @@ API Reference | Live Compositor - + diff --git a/docs/category/deployment.html b/docs/category/deployment.html index 91e4b9cbc..306d6e8f8 100644 --- a/docs/category/deployment.html +++ b/docs/category/deployment.html @@ -4,7 +4,7 @@ Deployment | Live Compositor - + diff --git a/docs/common/absolute-position.html b/docs/common/absolute-position.html index 9c1ca1fde..6f1de6527 100644 --- a/docs/common/absolute-position.html +++ b/docs/common/absolute-position.html @@ -4,7 +4,7 @@ absolute-position | Live Compositor - + diff --git a/docs/concept/component.html b/docs/concept/component.html index 61f22aee0..5860d65c0 100644 --- a/docs/concept/component.html +++ b/docs/concept/component.html @@ -4,7 +4,7 @@ Component | Live Compositor - + diff --git a/docs/concept/layouts.html b/docs/concept/layouts.html index d76dcb6cb..06f4fc38b 100644 --- a/docs/concept/layouts.html +++ b/docs/concept/layouts.html @@ -4,7 +4,7 @@ Layouts | Live Compositor - + diff --git a/docs/concept/shaders.html b/docs/concept/shaders.html index d194f57f5..2aa1f6113 100644 --- a/docs/concept/shaders.html +++ b/docs/concept/shaders.html @@ -4,7 +4,7 @@ Shaders | Live Compositor - + diff --git a/docs/concept/web.html b/docs/concept/web.html index 710435ae3..a23d924d9 100644 --- a/docs/concept/web.html +++ b/docs/concept/web.html @@ -4,7 +4,7 @@ Web Renderer | Live Compositor - + diff --git a/docs/deployment/configuration.html b/docs/deployment/configuration.html index ff46bd12c..cc46773ba 100644 --- a/docs/deployment/configuration.html +++ b/docs/deployment/configuration.html @@ -4,7 +4,7 @@ Configuration | Live Compositor - + diff --git a/docs/get-started.html b/docs/get-started.html index 4e0955d1e..bb39e4685 100644 --- a/docs/get-started.html +++ b/docs/get-started.html @@ -4,7 +4,7 @@ Get started | Live Compositor - + diff --git a/docs/get-started/elixir.html b/docs/get-started/elixir.html index f30621064..a45034cda 100644 --- a/docs/get-started/elixir.html +++ b/docs/get-started/elixir.html @@ -4,7 +4,7 @@ Elixir | Live Compositor - + diff --git a/docs/get-started/node.html b/docs/get-started/node.html index 23b25d42b..eef103027 100644 --- a/docs/get-started/node.html +++ b/docs/get-started/node.html @@ -4,7 +4,7 @@ Node.js | Live Compositor - + diff --git a/docs/intro.html b/docs/intro.html index b5a503cb2..7e2fc7c70 100644 --- a/docs/intro.html +++ b/docs/intro.html @@ -4,7 +4,7 @@ Introduction | Live Compositor - + diff --git a/index.html b/index.html index cca16e065..e3cd5f265 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Live Compositor | Live Compositor - +