About TimVideos:

TimVideos.us is a group of exciting projects which together create a system for doing both recording and live event streaming for conferences, meetings, user groups and other presentations. We hope that, through our projects, the costs and expertise currently required to produce live streaming events will be reduced to near zero.

HDMI2USB is a part of various things done by the organization. The HDMI2USB project develops affordable hardware options to record and stream HD videos (from HDMI & DisplayPort sources) for conferences, meetings and user groups.

Description copied from:

About Project:

My project is titled “Add hardware mixing support to HDMI2USB firmware” and had the aim of developing a hardware mixer block. This block enables users to implement real time mixing of video streams on compatible devices such as the Atlys or Opsis boards. These video streams could come from any of the HDMI inputs, derived from a pattern or in the future even other HDMI2USB devices!

The initial aim of the project was to have several video effects like wipe, crossfade and fade to black effects. I have been successfully able to make a simple fade between two inputs work. Here a demo video of final output.
Link to final working video

Major Tasks Finished:

  • Added a pixel heartbeat to output
    • Initially part of GSoC proposal task
    • Merged with existing repo
  •  Setup Up Opsis Hardware for testing
    • Figure Out HDMI2USB-mode-switch tool
    • Successfully try make load-gateware and make load-lm32
  •  Run Length Encoding
    • RLE in Python and C
  • Documentation on 16 bit floating point Number
    • Also added test codes for results in doc
  •  Conversion Modules for 16 bit Floating Point to 8 bit RGB
    • RGB to Float16
    • Float16 to RGB
    • Tested in Simulation using image files
    • Tested in Hardware adding to video pipeline
  •  Arithmetic Modules for 16 bit floating point Number
    • Floating Point Adder
    • Floating Point Multiplier
    • Tested in Simulation using random data
    • Tested in Hardware by adding to video Pipeline
  •  Adding Float Modules to Video Pipeline
    • Static Mixing
  •  Rework HDMI Out
    • Added DMA engines to HDMI_OUT core
    • Static and Dynamic Mixing
  •  Package the reworked HDMI OUT
    • Initially with dummy mixer
    • Add float modules to mixer

Major Tasks left:

  • RLE Encoder and Decoder
  • Gamma Correction hardware

Link to Code:



Pull Requests:

Other Links:

GSoC project proposal

Design Document on 16 bit Floating Point Unit

GSoC Blog with Daily and Weekly Updates


I would like to thank my mentor Tim ‘mithro’ Ansell for the support and the help he provided. He was always there for me, no matter what the problem was. It would not have been possible without him. I learned a lot from this project. As such, I have all the intentions of continuing my contribution to the Timvideos community


In case there are any queries, send an email to shashankgangrade@gmail.com


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s