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) { 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);
protected override void DoStartRendererWithHint(RenderingStartHint startHint) { // Leave empty; every particular renderer will do its own startup. }
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); } } }
internal void StartRendererWithHint(RenderingStartHint startHint) { DoStartRendererWithHint(startHint); }