示例#1
0
 public void finishedAnalysis(SourceInfo info, bool error, string errorMessage)
 {
     if (error)
     {
         MessageBox.Show(errorMessage, "Source detection failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
         filters = new DeinterlaceFilter[] {
             new DeinterlaceFilter("Error", "#An error occurred in source detection. Doing no processing")
         };
     }
     else
     {
         this.filters = ScriptServer.GetDeinterlacers(info).ToArray();
     }
     interlaced = (info.sourceType != SourceType.PROGRESSIVE);
     finished   = true;
 }
示例#2
0
 public void finishedAnalysis(SourceInfo info, bool error, string errorMessage)
 {
     if (error)
     {
         MessageBox.Show(errorMessage, "Source detection failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
         filters = new DeinterlaceFilter[] {
             new DeinterlaceFilter("Error", "#An error occurred in source detection. Doing no processing")};
     }
     else if (info.sourceType == SourceType.NOT_ENOUGH_SECTIONS)
     {
         MessageBox.Show("Could not find enough useful sections to determine source type for " + job.Input, "Source detection failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
         filters = new DeinterlaceFilter[] {
             new DeinterlaceFilter("Error", "#Not enough useful sections for source detection. Doing no processing")};
     }
     else
         this.filters = ScriptServer.GetDeinterlacers(info).ToArray();
     interlaced = (info.sourceType != SourceType.PROGRESSIVE);
     finished = true;
 }
示例#3
0
        private void FinishProcessing()
        {
            _mre.Set();  // Make sure nothing is waiting for pause to stop

            isStopped = true;

            if (error)
            {
                finishedAnalysis(null, ExitType.ERROR, errorMessage);
                return;
            }

            if (!continueWorking)
            {
                finishedAnalysis(null, ExitType.ABORT, String.Empty);
                return;
            }

            if (fieldOrder == FieldOrder.VARIABLE &&
                d2vFileName.Length == 0) // We are stuck for field order information, lets just go for what we have most of
            {
                fieldOrder = (bffCount > tffCount) ? FieldOrder.BFF : FieldOrder.TFF;
            }

            SourceInfo info = new SourceInfo();

            info.sourceType = type;
            if (type == SourceType.DECIMATING)
            {
                info.decimateM = decimateM;
            }
            info.fieldOrder     = fieldOrder;
            info.majorityFilm   = majorityFilm;
            info.analysisResult = analysis;
            info.isAnime        = isAnime;

            finishedAnalysis(info, ExitType.OK, String.Empty);
        }
示例#4
0
        public static List <DeinterlaceFilter> GetDeinterlacers(SourceInfo info)
        {
            List <DeinterlaceFilter> filters = new List <DeinterlaceFilter>();

            if (info.sourceType == SourceType.PROGRESSIVE)
            {
                filters.Add(new DeinterlaceFilter(
                                "Do nothing",
                                "#Not doing anything because the source is progressive"));
            }
            else if (info.sourceType == SourceType.DECIMATING)
            {
                ScriptServer.AddTDecimate(info.decimateM, filters);
            }
            else if (info.sourceType == SourceType.INTERLACED)
            {
                ScriptServer.AddYadif(info.fieldOrder, filters, false);
                ScriptServer.AddYadif(info.fieldOrder, filters, true);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, false);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, true);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, false);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, true);
                if (info.fieldOrder != FieldOrder.VARIABLE)
                {
                    ScriptServer.AddLeakDeint(info.fieldOrder, filters);
                }
                ScriptServer.AddTMC(info.fieldOrder, filters);
                ScriptServer.AddFieldDeint(info.fieldOrder, filters, true, true);
                ScriptServer.AddFieldDeint(info.fieldOrder, filters, true, false);
            }
            else if (info.sourceType == SourceType.FILM)
            {
                ScriptServer.AddTIVTC("", info.isAnime, false, true, false, info.fieldOrder, filters);
                ScriptServer.AddIVTC(info.fieldOrder, false, true, filters);
            }
            else if (info.sourceType == SourceType.HYBRID_FILM_INTERLACED ||
                     info.sourceType == SourceType.HYBRID_PROGRESSIVE_FILM)
            {
                ScriptServer.AddTIVTC("", info.isAnime, true, info.majorityFilm, false,
                                      info.fieldOrder, filters);
                ScriptServer.AddTIVTC("", info.isAnime, true, info.majorityFilm, true,
                                      info.fieldOrder, filters);
                ScriptServer.AddIVTC(info.fieldOrder, true, info.majorityFilm, filters);
            }
            else if (info.sourceType == SourceType.HYBRID_PROGRESSIVE_INTERLACED)
            {
                ScriptServer.AddYadif(info.fieldOrder, filters, false);
                ScriptServer.AddYadif(info.fieldOrder, filters, true);
                ScriptServer.AddTDeint(info.fieldOrder, filters, false, false, false);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, true);
                ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, false);
                ScriptServer.AddTDeint(info.fieldOrder, filters, false, true, true);
                ScriptServer.AddFieldDeint(info.fieldOrder, filters, false, true);
                ScriptServer.AddFieldDeint(info.fieldOrder, filters, false, false);
                if (info.fieldOrder != FieldOrder.VARIABLE)
                {
                    ScriptServer.AddLeakDeint(info.fieldOrder, filters);
                }
                ScriptServer.AddTMC(info.fieldOrder, filters);
            }
            return(filters);
        }
