/// <summary> /// Wendet eine Ausschlußoption an. /// </summary> /// <param name="disable">Die gewünschte Option.</param> /// <param name="mode">Der aktuelle Bearbeitungsmodus.</param> /// <param name="needed">Die Anzahl der noch benötigten Verbraucher, bei Bedarf korrigiert.</param> /// <param name="report">Protokolliert die vorgenommenen Veränderungen.</param> public void ApplyDisable(StreamDisableSelector disable, StreamDisableMode mode, ref int needed, Action <SourceSelection, string, int> report) { // Initial value int neededStart = needed; // Process if (!CurrentStreams.ApplyDisable(disable, mode, ref needed, (m, c) => { if (null != report) { report(Source, m, c); } })) { return; } // Remember corrected settings OriginalStreams = CurrentStreams; // Correct consumer count ConsumerCount = ConsumerCount.Value - (neededStart - needed); }
/// <summary> /// Wendet eine Deaktivierung auf eine Auswahl von Teildatenströmen (PID) an. /// </summary> /// <param name="streams">Die aktuelle Auswahl.</param> /// <param name="disable">Der gewünschte Aspekt.</param> /// <param name="mode">Der aktuelle Korrekturkontext der zugehörigen Quelle.</param> /// <param name="needed">Die Anzahl der noch benötigten Verbraucher, die geeignet korrigiert wird.</param> /// <param name="report">Protokolliert die vorgenommene Veränderung.</param> /// <returns>Gesetzt, wenn eine Veränderung stattgefunden hat.</returns> public static bool ApplyDisable( this StreamSelection streams, StreamDisableSelector disable, StreamDisableMode mode, ref int needed, Action<string, int> report ) { // Check mode first switch (mode) { case StreamDisableMode.Self: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsSelf: return streams.RemoveAC3AudioIfMP2Present( ref needed, report ); case StreamDisableSelector.AlternateAC3Self: return streams.RemoveAlternateAC3Audio( ref needed, report ); case StreamDisableSelector.AlternateMP2Self: return streams.RemoveAlternateMP2Audio( ref needed, report ); case StreamDisableSelector.MP2IfAC3ExistsSelf: return streams.RemoveMP2AudioIfAC3Present( ref needed, report ); case StreamDisableSelector.SubTitlesSelf: return streams.RemoveSubTitles( ref needed, report ); case StreamDisableSelector.VideoTextSelf: return streams.RemoveVideoText( ref needed, report ); } // Done break; } case StreamDisableMode.Higher: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsHigher: return streams.RemoveAC3AudioIfMP2Present( ref needed, report ); case StreamDisableSelector.AlternateAC3Higher: return streams.RemoveAlternateAC3Audio( ref needed, report ); case StreamDisableSelector.AlternateMP2Higher: return streams.RemoveAlternateMP2Audio( ref needed, report ); case StreamDisableSelector.MP2IfAC3ExistsHigher: return streams.RemoveMP2AudioIfAC3Present( ref needed, report ); case StreamDisableSelector.SubTitlesHigher: return streams.RemoveSubTitles( ref needed, report ); case StreamDisableSelector.VideoTextHigher: return streams.RemoveVideoText( ref needed, report ); } // Done break; } case StreamDisableMode.Lower: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsLower: return streams.RemoveAC3AudioIfMP2Present( ref needed, report ); case StreamDisableSelector.AlternateAC3Lower: return streams.RemoveAlternateAC3Audio( ref needed, report ); case StreamDisableSelector.AlternateMP2Lower: return streams.RemoveAlternateMP2Audio( ref needed, report ); case StreamDisableSelector.MP2IfAC3ExistsLower: return streams.RemoveMP2AudioIfAC3Present( ref needed, report ); case StreamDisableSelector.SubTitlesLower: return streams.RemoveSubTitles( ref needed, report ); case StreamDisableSelector.VideoTextLower: return streams.RemoveVideoText( ref needed, report ); } // Done break; } } // None found return false; }
/// <summary> /// Wendet eine Deaktivierung auf eine Auswahl von Teildatenströmen (PID) an. /// </summary> /// <param name="streams">Die aktuelle Auswahl.</param> /// <param name="disable">Der gewünschte Aspekt.</param> /// <param name="mode">Der aktuelle Korrekturkontext der zugehörigen Quelle.</param> /// <param name="needed">Die Anzahl der noch benötigten Verbraucher, die geeignet korrigiert wird.</param> /// <param name="report">Protokolliert die vorgenommene Veränderung.</param> /// <returns>Gesetzt, wenn eine Veränderung stattgefunden hat.</returns> public static bool ApplyDisable(this StreamSelection streams, StreamDisableSelector disable, StreamDisableMode mode, ref int needed, Action <string, int> report) { // Check mode first switch (mode) { case StreamDisableMode.Self: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsSelf: return(streams.RemoveAC3AudioIfMP2Present(ref needed, report)); case StreamDisableSelector.AlternateAC3Self: return(streams.RemoveAlternateAC3Audio(ref needed, report)); case StreamDisableSelector.AlternateMP2Self: return(streams.RemoveAlternateMP2Audio(ref needed, report)); case StreamDisableSelector.MP2IfAC3ExistsSelf: return(streams.RemoveMP2AudioIfAC3Present(ref needed, report)); case StreamDisableSelector.SubTitlesSelf: return(streams.RemoveSubTitles(ref needed, report)); case StreamDisableSelector.VideoTextSelf: return(streams.RemoveVideoText(ref needed, report)); } // Done break; } case StreamDisableMode.Higher: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsHigher: return(streams.RemoveAC3AudioIfMP2Present(ref needed, report)); case StreamDisableSelector.AlternateAC3Higher: return(streams.RemoveAlternateAC3Audio(ref needed, report)); case StreamDisableSelector.AlternateMP2Higher: return(streams.RemoveAlternateMP2Audio(ref needed, report)); case StreamDisableSelector.MP2IfAC3ExistsHigher: return(streams.RemoveMP2AudioIfAC3Present(ref needed, report)); case StreamDisableSelector.SubTitlesHigher: return(streams.RemoveSubTitles(ref needed, report)); case StreamDisableSelector.VideoTextHigher: return(streams.RemoveVideoText(ref needed, report)); } // Done break; } case StreamDisableMode.Lower: { // All supported switch (disable) { case StreamDisableSelector.AC3IfMP2ExistsLower: return(streams.RemoveAC3AudioIfMP2Present(ref needed, report)); case StreamDisableSelector.AlternateAC3Lower: return(streams.RemoveAlternateAC3Audio(ref needed, report)); case StreamDisableSelector.AlternateMP2Lower: return(streams.RemoveAlternateMP2Audio(ref needed, report)); case StreamDisableSelector.MP2IfAC3ExistsLower: return(streams.RemoveMP2AudioIfAC3Present(ref needed, report)); case StreamDisableSelector.SubTitlesLower: return(streams.RemoveSubTitles(ref needed, report)); case StreamDisableSelector.VideoTextLower: return(streams.RemoveVideoText(ref needed, report)); } // Done break; } } // None found return(false); }
/// <summary> /// Wendet eine Ausschlußoption an. /// </summary> /// <param name="disable">Die gewünschte Option.</param> /// <param name="mode">Der aktuelle Bearbeitungsmodus.</param> /// <param name="needed">Die Anzahl der noch benötigten Verbraucher, bei Bedarf korrigiert.</param> /// <param name="report">Protokolliert die vorgenommenen Veränderungen.</param> public void ApplyDisable( StreamDisableSelector disable, StreamDisableMode mode, ref int needed, Action<SourceSelection, string, int> report ) { // Initial value int neededStart = needed; // Process if (!CurrentStreams.ApplyDisable( disable, mode, ref needed, ( m, c ) => { if (null != report) report( Source, m, c ); } )) return; // Remember corrected settings OriginalStreams = CurrentStreams; // Correct consumer count ConsumerCount = ConsumerCount.Value - (neededStart - needed); }