From a71606d39cc64f0162a6f3832e185e122f252969 Mon Sep 17 00:00:00 2001 From: jo Date: Sat, 25 Feb 2023 20:14:30 +0100 Subject: [PATCH] feat(playout): enable vorbis metadata per icecast output Use new jinja template system to tweak the streams per output. --- .../liquidsoap/entrypoint.py | 13 +---------- .../liquidsoap/templates/entrypoint.liq.j2 | 3 --- .../liquidsoap/templates/outputs.liq.j2 | 6 +++++ .../__snapshots__/entrypoint_test.ambr | 22 ++++--------------- 4 files changed, 11 insertions(+), 33 deletions(-) diff --git a/playout/libretime_playout/liquidsoap/entrypoint.py b/playout/libretime_playout/liquidsoap/entrypoint.py index c8869cbd7..4d8c43454 100644 --- a/playout/libretime_playout/liquidsoap/entrypoint.py +++ b/playout/libretime_playout/liquidsoap/entrypoint.py @@ -2,7 +2,6 @@ from pathlib import Path from typing import Optional, Tuple from jinja2 import Environment, PackageLoader -from libretime_shared.config import AudioFormat from ..config import Config from .models import Info, StreamPreferences @@ -33,23 +32,13 @@ def generate_entrypoint( if log_filepath is not None: paths["log_filepath"] = log_filepath.resolve() - config = config.copy() - - # Global icecast_vorbis_metadata until it is - # handled per output - icecast_vorbis_metadata = any( - o.enabled and o.audio.format == AudioFormat.OGG and o.audio.enable_metadata # type: ignore - for o in config.stream.outputs.icecast - ) - entrypoint_filepath.write_text( templates.get_template("entrypoint.liq.j2").render( - config=config, + config=config.copy(), preferences=preferences, info=info, paths=paths, version=version, - icecast_vorbis_metadata=icecast_vorbis_metadata, ), encoding="utf-8", ) diff --git a/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 b/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 index 20d7fc089..9a040ce79 100644 --- a/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 +++ b/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 @@ -8,9 +8,6 @@ input_main_port = {{ config.stream.inputs.main.port }} input_show_mount = {{ config.stream.inputs.show.mount | quote }} input_show_port = {{ config.stream.inputs.show.port }} -# Outputs -icecast_vorbis_metadata = {{ icecast_vorbis_metadata | lower }} - # Settings auth_path = {{ paths.auth_filepath | quote }} diff --git a/playout/libretime_playout/liquidsoap/templates/outputs.liq.j2 b/playout/libretime_playout/liquidsoap/templates/outputs.liq.j2 index c17d15824..09c5e5f61 100644 --- a/playout/libretime_playout/liquidsoap/templates/outputs.liq.j2 +++ b/playout/libretime_playout/liquidsoap/templates/outputs.liq.j2 @@ -53,6 +53,12 @@ output_icecast_{{ output_id }}_source = s output_icecast_{{ output_id }}_source = mean(s) {% endif -%} +{#- Add per output stream modifications. -#} +{% if output.audio.format == "ogg" and not output.audio.enable_metadata -%} +# Disable ogg metadata +output_icecast_{{ output_id }}_source = add(normalize=false, [amplify(0.00001, noise()), output_icecast_{{ output_id }}_source]) +{% endif -%} + output.icecast( id="icecast:{{ output_id }}", host={{ output.host | quote }}, diff --git a/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr b/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr index f1b057bd1..6218862c0 100644 --- a/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr +++ b/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr @@ -11,9 +11,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py" @@ -51,9 +48,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py" @@ -75,6 +69,8 @@ # icecast:1 output_icecast_1_source = s + # Disable ogg metadata + output_icecast_1_source = add(normalize=false, [amplify(0.00001, noise()), output_icecast_1_source]) output.icecast( id="icecast:1", host="localhost", @@ -114,9 +110,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py" @@ -175,9 +168,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py" @@ -199,6 +189,8 @@ # icecast:1 output_icecast_1_source = s + # Disable ogg metadata + output_icecast_1_source = add(normalize=false, [amplify(0.00001, noise()), output_icecast_1_source]) output.icecast( id="icecast:1", host="localhost", @@ -259,9 +251,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py" @@ -306,9 +295,6 @@ input_show_mount = "show" input_show_port = 8002 - # Outputs - icecast_vorbis_metadata = false - # Settings auth_path = "/fake/liquidsoap_auth.py"