{"id":161,"date":"2013-01-18T17:18:26","date_gmt":"2013-01-18T17:18:26","guid":{"rendered":"http:\/\/blogs.gentoo.org\/lu_zero\/?p=161"},"modified":"2013-01-19T06:36:26","modified_gmt":"2013-01-19T06:36:26","slug":"the-case-of-defaults-libav-vs-ffmpeg","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/lu_zero\/2013\/01\/18\/the-case-of-defaults-libav-vs-ffmpeg\/","title":{"rendered":"The case of defaults (Libav vs FFmpeg)"},"content":{"rendered":"<p>I tried not to get into this discussion, mostly because it will degenerate to a mud sliding contest.<\/p>\n<p><a href=\"http:\/\/aballier.wordpress.com\/2013\/01\/18\/ffmpeg-vs-libav-a-distribution-maintainer-point-of-view-almost-two-years-after-the-split\/\">Alexis<\/a> did not take well the fact that\u00a0<a href=\"http:\/\/blogs.gentoo.org\/scarabeus\/2013\/01\/15\/libav-going-to-be-default-provider-for-your-codec-experience\/\">Tom\u00e1\u0161<\/a> changed the default provider for libavcodec and related libraries.<\/p>\n<p>Before we start, one point:<\/p>\n<p>I am as biased as Alexis, as we are both involved on the projects themselves. The same goes for Diego, but does not apply to Tom\u00e1\u0161, he is just a downstream by transition (libreoffice uses gstreamer that uses *only* Libav).<\/p>\n<p>Now the question at hand: which should be the default? <a href=\"http:\/\/ffmpeg.org\">FFmpeg<\/a> or <a href=\"http:\/\/libav.org\">Libav<\/a>?<\/p>\n<p>How to decide?<\/p>\n<p>&#8211; Libav has a strict review policy every patch goes through a review and has to be polished enough before landing the tree.<\/p>\n<p>&#8211; FFmpeg merges daily what had been done in Libav and has a more lax approach on what goes in the tree and how.<\/p>\n<p>&#8211; Libav has <a href=\"http:\/\/fate.libav.org\/\">fate<\/a> running on most architectures, many of those are running Gentoo, usually real hardware.<\/p>\n<p>&#8211; FFmpeg has an old <a href=\"http:\/\/fate.ffmpeg.org\/\">fate<\/a> with less architectures, many qemu emulations.<\/p>\n<p>&#8211; Libav defines the API<\/p>\n<p>&#8211; FFmpeg follows adding bits here and there to &#8220;diversify&#8221;<\/p>\n<p>&#8211; Libav has a major release per season, minor releases when needed<\/p>\n<p>&#8211; FFmpeg releases a lot touting a lot of *Security*Fixes* (usually old code from the ancient times eventually fixed)<\/p>\n<p>&#8211; Libav does care about crashes and fixes them, but does not claim every crash is a Security issue.<\/p>\n<p>&#8211; FFmpeg goes by leaps to add MORE features, no matter what (including picking wip branches from my personal github and merging them before they are ready&#8230;)<\/p>\n<p>&#8211; Libav is more careful, thus having less fringe features and focusing more polishing before landing new stuff.<\/p>\n<p>So if you are a downstream you can pick what you want, but if you want something working everywhere you should target Libav.<\/p>\n<p>If you are missing a feature from Libav that is in FFmpeg, feel free to point me to it and I&#8217;ll try my best to get it to you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I tried not to get into this discussion, mostly because it will degenerate to a mud sliding contest. Alexis did not take well the fact that\u00a0Tom\u00e1\u0161 changed the default provider for libavcodec and related libraries. Before we start, one point: I am as biased as Alexis, as we are both involved on the projects themselves. &hellip; <a href=\"https:\/\/blogs.gentoo.org\/lu_zero\/2013\/01\/18\/the-case-of-defaults-libav-vs-ffmpeg\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The case of defaults (Libav vs FFmpeg)<\/span><\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3,14],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1aGWH-2B","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/161"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":4,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":164,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/161\/revisions\/164"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}