News for hackers. Stuff that matters.
Re:15 years of VLC and VideoLAN by gioele on Tuesday February 02, 2016 @01:58AM (#11017989)
I have a theory that I call "just one small fix". I think FOSS media players can handle more video files (not just formats) because most of the times the errors that makes them unplayable are just small mistakes in the way things are encoded.

Does a certain camera produces only even timestamps? Let's check for that fix it, it is "just one small fix: one if and a division". Is that MPEG encoded with swapped croma? Let's detect it and fix it, it is "just ome small fix: one if and a swap".

Over the time FOSS projects accumulate all these fixes and one day you realize that they can read practically everything as if a single person sat down and wrote that super-robust code in one go. Proprietary software cannot benefit from this kind of drive-by contributions.

Re:15 years of VLC and VideoLAN by AndrewUnmuted on Tuesday February 02, 2016 @09:41AM (#11019624)
Your theory definitely has some weight to it. You should peruse the FFmpeg git server and see what the commits consist of. Most of the time, the changes comprise no more than one line, and involve the changing of an operator or adding on to an if statement.

Media codecs take a really long time to disrupt the continuum, and often times, decoders can play back other kinds of media by just changing some header information in the file.

Re:15 years of VLC and VideoLAN by Bouncingsoul1 on Tuesday February 02, 2016 @02:35AM (#11018081)
One "if" here a "dirty bool flag" there and sooner or later your code is unmaintainable, I think OpenSource + Review prevents this kind of code.
Re:15 years of VLC and VideoLAN by TeMPOraL on Tuesday February 02, 2016 @07:28AM (#11019033)
If you figure out early enough that you need this kind of feature, you can architecture your code in such a way that those "drive-by fixes" are actually pluggable and maintainable.
Re:15 years of VLC and VideoLAN by nfriedly on Tuesday February 02, 2016 @09:27AM (#11019564)
Indeed - at my last job, we built a js widget that would go on customers websites, and we learned pretty quickly that we would need pluggable, sometimes customers-specific hacks. Things like old versions of Prototype.js that broke JSON.stringify or forcing Internet Explorer 8+ into IE7 emulation mode. One customer overwrote Array.prototype.forEach with a broken version that lost the scope. Fun times.