aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Session
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Session')
-rw-r--r--MediaBrowser.Model/Session/BrowseRequest.cs27
-rw-r--r--MediaBrowser.Model/Session/ClientCapabilities.cs33
-rw-r--r--MediaBrowser.Model/Session/GeneralCommand.cs19
-rw-r--r--MediaBrowser.Model/Session/GeneralCommandType.cs46
-rw-r--r--MediaBrowser.Model/Session/MessageCommand.cs12
-rw-r--r--MediaBrowser.Model/Session/PlayCommand.cs29
-rw-r--r--MediaBrowser.Model/Session/PlayMethod.cs9
-rw-r--r--MediaBrowser.Model/Session/PlayRequest.cs43
-rw-r--r--MediaBrowser.Model/Session/PlaybackProgressInfo.cs119
-rw-r--r--MediaBrowser.Model/Session/PlaybackStartInfo.cs10
-rw-r--r--MediaBrowser.Model/Session/PlaybackStopInfo.cs57
-rw-r--r--MediaBrowser.Model/Session/PlayerStateInfo.cs65
-rw-r--r--MediaBrowser.Model/Session/PlaystateCommand.cs43
-rw-r--r--MediaBrowser.Model/Session/PlaystateRequest.cs15
-rw-r--r--MediaBrowser.Model/Session/SessionInfoDto.cs117
-rw-r--r--MediaBrowser.Model/Session/SessionUserInfo.cs21
-rw-r--r--MediaBrowser.Model/Session/TranscodingInfo.cs55
-rw-r--r--MediaBrowser.Model/Session/UserDataChangeInfo.cs23
18 files changed, 743 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Session/BrowseRequest.cs b/MediaBrowser.Model/Session/BrowseRequest.cs
new file mode 100644
index 000000000..0a13c0549
--- /dev/null
+++ b/MediaBrowser.Model/Session/BrowseRequest.cs
@@ -0,0 +1,27 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class BrowseRequest
+ /// </summary>
+ public class BrowseRequest
+ {
+ /// <summary>
+ /// Artist, Genre, Studio, Person, or any kind of BaseItem
+ /// </summary>
+ /// <value>The type of the item.</value>
+ public string ItemType { get; set; }
+
+ /// <summary>
+ /// Gets or sets the item id.
+ /// </summary>
+ /// <value>The item id.</value>
+ public string ItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the item.
+ /// </summary>
+ /// <value>The name of the item.</value>
+ public string ItemName { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs
new file mode 100644
index 000000000..0a780b910
--- /dev/null
+++ b/MediaBrowser.Model/Session/ClientCapabilities.cs
@@ -0,0 +1,33 @@
+using MediaBrowser.Model.Dlna;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ public class ClientCapabilities
+ {
+ public string[] PlayableMediaTypes { get; set; }
+
+ public string[] SupportedCommands { get; set; }
+
+ public bool SupportsMediaControl { get; set; }
+ public bool SupportsContentUploading { get; set; }
+ public string MessageCallbackUrl { get; set; }
+ public string PushToken { get; set; }
+ public string PushTokenType { get; set; }
+
+ public bool SupportsPersistentIdentifier { get; set; }
+ public bool SupportsSync { get; set; }
+
+ public DeviceProfile DeviceProfile { get; set; }
+
+ public string AppStoreUrl { get; set; }
+ public string IconUrl { get; set; }
+
+ public ClientCapabilities()
+ {
+ PlayableMediaTypes = new string[] {};
+ SupportedCommands = new string[] {};
+ SupportsPersistentIdentifier = true;
+ }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/GeneralCommand.cs b/MediaBrowser.Model/Session/GeneralCommand.cs
new file mode 100644
index 000000000..5cfe3e67b
--- /dev/null
+++ b/MediaBrowser.Model/Session/GeneralCommand.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ public class GeneralCommand
+ {
+ public string Name { get; set; }
+
+ public Guid ControllingUserId { get; set; }
+
+ public Dictionary<string, string> Arguments { get; set; }
+
+ public GeneralCommand()
+ {
+ Arguments = new Dictionary<string, string>();
+ }
+ }
+}
diff --git a/MediaBrowser.Model/Session/GeneralCommandType.cs b/MediaBrowser.Model/Session/GeneralCommandType.cs
new file mode 100644
index 000000000..9044dc3ec
--- /dev/null
+++ b/MediaBrowser.Model/Session/GeneralCommandType.cs
@@ -0,0 +1,46 @@
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// This exists simply to identify a set of known commands.
+ /// </summary>
+ public enum GeneralCommandType
+ {
+ MoveUp = 0,
+ MoveDown = 1,
+ MoveLeft = 2,
+ MoveRight = 3,
+ PageUp = 4,
+ PageDown = 5,
+ PreviousLetter = 6,
+ NextLetter = 7,
+ ToggleOsd = 8,
+ ToggleContextMenu = 9,
+ Select = 10,
+ Back = 11,
+ TakeScreenshot = 12,
+ SendKey = 13,
+ SendString = 14,
+ GoHome = 15,
+ GoToSettings = 16,
+ VolumeUp = 17,
+ VolumeDown = 18,
+ Mute = 19,
+ Unmute = 20,
+ ToggleMute = 21,
+ SetVolume = 22,
+ SetAudioStreamIndex = 23,
+ SetSubtitleStreamIndex = 24,
+ ToggleFullscreen = 25,
+ DisplayContent = 26,
+ GoToSearch = 27,
+ DisplayMessage = 28,
+ SetRepeatMode = 29,
+ ChannelUp = 30,
+ ChannelDown = 31,
+ SetMaxStreamingBitrate = 31,
+ Guide = 32,
+ ToggleStats = 33,
+ PlayMediaSource = 34,
+ PlayTrailers = 35
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/MessageCommand.cs b/MediaBrowser.Model/Session/MessageCommand.cs
new file mode 100644
index 000000000..b028765ed
--- /dev/null
+++ b/MediaBrowser.Model/Session/MessageCommand.cs
@@ -0,0 +1,12 @@
+
+namespace MediaBrowser.Model.Session
+{
+ public class MessageCommand
+ {
+ public string Header { get; set; }
+
+ public string Text { get; set; }
+
+ public long? TimeoutMs { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlayCommand.cs b/MediaBrowser.Model/Session/PlayCommand.cs
new file mode 100644
index 000000000..3a5a951d7
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlayCommand.cs
@@ -0,0 +1,29 @@
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Enum PlayCommand
+ /// </summary>
+ public enum PlayCommand
+ {
+ /// <summary>
+ /// The play now
+ /// </summary>
+ PlayNow = 0,
+ /// <summary>
+ /// The play next
+ /// </summary>
+ PlayNext = 1,
+ /// <summary>
+ /// The play last
+ /// </summary>
+ PlayLast = 2,
+ /// <summary>
+ /// The play instant mix
+ /// </summary>
+ PlayInstantMix = 3,
+ /// <summary>
+ /// The play shuffle
+ /// </summary>
+ PlayShuffle = 4
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlayMethod.cs b/MediaBrowser.Model/Session/PlayMethod.cs
new file mode 100644
index 000000000..87b728627
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlayMethod.cs
@@ -0,0 +1,9 @@
+namespace MediaBrowser.Model.Session
+{
+ public enum PlayMethod
+ {
+ Transcode = 0,
+ DirectStream = 1,
+ DirectPlay = 2
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlayRequest.cs b/MediaBrowser.Model/Session/PlayRequest.cs
new file mode 100644
index 000000000..2ee489f96
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlayRequest.cs
@@ -0,0 +1,43 @@
+using MediaBrowser.Model.Services;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlayRequest
+ /// </summary>
+ public class PlayRequest
+ {
+ /// <summary>
+ /// Gets or sets the item ids.
+ /// </summary>
+ /// <value>The item ids.</value>
+ [ApiMember(Name = "ItemIds", Description = "The ids of the items to play, comma delimited", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST", AllowMultiple = true)]
+ public Guid[] ItemIds { get; set; }
+
+ /// <summary>
+ /// Gets or sets the start position ticks that the first item should be played at
+ /// </summary>
+ /// <value>The start position ticks.</value>
+ [ApiMember(Name = "StartPositionTicks", Description = "The starting position of the first item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public long? StartPositionTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the play command.
+ /// </summary>
+ /// <value>The play command.</value>
+ [ApiMember(Name = "PlayCommand", Description = "The type of play command to issue (PlayNow, PlayNext, PlayLast). Clients who have not yet implemented play next and play last may play now.", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public PlayCommand PlayCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the controlling user identifier.
+ /// </summary>
+ /// <value>The controlling user identifier.</value>
+ public Guid ControllingUserId { get; set; }
+
+ public int? SubtitleStreamIndex { get; set; }
+ public int? AudioStreamIndex { get; set; }
+ public string MediaSourceId { get; set; }
+ public int? StartIndex { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs
new file mode 100644
index 000000000..ce6b2875e
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs
@@ -0,0 +1,119 @@
+using MediaBrowser.Model.Dto;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlaybackProgressInfo.
+ /// </summary>
+ public class PlaybackProgressInfo
+ {
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can seek.
+ /// </summary>
+ /// <value><c>true</c> if this instance can seek; otherwise, <c>false</c>.</value>
+ public bool CanSeek { get; set; }
+
+ /// <summary>
+ /// Gets or sets the item.
+ /// </summary>
+ /// <value>The item.</value>
+ public BaseItemDto Item { get; set; }
+
+ /// <summary>
+ /// Gets or sets the item identifier.
+ /// </summary>
+ /// <value>The item identifier.</value>
+ public Guid ItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the session id.
+ /// </summary>
+ /// <value>The session id.</value>
+ public string SessionId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the media version identifier.
+ /// </summary>
+ /// <value>The media version identifier.</value>
+ public string MediaSourceId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the index of the audio stream.
+ /// </summary>
+ /// <value>The index of the audio stream.</value>
+ public int? AudioStreamIndex { get; set; }
+
+ /// <summary>
+ /// Gets or sets the index of the subtitle stream.
+ /// </summary>
+ /// <value>The index of the subtitle stream.</value>
+ public int? SubtitleStreamIndex { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is paused.
+ /// </summary>
+ /// <value><c>true</c> if this instance is paused; otherwise, <c>false</c>.</value>
+ public bool IsPaused { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is muted.
+ /// </summary>
+ /// <value><c>true</c> if this instance is muted; otherwise, <c>false</c>.</value>
+ public bool IsMuted { get; set; }
+
+ /// <summary>
+ /// Gets or sets the position ticks.
+ /// </summary>
+ /// <value>The position ticks.</value>
+ public long? PositionTicks { get; set; }
+
+ public long? PlaybackStartTimeTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the volume level.
+ /// </summary>
+ /// <value>The volume level.</value>
+ public int? VolumeLevel { get; set; }
+
+ public int? Brightness { get; set; }
+
+ public string AspectRatio { get; set; }
+
+ /// <summary>
+ /// Gets or sets the play method.
+ /// </summary>
+ /// <value>The play method.</value>
+ public PlayMethod PlayMethod { get; set; }
+ /// <summary>
+ /// Gets or sets the live stream identifier.
+ /// </summary>
+ /// <value>The live stream identifier.</value>
+ public string LiveStreamId { get; set; }
+ /// <summary>
+ /// Gets or sets the play session identifier.
+ /// </summary>
+ /// <value>The play session identifier.</value>
+ public string PlaySessionId { get; set; }
+ /// <summary>
+ /// Gets or sets the repeat mode.
+ /// </summary>
+ /// <value>The repeat mode.</value>
+ public RepeatMode RepeatMode { get; set; }
+
+ public QueueItem[] NowPlayingQueue { get; set; }
+ public string PlaylistItemId { get; set; }
+ }
+
+ public enum RepeatMode
+ {
+ RepeatNone = 0,
+ RepeatAll = 1,
+ RepeatOne = 2
+ }
+
+ public class QueueItem {
+ public Guid Id { get; set; }
+ public string PlaylistItemId { get; set; }
+ }
+}
diff --git a/MediaBrowser.Model/Session/PlaybackStartInfo.cs b/MediaBrowser.Model/Session/PlaybackStartInfo.cs
new file mode 100644
index 000000000..f6f496e4e
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaybackStartInfo.cs
@@ -0,0 +1,10 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlaybackStartInfo.
+ /// </summary>
+ public class PlaybackStartInfo : PlaybackProgressInfo
+ {
+ }
+}
diff --git a/MediaBrowser.Model/Session/PlaybackStopInfo.cs b/MediaBrowser.Model/Session/PlaybackStopInfo.cs
new file mode 100644
index 000000000..6f3351eef
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaybackStopInfo.cs
@@ -0,0 +1,57 @@
+using MediaBrowser.Model.Dto;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlaybackStopInfo.
+ /// </summary>
+ public class PlaybackStopInfo
+ {
+ /// <summary>
+ /// Gets or sets the item.
+ /// </summary>
+ /// <value>The item.</value>
+ public BaseItemDto Item { get; set; }
+ /// <summary>
+ /// Gets or sets the item identifier.
+ /// </summary>
+ /// <value>The item identifier.</value>
+ public Guid ItemId { get; set; }
+ /// <summary>
+ /// Gets or sets the session id.
+ /// </summary>
+ /// <value>The session id.</value>
+ public string SessionId { get; set; }
+ /// <summary>
+ /// Gets or sets the media version identifier.
+ /// </summary>
+ /// <value>The media version identifier.</value>
+ public string MediaSourceId { get; set; }
+ /// <summary>
+ /// Gets or sets the position ticks.
+ /// </summary>
+ /// <value>The position ticks.</value>
+ public long? PositionTicks { get; set; }
+ /// <summary>
+ /// Gets or sets the live stream identifier.
+ /// </summary>
+ /// <value>The live stream identifier.</value>
+ public string LiveStreamId { get; set; }
+ /// <summary>
+ /// Gets or sets the play session identifier.
+ /// </summary>
+ /// <value>The play session identifier.</value>
+ public string PlaySessionId { get; set; }
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="PlaybackStopInfo"/> is failed.
+ /// </summary>
+ /// <value><c>true</c> if failed; otherwise, <c>false</c>.</value>
+ public bool Failed { get; set; }
+
+ public string NextMediaType { get; set; }
+
+ public string PlaylistItemId { get; set; }
+ public QueueItem[] NowPlayingQueue { get; set; }
+ }
+}
diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs
new file mode 100644
index 000000000..f78842e29
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs
@@ -0,0 +1,65 @@
+namespace MediaBrowser.Model.Session
+{
+ public class PlayerStateInfo
+ {
+ /// <summary>
+ /// Gets or sets the now playing position ticks.
+ /// </summary>
+ /// <value>The now playing position ticks.</value>
+ public long? PositionTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can seek.
+ /// </summary>
+ /// <value><c>true</c> if this instance can seek; otherwise, <c>false</c>.</value>
+ public bool CanSeek { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is paused.
+ /// </summary>
+ /// <value><c>true</c> if this instance is paused; otherwise, <c>false</c>.</value>
+ public bool IsPaused { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is muted.
+ /// </summary>
+ /// <value><c>true</c> if this instance is muted; otherwise, <c>false</c>.</value>
+ public bool IsMuted { get; set; }
+
+ /// <summary>
+ /// Gets or sets the volume level.
+ /// </summary>
+ /// <value>The volume level.</value>
+ public int? VolumeLevel { get; set; }
+
+ /// <summary>
+ /// Gets or sets the index of the now playing audio stream.
+ /// </summary>
+ /// <value>The index of the now playing audio stream.</value>
+ public int? AudioStreamIndex { get; set; }
+
+ /// <summary>
+ /// Gets or sets the index of the now playing subtitle stream.
+ /// </summary>
+ /// <value>The index of the now playing subtitle stream.</value>
+ public int? SubtitleStreamIndex { get; set; }
+
+ /// <summary>
+ /// Gets or sets the now playing media version identifier.
+ /// </summary>
+ /// <value>The now playing media version identifier.</value>
+ public string MediaSourceId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the play method.
+ /// </summary>
+ /// <value>The play method.</value>
+ public PlayMethod? PlayMethod { get; set; }
+
+ /// <summary>
+ /// Gets or sets the repeat mode.
+ /// </summary>
+ /// <value>The repeat mode.</value>
+ public RepeatMode RepeatMode { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlaystateCommand.cs b/MediaBrowser.Model/Session/PlaystateCommand.cs
new file mode 100644
index 000000000..3b70d5454
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaystateCommand.cs
@@ -0,0 +1,43 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Enum PlaystateCommand
+ /// </summary>
+ public enum PlaystateCommand
+ {
+ /// <summary>
+ /// The stop
+ /// </summary>
+ Stop,
+ /// <summary>
+ /// The pause
+ /// </summary>
+ Pause,
+ /// <summary>
+ /// The unpause
+ /// </summary>
+ Unpause,
+ /// <summary>
+ /// The next track
+ /// </summary>
+ NextTrack,
+ /// <summary>
+ /// The previous track
+ /// </summary>
+ PreviousTrack,
+ /// <summary>
+ /// The seek
+ /// </summary>
+ Seek,
+ /// <summary>
+ /// The rewind
+ /// </summary>
+ Rewind,
+ /// <summary>
+ /// The fast forward
+ /// </summary>
+ FastForward,
+ PlayPause
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlaystateRequest.cs b/MediaBrowser.Model/Session/PlaystateRequest.cs
new file mode 100644
index 000000000..8a046b503
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaystateRequest.cs
@@ -0,0 +1,15 @@
+namespace MediaBrowser.Model.Session
+{
+ public class PlaystateRequest
+ {
+ public PlaystateCommand Command { get; set; }
+
+ public long? SeekPositionTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the controlling user identifier.
+ /// </summary>
+ /// <value>The controlling user identifier.</value>
+ public string ControllingUserId { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/SessionInfoDto.cs b/MediaBrowser.Model/Session/SessionInfoDto.cs
new file mode 100644
index 000000000..ca14107df
--- /dev/null
+++ b/MediaBrowser.Model/Session/SessionInfoDto.cs
@@ -0,0 +1,117 @@
+using MediaBrowser.Model.Dto;
+using System;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Model.Session
+{
+ public class SessionInfoDto
+ {
+ /// <summary>
+ /// Gets or sets the supported commands.
+ /// </summary>
+ /// <value>The supported commands.</value>
+ public string[] SupportedCommands { get; set; }
+
+ /// <summary>
+ /// Gets or sets the playable media types.
+ /// </summary>
+ /// <value>The playable media types.</value>
+ public string[] PlayableMediaTypes { get; set; }
+
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ /// <value>The id.</value>
+ public string Id { get; set; }
+
+ public string ServerId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user id.
+ /// </summary>
+ /// <value>The user id.</value>
+ public string UserId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user primary image tag.
+ /// </summary>
+ /// <value>The user primary image tag.</value>
+ public string UserPrimaryImageTag { get; set; }
+
+ public string RemoteEndPoint { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the user.
+ /// </summary>
+ /// <value>The name of the user.</value>
+ public string UserName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the additional users present.
+ /// </summary>
+ /// <value>The additional users present.</value>
+ public SessionUserInfo[] AdditionalUsers { get; set; }
+
+ /// <summary>
+ /// Gets or sets the application version.
+ /// </summary>
+ /// <value>The application version.</value>
+ public string ApplicationVersion { get; set; }
+
+ /// <summary>
+ /// Gets or sets the type of the client.
+ /// </summary>
+ /// <value>The type of the client.</value>
+ public string Client { get; set; }
+
+ /// <summary>
+ /// Gets or sets the last activity date.
+ /// </summary>
+ /// <value>The last activity date.</value>
+ public DateTime LastActivityDate { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the device.
+ /// </summary>
+ /// <value>The name of the device.</value>
+ public string DeviceName { get; set; }
+
+ public string DeviceType { get; set; }
+
+ /// <summary>
+ /// Gets or sets the now playing item.
+ /// </summary>
+ /// <value>The now playing item.</value>
+ public BaseItemDto NowPlayingItem { get; set; }
+
+ /// <summary>
+ /// Gets or sets the device id.
+ /// </summary>
+ /// <value>The device id.</value>
+ public string DeviceId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the application icon URL.
+ /// </summary>
+ /// <value>The application icon URL.</value>
+ public string AppIconUrl { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [supports remote control].
+ /// </summary>
+ /// <value><c>true</c> if [supports remote control]; otherwise, <c>false</c>.</value>
+ public bool SupportsRemoteControl { get; set; }
+
+ public PlayerStateInfo PlayState { get; set; }
+
+ public TranscodingInfo TranscodingInfo { get; set; }
+
+ public SessionInfoDto()
+ {
+ AdditionalUsers = new SessionUserInfo[] { };
+
+ PlayableMediaTypes = new string[] {};
+ SupportedCommands = new string[] {};
+ }
+ }
+}
diff --git a/MediaBrowser.Model/Session/SessionUserInfo.cs b/MediaBrowser.Model/Session/SessionUserInfo.cs
new file mode 100644
index 000000000..7746bc2d6
--- /dev/null
+++ b/MediaBrowser.Model/Session/SessionUserInfo.cs
@@ -0,0 +1,21 @@
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class SessionUserInfo.
+ /// </summary>
+ public class SessionUserInfo
+ {
+ /// <summary>
+ /// Gets or sets the user identifier.
+ /// </summary>
+ /// <value>The user identifier.</value>
+ public Guid UserId { get; set; }
+ /// <summary>
+ /// Gets or sets the name of the user.
+ /// </summary>
+ /// <value>The name of the user.</value>
+ public string UserName { get; set; }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/TranscodingInfo.cs b/MediaBrowser.Model/Session/TranscodingInfo.cs
new file mode 100644
index 000000000..ed86d2358
--- /dev/null
+++ b/MediaBrowser.Model/Session/TranscodingInfo.cs
@@ -0,0 +1,55 @@
+using System.Collections.Generic;
+
+namespace MediaBrowser.Model.Session
+{
+ public class TranscodingInfo
+ {
+ public string AudioCodec { get; set; }
+ public string VideoCodec { get; set; }
+ public string Container { get; set; }
+ public bool IsVideoDirect { get; set; }
+ public bool IsAudioDirect { get; set; }
+ public int? Bitrate { get; set; }
+
+ public float? Framerate { get; set; }
+ public double? CompletionPercentage { get; set; }
+
+ public int? Width { get; set; }
+ public int? Height { get; set; }
+ public int? AudioChannels { get; set; }
+
+ public TranscodeReason[] TranscodeReasons { get; set; }
+
+ public TranscodingInfo()
+ {
+ TranscodeReasons = new TranscodeReason[] { };
+ }
+ }
+
+ public enum TranscodeReason
+ {
+ ContainerNotSupported = 0,
+ VideoCodecNotSupported = 1,
+ AudioCodecNotSupported = 2,
+ ContainerBitrateExceedsLimit = 3,
+ AudioBitrateNotSupported = 4,
+ AudioChannelsNotSupported = 5,
+ VideoResolutionNotSupported = 6,
+ UnknownVideoStreamInfo = 7,
+ UnknownAudioStreamInfo = 8,
+ AudioProfileNotSupported = 9,
+ AudioSampleRateNotSupported = 10,
+ AnamorphicVideoNotSupported = 11,
+ InterlacedVideoNotSupported = 12,
+ SecondaryAudioNotSupported = 13,
+ RefFramesNotSupported = 14,
+ VideoBitDepthNotSupported = 15,
+ VideoBitrateNotSupported = 16,
+ VideoFramerateNotSupported = 17,
+ VideoLevelNotSupported = 18,
+ VideoProfileNotSupported = 19,
+ AudioBitDepthNotSupported = 20,
+ SubtitleCodecNotSupported = 21,
+ DirectPlayError = 22
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/UserDataChangeInfo.cs b/MediaBrowser.Model/Session/UserDataChangeInfo.cs
new file mode 100644
index 000000000..c6b03200d
--- /dev/null
+++ b/MediaBrowser.Model/Session/UserDataChangeInfo.cs
@@ -0,0 +1,23 @@
+using MediaBrowser.Model.Dto;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class UserDataChangeInfo
+ /// </summary>
+ public class UserDataChangeInfo
+ {
+ /// <summary>
+ /// Gets or sets the user id.
+ /// </summary>
+ /// <value>The user id.</value>
+ public string UserId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user data list.
+ /// </summary>
+ /// <value>The user data list.</value>
+ public UserItemDataDto[] UserDataList { get; set; }
+ }
+}