So... I wrote this:
http://libsmacker.sourceforge.net/
It's a C library which can decode Smacker files. I know some ScummVM games have .smk videos, and this could be a snap-in solution to get those playing. A good alternative to linking against libavcodec, for example.
The license is Creative Commons 2.0 - NonCommercial, to avoid stepping on RAD Game Tools' toes (as they do still license the "real" Smacker SDK occasionally). Hopefully that plugs in against the GPL in a reasonable manner.
libsmacker - Open-source Smacker Video decoder
Moderator: ScummVM Team
- eriktorbjorn
- ScummVM Developer
- Posts: 3561
- Joined: Mon Oct 31, 2005 7:39 am
Re: libsmacker - Open-source Smacker Video decoder
The non-commercial clause would be incompatible with GPL, as I understand it. But ScummVM has been able to decode Smacker videos for a few years now, so it's a moot point.hornpipe2 wrote: The license is Creative Commons 2.0 - NonCommercial, to avoid stepping on RAD Game Tools' toes (as they do still license the "real" Smacker SDK occasionally). Hopefully that plugs in against the GPL in a reasonable manner.
- DrMcCoy
- ScummVM Developer
- Posts: 595
- Joined: Sat Dec 17, 2005 1:33 pm
- Location: Braunschweig, Germany
- Contact:
TL;DR: The project is superfluous, your choice of license is stupid and it's not the clean reimplementation you claim it is.
1) Creative Commons (other than CC0) is really an awful and totally inappropriate choice for code, and especially libraries. Both the Creative Commons people, as well as the FSF strongly advise people not to do that. Creative Commons does know about binaries, it does not know about linking, it's completely and utterly idiotic to use for software.
Don't. Do. That.
2) CC licenses (other than CC0) are incompatible with the GPL and many other FSF and OSI approved licenses. The addition of the NC clause leaves virtually none of them compatible.
3) Since the CC licenses do not know about linking, any project merely using (as in, linking against, no matter statically or dynamically and even #include-ing the header) needs to be licensed under the exact same license (CC BY-NC 2.0, in this case)
4) Slightly tangential, but there's been some discussions / pleas about dropping both the ND and NC clauses from CC4.0. The main argument is that those clauses go against the free (as in speech) culture ideals CC is built upon and should embody. I for one am a strong supported of that line of thinking, so I'm saddened to see a new work with an NC clause
5) FFmpeg has had an actual FLOSS smacker decoder (licensed LGPLv2.1+) for several years now. There has been no peep from RAD Game Tools about it, as far as I'm aware. ScummVM's smacker decoder is based upon that one.
6) "libsmacker is coded almost directly from this reference document: Smacker on multimedia.cx". Keep in mind that the multimedia.cx wiki is run by Mike Melanson, for the ffmpeg and libav projects.
Information there is in no way "clean", but has been written by the ffmpeg people after REing the original codec binaries. So your claim that it's "not based on reverse-engineering the distributed binary code" is patently wrong.
EDIT: Some more thoughts:
7) I give you that a small standalone library for smacker decoding might be useful. IMHO, it should just be cleaned-up FFmpeg code, and LGPL licensed, though.
8) The code in your repository has no license information at all, and no links to the project website either
9) About half of all lines in your source files end with an extra \r
10) smacker.c:351:28: error: ‘aud_tree[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
1) Creative Commons (other than CC0) is really an awful and totally inappropriate choice for code, and especially libraries. Both the Creative Commons people, as well as the FSF strongly advise people not to do that. Creative Commons does know about binaries, it does not know about linking, it's completely and utterly idiotic to use for software.
Don't. Do. That.
2) CC licenses (other than CC0) are incompatible with the GPL and many other FSF and OSI approved licenses. The addition of the NC clause leaves virtually none of them compatible.
3) Since the CC licenses do not know about linking, any project merely using (as in, linking against, no matter statically or dynamically and even #include-ing the header) needs to be licensed under the exact same license (CC BY-NC 2.0, in this case)
4) Slightly tangential, but there's been some discussions / pleas about dropping both the ND and NC clauses from CC4.0. The main argument is that those clauses go against the free (as in speech) culture ideals CC is built upon and should embody. I for one am a strong supported of that line of thinking, so I'm saddened to see a new work with an NC clause
5) FFmpeg has had an actual FLOSS smacker decoder (licensed LGPLv2.1+) for several years now. There has been no peep from RAD Game Tools about it, as far as I'm aware. ScummVM's smacker decoder is based upon that one.
6) "libsmacker is coded almost directly from this reference document: Smacker on multimedia.cx". Keep in mind that the multimedia.cx wiki is run by Mike Melanson, for the ffmpeg and libav projects.
Information there is in no way "clean", but has been written by the ffmpeg people after REing the original codec binaries. So your claim that it's "not based on reverse-engineering the distributed binary code" is patently wrong.
EDIT: Some more thoughts:
7) I give you that a small standalone library for smacker decoding might be useful. IMHO, it should just be cleaned-up FFmpeg code, and LGPL licensed, though.
8) The code in your repository has no license information at all, and no links to the project website either
9) About half of all lines in your source files end with an extra \r
10) smacker.c:351:28: error: ‘aud_tree[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
- DrMcCoy
- ScummVM Developer
- Posts: 595
- Joined: Sat Dec 17, 2005 1:33 pm
- Location: Braunschweig, Germany
- Contact:
You're welcome.hornpipe2 wrote:Thank you for your self-important, condescending and insulting ten-point bulleted response to my offer of sharing some code.
The nobility of your grand offering nonewithstanding, my points are still valid: A CC license is the wrong choice for your code and your promises of clean-room "immunity" are too overblown. And the code in the repo is still missing license information.
EDIT: To clarify a bit, my "beef" with you is mainly that, while you did release the source, people are not allowed to do anything with it, thanks to the nonsensical license choice. This is not in the spirit of FLOSS at all.