diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 12d5259e8..a5d9f1ad7 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -118,12 +118,12 @@ jobs: - name: Read digests from artifacts id: digests run: | - AMD64_DIGEST=$(cat digests/digest-amd64/digest.txt) - ARM32V7_DIGEST=$(cat digests/digest-arm32v7/digest.txt) - ARM64_DIGEST=$(cat digests/digest-arm64/digest.txt) + AMD64_HASH=$(cat digests/digest-amd64/digest.txt) + ARM32V7_HASH=$(cat digests/digest-arm32v7/digest.txt) + ARM64_HASH=$(cat digests/digest-arm64/digest.txt) - DOCKER_HUB_DIGESTS="${AMD64_DIGEST} ${ARM64_DIGEST} ${ARM32V7_DIGEST}" - GHCR_DIGESTS="ghcr.io/ersatztv/ersatztv@${AMD64_DIGEST##*@} ghcr.io/ersatztv/ersatztv@${ARM64_DIGEST##*@} ghcr.io/ersatztv/ersatztv@${ARM32V7_DIGEST##*@}" + DOCKER_HUB_DIGESTS="jasongdove/ersatztv@${AMD64_HASH} jasongdove/ersatztv@${ARM64_HASH} jasongdove/ersatztv@${ARM32V7_HASH}" + GHCR_DIGESTS="ghcr.io/ersatztv/ersatztv@${AMD64_HASH} ghcr.io/ersatztv/ersatztv@${ARM64_HASH} ghcr.io/ersatztv/ersatztv@${ARM32V7_HASH}" echo "docker_hub_digests=${DOCKER_HUB_DIGESTS}" >> $GITHUB_OUTPUT echo "ghcr_digests=${GHCR_DIGESTS}" >> $GITHUB_OUTPUT diff --git a/CHANGELOG.md b/CHANGELOG.md index 6932f2352..479840fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Fixed +- Fix fallback filler playback ## [25.2.0] - 2025-07-24 ### Added diff --git a/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs b/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs index b4150b06f..045bd9934 100644 --- a/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs +++ b/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs @@ -204,7 +204,7 @@ public abstract class PipelineBuilderBase : IPipelineBuilder SetSceneDetect(videoStream, ffmpegState, desiredState, pipelineSteps); SetFFReport(ffmpegState, pipelineSteps); SetStreamSeek(ffmpegState, videoInputFile, context, pipelineSteps); - if (ffmpegState.IsTroubleshooting || videoInputFile.StreamInputKind is StreamInputKind.Live) + if (ffmpegState.IsTroubleshooting || desiredState.InfiniteLoop || videoInputFile.StreamInputKind is StreamInputKind.Live) { SetTimeLimit(ffmpegState, pipelineSteps); } @@ -425,7 +425,7 @@ public abstract class PipelineBuilderBase : IPipelineBuilder audioInputFile.FilterSteps.Add(new AudioSetPtsFilter()); } - foreach (TimeSpan audioDuration in audioInputFile.DesiredState.AudioDuration) + foreach (TimeSpan audioDuration in audioInputFile.DesiredState.AudioDuration.Filter(d => d > TimeSpan.Zero)) { audioInputFile.FilterSteps.Add(new AudioPadFilter(audioDuration)); pipelineSteps.Add(new ShortestOutputOption());