示例#5
0
 public void finishedAnalysis(SourceInfo info, bool error, string errorMessage)
 {
     if (error)
         Invoke(new MethodInvoker(delegate
         {
             MessageBox.Show(this, errorMessage, "Error in analysis", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }));
     else
     {
         try
         {
             info.isAnime = deintIsAnime.Checked;
             Invoke(new MethodInvoker(delegate
             {
                 deintProgressBar.Enabled = false;
                 this.DeintInfo = info;
                 if (deintSourceType.SelectedIndex < 1)
                 {
                     deinterlace.Enabled = false;
                     deinterlace.Checked = false;
                 }
                 else
                     deinterlace.Enabled = true;
                 if (deinterlaceType.Text == "Do nothing")
                     deinterlace.Checked = false;
                 else
                     deinterlace.Checked = true;
                 deintStatusLabel.Text = "Analysis finished!";
                 analyseButton.Text = "Analyse";
             }));
         }
         catch (Exception) { } // If we get any errors, it's most likely because the window was closed, so just ignore
     }
     detector = null;
 }
示例#6
0
 public static List<DeinterlaceFilter> GetDeinterlacers(SourceInfo info)
 {
     List<DeinterlaceFilter> filters = new List<DeinterlaceFilter>();
     if (info.sourceType == SourceType.PROGRESSIVE)
     {
         filters.Add(new DeinterlaceFilter(
             "Do nothing",
             "#Not doing anything because the source is progressive"));
     }
     else if (info.sourceType == SourceType.DECIMATING)
     {
         ScriptServer.AddTDecimate(info.decimateM, filters);
     }
     else if (info.sourceType == SourceType.INTERLACED)
     {
         ScriptServer.AddYadif(info.fieldOrder, filters, false);
         ScriptServer.AddYadif(info.fieldOrder, filters, true);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, false);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, true);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, false);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, true);
         if (info.fieldOrder != FieldOrder.VARIABLE)
             ScriptServer.AddLeakDeint(info.fieldOrder, filters);
         ScriptServer.AddTMC(info.fieldOrder, filters);
         ScriptServer.AddFieldDeint(info.fieldOrder, filters, true, true);
         ScriptServer.AddFieldDeint(info.fieldOrder, filters, true, false);
     }
     else if (info.sourceType == SourceType.FILM)
     {
         ScriptServer.AddTIVTC("", info.isAnime, false, true, false, info.fieldOrder, filters);
         ScriptServer.AddIVTC(info.fieldOrder, false, true, filters);
     }
     else if (info.sourceType == SourceType.HYBRID_FILM_INTERLACED ||
         info.sourceType == SourceType.HYBRID_PROGRESSIVE_FILM)
     {
         ScriptServer.AddTIVTC("", info.isAnime, true, info.majorityFilm, false,
             info.fieldOrder, filters);
         ScriptServer.AddTIVTC("", info.isAnime, true, info.majorityFilm, true,
             info.fieldOrder, filters);
         ScriptServer.AddIVTC(info.fieldOrder, true, info.majorityFilm, filters);
     }
     else if (info.sourceType == SourceType.HYBRID_PROGRESSIVE_INTERLACED)
     {
         ScriptServer.AddYadif(info.fieldOrder, filters, false);
         ScriptServer.AddYadif(info.fieldOrder, filters, true);
         ScriptServer.AddTDeint(info.fieldOrder, filters, false, false, false);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, false, true);
         ScriptServer.AddTDeint(info.fieldOrder, filters, true, true, false);
         ScriptServer.AddTDeint(info.fieldOrder, filters, false, true, true);
         ScriptServer.AddFieldDeint(info.fieldOrder, filters, false, true);
         ScriptServer.AddFieldDeint(info.fieldOrder, filters, false, false);
         if (info.fieldOrder != FieldOrder.VARIABLE)
             ScriptServer.AddLeakDeint(info.fieldOrder, filters);
         ScriptServer.AddTMC(info.fieldOrder, filters);
     }
     return filters;
 }
示例#7
0
        private void finishProcessing()
        {
            if (error)
            {
                finishedAnalysis(null, true, errorMessage);
                return;
            }

            if (!continueWorking)
            {
                return;
            }

            if (fieldOrder == FieldOrder.VARIABLE &&
                d2vFileName.Length == 0) // We are stuck for field order information, lets just go for what we have most of
                fieldOrder = (bffCount > tffCount) ? FieldOrder.BFF : FieldOrder.TFF;

            SourceInfo info = new SourceInfo();
            info.sourceType = type;
            info.decimateM = decimateM;
            info.fieldOrder = fieldOrder;
            info.majorityFilm = majorityFilm;

            finishedAnalysis(info, false, null);
        }