Das kenn ich nur allzu gut, FFMpeg ist ein tolles Projekt, aber der Code ist gewöhnungsbedürftig. Das wird sich denke ich auch niemals ändern, aber sobald man notgedrungen die Header übersetzt hat "versteht" man zumindest die Logik dahinter. Ich mag mich nicht anmaßen das ganze zu bewerten, aber ich würde es persönlich so nicht machen. Anyway, es ist halt so wie es ist.
Ich hab vor ein paar Jahren mal die FFMPEG Player Komponente von
http://flashavconverter.com gekauft und regelmäßig angepasst. Der Autor aktualisiert in regelmäßigen Abständen die Header-Dateien. Leider nicht so häufig wie man das selber gerne hätte und dementsprechend musste ich irgendwann selber Hand anlegen.
Meine persönliche Erkenntnis daraus ist:
1. Die in den
DLL's exportierten Funktionen ändern sich eigentlich nie. Major-Updates entfernen Funktionen die als depreciated deklariert sind.
2. Die Anzahl der übersetzten Structs, sollten minimiert werden. Also alles was man nicht braucht, da reicht ein pointer.
3. AVCodecContext und AVFrame sind wichtig und da gilt der Hauptaugenmerk drauf.
Im Prinzip werden bei Minor-Updates neue Variablen in den Structs fröhlich angehängt und andere Variablen als depreciated mit einem Compilerflag versehen. Ändert sich die Majorversion wird fröhlich gekürzt. Solange man wirklich nur das nutzt, was man braucht, dann ist das ganze übersichtlich.