

                            ShowCombedTIVTC v1.4  -  HELP FILE  (20201214)



GENERAL INFO:


      Supports 8-16 bit Y, planar YUV (4:1:1, 4:2:0, 4:2:2, 4:4:4) and YUY2 colorspaces

      ShowCombedTIVTC provides an easy means to tweak the combed frame detection parameters
   of TFM (cthresh, MI, chroma, blockx, blocky, metric) and to see how they effect which pixels
   are detected as combed and what blocks have values above MI.  IsCombedTIVTC is a utility
   function that can be used within AviSynth's conditionalfilter, and uses TFM's inbuilt combed
   frame detection, to test whether or not a frame is combed and returns true if it is and
   false if it isn't.


   syntax=>

        ShowCombedTIVTC(int cthresh, bool chroma, int MI, int blockx, int blocky,
                          int metric, bool debug, int display, bool fill, int opt)

        IsCombedTIVTC(int cthresh, int MI, bool chroma, int blockx, int blocky,
                          int metric, int opt)


   example usage of IsCombedTIVTC =>

        conditionalfilter(last,source1,source2,"IsCombedTIVTC","=","true")



PARAMETERS:


     The cthresh/MI/chroma/blockx/blocky/metric parameters are exactly the same as the
     corresponding parameters in TFM so I have just copied their descriptions.


     cthresh -

         This is the area combing threshold used for combed frame detection.  It is like
         dthresh or dthreshold in telecide() and fielddeinterlace().  This essentially
         controls how "strong" or "visible" combing must be to be detected.  Larger values
         mean combing must be more visible and smaller values mean combing can be less
         visible or strong and still be detected.  Valid settings are from -1 (every pixel
         will be detected as combed) to 255 (no pixel will be detected as combed).  This
         is basically a pixel difference value.  A good range is between 8 to 12.

         Default:  9  (int)


     MI -

         The # of combed pixels inside any of the blocky by blockx size blocks on the frame
         for the frame to be detected as combed. While cthresh controls how "visible" the
         combing must be, this setting controls "how much" combing there must be in any localized
         area (a window defined by the blockx and blocky settings) on the frame.  Min setting = 0,
         max setting = blocky x blockx (at which point no frames will ever be detected as combed).

         Default:  80  (int)


     chroma -

         Sets whether or not chroma is considered in the combed frame decision.  Only
         disable this if your source has chroma problems (rainbowing, etc...) that are
         causing problems for the combed frame detection with chroma enabled.  Actually,
         setting this to false is usually a good idea unless there is chroma only combing
         in the source.
         Parameter is ignored and treated as false for greyscale input.

            true = chroma is included
            false = chroma is not included

         Default:  false  (bool)


     blockx -

         Sets the x-axis size of the window used during combed frame detection.  This has
         to do with the size of the area in which MI number of pixels are required to be
         detected as combed for a frame to be declared combed.  See the MI parameter
         description for more info.  Possible values are any number that is a power of
         2 starting at 4 and going to 2048 (i.e. 4, 8, 16, 32, ... 2048).

         Default:  16  (int)


     blocky -

         Sets the y-axis size of the window used during combed frame detection.  This has
         to do with the size of the area in which MI number of pixels are required to be
         detected as combed for a frame to be declared combed.  See the MI parameter
         description for more info.  Possible values are any number that is a power of
         2 starting at 4 and going to 2048 (i.e. 4, 8, 16, 32, ... 2048).

         Default:  16  (int)


     metric -

         Sets which spatial combing metric is used to detect combed pixels.  Possible
         options:

              Assume 5 neighboring pixels (a,b,c,d,e) positioned vertically.

                    a
                    b
                    c
                    d
                    e

            0:  d1 = c - b;
                d2 = c - d;
                if ((d1 > cthresh && d2 > cthresh) || (d1 < -cthresh && d2 < -cthresh))
                {
                   if (abs(a+4*c+e-3*(b+d)) > cthresh*6) it's combed;
                }

            1:  val = (b - c) * (d - c);
                if (val > cthresh*cthresh) it's combed;

         Metric 0 is what is/showcombedtivtc used previous to v1.2.  Metric 1 is the
         combing metric used in Donald Graft's FieldDeinterlace()/IsCombed() funtions
         in decomb.dll.

         Default:  0  (int)


     opt -

         Controls which optimizations are used.  Possible settings:

         Note: do not use in production, only for debug, can be changed later, e.g. when AVX2 gets number 5

            0 - use c routines
            1 - (removed in 2020 -- use mmx routines)
            2 - (removed in 2020 -- use isse routines)
            3 - use sse2 routines
            4 - auto detect

         Default:  4  (int)


     The following parameters are only used by ShowCombedTIVTC and not by IsCombedTIVTC!


     debug -

         For each frame the mic value, along with the number of detected combed pixels and
         number of blocks with mic counts above MI will be output via OutDebugString().
         You can use the free program "Debugview" to view this output.  When a frame has a
         mic value > MI the debug output will output a combed frame detected message.

         Default:  false  (bool)


     display -

         Controls what is written and/or drawn on the output frame.  Possible settings:

            0 - pixels detected as combed are marked in white
            1 - the block with the highest count value will be either outlined or
                   filled in white depending on the value of the "fill" parameter
            2 - all blocks with counts above MI will be either outlined or filled
                   in white depending on the value of the "fill" parameter
            3 - 0 + 1
            4 - 0 + 2
            5 - nothing, no output

         Options 0-4 also output all of the information that is output via the debug
         option (# pixels detected as combed, # blocks with counts > MI, MIC value of
         frame).

         Default:  3  (int)


      fill -

         Only used by display = 1, 2, 3, 4.  If fill is set to true then blocks are filled
         in white with a black single pixel mark in the center.  If fill is set to false
         then blocks are outlined in white/black (depending on background color).

         Default:  false (bool)



CHANGE LIST:
   v1.4 - (20201214 - pinterf)

      - parameter 'chroma' ignored and treated as false for greyscale input


   v1.3 - (20200611 - pinterf)

      - 10-16 bit and greyscale support
          (20200508 - pinterf)
      - opt = 1 and opt = 2 is like opt = 3
      - add all planar YUV support (422, 444, 411) besides 420

   n/a    (12/07/2006)

      - fixed IsCombedTIVTC causing tfm to throw an error on construction resulting
          in invalid output


   v1.2 - (03/23/2006)

      + added new spatial combing metric (metric=1) and metric parameter
      - replace frame copy with makewritable
      - fixed cthresh < 0 not working correctly


   v1.1 - (01/24/2006)

      + ported mmx/isse/sse2 optimizations from tfm
      + added opt parameter



TO DO LIST:


    - nothing



contact:   forum.doom9.org  nick = tritical  or  email:  kes25c@mizzou.edu
