[gst-devel] [gst-cvs] thomasvs gst-ffmpeg: gst-ffmpeg/ gst-ffmpeg/ext/ffmpeg/
Loïc Minier
lool+sf at via.ecp.fr
Wed Feb 14 17:54:14 CET 2007
On Wed, Feb 14, 2007, Edward Hervey wrote:
> Since ffmpeg doesn't want to do releases, I think we should *play the
> same game*. Namely : gst-ffmpeg cvs will only work with ffmpeg svn.
> Then when we do (pre-)releases, we mark which ffmpeg revision number
> that release was done against and ffmpeg will ONLY be able to link
> against that specific version. This might require not updating our
> dependencies
> This comes to the same as having a mirror... without all the hassle
> of maintaining it our side. It would then be up to distro packagers to
> take the burden of making sure which release/revision of gst-ffmpeg
> they need depending on what ffmpeg version they have installed
> system-wide.
I think it would put gst-ffmpeg in a better solution than it is now.
Concerning dists, I can imagine the development cycle in distros would
go like this:
1) new ffmpeg snapshot gets uploaded to $dist
2) gst-ffmpeg gets bug reports in $dist that it doesn't work
3) new corresponding gst-ffmpeg snapshot gets uploaded to $dist
Which is acceptable IF we have: a) a responsive gst-ffmpeg maintainer
in $dist and b) an always up-to-date gst-ffmpeg upstream (that's you!)
However, I would like to mention at least one other development model
I've seen to handle a similar situation: mozilla and derived browsers.
Galeon and Epiphany developers have put a LOT of efforts in supporting
API breakages as they appeared in Firefox/Mozilla/XulRunner/SeaMonkey
releases. The development process was something like:
1) build galeon against all known development trees and latest tarball
releases in each branch
2) add configure checks each time a new build failure occurs to detect
the API change and add #ifdefs to support both the new and the old
API
For example:
<http://patches.theflowerdays.com/tinderbox/>
Yes, it resulted in a crippled configure.ac:
<http://svn.gnome.org/viewcvs/galeon/trunk/configure.in?rev=8905&view=markup>
But IMO the maintenance burden is sufficiently close to simply fixing
the API breakages to warrant the efforts. Since these are mostly your
efforts, it's obviously up to you to decide how old ffmpegs you want to
support! :-)
> Also, it wouldn't be too much trouble creating a build-slave that
> compiles gst-ffmpeg against a trunk checkout of ffmpeg anytime there
> is a ffmpeg commit. This would enable us to figure out as early as
> possible when there is a change in the API/ABI and change gst-ffmpeg
> accordingly.
Excellent idea, which has proven successful against the Mozilla code
base!
> In order not to penalize people following our releases and so
> tracking bugs doesn't become hell, we would bundle the ffmpeg svn
> checkout that we known works with the given release, in more or less
> the same way it is done currently (replace checkout of the mirror by a
> specific revision checkout of ffmpeg), and we would ONLY support
> gst-ffmpeg bugs built with that internal ffmpeg. Up to the package
> maintainers to triage bugs their side, check they can reproduce those
> bugs with a support gst-ffmpeg, and then post bugs upstream.
Well, since you seem to be open to hear crazy things, what about you
play exactly the same game as the distributors and simply provide
*ffmpeg* packages along your gst-ffmpeg packages? :-)
Basically, take the latest ffmpeg, apply the patches you still want to
add (which remain from your list), change the version string to
ffmpeg-by-gstreamer-folks-officially-supported and ship the ffmpeg +
gst-ffmpeg combo instead of simply gst-ffmpeg.
The benefits I would see for this approach: you truly decouple
gst-ffmpeg from ffmpeg but you still maintain a tested "official"
ffmpeg, and you also have a setup very similar to the setup of
distributors. This also means you have only one type of linking to
support (external ffmpeg).
--
Loïc Minier <lool at dooz.org>
More information about the gstreamer-devel
mailing list