From a263efb6189f0785342bf01106bf232143a4675a Mon Sep 17 00:00:00 2001 From: matty Date: Mon, 15 Apr 2024 20:00:05 -0400 Subject: [PATCH] reorganize builder functions (i am autistic about it) --- dist/main.js | 73 ++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/dist/main.js b/dist/main.js index 2a22ae6..57cf2e2 100644 --- a/dist/main.js +++ b/dist/main.js @@ -244,6 +244,43 @@ async function vodBuilder(params) { return options; } +//H264 Live builder + +async function liveBuilder(params) { + const { resolution, fps, streamNum, inputBitrate } = params; + const streamSuffix = streamNum == undefined ? '' : `:${streamNum}`; + let targetBitrate = getTargetBitrate(resolution, fps); + // let targetBitrate = inputBitrate; + let shouldInitVaapi = (streamNum == undefined || streamNum <= latestStreamNum); + if (targetBitrate > inputBitrate) { + targetBitrate = inputBitrate; + } + logger.info(`Building encoder options, received ${JSON.stringify(params)}`); + if (shouldInitVaapi && streamNum != undefined) { + latestStreamNum = streamNum; + } + + let options = { + scaleFilter: { + name: 'scale' + }, + inputOptions: shouldInitVaapi ? buildInitOptions() : [], + outputOptions: [ + `-tune ${pluginSettings.liveQuality}`, + `-r:v${streamSuffix} ${fps}`, + `-profile:v${streamSuffix} ${pluginSettings.h264Profile}`, + `-cq ${pluginSettings.cqH264}`, + `-g:v${streamSuffix} ${fps * 2}`, + `-b:v${streamSuffix} ${targetBitrate}`, + `-bufsize ${targetBitrate * 2}`, + `-bf 4` + ] + }; + + logger.info(`EncoderOptions: ${JSON.stringify(options)}, HEVC: false`); + return options; +} + //HEVC VOD builder async function hevcVODBuilder(params) { const { resolution, fps, streamNum, inputBitrate } = params; @@ -313,42 +350,6 @@ async function hevcLiveBuilder(params) { return options; } -//H264 Live builder - -async function liveBuilder(params) { - const { resolution, fps, streamNum, inputBitrate } = params; - const streamSuffix = streamNum == undefined ? '' : `:${streamNum}`; - let targetBitrate = getTargetBitrate(resolution, fps); - // let targetBitrate = inputBitrate; - let shouldInitVaapi = (streamNum == undefined || streamNum <= latestStreamNum); - if (targetBitrate > inputBitrate) { - targetBitrate = inputBitrate; - } - logger.info(`Building encoder options, received ${JSON.stringify(params)}`); - if (shouldInitVaapi && streamNum != undefined) { - latestStreamNum = streamNum; - } - - let options = { - scaleFilter: { - name: 'scale' - }, - inputOptions: shouldInitVaapi ? buildInitOptions() : [], - outputOptions: [ - `-tune ${pluginSettings.liveQuality}`, - `-r:v${streamSuffix} ${fps}`, - `-profile:v${streamSuffix} ${pluginSettings.h264Profile}`, - `-cq ${pluginSettings.cqH264}`, - `-g:v${streamSuffix} ${fps * 2}`, - `-b:v${streamSuffix} ${targetBitrate}`, - `-bufsize ${targetBitrate * 2}`, - `-bf 4` - ] - }; - - logger.info(`EncoderOptions: ${JSON.stringify(options)}, HEVC: false`); - return options; -} function getTargetBitrate(resolution, fps) { const baseBitrate = pluginSettings.baseBitrate.get(resolution) || 0; const maxBitrate = baseBitrate * 1.4;