Video Recording (Part II)

Looking at the CVI documentation, (http://cmi.steverance.com/fairlight_docs/CVI_User_Manual.pdf) some great slides showing effects :

 

They all rely on having a screen buffer, where images taken from the live feed or sprites can be placed, and being able to mix (AND, OR, XOR, chroma keyed, analog mixed, etc.) that with live video. Predefined animations (shapes, random colors, gradients) can be added to these, and live video can also be filtered (pixelated, colorized, inverted, etc.).

One thing here I haven’t tested at all is recording an image and then recording another and creating a trail, for instance, what they appear to be calling Catch-Up, Doppelganger, and Trailing.

Now that I can store an image in memory, I could go back through it and modify it. I could invert, mirror, highlight edges, or do what they call a Checkerboard Slide shatter etc.

*******

Recording multiple images to overlay is difficult without a memory that has a write mask (as in case of BRAM) or byte enable pins on an SRAM, or having several seperate SRAMs. With the FPGA I’ve tried to quickly read the SRAM, store its contents, XOR with what I want to write, and then write that back, but haven’t had any success.

BRAMs with mask only apply to the 256×16 configuration. I can have 16 of these, but it means a only 4,096 pixels for the whole screen. Or a 64×64 pixel image like this :

ArtStation - 1-Bit 64x64 Environment

Dual port SRAMs are small and very expensive, not sure there are useful for the project.

I could store four parallel images in the same memory space with these SRAMs which have four byte enable signals. Beware the High Byte and Low Byte enable pins from smaller SRAMs, it just toggles between two banks of I/O and doesn’t appear to do anything else. 

GSI : https://www.mouser.fr/datasheet/2/771/840183236CGT-976441.pdf

Alliance : https://www.mouser.fr/datasheet/2/12/AS8C803625_801825-1288399.pdf

Rensas : https://www.mouser.fr/datasheet/2/698/REN_71V25761_DST_20200727-1995952.pdf

******

I am now imagining a new board which would have the following elements :

  • INPUT
    • Two video inputs with ESP32 and SD card : https://www.instructables.com/Play-Video-With-ESP32/
    • delay lines
    • select either comparator, amp, or individual bits
  • A single SRAM which with four byte enable signals

*****

Cool box pixellation effect from https://kevinkripper.com/vsynth :