Ejemplo n.º 1
0
        public async void Finish()
        {
            StreamProcessor.CloseConnection();

            var dispatcher = SystemUtil.GetCurrentDispatcher();

            if (dispatcher != null)
            {
                await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    MoviePlaybackData.Image = null;
                });
            }

            if (AvContent == null)
            {
                return;
            }

            try
            {
                await AvContent.StopStreamingAsync().ConfigureAwait(false);
            }
            catch (Exception)
            {
                DebugUtil.Log("Failed to stop movie stream");
            }
            finally
            {
                AvContent = null;
            }
        }
Ejemplo n.º 2
0
        public DeviceApiHolder(SonyCameraDeviceInfo info)
        {
            if (info.Endpoints.ContainsKey("camera"))
            {
                try
                {
                    Camera = new CameraApiClient(new Uri(info.Endpoints["camera"]));
                }
                catch { };
            }
            if (info.Endpoints.ContainsKey("system"))
            {
                try
                {
                    System = new SystemApiClient(new Uri(info.Endpoints["system"]));
                }
                catch { };
            }
            if (info.Endpoints.ContainsKey("avContent"))
            {
                try
                {
                    AvContent = new AvContentApiClient(new Uri(info.Endpoints["avContent"]));
                }
                catch { };
            }

            if (info.FriendlyName == "DSC-QX10")
            {
                ProductType = ProductType.DSC_QX10;
            }

            capability.PropertyChanged += api_PropertyChanged;
        }
Ejemplo n.º 3
0
        public static async Task <string> PrepareMovieStreamingAsync(AvContentApiClient av, string contentUri)
        {
            var uri = await av.SetStreamingContentAsync(new PlaybackContent
            {
                Uri            = contentUri,
                RemotePlayType = RemotePlayMode.SimpleStreaming
            }).ConfigureAwait(false);

            await av.StartStreamingAsync().ConfigureAwait(false);

            return(uri.Url);
        }
Ejemplo n.º 4
0
 public async Task <bool> Pause(AvContentApiClient api)
 {
     try
     {
         await api.PauseStreamingAsync().ConfigureAwait(false);
     }
     catch (RemoteApiException e)
     {
         DebugUtil.Log(() => { return(e.StackTrace); });
         return(false);
     }
     return(true);
 }
Ejemplo n.º 5
0
        public async Task <bool> Start(AvContentApiClient api, PlaybackContent content, string name)
        {
            if (IsProcessing)
            {
                throw new InvalidOperationException("Already processing");
            }
            AvContent = api;

            try
            {
                var location = await api.SetStreamingContentAsync(content).ConfigureAwait(false);

                await api.StartStreamingAsync().ConfigureAwait(false);

                RunLoop(false);

                var success = await StreamProcessor.OpenConnection(new Uri(location.Url)).ConfigureAwait(false);

                if (!success)
                {
                    AvContent = null;
                }

                var dispatcher = SystemUtil.GetCurrentDispatcher();
                if (dispatcher != null)
                {
                    await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                    {
                        MoviePlaybackData.FileName = name;
                    });
                }

                return(success);
            }
            catch (Exception e)
            {
                DebugUtil.Log(e.StackTrace);
                AvContent = null;
                return(false);
            }
        }
Ejemplo n.º 6
0
        public static async Task SeekMovieStreamingAsync(AvContentApiClient av, MoviePlaybackData status, TimeSpan seekTarget)
        {
            var originalStatus = status.StreamingStatus;

            if (status.StreamingStatus == StreamStatus.Error || status.StreamingStatus == StreamStatus.Invalid)
            {
                return;
            }

            if (status.StreamingStatus == StreamStatus.Started)
            {
                await PauseMovieStreamingAsync(av, status).ConfigureAwait(false);
            }

            await av.SeekStreamingPositionAsync(new PlaybackPosition()
            {
                PositionMSec = (int)seekTarget.TotalMilliseconds
            }).ConfigureAwait(false);

            if (originalStatus == StreamStatus.Started || originalStatus == StreamStatus.PausedByEdge)
            {
                await StartMovieStreamingASync(av, status).ConfigureAwait(false);
            }
        }
Ejemplo n.º 7
0
 public RemoteApiContentsLoader(TargetDevice device)
 {
     AvContentApi = device.Api.AvContent;
     Udn          = device.Udn;
 }
Ejemplo n.º 8
0
 public static async Task StartMovieStreamingASync(AvContentApiClient av, MoviePlaybackData status)
 {
     await av.StartStreamingAsync().ConfigureAwait(false);
 }