Verify decoder integration E2E and fix live metadata probing and mapping

This commit is contained in:
2026-10-12 21:41:26 +02:00
parent cecd5b5625
commit f5cdfa285e
15 changed files with 657 additions and 17 deletions
+9 -1
View File
@@ -1173,7 +1173,14 @@ namespace Jellyfin.Plugin.Enigma2
var streamUrl = string.Format("{0}/{1}{2}", baseUrl, channelOid, trancodingUrl);
streamUrl = _streamRelay.Register(streamUrl);
var streams = await _streamProbe.Get(streamUrl, cancellationToken).ConfigureAwait(false);
var fields = channelOid.Split(':');
var programme = !Plugin.Instance.Configuration.TranscodedStream && fields.Length > 3 && int.TryParse(fields[3], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var sid) ? sid : (int?)null;
var streams = await _streamProbe.Get(streamUrl, cancellationToken, programme).ConfigureAwait(false);
// A live TS may enumerate its EPG/data PID before AV on the next open.
// Jellyfin maps positions in MediaStreams rather than MPEG-TS PID values.
// Its supported unknown-index path selects AV automatically and omits data.
streams = streams.Select(s => LiveStreamProbe.ParseLiveMetadata(s)).ToList();
return new MediaSourceInfo
{
@@ -1183,6 +1190,7 @@ namespace Jellyfin.Plugin.Enigma2
Container = Plugin.Instance.Configuration.TranscodedStream ? "mpegts" : "ts",
IsInfiniteStream = true,
SupportsProbing = false,
AnalyzeDurationMs = 1500,
SupportsDirectPlay = false,
MediaStreams = streams
};