/// <summary> /// Convert <paramref name="mqItem" /> to an instance of <see cref="MediaQueueItemWebEntity" />. Returns null if <paramref name="mqItem" /> is null. /// </summary> /// <param name="mqItem">The media queue item. May be null.</param> /// <returns><see cref="MediaQueueItemWebEntity" /> or null.</returns> private static MediaQueueItemWebEntity ToMediaQueueItem(MediaQueueItem mqItem) { if (mqItem == null) { return(null); } var mo = Factory.LoadMediaObjectInstance(mqItem.MediaObjectId); var moBuilderOptions = MediaObjectHtmlBuilder.GetMediaObjectHtmlBuilderOptions(mo); moBuilderOptions.DisplayType = DisplayObjectType.Thumbnail; var moBuilder = new MediaObjectHtmlBuilder(moBuilderOptions); return(new MediaQueueItemWebEntity() { MediaQueueId = mqItem.MediaQueueId, MediaObjectId = mqItem.MediaObjectId, StatusInt = mqItem.Status, Status = mqItem.Status, ConversionType = mqItem.ConversionType, DateAdded = mqItem.DateAdded, DateConversionStarted = mqItem.DateConversionStarted, DateConversionCompleted = mqItem.DateConversionCompleted, DurationMs = GetDurationMs(mqItem), StatusDetail = mqItem.StatusDetail, OriginalFilename = mo.Original.FileName, NewFilename = mqItem.NewFilename, ThumbnailUrl = GetThumbnailUrl(moBuilder), MediaObjectTitle = mo.Title, AlbumId = mo.Parent.Id, AlbumTitle = mo.Parent.Title }); }
/// <summary> /// Calculates the number of milliseconds a media asset spent being processed. If it is currently being processed, calculated /// the elapsed number of milliseconds. Returns zero for items that have not started processing. /// </summary> /// <param name="mqItem">The media queue item.</param> /// <returns>An instance of <see cref="System.Double" />.</returns> private static double GetDurationMs(MediaQueueItem mqItem) { if (!mqItem.DateConversionStarted.HasValue) { return(0); } if (!mqItem.DateConversionCompleted.HasValue) { return((DateTime.UtcNow - mqItem.DateConversionStarted.Value).TotalMilliseconds); } return((mqItem.DateConversionCompleted.Value - mqItem.DateConversionStarted.Value).TotalMilliseconds); }
/** * Starts playback of the item at the given position. * * @param itemIndex The index of the item to play. * @param positionMs The position at which playback should start. * @param playWhenReady Whether the player should proceed when ready to do so. */ private void setCurrentItem(int itemIndex, long positionMs, bool playWhenReady) { MaybeSetCurrentItemAndNotify(itemIndex); if (castMediaQueueCreationPending) { MediaQueueItem[] items = new MediaQueueItem[mediaQueue.Count]; for (int i = 0; i < items.Length; i++) { items[i] = buildMediaQueueItem(mediaQueue[i]); } castMediaQueueCreationPending = false; castPlayer.LoadItems(items, itemIndex, positionMs, Player.RepeatModeOff); } else { currentPlayer.SeekTo(itemIndex, positionMs); currentPlayer.PlayWhenReady = playWhenReady; } }
public async Task <IMediaChannelResult> QueueInsertAndPlayItemAsync(MediaQueueItem item, int insertBeforeItemId, long playPosition, Org.Json.JSONObject customData) { return((await QueueInsertAndPlayItem(item, insertBeforeItemId, playPosition, customData)).JavaCast <IMediaChannelResult> ()); }
public async Task <IMediaChannelResult> QueueAppendItemAsync(MediaQueueItem item, Org.Json.JSONObject customData) { return((await QueueAppendItem(item, customData)).JavaCast <IMediaChannelResult> ()); }