[HN Gopher] NTSC encoding/decoding in C89 using only integers an...
       ___________________________________________________________________
        
       NTSC encoding/decoding in C89 using only integers and fixed point
       math
        
       Author : davikr
       Score  : 29 points
       Date   : 2022-12-21 20:22 UTC (2 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | userbinator wrote:
       | I know what NTSC is, but what exactly is it encoding to/from?
       | ADC-sampled composite video (at what samplerate?) to/from
       | RGB/YCbCr?
        
         | Dwedit wrote:
         | The first step for any NTSC decoder is to go to YIQ. From
         | there, you go to any other color space of your choice.
         | 
         | This is mainly for decoding the composite video signal
         | generated by a computer or console. For example, the NES
         | generates a 12-step square wave for its video output, and you'd
         | decode that to YIQ then convert that to RGB.
        
       | anyfoo wrote:
       | NTSC and PAL are very fun. Using quadrature amplitude modulation
       | to add color to the monochrome signal in a backward compatible
       | way was so ingenious. PAL added things to make it better after
       | some learnt lessons with NTSC, foremost the 180deg phase shift
       | with each lines, which cancels out phase errors.
       | 
       | (Fun facts: Because of that, countries with PAL instead of NTSC
       | never knew what a "tint control" on the TV was, and the nostalgic
       | 80s VHS look is also missing that blueish/purple color shift
       | there.)
       | 
       | I wrote both an NTSC+PAL decoder in Matlab, and a PAL encoder in
       | an FPGA (also fixed point), which I use in an actual project as
       | composite video output. Decoders are harder and less
       | straightforward than encoders, with lots of optimizing potential,
       | because you need to filter the color signal out (I look forward
       | to seeing what this code did). If you really, truly understand
       | how NTSC and PAL work in their mathematical details, you may get
       | your mind blown away by reading about this decoder, which is
       | likely the best PAL decoder that ever existed: http://www.jim-
       | easterbrook.me.uk/pal/
       | 
       | Writing my own encoder and decoder was super enlightening, and
       | there are tons of details to nerd out on, e.g. when you get into
       | data that's encoded into the sync gap for Videotext, closed
       | captions, and other stuff.
        
         | phone8675309 wrote:
         | Explains the PAL region epithet for NTSC - Never Twice the Same
         | Color
        
           | anyfoo wrote:
           | Yep, that's the reason! The ingenious idea of using quantum
           | amplitude modulation unfortunately also meant that slight
           | phase shifts--which happen easily in broadcast TV--appear as
           | color errors.
           | 
           | PAL fixed it by flipping the phase around every line. By
           | subtracting the current line from the previous line, the
           | phase error would cancel out (but is also more expensive
           | since you need to remember the last line, in a delay line or
           | memory[1]). So, always the same color. (But not ATSC, that's
           | something else entirely...)
           | 
           | [1] Well, there wer supposedly "PAL simple" receivers in the
           | very beginning, where no processing of the phase flip was
           | done and your eye was supposed to average the difference out.
           | Probably looked terrible unless you were sitting really far
           | away...
        
       | [deleted]
        
       ___________________________________________________________________
       (page generated 2022-12-21 23:00 UTC)