Beispiel #1
0
            /// <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;
        }
Beispiel #3
0
        /// <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);
            }