Codebase list libdv / debian/latest README.encoder
debian/latest

Tree @debian/latest (Download .tar.gz)

README.encoder @debian/latestraw · history · blame

This is a small explanation of the statistics tables generated by encodedv:

CYCLE are the cycles in the quantization loop until a matching QNO is found 
      (affects speed)

RUNS/CYCLE (for 3-pass VLC) : Tries to skip quantisation steps if it is 
      clear that a _lot_ more bits are needed. Makes things faster but 
      maybe quality drops a little bit. Smaller values mean better quality and
      larger values mean that you gained some speed.

QNO   is the quantization number. Larger values mean lesser quantization
      (15=no quantization at all!) and better quality. You will notice, that
      there are gaps between the values in the statistics. (Especially if 
      you choose "--vlc-passes=3", where qnos are most likely 15 or 8.)
      This is normal behaviour since depending on the quantization CLASS
      some QNOs don't gain you anything and are therefore skipped. There are
      even codes, that _never_ gain you anything regardless of the chosen
      classes.

CLASS is the quantization class. (Greater values mean higher quantization.) 
      This is used to quantizise larger AC coefficients more than smaller ones.
      For now, we use the following table 

               max AC-value
               0 - 11  |  12 - 23  |  24 - 35  | >35
               -----------------------------------------
             Y   0     |     1     |     2     |   3
            CR   1     |     2     |     3     |   3
            CB   2     |     3     |     3     |   3

      from the IEC documentation (which is only given for reference.)
      If you want to improve this, keep the following in mind:
      * These classes are chosen with the vlc code lengths in mind. 
        There is one code length for codes between 0..11, for 12..23 etc.
      * You _have_ to use class 3 for AC coeffs. larger than 255, since they
        can't get encoded otherwise.
      * It is sensible to quantizise CR and CB values more than Y values.
        (a) they don't matter that much and b) their bit budget is therefore
        smaller!)
      * Larger classes give you finer control over the QNO.
      * Smaller classes don't have necessarily better quality since you may
        be encoding quantization noise. That's from the IEC document. I don't
        know, why they consider picture details with extremely small
        coefficients as noise, but I agree that large coefficients don't 
        really need all the lower bits.
VLC OVERF is the number of vlc_encoder overflows you encountered. That means
      that some AC coefficients simply aren't encoded!
      At best it means your picture is somewhat blurred and at worst it has 
      a very psychedelic touch...
      This should only happen in two cases
      a) if you use "--vlc-passes==1,2" and QNO 0
      b) static_qno since the simple heuristic used can fail easily

DCT MODE is the DCT mode chosen. DCT248 is used for fast moving sequences, 
      where the two fields encoded differ a lot. DCT88 has generally better
      quality. The decision is based on the accumulated differences between 
      the two fields that are larger than a hard coded threshold divided
      by the same difference in x direction. This makes sure that spotlights
      are encoded with DCT 88 and not with DCT 248.
      Something like (sum_i abs(field1[i] - field2[i])) / 
	              sum_i abs(block[i+1] - block[i])) > dct_248_limit
TODO:
     - finally go to the library and get the header block specifications ;-)
     - think of a better way to implement static_qno for 1,3 vlc passes
     - do correct synchronisation between audio and video (synchronise
       against system clock since we can't be sure, that the soundcard
       clock is 100% accurate)
     - skip frames correctly
     - find a way to detect NTSC / PAL for video or finally add a 
       force-video-format option.