codecs.multimedia.cx codecs.multimedia.cx

A look on weird audio codec

Since I still have nothing better to do I decided to look at ALF2CD audio codec. And it turned out to be weird. The codec is remarkable since while it seems to be simple transform+coefficient coding it does that in its own unique way: transform is some kind of integer FFT approximation and coefficient coding is done with CABAC-like approach. Let’s review all details for the decoder as much as I understood them (so not much). Framing....

codecs.multimedia.cx codecs.multimedia.cx

Vivo2 revisited

Since I have nothing better to do (after a quick glance at H.264 decoder—yup, nothing) I decided to look at Vivo 2 again to see if I can improve it from being “decoding and somewhat recognizable” to “mostly okay” stage. To put a long story short, Vivo 2 turned out to be an unholy mix of H.263 and MPEG-4 ASP. On one hoof you have H.263 codec structure, H.263 codebooks and even the unique feature of H.263 called PB-frames. On...

codecs.multimedia.cx codecs.multimedia.cx

NihAV: optimisation potential

Today I can say what I’ve wasted about two months on: it was H.264 decoder. For now it’s the only entry in nihav-itu crate but I might add G.7xx decoders there or even the standard H.263 decoder in addition to all those decoders based on it. Performance-wise it is not very good, about 2.5-3x times slower than libavcodec one without SIMD optimisations on random BaidUTube 720p videos but I’ve not tried to make it the fastest one...

codecs.multimedia.cx codecs.multimedia.cx

H.264 specification sucks

So it has come to a stage where I have nothing better to do so I tried to write H.264 decoder for NihAV (so I can test the future nihav-player with the content beside just sample files and cutscenes from various games). And while I’ve managed to decode at least something (more about that in the end) the specification for H.264 sucks. Don’t get me wrong, the format by itself is not that bad in design but the way it’s documented is...

codecs.multimedia.cx codecs.multimedia.cx

Hacking to solve adventure game puzzles…

I love adventure games (or simply quests as they’re known where I came from) but sometimes the best way to pass some moment there is to cheat. One of such instances is The Legend of Kyrandia – Book One which is a nice game I play again sometime but there’s the infamous maze there that it not fun. And in the old times I could work around it by hex-editing a savegame to give me the ever-glowing fireberry, stones and some other...

codecs.multimedia.cx codecs.multimedia.cx

NihAV: towards an audio player

So after weeks of doing nothing and looking at lossless audio codecs (in no particular order) I’m going back to developing NihAV and more particularly an audio player. The main problem with nihav-player concept is that 1) it’s primarily video player 2) it’s based on outdated SDL1 instead of SDL2 3) the SDL1 wrapper especially in audio area was incomplete and my shim implementation for audio callback as a trait is not good enough...

codecs.multimedia.cx codecs.multimedia.cx

A look at VP1 and VP2

One of the issues with On2 VPx family is that they started it from VP3 while having four different TrueMotion codecs before that (it’s like the company was called Valve and not Duck at that time). But I wanted to look at some lossless audio codecs and there’s VocPack or VP for short which has versions 1 and 2. Bingo! This is a very old lossless audio codec that appeared in 1993 along with Shorten and, as it turns out, originated...

codecs.multimedia.cx codecs.multimedia.cx

Lossless audio codecs were more advanced than I thought

As I’d mentioned in a previous post on lossless audio codecs, I wanted to look at some of them that are still not reverse engineered for documentation sake. And I did exactly that so now entries on LA, OptimFROG and RK Audio are not stubs any more but rather contain some information on how the codecs work. And if you look at LA structure you see a lot of filters of various sizes and structure. Plus an adaptive weight used to select...

codecs.multimedia.cx codecs.multimedia.cx

Why Rust is not a mature programming language

While I have nothing against Rust as such and keep writing my pet project in Rust, there are still some deficiencies I find preventing Rust from being a proper programming language. Here I’d like to present them and explain why I deem them as such even if not all of them have any impact on me. Rust language problems First and foremost, Rust does not have a formal language specification and by that I mean that while some bits like...

codecs.multimedia.cx codecs.multimedia.cx

A Modest Proposal for AV2

Occasionally I look at the experiments in AV1 repository that should be the base for AV2 (unless Baidu rolls out VP11 from its private repository to replace it entirely). A year ago they added intra modes predictor based on neural network and in August they added a neural network based loop filter experiment as well. So, to make AV2 both simpler to implement in hardware and improve its compression efficiency I propose to switch all...

codecs.multimedia.cx codecs.multimedia.cx

A Quick Review of Actimagine Video Codecs

Now that (as I believe) I’ve fixed remaining reconstruction bugs in VX decoder, why not do a quick comparison of various video codecs developed by Actimagine and see how they differ (if at all). There seem to be the following codecs: Actimagine (VX) Mobiclip (Mods) Mobiclip (Moflex for 3DS also there’s a version of it for PC known as Mobiclip HD) And while they all are based on H.264 with finer block partitioning, there are some...