示例#1
0
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            if (startHint is BookmarkStartHint)
            {
                double newPos = (startHint as BookmarkStartHint).Bookmark.PlaybackTimeInSeconds;

                if (this.FilterState == OPMedia.Runtime.ProTONE.Rendering.DS.BaseClasses.FilterState.Running)
                {
                    // Seek "on the fly" to new position.
                    SetMediaPosition(newPos);
                }
                else if (this.FilterState == OPMedia.Runtime.ProTONE.Rendering.DS.BaseClasses.FilterState.Paused)
                {
                    // Resume renderer from the to new position.
                    ResumeRenderer(newPos);
                }
                else
                {
                    // Start rendering first then seek to new position.
                    DoStartRenderer();
                    SetMediaPosition(newPos);
                }
            }
            else
            {
                throw new InvalidOperationException("A file renderer can accept only a BookmarkStartHint.");
            }
        }
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            if (startHint is BookmarkStartHint)
            {
                double newPos = (startHint as BookmarkStartHint).Bookmark.PlaybackTimeInSeconds;

                if (this.FilterState == OPMedia.Runtime.ProTONE.Rendering.DS.BaseClasses.FilterState.Running)
                {
                    // Seek "on the fly" to new position.
                    SetMediaPosition(newPos);
                }
                else if (this.FilterState == OPMedia.Runtime.ProTONE.Rendering.DS.BaseClasses.FilterState.Paused)
                {
                    // Resume renderer from the to new position.
                    ResumeRenderer(newPos);
                }
                else
                {
                    // Start rendering first then seek to new position.
                    DoStartRenderer();
                    SetMediaPosition(newPos);
                }
            }
            else
            {
                throw new InvalidOperationException("A file renderer can accept only a BookmarkStartHint.");
            }
        }
示例#3
0
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            DvdRenderingStartHint hint = startHint as DvdRenderingStartHint;

            if (dvdGraphBuilder == null)
            {
                _vdi = new VideoDvdInformation(renderMediaName);

                InitMedia();
                InitAudioAndVideo();

                // Run the graph to play the media file
                int hr = mediaControl.Run();
                DsError.ThrowExceptionForHR(hr);

                // Give enough time for the filter graph to be completely built
                Thread.Sleep(500);
            }

            if (hint == DvdRenderingStartHint.MainMenu)
            {
                int hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }
            else if (hint == DvdRenderingStartHint.Beginning)
            {
                int hr = 0;

                if (ProTONEConfig.DisableDVDMenu)
                    hr = dvdControl2.PlayTitle(1, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                else
                    //dvdControl.PlayForwards(1f, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                    hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);

                DsError.ThrowExceptionForHR(hr);
            }
            else if (hint.Location.ChapterNum == 0)
            {
                int hr = dvdControl2.PlayTitle(hint.Location.TitleNum, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }
            else
            {
                int hr = dvdControl2.PlayChapterInTitle(hint.Location.TitleNum, hint.Location.ChapterNum,
                    DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }

            if (ProTONEConfig.PrefferedSubtitleLang > 0)
            {
                int sid = _vdi.GetSubtitle(ProTONEConfig.PrefferedSubtitleLang);
                if (sid > 0)
                {
                    SetSubtitleStream(sid);
                }
            }
        }
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            dz_error_t err;

            _needNaturalNext = false;

            Logger.LogTrace("DeezerRenderer::DoStartRendererWithHint startHint={0}", startHint);

            if (renderMediaName == null || renderMediaName.Length <= 0)
            {
                return;
            }

            CheckIfInitialized();

            if (_dzConnect == IntPtr.Zero || _dzPlayer == IntPtr.Zero)
            {
                DeezerApi.HandleDzErrorCode("DeezerRenderer::DoStartRendererWithHint", dz_error_t.DZ_ERROR_CLASS_INSTANTIATION);
            }

            // --------------------------------------------------------------------
            _evtQueueListLoaded.Reset();
            err = DeezerApi.dz_player_load(_dzPlayer, null, IntPtr.Zero, renderMediaName);
            DeezerApi.HandleDzErrorCode("dz_player_load", err);

            if (_evtQueueListLoaded.WaitOne(DZ_OPERATION_TIMEOUT) == false)
            {
                DeezerApi.HandleDzErrorCode("dz_player_load", dz_error_t.DZ_ERROR_PLAYER_LOAD_TIMEOUT);
            }

            Logger.LogTrace("dz_player_load => Success");

            // --------------------------------------------------------------------

            // --------------------------------------------------------------------
            // Start playback using dz_player_play
            // This will trigger DZ_PLAYER_EVENT_RENDER_TRACK_START
            // Upon completion, _evtPlayerPlaybackStarted will be set.
            _evtPlayerPlaybackStarted.Reset();

            err = DeezerApi.dz_player_play(_dzPlayer, null, IntPtr.Zero,
                                           dz_player_play_command_t.DZ_PLAYER_PLAY_CMD_START_TRACKLIST,
                                           DeezerInterop.PlayerApi.Constants.DZ_INDEX_IN_QUEUELIST_CURRENT);

            DeezerApi.HandleDzErrorCode("dz_player_play", err);

            if (_evtPlayerPlaybackStarted.WaitOne(DZ_OPERATION_TIMEOUT) == false)
            {
                DeezerApi.HandleDzErrorCode("dz_player_play", dz_error_t.DZ_ERROR_PLAYER_PLAY_TIMEOUT);
            }

            Logger.LogTrace("dz_player_play => Success");
            // --------------------------------------------------------------------
        }
        internal void StartRendererWithHint(RenderingStartHint startHint)
        {
            int hintPos = 0;

            if (startHint is BookmarkStartHint)
            {
                hintPos = (int)(startHint as BookmarkStartHint).Bookmark.PlaybackTimeInSeconds;
            }

            CreateAndStartInternalClock(hintPos);
            DoStartRendererWithHint(startHint);
        }
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            if (renderMediaName == null || renderMediaName.Length <= 0)
                return;

            GC.Collect();

            InitMedia();

            int hr = mediaPosition.put_Rate(1);
            DsError.ThrowExceptionForHR(hr);

            // Run the graph to play the media file
            hr = mediaControl.Run();
            DsError.ThrowExceptionForHR(hr);

            // HACK: call GetMedialenght once here to ensure that durationScaleFactor is buuilt up
            double len = GetMediaLength();
        }
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            if (renderMediaName == null || renderMediaName.Length <= 0)
            {
                return;
            }

            GC.Collect();

            InitMedia();

            int hr = mediaPosition.put_Rate(1);

            DsError.ThrowExceptionForHR(hr);

            // Run the graph to play the media file
            hr = mediaControl.Run();
            DsError.ThrowExceptionForHR(hr);

            // HACK: call GetMedialenght once here to ensure that durationScaleFactor is buuilt up
            double len = GetMediaLength();
        }
 protected abstract void DoStartRendererWithHint(RenderingStartHint startHint);
