/// <summary> /// Begining playing media by mediaplayer, using current filter settings. /// </summary> private void startPlaying(VlcMediaPlayerInternal mediaplayer, VlcMediaInternal media) { if (logger.IsTraceEnabled) { logger.Trace("startPlaying method called."); } // Dump VLC Objects before start playing if (logger.IsTraceEnabled) { logger.Trace("DUMP before start playing :"); logger.Trace(getVlcObjectsTreeDump()); } List<int> loadedFiltersIdList = new List<int>(); // libvlc_instance_t libvlc_instance = internalObjectsFactory.GetInteropStructure(); getVlcObjectsByName(libvlc_instance.p_libvlc_int, ADJUST_FILTER_ALIAS, loadedFiltersIdList); // mediaplayer.Play(); if (logger.IsTraceEnabled) { logger.Trace("mediaPlayer.Play() called."); } // Wait for PLAYING state. Otherwise the next call Pause() will take no effect waitForMediaState(media, VlcMediaState.PLAYING); if (logger.IsTraceEnabled) { logger.Trace("VlcMediaState is PLAYING now."); } // Dump VLC Objects after start playing if (logger.IsTraceEnabled) { logger.Trace("DUMP after star playing :"); logger.Trace(getVlcObjectsTreeDump()); } // If other thread is processing filters now, stop them and wait until it stopped stopWaitingFiltersThread(); // currentMediaFilterAvailable = false; // Starting new thread for waiting filters if (logger.IsTraceEnabled) { logger.Trace("Starting new thread for waiting IAdjustable filter."); } // waitingFiltersThread = new Thread(waitingFiltersThreadHandler); waitingFiltersThread.Start(new VlcObjectsSnapshot(loadedFiltersIdList, libvlc_instance)); }
internal VlcPlayer(PlayerOutput playerOutput, IInternalObjectsFactory internalObjectsFactory, IVolumeManager volumeManager) { if (playerOutput == null) { throw new ArgumentNullException("playerOutput"); } if (volumeManager == null) { throw new ArgumentNullException("volumeManager"); } if (internalObjectsFactory == null) { throw new ArgumentNullException("internalObjectsFactory"); } // this.playerOutput = playerOutput; this.volumeManager = volumeManager; this.internalObjectsFactory = internalObjectsFactory; // firstMediaPlayerInternal = this.internalObjectsFactory.CreateVlcMediaPlayerInternal(); secondMediaPlayerInternal = this.internalObjectsFactory.CreateVlcMediaPlayerInternal(); // initializeEventsEngine(); }