On Mon, 10 Aug 2015, László Böszörményi wrote:
On Mon, Aug 10, 2015 at 8:27 PM, Bob Friesenhahn
<bfrie...@simple.dallas.tx.us> wrote:
On Mon, 10 Aug 2015, Jakub Wilk wrote:
Perhaps this issue is due to g++ defaulting to a newer version of the C++
standard and thus it requires a new C++ ABI?
I don't think so. I'd rather blame:
* Test build with QuantumDepth 16 (closes: #557879).
But wait, isn't change of QuantumDepth an ABI breakage?
SONAME of the non-C++ library didn't change; it's still
/usr/lib/libGraphicsMagick.so.3.
As I know it's only an internal precision change, but doesn't affect
any method or function.
It changes the size of Quantum and IndexPacket (types), as well as the
value of MaxRGB, MaxMap, and TransparentOpacity (constants), so
unfortunately it is very much exposed to the API user.
If --enable-quantum-library-names was used as an option to the configure
script, then the shared library name would become like
libGraphicsMagick-Q16.so so the whole run-time library name is different.
It was not used. Should I add this? It seems it would cause more
trouble than win.
It should not cause much trouble. The link library name exposed to
developers is the normal name.
The main value is to allow two run-time libraries to be installed
side-by-side.
If the QuantumDepth 8 build did not use this option, then it would be named
as before and existing apps (compiled with QuantumDepth 8) should work with
it. This allows the libraries to co-exist.
It seems you also write that the quantum depth change shouldn't be a
problem for applications.
It depends on the application.
The package used for development needs to specify if it is for Q8 or Q16
since (barring other factors), it is only possible to develop for one at a
time.
As I know, GraphicsMagick will use roughly double the memory during
image processing with the latter, but that's what the user can see
(and that the output quality is better). Am I right?
The output quality is sometimes better, but often identical. The main
value is with preserving original quality for deeper images.
But to answer your question, the API for 1.3.21/QuantumDepth16 should
be the same as previously. I attach the symbols change between 1.3.20
and 1.3.21 ; the additions are for WebP image support and two symbols
(RegisterAVIImage, UnregisterAVIImage) are removed. As I see, a
versioned breaks is the only thing I need to add.
With Q16, the API has changed (from Q8) since the sizes of things
change.
Bob
--
Bob Friesenhahn
bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/