Skip to content

Oxbow 0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Sep 21:46
· 3 commits to main since this release
c9f5923

So this is a pretty big release under the hood.

Rendering

One of the things I didn't love about my original approach is that it had a multi-step process where we used the TwitchRenderCLI to render the chat into a video file, and then composited that chat video + VOD.

This meant a couple things:

  • First, the chat video was double-encoded. Not the end of the world, but not great. It should be fitting well within the compression range of the whole thing, but I didn't love it (insert nine inch nails copy of a copy of a...)
  • It was also kind of slow. Rendering the chat was a whole separate step, and executing the .net framework + skia was a bit expensive. It typically happened at the same time a VOD was downloading, but on a busy chat, and fast link, you'd be held up by it.
  • Lastly: disk space. Rendering out a large VOD + chat meant meany gigabytes of chat video sitting on disk while you're trying to download and composite.

The approach now is to still use the CLI, but leverage Core Text and Core Graphics to render the text ourselves at composite time. This gives us free support for all unicode (emoji's, right to left text, kanji, etc) for free (it also squashes some of the known issues the CLI has in those cases). ImageIO handles emotes and animating them for next to nothing also. And on a apple silicon chip, there's tons of chat rendering headroom that the encoder is never starved or waiting.

Crash reporting

App crashes, and on next launch we prompt to open a GH issue with the trace. It's simple, but it's a start. (There's also a new GH action for issues the resymbolize the crash)

New Signing.

Since we've moved this project to lofti studios, we're now signing it with that apple developer id (vs. my personal one).


The Nitty Gritty

  • Trim the Swift comments, and unblock OxbowTests on Xcode 27 by @barclay in #75
  • Render chat offline from embedded images, and share them across jobs by @barclay in #76
  • Design a native chat renderer, and correct the upstream-cadence claim by @barclay in #77
  • Render chat natively behind a hidden setting (native renderer, phase 1) by @barclay in #78
  • Stop a native render's dead FFmpeg from killing Oxbow by @barclay in #79
  • Draw badges, emotes, cheermotes and system messages natively (native renderer, phase 2) by @barclay in #80
  • Ship Inter's licence with the fonts by @barclay in #81
  • Make the native chat renderer the default, with a way back in Settings by @barclay in #82
  • Draw chat during the composite, with no render step (native renderer, phase 4) by @barclay in #84
  • Write the development guide for contributors by @barclay in #86
  • Sign releases as Lofti Studios, LLC by @barclay in #87
  • Attach the dSYM to each release by @barclay in #88
  • Offer to report a crash on the next launch by @barclay in #89
  • Prepare 0.6.0 by @barclay in #93

Full Changelog: v0.5.0...v0.6.0