diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs
index 8eb27888ab..c8b432ecb2 100644
--- a/MediaBrowser.Controller/Channels/IChannelManager.cs
+++ b/MediaBrowser.Controller/Channels/IChannelManager.cs
@@ -95,12 +95,5 @@ namespace MediaBrowser.Controller.Channels
/// The cancellation token.
/// The item media sources.
IEnumerable GetStaticMediaSources(BaseItem item, CancellationToken cancellationToken);
-
- ///
- /// Whether the item supports media probe.
- ///
- /// The item.
- /// Whether media probe should be enabled.
- bool EnableMediaProbe(BaseItem item);
}
}
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs b/MediaBrowser.Controller/LiveTv/ILiveTvService.cs
index ce34954e3f..52fb156481 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs
+++ b/MediaBrowser.Controller/LiveTv/ILiveTvService.cs
@@ -140,14 +140,6 @@ namespace MediaBrowser.Controller.LiveTv
/// Task.
Task CloseLiveStream(string id, CancellationToken cancellationToken);
- ///
- /// Records the live stream.
- ///
- /// The identifier.
- /// The cancellation token.
- /// Task.
- Task RecordLiveStream(string id, CancellationToken cancellationToken);
-
///
/// Resets the tuner.
///
@@ -180,9 +172,4 @@ namespace MediaBrowser.Controller.LiveTv
{
Task GetChannelStreamWithDirectStreamProvider(string channelId, string streamId, List currentLiveStreams, CancellationToken cancellationToken);
}
-
- public interface ISupportsUpdatingDefaults
- {
- Task UpdateTimerDefaults(SeriesTimerInfo info, CancellationToken cancellationToken);
- }
}
diff --git a/MediaBrowser.Controller/LiveTv/ITunerHost.cs b/MediaBrowser.Controller/LiveTv/ITunerHost.cs
index b983091588..3689a2adf6 100644
--- a/MediaBrowser.Controller/LiveTv/ITunerHost.cs
+++ b/MediaBrowser.Controller/LiveTv/ITunerHost.cs
@@ -35,13 +35,6 @@ namespace MediaBrowser.Controller.LiveTv
/// Task<IEnumerable<ChannelInfo>>.
Task> GetChannels(bool enableCache, CancellationToken cancellationToken);
- ///
- /// Gets the tuner infos.
- ///
- /// The cancellation token.
- /// Task<List<LiveTvTunerInfo>>.
- Task> GetTunerInfos(CancellationToken cancellationToken);
-
///
/// Gets the channel stream.
///
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvServiceStatusInfo.cs b/MediaBrowser.Controller/LiveTv/LiveTvServiceStatusInfo.cs
deleted file mode 100644
index eb3babc180..0000000000
--- a/MediaBrowser.Controller/LiveTv/LiveTvServiceStatusInfo.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-#nullable disable
-
-#pragma warning disable CS1591
-
-using System.Collections.Generic;
-using MediaBrowser.Model.LiveTv;
-
-namespace MediaBrowser.Controller.LiveTv
-{
- public class LiveTvServiceStatusInfo
- {
- public LiveTvServiceStatusInfo()
- {
- Tuners = new List();
- IsVisible = true;
- }
-
- ///
- /// Gets or sets the status.
- ///
- /// The status.
- public LiveTvServiceStatus Status { get; set; }
-
- ///
- /// Gets or sets the status message.
- ///
- /// The status message.
- public string StatusMessage { get; set; }
-
- ///
- /// Gets or sets the version.
- ///
- /// The version.
- public string Version { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance has update available.
- ///
- /// true if this instance has update available; otherwise, false.
- public bool HasUpdateAvailable { get; set; }
-
- ///
- /// Gets or sets the tuners.
- ///
- /// The tuners.
- public List Tuners { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is visible.
- ///
- /// true if this instance is visible; otherwise, false.
- public bool IsVisible { get; set; }
- }
-}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvTunerInfo.cs b/MediaBrowser.Controller/LiveTv/LiveTvTunerInfo.cs
deleted file mode 100644
index aa5eb59d16..0000000000
--- a/MediaBrowser.Controller/LiveTv/LiveTvTunerInfo.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-#nullable disable
-
-#pragma warning disable CS1591
-
-using System.Collections.Generic;
-using MediaBrowser.Model.LiveTv;
-
-namespace MediaBrowser.Controller.LiveTv
-{
- public class LiveTvTunerInfo
- {
- public LiveTvTunerInfo()
- {
- Clients = new List();
- }
-
- ///
- /// Gets or sets the type of the source.
- ///
- /// The type of the source.
- public string SourceType { get; set; }
-
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- public string Name { get; set; }
-
- ///
- /// Gets or sets the identifier.
- ///
- /// The identifier.
- public string Id { get; set; }
-
- ///
- /// Gets or sets the URL.
- ///
- /// The URL.
- public string Url { get; set; }
-
- ///
- /// Gets or sets the status.
- ///
- /// The status.
- public LiveTvTunerStatus Status { get; set; }
-
- ///
- /// Gets or sets the channel identifier.
- ///
- /// The channel identifier.
- public string ChannelId { get; set; }
-
- ///
- /// Gets or sets the recording identifier.
- ///
- /// The recording identifier.
- public string RecordingId { get; set; }
-
- ///
- /// Gets or sets the name of the program.
- ///
- /// The name of the program.
- public string ProgramName { get; set; }
-
- ///
- /// Gets or sets the clients.
- ///
- /// The clients.
- public List Clients { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance can reset.
- ///
- /// true if this instance can reset; otherwise, false.
- public bool CanReset { get; set; }
- }
-}
diff --git a/MediaBrowser.Controller/LiveTv/RecordingInfo.cs b/MediaBrowser.Controller/LiveTv/RecordingInfo.cs
deleted file mode 100644
index 1dcf7a58fe..0000000000
--- a/MediaBrowser.Controller/LiveTv/RecordingInfo.cs
+++ /dev/null
@@ -1,210 +0,0 @@
-#nullable disable
-
-#pragma warning disable CS1591
-
-using System;
-using System.Collections.Generic;
-using MediaBrowser.Model.LiveTv;
-
-namespace MediaBrowser.Controller.LiveTv
-{
- public class RecordingInfo
- {
- public RecordingInfo()
- {
- Genres = new List();
- }
-
- ///
- /// Gets or sets the id of the recording.
- ///
- public string Id { get; set; }
-
- ///
- /// Gets or sets the series timer identifier.
- ///
- /// The series timer identifier.
- public string SeriesTimerId { get; set; }
-
- ///
- /// Gets or sets the timer identifier.
- ///
- /// The timer identifier.
- public string TimerId { get; set; }
-
- ///
- /// Gets or sets the channelId of the recording.
- ///
- public string ChannelId { get; set; }
-
- ///
- /// Gets or sets the type of the channel.
- ///
- /// The type of the channel.
- public ChannelType ChannelType { get; set; }
-
- ///
- /// Gets or sets the name of the recording.
- ///
- public string Name { get; set; }
-
- ///
- /// Gets or sets the path.
- ///
- /// The path.
- public string Path { get; set; }
-
- ///
- /// Gets or sets the URL.
- ///
- /// The URL.
- public string Url { get; set; }
-
- ///
- /// Gets or sets the overview.
- ///
- /// The overview.
- public string Overview { get; set; }
-
- ///
- /// Gets or sets the start date of the recording, in UTC.
- ///
- public DateTime StartDate { get; set; }
-
- ///
- /// Gets or sets the end date of the recording, in UTC.
- ///
- public DateTime EndDate { get; set; }
-
- ///
- /// Gets or sets the program identifier.
- ///
- /// The program identifier.
- public string ProgramId { get; set; }
-
- ///
- /// Gets or sets the status.
- ///
- /// The status.
- public RecordingStatus Status { get; set; }
-
- ///
- /// Gets or sets the genre of the program.
- ///
- public List Genres { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is repeat.
- ///
- /// true if this instance is repeat; otherwise, false.
- public bool IsRepeat { get; set; }
-
- ///
- /// Gets or sets the episode title.
- ///
- /// The episode title.
- public string EpisodeTitle { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is hd.
- ///
- /// true if this instance is hd; otherwise, false.
- public bool? IsHD { get; set; }
-
- ///
- /// Gets or sets the audio.
- ///
- /// The audio.
- public ProgramAudio? Audio { get; set; }
-
- ///
- /// Gets or sets the original air date.
- ///
- /// The original air date.
- public DateTime? OriginalAirDate { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is movie.
- ///
- /// true if this instance is movie; otherwise, false.
- public bool IsMovie { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is sports.
- ///
- /// true if this instance is sports; otherwise, false.
- public bool IsSports { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is series.
- ///
- /// true if this instance is series; otherwise, false.
- public bool IsSeries { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is live.
- ///
- /// true if this instance is live; otherwise, false.
- public bool IsLive { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is news.
- ///
- /// true if this instance is news; otherwise, false.
- public bool IsNews { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is kids.
- ///
- /// true if this instance is kids; otherwise, false.
- public bool IsKids { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance is premiere.
- ///
- /// true if this instance is premiere; otherwise, false.
- public bool IsPremiere { get; set; }
-
- ///
- /// Gets or sets the official rating.
- ///
- /// The official rating.
- public string OfficialRating { get; set; }
-
- ///
- /// Gets or sets the community rating.
- ///
- /// The community rating.
- public float? CommunityRating { get; set; }
-
- ///
- /// Gets or sets the image path if it can be accessed directly from the file system.
- ///
- /// The image path.
- public string ImagePath { get; set; }
-
- ///
- /// Gets or sets the image url if it can be downloaded.
- ///
- /// The image URL.
- public string ImageUrl { get; set; }
-
- ///
- /// Gets or sets a value indicating whether this instance has image.
- ///
- /// null if [has image] contains no value, true if [has image]; otherwise, false.
- public bool? HasImage { get; set; }
-
- ///
- /// Gets or sets the show identifier.
- ///
- /// The show identifier.
- public string ShowId { get; set; }
-
- ///
- /// Gets or sets the date last updated.
- ///
- /// The date last updated.
- public DateTime DateLastUpdated { get; set; }
- }
-}
diff --git a/MediaBrowser.Controller/LiveTv/RecordingStatusChangedEventArgs.cs b/MediaBrowser.Controller/LiveTv/RecordingStatusChangedEventArgs.cs
deleted file mode 100644
index 0b943c9396..0000000000
--- a/MediaBrowser.Controller/LiveTv/RecordingStatusChangedEventArgs.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-#nullable disable
-
-#pragma warning disable CS1591
-
-using System;
-using MediaBrowser.Model.LiveTv;
-
-namespace MediaBrowser.Controller.LiveTv
-{
- public class RecordingStatusChangedEventArgs : EventArgs
- {
- public string RecordingId { get; set; }
-
- public RecordingStatus NewStatus { get; set; }
- }
-}
diff --git a/MediaBrowser.Model/IO/IStreamHelper.cs b/MediaBrowser.Model/IO/IStreamHelper.cs
index f900da5567..034a6bf8bf 100644
--- a/MediaBrowser.Model/IO/IStreamHelper.cs
+++ b/MediaBrowser.Model/IO/IStreamHelper.cs
@@ -13,8 +13,6 @@ namespace MediaBrowser.Model.IO
Task CopyToAsync(Stream source, Stream destination, int bufferSize, int emptyReadLimit, CancellationToken cancellationToken);
- Task CopyToAsync(Stream source, Stream destination, long copyLength, CancellationToken cancellationToken);
-
Task CopyUntilCancelled(Stream source, Stream target, int bufferSize, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs b/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs
deleted file mode 100644
index 80a6461957..0000000000
--- a/MediaBrowser.Model/LiveTv/LiveTvTunerStatus.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma warning disable CS1591
-
-namespace MediaBrowser.Model.LiveTv
-{
- public enum LiveTvTunerStatus
- {
- Available = 0,
- Disabled = 1,
- RecordingTv = 2,
- LiveTv = 3
- }
-}
diff --git a/src/Jellyfin.LiveTv/Channels/ChannelManager.cs b/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
index f5ce75ff4d..51abb503eb 100644
--- a/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
+++ b/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
@@ -113,15 +113,6 @@ namespace Jellyfin.LiveTv.Channels
return channel is ISupportsDelete supportsDelete && supportsDelete.CanDelete(item);
}
- ///
- public bool EnableMediaProbe(BaseItem item)
- {
- var internalChannel = _libraryManager.GetItemById(item.ChannelId);
- var channel = Channels.FirstOrDefault(i => GetInternalChannelId(i.Name).Equals(internalChannel.Id));
-
- return channel is ISupportsMediaProbe;
- }
-
///
public Task DeleteItem(BaseItem item)
{
@@ -562,18 +553,6 @@ namespace Jellyfin.LiveTv.Channels
return GetChannelFeaturesDto(channel, channelProvider, channelProvider.GetChannelFeatures());
}
- ///
- /// Checks whether the provided Guid supports external transfer.
- ///
- /// The Guid.
- /// Whether or not the provided Guid supports external transfer.
- public bool SupportsExternalTransfer(Guid channelId)
- {
- var channelProvider = GetChannelProvider(channelId);
-
- return channelProvider.GetChannelFeatures().SupportsContentDownloading;
- }
-
///
/// Gets the provided channel's supported features.
///
@@ -1215,19 +1194,6 @@ namespace Jellyfin.LiveTv.Channels
return result;
}
- internal IChannel GetChannelProvider(Guid internalChannelId)
- {
- var result = GetAllChannels()
- .FirstOrDefault(i => internalChannelId.Equals(GetInternalChannelId(i.Name)));
-
- if (result is null)
- {
- throw new ResourceNotFoundException("No channel provider found for channel id " + internalChannelId);
- }
-
- return result;
- }
-
///
public void Dispose()
{
diff --git a/src/Jellyfin.LiveTv/EmbyTV/EmbyTV.cs b/src/Jellyfin.LiveTv/EmbyTV/EmbyTV.cs
index 625451fa37..9eb3aa2fd6 100644
--- a/src/Jellyfin.LiveTv/EmbyTV/EmbyTV.cs
+++ b/src/Jellyfin.LiveTv/EmbyTV/EmbyTV.cs
@@ -1023,11 +1023,6 @@ namespace Jellyfin.LiveTv.EmbyTV
return Task.CompletedTask;
}
- public Task RecordLiveStream(string id, CancellationToken cancellationToken)
- {
- return Task.CompletedTask;
- }
-
public Task ResetTuner(string id, CancellationToken cancellationToken)
{
return Task.CompletedTask;
diff --git a/src/Jellyfin.LiveTv/StreamHelper.cs b/src/Jellyfin.LiveTv/StreamHelper.cs
index ab4b6e9b15..e9644e95e7 100644
--- a/src/Jellyfin.LiveTv/StreamHelper.cs
+++ b/src/Jellyfin.LiveTv/StreamHelper.cs
@@ -81,36 +81,6 @@ namespace Jellyfin.LiveTv
}
}
- public async Task CopyToAsync(Stream source, Stream destination, long copyLength, CancellationToken cancellationToken)
- {
- byte[] buffer = ArrayPool.Shared.Rent(IODefaults.CopyToBufferSize);
- try
- {
- int bytesRead;
-
- while ((bytesRead = await source.ReadAsync(buffer, cancellationToken).ConfigureAwait(false)) != 0)
- {
- var bytesToWrite = Math.Min(bytesRead, copyLength);
-
- if (bytesToWrite > 0)
- {
- await destination.WriteAsync(buffer.AsMemory(0, Convert.ToInt32(bytesToWrite)), cancellationToken).ConfigureAwait(false);
- }
-
- copyLength -= bytesToWrite;
-
- if (copyLength <= 0)
- {
- break;
- }
- }
- }
- finally
- {
- ArrayPool.Shared.Return(buffer);
- }
- }
-
public async Task CopyUntilCancelled(Stream source, Stream target, int bufferSize, CancellationToken cancellationToken)
{
byte[] buffer = ArrayPool.Shared.Rent(bufferSize);
diff --git a/src/Jellyfin.LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/src/Jellyfin.LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
index a56af65a6f..fef84dd000 100644
--- a/src/Jellyfin.LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
+++ b/src/Jellyfin.LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
@@ -5,7 +5,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
-using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
@@ -16,7 +15,6 @@ using System.Threading.Tasks;
using Jellyfin.Extensions;
using Jellyfin.Extensions.Json;
using Jellyfin.Extensions.Json.Converters;
-using Jellyfin.LiveTv.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
@@ -164,152 +162,6 @@ namespace Jellyfin.LiveTv.TunerHosts.HdHomerun
}
}
- private async Task> GetTunerInfosHttp(TunerHostInfo info, CancellationToken cancellationToken)
- {
- var model = await GetModelInfo(info, false, cancellationToken).ConfigureAwait(false);
-
- using var response = await _httpClientFactory.CreateClient(NamedClient.Default)
- .GetAsync(string.Format(CultureInfo.InvariantCulture, "{0}/tuners.html", GetApiUrl(info)), HttpCompletionOption.ResponseHeadersRead, cancellationToken)
- .ConfigureAwait(false);
- var tuners = new List();
- var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
- await using (stream.ConfigureAwait(false))
- {
- using var sr = new StreamReader(stream, System.Text.Encoding.UTF8);
- await foreach (var line in sr.ReadAllLinesAsync().ConfigureAwait(false))
- {
- string stripedLine = StripXML(line);
- if (stripedLine.Contains("Channel", StringComparison.Ordinal))
- {
- LiveTvTunerStatus status;
- var index = stripedLine.IndexOf("Channel", StringComparison.OrdinalIgnoreCase);
- var name = stripedLine.Substring(0, index - 1);
- var currentChannel = stripedLine.Substring(index + 7);
- if (string.Equals(currentChannel, "none", StringComparison.Ordinal))
- {
- status = LiveTvTunerStatus.LiveTv;
- }
- else
- {
- status = LiveTvTunerStatus.Available;
- }
-
- tuners.Add(new LiveTvTunerInfo
- {
- Name = name,
- SourceType = string.IsNullOrWhiteSpace(model.ModelNumber) ? Name : model.ModelNumber,
- ProgramName = currentChannel,
- Status = status
- });
- }
- }
- }
-
- return tuners;
- }
-
- private static string StripXML(string source)
- {
- if (string.IsNullOrEmpty(source))
- {
- return string.Empty;
- }
-
- char[] buffer = new char[source.Length];
- int bufferIndex = 0;
- bool inside = false;
-
- for (int i = 0; i < source.Length; i++)
- {
- char let = source[i];
- if (let == '<')
- {
- inside = true;
- continue;
- }
-
- if (let == '>')
- {
- inside = false;
- continue;
- }
-
- if (!inside)
- {
- buffer[bufferIndex++] = let;
- }
- }
-
- return new string(buffer, 0, bufferIndex);
- }
-
- private async Task> GetTunerInfosUdp(TunerHostInfo info, CancellationToken cancellationToken)
- {
- var model = await GetModelInfo(info, false, cancellationToken).ConfigureAwait(false);
-
- var tuners = new List(model.TunerCount);
-
- var uri = new Uri(GetApiUrl(info));
-
- using (var manager = new HdHomerunManager())
- {
- // Legacy HdHomeruns are IPv4 only
- var ipInfo = IPAddress.Parse(uri.Host);
-
- for (int i = 0; i < model.TunerCount; i++)
- {
- var name = string.Format(CultureInfo.InvariantCulture, "Tuner {0}", i + 1);
- var currentChannel = "none"; // TODO: Get current channel and map back to Station Id
- var isAvailable = await manager.CheckTunerAvailability(ipInfo, i, cancellationToken).ConfigureAwait(false);
- var status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv;
- tuners.Add(new LiveTvTunerInfo
- {
- Name = name,
- SourceType = string.IsNullOrWhiteSpace(model.ModelNumber) ? Name : model.ModelNumber,
- ProgramName = currentChannel,
- Status = status
- });
- }
- }
-
- return tuners;
- }
-
- public async Task> GetTunerInfos(CancellationToken cancellationToken)
- {
- var list = new List();
-
- foreach (var host in Config.GetLiveTvConfiguration().TunerHosts
- .Where(i => string.Equals(i.Type, Type, StringComparison.OrdinalIgnoreCase)))
- {
- try
- {
- list.AddRange(await GetTunerInfos(host, cancellationToken).ConfigureAwait(false));
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Error getting tuner info");
- }
- }
-
- return list;
- }
-
- public async Task> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken)
- {
- // TODO Need faster way to determine UDP vs HTTP
- var channels = await GetChannels(info, true, cancellationToken).ConfigureAwait(false);
-
- var hdHomerunChannelInfo = channels.FirstOrDefault() as HdHomerunChannelInfo;
-
- if (hdHomerunChannelInfo is null || hdHomerunChannelInfo.IsLegacyTuner)
- {
- return await GetTunerInfosUdp(info, cancellationToken).ConfigureAwait(false);
- }
-
- return await GetTunerInfosHttp(info, cancellationToken).ConfigureAwait(false);
- }
-
private static string GetApiUrl(TunerHostInfo info)
{
var url = info.Url;
@@ -575,40 +427,24 @@ namespace Jellyfin.LiveTv.TunerHosts.HdHomerun
_streamHelper);
}
- var enableHttpStream = true;
- if (enableHttpStream)
- {
- mediaSource.Protocol = MediaProtocol.Http;
-
- var httpUrl = channel.Path;
-
- // If raw was used, the tuner doesn't support params
- if (!string.IsNullOrWhiteSpace(profile) && !string.Equals(profile, "native", StringComparison.OrdinalIgnoreCase))
- {
- httpUrl += "?transcode=" + profile;
- }
+ mediaSource.Protocol = MediaProtocol.Http;
- mediaSource.Path = httpUrl;
+ var httpUrl = channel.Path;
- return new SharedHttpStream(
- mediaSource,
- tunerHost,
- streamId,
- FileSystem,
- _httpClientFactory,
- Logger,
- Config,
- _appHost,
- _streamHelper);
+ // If raw was used, the tuner doesn't support params
+ if (!string.IsNullOrWhiteSpace(profile) && !string.Equals(profile, "native", StringComparison.OrdinalIgnoreCase))
+ {
+ httpUrl += "?transcode=" + profile;
}
- return new HdHomerunUdpStream(
+ mediaSource.Path = httpUrl;
+
+ return new SharedHttpStream(
mediaSource,
tunerHost,
streamId,
- new HdHomerunChannelCommands(hdhomerunChannel.Number, profile),
- modelInfo.TunerCount,
FileSystem,
+ _httpClientFactory,
Logger,
Config,
_appHost,
diff --git a/src/Jellyfin.LiveTv/TunerHosts/M3UTunerHost.cs b/src/Jellyfin.LiveTv/TunerHosts/M3UTunerHost.cs
index 7235e65b64..3666d342ed 100644
--- a/src/Jellyfin.LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/src/Jellyfin.LiveTv/TunerHosts/M3UTunerHost.cs
@@ -80,22 +80,6 @@ namespace Jellyfin.LiveTv.TunerHosts
.ConfigureAwait(false);
}
- public Task> GetTunerInfos(CancellationToken cancellationToken)
- {
- var list = GetTunerHosts()
- .Select(i => new LiveTvTunerInfo()
- {
- Name = Name,
- SourceType = Type,
- Status = LiveTvTunerStatus.Available,
- Id = i.Url.GetMD5().ToString("N", CultureInfo.InvariantCulture),
- Url = i.Url
- })
- .ToList();
-
- return Task.FromResult(list);
- }
-
protected override async Task GetChannelStream(TunerHostInfo tunerHost, ChannelInfo channel, string streamId, IList currentLiveStreams, CancellationToken cancellationToken)
{
var tunerCount = tunerHost.TunerCount;