libsmacker - Open-source Smacker Video decoder

General chat related to ScummVM, adventure gaming, and so on.

Moderator: ScummVM Team

Post Reply
hornpipe2
Posts: 2
Joined: Sat Sep 08, 2012 7:31 pm
Location: Conway, AR, USA
Contact:

libsmacker - Open-source Smacker Video decoder

Post by hornpipe2 »

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.
User avatar
eriktorbjorn
ScummVM Developer
Posts: 3362
Joined: Mon Oct 31, 2005 7:39 am

Re: libsmacker - Open-source Smacker Video decoder

Post by eriktorbjorn »

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.
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.
User avatar
DrMcCoy
ScummVM Developer
Posts: 595
Joined: Sat Dec 17, 2005 1:33 pm
Location: Braunschweig, Germany
Contact:

Post by DrMcCoy »

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]
hornpipe2
Posts: 2
Joined: Sat Sep 08, 2012 7:31 pm
Location: Conway, AR, USA
Contact:

Post by hornpipe2 »

Thank you for your self-important, condescending and insulting ten-point bulleted response to my offer of sharing some code.

I was unaware that ScummVM had its own built-in SMK decoder.
User avatar
DrMcCoy
ScummVM Developer
Posts: 595
Joined: Sat Dec 17, 2005 1:33 pm
Location: Braunschweig, Germany
Contact:

Post by DrMcCoy »

hornpipe2 wrote:Thank you for your self-important, condescending and insulting ten-point bulleted response to my offer of sharing some code.
You're welcome.

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.
User avatar
Longcat
Posts: 1050
Joined: Sat Sep 23, 2006 3:15 pm

Post by Longcat »

Gotta love the 'Coy
zorbid
Posts: 66
Joined: Sun Nov 27, 2005 6:41 pm

Post by zorbid »

Clean room RE means that the person/team who inspects and documents the binary is different from the one who writes the implementation.

hornpipe2's effort fits that definition.
Post Reply