aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-19 16:03:14 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-19 16:03:14 -0400
commit631b7b62c1eb4b233ac39ac32f5152f2b51f8e9f (patch)
treebb9f1cfee4eaf90273bd143d4955c778632c95b1
parent088df67fcadd75d0da40f4e252a6d6bcc47c7274 (diff)
added ControllableByUserId to sessions url
-rw-r--r--MediaBrowser.Api/Playback/Hls/BaseHlsService.cs13
-rw-r--r--MediaBrowser.Api/Playback/Hls/VideoHlsService.cs8
-rw-r--r--MediaBrowser.Api/SessionsService.cs3
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj3
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj3
-rw-r--r--MediaBrowser.Model/ApiClient/IApiClient.cs2
-rw-r--r--MediaBrowser.Model/Dto/StreamOptions.cs6
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Model/Querying/SessionQuery.cs19
9 files changed, 54 insertions, 4 deletions
diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
index eb133b7d6..e680546b0 100644
--- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
@@ -247,7 +247,16 @@ namespace MediaBrowser.Api.Playback.Hls
{
var probeSize = GetProbeSizeArgument(state.Item);
- var args = string.Format("-itsoffset 1 {0} {1} {2} -i {3}{4} -threads 0 {5} {6} -sc_threshold 0 {7} -hls_time 10 -start_number 0 -hls_list_size 1440 \"{8}\"",
+ var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream;
+
+ var itsOffsetMs = hlsVideoRequest == null
+ ? 0
+ : ((GetHlsVideoStream) state.VideoRequest).TimeStampOffsetMs;
+
+ var itsOffset = itsOffsetMs == 0 ? string.Empty : string.Format("-itsoffset {0} ", TimeSpan.FromMilliseconds(itsOffsetMs).TotalSeconds);
+
+ var args = string.Format("{0}{1} {2} {3} -i {4}{5} -threads 0 {6} {7} -sc_threshold 0 {8} -hls_time 10 -start_number 0 -hls_list_size 1440 \"{9}\"",
+ itsOffset,
probeSize,
GetUserAgentParam(state.Item),
GetFastSeekCommandLineParameter(state.Request),
@@ -259,8 +268,6 @@ namespace MediaBrowser.Api.Playback.Hls
outputPath
).Trim();
- var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream;
-
if (hlsVideoRequest != null)
{
if (hlsVideoRequest.AppendBaselineStream && state.Item is Video)
diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
index 7674fe7b7..901b27688 100644
--- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
@@ -21,6 +21,14 @@ namespace MediaBrowser.Api.Playback.Hls
[ApiMember(Name = "AppendBaselineStream", Description = "Optional. Whether or not to include a baseline audio-only stream in the master playlist.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool AppendBaselineStream { get; set; }
+
+ [ApiMember(Name = "TimeStampOffsetMs", Description = "Optional. Alter the timestamps in the playlist by a given amount, in ms. Default is 1000.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
+ public int TimeStampOffsetMs { get; set; }
+
+ public GetHlsVideoStream()
+ {
+ TimeStampOffsetMs = 1000;
+ }
}
/// <summary>
diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs
index a0ef4a9a3..cad3c4384 100644
--- a/MediaBrowser.Api/SessionsService.cs
+++ b/MediaBrowser.Api/SessionsService.cs
@@ -25,6 +25,9 @@ namespace MediaBrowser.Api
/// <value><c>null</c> if [supports remote control] contains no value, <c>true</c> if [supports remote control]; otherwise, <c>false</c>.</value>
[ApiMember(Name = "SupportsRemoteControl", Description = "Optional. Filter by sessions that can be remote controlled.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
public bool? SupportsRemoteControl { get; set; }
+
+ [ApiMember(Name = "ControllableByUserId", Description = "Optional. Filter by sessions that a given user is allowed to remote control.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public Guid? ControllableByUserId { get; set; }
}
/// <summary>
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index eefabce76..867eb300a 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
@@ -296,6 +296,9 @@
<Compile Include="..\MediaBrowser.Model\Querying\PersonsQuery.cs">
<Link>Querying\PersonsQuery.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Querying\SessionQuery.cs">
+ <Link>Querying\SessionQuery.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Querying\SimilarItemsQuery.cs">
<Link>Querying\SimilarItemsQuery.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 9a491bcd4..606aee1f9 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
@@ -280,6 +280,9 @@
<Compile Include="..\MediaBrowser.Model\Querying\PersonsQuery.cs">
<Link>Querying\PersonsQuery.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Querying\SessionQuery.cs">
+ <Link>Querying\SessionQuery.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Querying\SimilarItemsQuery.cs">
<Link>Querying\SimilarItemsQuery.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs
index 13113c2b2..784e449a3 100644
--- a/MediaBrowser.Model/ApiClient/IApiClient.cs
+++ b/MediaBrowser.Model/ApiClient/IApiClient.cs
@@ -187,7 +187,7 @@ namespace MediaBrowser.Model.ApiClient
/// Gets active client sessions.
/// </summary>
/// <returns>Task{SessionInfoDto[]}.</returns>
- Task<SessionInfoDto[]> GetClientSessionsAsync();
+ Task<SessionInfoDto[]> GetClientSessionsAsync(SessionQuery query);
/// <summary>
/// Gets the item counts async.
diff --git a/MediaBrowser.Model/Dto/StreamOptions.cs b/MediaBrowser.Model/Dto/StreamOptions.cs
index cee95639c..0cf59183d 100644
--- a/MediaBrowser.Model/Dto/StreamOptions.cs
+++ b/MediaBrowser.Model/Dto/StreamOptions.cs
@@ -89,6 +89,12 @@
/// </summary>
/// <value><c>true</c> if [append baseline stream]; otherwise, <c>false</c>.</value>
public bool AppendBaselineStream { get; set; }
+
+ /// <summary>
+ /// Gets or sets the time stamp offset ms. Only used with HLS.
+ /// </summary>
+ /// <value>The time stamp offset ms.</value>
+ public int? TimeStampOffsetMs { get; set; }
}
/// <summary>
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 0822bfbc3..6d8d454d9 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -76,6 +76,7 @@
<Compile Include="Querying\ItemsByNameQuery.cs" />
<Compile Include="Entities\BaseItemInfo.cs" />
<Compile Include="Querying\NextUpQuery.cs" />
+ <Compile Include="Querying\SessionQuery.cs" />
<Compile Include="Querying\SimilarItemsQuery.cs" />
<Compile Include="Querying\UserQuery.cs" />
<Compile Include="Session\BrowseRequest.cs" />
diff --git a/MediaBrowser.Model/Querying/SessionQuery.cs b/MediaBrowser.Model/Querying/SessionQuery.cs
new file mode 100644
index 000000000..77bfef05f
--- /dev/null
+++ b/MediaBrowser.Model/Querying/SessionQuery.cs
@@ -0,0 +1,19 @@
+
+namespace MediaBrowser.Model.Querying
+{
+ /// <summary>
+ /// Class SessionQuery
+ /// </summary>
+ public class SessionQuery
+ {
+ /// <summary>
+ /// Filter by sessions that are allowed to be controlled by a given user
+ /// </summary>
+ public string ControllableByUserId { get; set; }
+
+ /// <summary>
+ /// Filter by sessions that either do or do not support remote control. Default returns all sessions.
+ /// </summary>
+ public bool? SupportsRemoteControl { get; set; }
+ }
+}