Discussion:
ffmpeg26 confusion (Was: Heads up audio/video/graphics/multimedia/net/streaming port maintainers - ACTION REQUIRED)
(too old to reply)
Jan Beich
2015-06-22 23:35:53 UTC
Permalink
(overquoting strawman ;)
Hi,
if you maintain a port which uses directly or indirectly ffmpeg, i.e.
it links to at least one of
libavcodec
libavdevice
libavfilter
libavformat
libavresample
libavutil
please take a moment, this is important.
Shortly after the release of FreeBSD 10.1 I plan to upgrade ffmpeg to
the 2.4 branch and import the then-latest release from the 2.4 branch
into the head of the ports tree. Unlike the recent upgrade from 2.2.
to 2.3, this one will NOT be painless.
What happened to the schedule? 10.1 was released half a year ago and we're
approaching code freeze for 10.2. Not to mention packages for FreeBSD
releases are built against quaterly branches nowadays. And the next quaterly
is 2015Q3 which should happen in a week.
ALL the mentioned libraries received a bump in their major version
numbers, which means that they are not necessarily API compatible with
the 2.3 series. In particular, this means that several APIs which have
been deprecated several months/years ago(!) are really gone for good
in 2.4. One prominent example for this is the removal of
FF_API_CLOSE_INPUT_FILE in libavformat which breaks e.g. sox and
transcode builds. In most cases (like the mentioned examples sox and
transcode) a fix will be easy or even trivial, but you need to be
proactive and take a look at it.
Not the first time FFmpeg breaks API. ffmpeg0 port is good example or see
http://upstream-tracker.org/versions/ffmpeg.html .

It seems adding ffmpeg24 in r370733 betrayed the quoted plan postponing
the switch to the new API indefinitely. And ports that are not broken by
it end up limited to the feature/bug set of 2.3.x.

Maybe do the following to improve the situation:

(1) Update ffmpeg port to the latest version (2.7.1 currently)
(2) Remove ffmpeg26 port
(3) Add ffmpeg23 port with PORTSCOUT=limit:^2\.3.*
(4) Identify ports that hide ffmpeg dep behind an option
(5) Mass PORTREVISION bump in consumers (API/ABI changes in major versions)
(6) Exp-run with ffmpeg dep enabled if optional
(7) Fix bustage or convert to ffmpeg23
(8) Remove ffmpeg23 if no consumers
I have prepared a drop-in replacement for the ffmpeg port which uses
http://people.freebsd.org/~riggs/ffmpeg-2.4.tar.xz
Currently not a drop-in because requires to

- Patch pkg-config usage and installed .pc files
- Prevent mixing headers from unsuffixed ffmpeg version
- Check dependency tree for the port and consumers if mixing ffmpeg libs
- Adjust LIB_DEPENDS, *FLAGS and bump PORTREVISION when FFMPEG_SUFFIX changes
Please check whether the ports maintained by you build and link with
this version and prepare a suitable fix if necessary.
What if my port wants a feature only present in the latest version but not
in multimedia/ffmpeg and multimedia/ffmpeg26 ? For one,

https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=d765e07
https://github.com/hrydgard/ppsspp/issues/5286

Should I add ffmpeg27, backport to ffmpeg26 or ffmpeg (2.3.x) ?
Thanks in advance and best regards
Riggs
Thomas Zander
2015-06-23 21:38:45 UTC
Permalink
Post by Jan Beich
(overquoting strawman ;)
:-)
Post by Jan Beich
What happened to the schedule? 10.1 was released half a year ago and we're
approaching code freeze for 10.2. Not to mention packages for FreeBSD
releases are built against quaterly branches nowadays. And the next quaterly
is 2015Q3 which should happen in a week.
It's a testament to the fact that no plan survives the first contact
with reality. In lack of participation, I decided to hold off until I
am in a position (time-wise) where I could deal with the fall-out of
the upgrade for a couple of days without major interruption.
Circumstances haven't been favourable so far.
Post by Jan Beich
(1) Update ffmpeg port to the latest version (2.7.1 currently)
(2) Remove ffmpeg26 port
(3) Add ffmpeg23 port with PORTSCOUT=limit:^2\.3.*
(4) Identify ports that hide ffmpeg dep behind an option
(5) Mass PORTREVISION bump in consumers (API/ABI changes in major versions)
(6) Exp-run with ffmpeg dep enabled if optional
(7) Fix bustage or convert to ffmpeg23
(8) Remove ffmpeg23 if no consumers
Yes, agreed, makes sense from today's point of view. When are you
planning on getting started? :-)

Riggs

Loading...