Migrating to a New SDK

Recent years I was actively developing a new framework. I wrote QtAV when I knew nothing about multimedia, so the framework is not well designed. The new framework MDK is better at any aspect.

MDK is written in pure C++(and of cause ObjC++ for Apple), no more Qt dependency. Qt is greate, but it's huge, and make deployment hard. Most of features QtAV needed in Qt can be easily done with powerful modern C++. Without Qt, MDK can be integrated in more applications.

C++17 is required to build MDK. But C++11 runtime is enough to use MDK. So MDK runs on all platforms providing C++11. Considering the C++ STL ABI stability, libc++ is used by default for unix platforms. GNU STL(libstdc++) is also supported, but it breaks ABI all the time, from 4.9 to 5.0, from 6.0 to 7.0 etc., so a binary SDK built with gcc may not run on another platform. With libc++, the same SDK binary should run on almost all linux distributions. On ubuntu >= 14.04 run apt install libc++1 libc++abi1 to install libc++.

Why Binary SDK only?

Open Source?

No, at least not for all users. But some modules and dependencies will be. For example MFT decoder, Android utilities.

ABI Stability

libmdk SDK only provides C APIs and it's C++ wrapper, and the ABI of C APIs changes rarely between versions. So it's ABI can be considered stable. You can simply replace a new SDK binary without rebuilding your program to fix SDK bugs and get new features.

Compare with QtAV


Qt is a greate gui toolkit, and QML is the best language to write ui. libmdk can be used in Qt easily, via QOpenGL apis, or RHI, see https://github.com/wang-bin/mdk-examples/tree/master/Qt

There is also a qtmultimedia plugin in Qt Marketplace, so you can use libmdk features without changing your qtmultimedia code. Source code is here

More about the SDK