Skip to content

Commit

Permalink
v0.9.5 (#233)
Browse files Browse the repository at this point in the history
* ✔ Fixed issue in output stream file

* 🌐 Website item
- Clicking a template multiple times will roll items around
- Slide transition working after doing item transition
- Item transition working when slide transitions are disabled
- Updated server icons

* 💻 Support for NDI®

* 💻 Proper preview
- Slides don't reload when playing while loading
- Backgrounds no longer unmute when changing slides fast
- Multiple outputs works better
- Connection QR-code should open the website
- More NDI features
- Code cleanup

* ✨ Improvements
- Search bar not closing with content
- Fixed more propresenter files not importing
- Specifix output in stage mirror working
- Custom labels working when formatting is turned off
- Item binding indicating what is active

* ✨ British English, and more
- Bind textboxes to don't show in stage
- Change output outline color from theme if just one output
- Next after media only activated if media contained on the slide
- Fixed bible book renaming
- Fixed a few Zefania bibles not importing
- Import support for OpenLP sqlite files
- VideoPsalm chords import
- Proper item auto text size when editing
- Languages sorted by name

* 📄 Better chords
- Default stage font is Arial
- Proper stage auto size
- ChordPro default style when no template
- Chords in correct position in stage
- Change chords color and size
- Correct ChordPro import chord position
- Chords are in correct position in editor
- Add chords by clicking the text
- Delete chords

* Version update

* ✔ Disabling NDI on Linux for now
  • Loading branch information
vassbo authored Aug 16, 2023
1 parent 464e57b commit 5178b22
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
"express": "^4.17.2",
"font-list": "^1.4.5",
"genius-lyrics": "^4.4.3",
"grandiose": "rse/grandiose#cf09bb84",
"grandiose": "vassbo/grandiose#b7ddf3a",
"jzz": "^1.5.9",
"node-pre-gyp": "^0.17.0",
"npm-run-all": "^4.1.5",
Expand Down
24 changes: 22 additions & 2 deletions src/electron/ndi/ndi.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import grandiose from "grandiose"
// import grandiose from "grandiose"
import os from "os"
// import type { VideoFrame } from "grandiose"
import { toApp } from ".."
Expand All @@ -17,10 +17,14 @@ import util from "./vingester-util"
let timeStart = BigInt(Date.now()) * BigInt(1e6) - process.hrtime.bigint()

export async function findStreamsNDI(): Promise<any> {
// not linux
if (os.platform() === "linux") return
const grandiose = require("grandiose")

return new Promise((resolve, reject) => {
grandiose
.find({ showLocalSources: true })
.then((a) => {
.then((a: any) => {
resolve(a)
})
.catch((err: any) => reject(err))
Expand All @@ -31,6 +35,10 @@ export async function findStreamsNDI(): Promise<any> {
export async function receiveStreamNDI({ source }: any) {
if (receivers[source.urlAddress]) return

// not linux
if (os.platform() === "linux") return
const grandiose = require("grandiose")

let receiver = await grandiose.receive({ source })

let timeout = 5000 // Optional timeout, default is 10000ms
Expand Down Expand Up @@ -75,6 +83,10 @@ export async function createSenderNDI(id: string, title: string = "") {
if (NDI[id]) return
NDI[id] = {}

// not linux
if (os.platform() === "linux") return
const grandiose = require("grandiose")

NDI[id].name = "FreeShow NDI"
if (title) NDI[id].name = NDI[id].name + " - " + title
console.log("NDI - creating sender: " + NDI[id].name)
Expand Down Expand Up @@ -109,6 +121,10 @@ export async function createSenderNDI(id: string, title: string = "") {
export async function sendVideoBufferNDI(id: string, buffer: any, { size = { width: 1280, height: 720 }, ratio = 16 / 9, framerate = 1 }) {
if (!NDI[id].sender) return

// not linux
if (os.platform() === "linux") return
const grandiose = require("grandiose")

/* convert from ARGB (Electron/Chromium on big endian CPU)
to BGRA (supported input of NDI SDK). On little endian
CPU the input is already BGRA. */
Expand Down Expand Up @@ -157,6 +173,10 @@ export async function sendVideoBufferNDI(id: string, buffer: any, { size = { wid
export async function sendAudioBufferNDI(id: string, buffer: Buffer, { sampleRate, noChannels, bytesForFloat32 }: any) {
if (!NDI[id].sender) return

// not linux
if (os.platform() === "linux") return
const grandiose = require("grandiose")

/* convert from PCM/signed-16-bit/little-endian data
to NDI's "PCM/planar/signed-float32/little-endian */
const pcmconvert: any = {} // TODO:
Expand Down
3 changes: 2 additions & 1 deletion src/frontend/components/settings/tabs/Outputs.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,11 @@
<CombinedInput>
<p>
<T id="actions.enable" /> NDI®
{#if $os.platform === "linux"}(Currently not supported on Linux){/if}
<span class="connections">{$ndiData[currentOutput.id || ""]?.connections || ""}</span>
</p>
<div class="alignRight">
<Checkbox checked={currentOutput.ndi} on:change={(e) => updateOutput("ndi", isChecked(e))} />
<Checkbox disabled={$os.platform === "linux"} checked={currentOutput.ndi} on:change={(e) => updateOutput("ndi", isChecked(e))} />
</div>
</CombinedInput>

Expand Down

0 comments on commit 5178b22

Please sign in to comment.