fix: update GOP parameters for mediaAnalyzerGOP and transcode2PassX265 to enhance encoding efficiency and documentation
Build / Lint & Test (push) Successful in 16s

This commit is contained in:
PickleRick committed 2026-09-20 19:37:31 +02:00
1 parent 36184fbf32
commit 3f0b38d513
7 files changed
+38 -19

No files matched your search

+5 -3
View File
@@ -52,7 +52,9 @@ const AUDIO_INPUTS = {
{ const a = makeArgs('/media/toshiba/Radarr/Film (2023)/Film.mkv',
[makeStream({ r_frame_rate:'24000/1001', height:1080 })], ANALYZER_INPUTS);
const o = await analyzerPlugin(a);
eq(o.variables.gopKeyint, '48', '23.976fps -> keyint=48');
eq(o.variables.gopKeyint, '96', '23.976fps -> keyint=96 (4 seconds)');
eq(o.variables.gopMinKeyint, '24', '23.976fps -> min-keyint=24 (1 second)');
eq(o.variables.gopSceneCut, '40', 'scene-cut threshold is 40');
eq(o.variables.isMovie, 'true', '/Radarr -> isMovie=true');
eq(o.variables.isAnimation, 'false', 'no anime -> isAnimation=false');
eq(o.variables.vBitrate, '3000k', 'film bitrate=3000k');
@@ -64,7 +66,7 @@ const AUDIO_INPUTS = {
{ const a = makeArgs('/media/toshiba/Sonarr/Naruto S01/S01E01.mkv',
[makeStream({ r_frame_rate:'25/1', height:720 })], ANALYZER_INPUTS);
const o = await analyzerPlugin(a);
eq(o.variables.gopKeyint, '50', '25fps -> keyint=50');
eq(o.variables.gopKeyint, '100', '25fps -> keyint=100 (4 seconds)');
eq(o.variables.isMovie, 'false', '/Sonarr -> isMovie=false');
eq(o.variables.isAnimation, 'true', 'Naruto -> isAnimation=true');
eq(o.variables.x265Tune, 'animation', 'anime -> tune=animation');
@@ -74,7 +76,7 @@ const AUDIO_INPUTS = {
{ const a = makeArgs('/media/toshiba/Sonarr/Naruto S01/S01E01.mkv',
[makeStream({ r_frame_rate:'30000/1001', height:480 })], ANALYZER_INPUTS);
const o = await analyzerPlugin(a);
eq(o.variables.gopKeyint, '60', '29.97fps -> keyint=60');
eq(o.variables.gopKeyint, '120', '29.97fps -> keyint=120 (4 seconds)');
eq(o.variables.vBitrate, '1000k', 'anime SD 480p -> 1000k');
cleanup(a); }
+5 -2
View File
@@ -6,7 +6,8 @@
* File: Radarr path, AC3 ITA 448k 5.1, EAC3 ENG 640k 5.1
*
* Expected:
* gopKeyint = "48"
* gopKeyint = "96"
* gopMinKeyint = "24"
* isMovie = "true"
* isAnimation = "false"
* vBitrate = "3000k"
@@ -44,7 +45,9 @@ async function run() {
const vars = out1.variables;
assertEqual(out1.outputNumber, 1, 'outputNumber');
assertEqual(vars.gopKeyint, '48', 'gopKeyint (2 x 23.976 = 47.95 -> 48)');
assertEqual(vars.gopKeyint, '96', 'gopKeyint (4 x 23.976 = 95.90 -> 96)');
assertEqual(vars.gopMinKeyint,'24', 'gopMinKeyint (1 x 23.976 = 23.98 -> 24)');
assertEqual(vars.gopSceneCut, '40', 'gopSceneCut (x265 default threshold)');
assertEqual(vars.isMovie, 'true', 'isMovie (Radarr path)');
assertEqual(vars.isAnimation, 'false', 'isAnimation (no anime match)');
assertEqual(vars.vBitrate, '3000k', 'vBitrate (film default)');
+5 -2
View File
@@ -6,7 +6,8 @@
* Note: DTS detection logic is fully covered in unit tests (quick-logic-test.js).
*
* Expected:
* gopKeyint = "50"
* gopKeyint = "100"
* gopMinKeyint = "25"
* isAnimation = "true"
* isMovie = "false"
* x265Tune = "animation"
@@ -40,7 +41,9 @@ async function run() {
});
const out1 = await analyzerPlugin(args1);
const vars = out1.variables;
assertEqual(vars.gopKeyint, '50', 'gopKeyint (2 x 25 = 50)');
assertEqual(vars.gopKeyint, '100', 'gopKeyint (4 x 25 = 100)');
assertEqual(vars.gopMinKeyint,'25', 'gopMinKeyint (1 x 25 = 25)');
assertEqual(vars.gopSceneCut, '40', 'gopSceneCut (x265 default threshold)');
assertEqual(vars.isMovie, 'false', 'isMovie=false (Sonarr path)');
assertEqual(vars.isAnimation, 'true', 'isAnimation=true (Naruto in path)');
assertEqual(vars.x265Tune, 'animation', 'x265Tune=animation');