示例#9
0
 protected override void DoStartRendererWithHint(RenderingStartHint startHint)
 {
     // Leave empty; every particular renderer will do its own startup.
 }
示例#10
0
        protected override void DoStartRendererWithHint(RenderingStartHint startHint)
        {
            DvdRenderingStartHint hint = startHint as DvdRenderingStartHint;

            if (dvdGraphBuilder == null)
            {
                _vdi = new VideoDvdInformation(renderMediaName);

                InitMedia();
                InitAudioAndVideo();

                // Run the graph to play the media file
                int hr = mediaControl.Run();
                DsError.ThrowExceptionForHR(hr);

                // Give enough time for the filter graph to be completely built
                Thread.Sleep(500);

                rotEntry = new DsROTEntry(mediaControl as IFilterGraph);
            }

            if (hint == DvdRenderingStartHint.MainMenu)
            {
                int hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }
            else if (hint == DvdRenderingStartHint.Beginning)
            {
                int hr = 0;

                if (ProTONEConfig.DisableDVDMenu)
                {
                    hr = dvdControl2.PlayTitle(1, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                }
                else
                {
                    //dvdControl.PlayForwards(1f, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                    hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                }

                DsError.ThrowExceptionForHR(hr);
            }
            else if (hint.Location.ChapterNum == 0)
            {
                int hr = dvdControl2.PlayTitle(hint.Location.TitleNum, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }
            else
            {
                int hr = dvdControl2.PlayChapterInTitle(hint.Location.TitleNum, hint.Location.ChapterNum,
                                                        DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd);
                DsError.ThrowExceptionForHR(hr);
            }

            if (ProTONEConfig.PrefferedSubtitleLang > 0)
            {
                int sid = _vdi.GetSubtitle(ProTONEConfig.PrefferedSubtitleLang);
                if (sid > 0)
                {
                    SetSubtitleStream(sid);
                }
            }
        }
 protected override void DoStartRendererWithHint(RenderingStartHint startHint)
 {
     // Leave empty; every particular renderer will do its own startup.
 }
示例#12
0
 protected abstract void DoStartRendererWithHint(RenderingStartHint startHint);
示例#13
0
 internal void StartRendererWithHint(RenderingStartHint startHint)
 {
     DoStartRendererWithHint(startHint);
 }