Skip to content

v1.1 Released

Compare
Choose a tag to compare
@sameer sameer released this 18 Jun 03:05
· 29 commits to master since this release
d30ff26

What's changed

Clock domain crossing improvements

To account for odd edge cases users might encounter, I've used clock domain crossing techniques where appropriate:

  • Audio sample moved from audio clock to pixel clock via a sync chain
  • Audio clock counter wrap sent over a sync chain from audio clock to pixel clock
  • TMDS coding moved from pixel clock to pixel clock x10 via a sync chain

Audio fixes

There were some TVs audio wasn't working for, because:

  • The audio CTS was 1 less than it should be
  • The audio sample packets are sent as soon as they are received
    • Instead, they are now buffered up until 4 are ready to be sent in a single burst

A big thanks goes to @LMN128 for the many hours spent debugging this with me.

Misc bugfixes/improvements

  • Vsync front porch was short because I misread CEA861-D diagrams
    • Shouldn't really matter, most HDMI sinks don't really rely on these timings from what I've read
  • Info frame checksum was one-off, preventing them from being accepted by displays
  • Gave types to all parameters to avoid confusion
  • Source product description info frame

Discussion

  • HDMI 2.0 implementation is a real possibility now that I have a copy of the spec. I don't have a device capable of 4k formats, so I'm holding off on it for now. Contact me if you are interested.
  • Reading E-DDC is possible according to @LMN128, who has tested it with the i2c master
  • There are a bunch of additional features HDMI has, like the audio return channel and 3D video formats
    • I can't implement everything, but feel free to open an issue if you need one of these
    • At the very least I can give you some tips on how to add it 😃