Re: [FFmpeg-devel] Reintroducing FFmpeg to Debian
On Mon, Aug 11, 2014 at 10:53:56PM +0200, wm4 wrote:
> To be fair, FFmpeg does its own "manual" symbol versioning by appending
> increasing numbers to function names. But the real problem are not
> these functions, but public structs. Imagine a new API user fighting to
> guess which fields in AVCodecContext must be set, or which must not be
> set. Seasoned FFmpeg developers probably don't know the horror.
There are some best practices in API design; one of them is to
minimize public structs as much as possible. Instead, have blind
pointers which are handed back by an "initialize object" function, and
then have setter/getter functions that allow you to fetch various
parameters or flags which modify how the object behaves. This allows
you to add or deprecate new flags, configuration parameters, in a
relatively sane way.
I have this dream/fantasy where all of the energy over developing and
maintaining two forks was replaced by a spirit of cooperations and the
developers working together to design a new API from scratch that
could be guaranteed to be stable, and then applications migrated over
to use this stable, well-designed, future-proofed API.
Call me a naive, over-optimistic dreamer, but.... :-)
(And, the yes, the new API probably should be a bit higher level.)
"Can we all just get along?" -- https://www.youtube.com/watch?v=1sONfxPCTU0