The license information at the top of src/libmpg123/synth_sse3d.h is unclear or confusing:
decode_sse3d: Synth for SSE and extended 3DNow (yeah, the name is a relic)
copyright 2006-2007 by Zuxy Meng/the mpg123 project - free software under the terms of the LGPL 2.1
see COPYING and AUTHORS files in distribution or http://mpg123.org
initially written by the mysterious higway for MMX (apparently)
then developed into SSE opt by Zuxy Meng, also building on Romain Dolbeau's AltiVec
Both have agreed to distribution under LGPL 2.1 .Transformed back into standalone asm, with help of
gcc -S -DHAVE_CONFIG_H -I. -march=pentium -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o decode_mmxsse.{S,c}The difference between SSE and 3DNowExt is the dct64 function and the synth function name.
This template here uses the SYNTH_NAME and MPL_DCT64 macros for this - see decode_sse.S and decode_3dnowext.S...
That's not memory efficient since there's doubled code, but it's easier than giving another function pointer.
Maybe I'll change it in future, but now I need something that works.Original comment from MPlayer source follows:
this code comes under GPL
This code was taken from http://www.mpg123.org
See ChangeLog of mpg123-0.59s-pre.1 for detail
Applied to mplayer by Nick Kurshev nickols_k@mail.ruLocal ChangeLog:
- Partial loops unrolling and removing MOVW insn from loops
(emphasis mine)
I did not do a historic research as to where this code came from and what the actual licensing history has been, but the comments in their current form are somewhat contradictory. If the code is actually LGPL2.1 licensed, the comment should probably be clarified (otherwise it needs to be relicensed by the author or removed).
There is a more clear comment in another MMX-related file:
Initially, I found the note "this code comes under GPL" in this file.
After asking Michael about legal status of the MMX files, he said that he got them without any comment and thus I believe that the GPL comment was made by Michael, since he made mpg123 GPL at some time - and marked some files that way, but not all.
Based on that thought, I now consider this file along with the other parts of higway's MMX optimization to be licensed under LGPL 2.1 by Michael's decision.
The original author could not be contacted about the license. But you have to consider that this code is a transcription of existing mpg123 code (by Michael Hipp) to use MMX assembly, not original functionality. This was a big step in performance a long time ago, but it is something what compilers do automatically now, to some extend. The code was further modified by people who explicitly agreed to the license change to LGPL 2.1. So I consider it safe to say that the copyright for these files is taken into account sufficiently.
I can clarify the comment for the affected files.
Edit: Of course, compilers don't do automatic MMX optimisation as that involves reducing accuracy and switching to integers instead of floats. But the idea is the same for more modern vectorisations.
Last edit: Thomas Orgis 2017-05-02
The current text is not simple, as the history is not simple, but hopefully more clear. The main rationale is in synth_mmx.S.