Log in

View Full Version : License discussion for Avisynth-Carboncoder Plugin


jordanh
3rd May 2013, 19:47
Hey, my name is Harry Jordan and i am one of those guys that read a lot in the Forum in the past years and finally joined :-)

As the Title says, i have developed a Harmonic Procoder ( Rhozet Carboncoder) "RPI Plugin". The goal was (and i reached it) to let Carboncoder do the decode work (where it is good in) and your avisynth script does the filtering/transformation work like deinterlacing and framerateconversion and so on, then Carboncoder does the Encoding work again. This way, both programs do only those things where they are really good at.

When starting development, i was under the impression that AVISynth has the same license than FFMPEG, but there is a difference: ffmpeg allows dynamic linking to proprietary software.

The license in avisynth.h AVISYNTH_INTERFACE_VERSION = 5 says, that any program that links to Avisynth is automatically GPL.
My Plugin of course consists of 2 parts:
1) AVISynth PushPull Source Plugin "CarbonSource()": carbonsource.dll
2) Carboncoder .rpi plugin

Basically in any case i planned to let the AVISynth Source Plugin be covered by GPL and post it here. The Problem is the .rpi Plugin. It invokes the Script Env and then gets all frames from env...

Finally i want to explain my situation: I drive a small company that basically only works for Broadcasters in all Europe. This plugins were of course developed with the plan to sell them to customers. It would not be too much worry for me to GPL both plugins and only sell training, installation and maintenance to my customers. [EDIT: actually, the Carbon.rpi plugin cannot be GPL'ed too, because it countains Rhozet protected stuff as well...]
The question is, when CarbonCoder Links to his own .rpi plugin, which links to AVISynth, which links to my AVISynth PushPull Plugin... Wouldnt this mean that Carboncoder is now covered by GPL?

Thanks for any comment :-)

IanB
3rd May 2013, 23:33
These are the standard Avisynth licence conditions :-// Avisynth v2.5. Copyright 2002 Ben Rudiak-Gould et al.
// http://www.avisynth.org

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit
// http://www.gnu.org/copyleft/gpl.html .
//
// Linking Avisynth statically or dynamically with other modules is making a
// combined work based on Avisynth. Thus, the terms and conditions of the GNU
// General Public License cover the whole combination.
//
// As a special exception, the copyright holders of Avisynth give you
// permission to link Avisynth with independent modules that communicate with
// Avisynth solely through the interfaces defined in avisynth.h, regardless of the license
// terms of these independent modules, and to copy and distribute the
// resulting combined work under terms of your choice, provided that
// every copy of the combined work is accompanied by a complete copy of
// the source code of Avisynth (the version of Avisynth used to produce the
// combined work), being distributed under the terms of the GNU General
// Public License plus this exception. An independent module is a module
// which is not derived from or based on Avisynth, such as 3rd-party filters,
// import and export plugins, or graphical user interfaces.It means you can #include a version of avisynth.h that has the exemption in your proprietary source code. You can loadlibrary("avisynth.dll") in your code. You can use the information and definitions from the avisynth.h freely as required in your own code. You need to provide a copy of the Avisynth source code with your product. You can licence your product however you like.

These conditions currently apply all versions up to and including version 2.5.8.

The 2.5 interface is fully supported by the 2.6 code. It provides support for RGB24, RGB32, YUY2 and YV12 colour spaces.

I have removed the general exemption from code that I am writing while it is in a state of development flux. Basically I want to see what people are writing using my code. I will restore the exemption with the first production release of 2.6.0. I can discuss an early access licence through PM./*
Please NOTE! This version of avisynth.h DOES NOT have any special exemption!

While this version is under development you are fully
constrained by the terms of the GNU General Public License.

Any derivative software you may publish MUST include the full source code.

Normal licence conditions will be reapplied in a future version.
*/

jordanh
4th May 2013, 19:19
That makes things much more clear and easy. Thank you very much for being as you are, IanB!
I was absolutely not aware about how and if things go on with AVISynth. As i now know that there will most likely be a Release Version of 2.6, i have this plan:
1) Release the first version of the CarbonSource Plugin using Interface Version 2
2) Check if people desperately need multithreading and in case, go for Interface Version 5

The background for this decision is, that i dont know how stable 2.6 Alpha releases are, and any user of my plugin will most likely want to have the most stable environment thats possible.

Looking forward for any more comments. Version 1.0 should be available within the next 4 weeks.

Harry

kolak
4th May 2013, 19:38
I think multithreading is a must- good avs scripts are very CPU demanding.

jordanh
4th May 2013, 20:17
Yeah, i am sure that multithreading is mandatory but by now i dont know if i really have / can add special support for this, or if a standard 2.5 Source Plugin is able to do it anyway.
Still i struggle with the Avisynth MT Stuff, but thats worth another thread.

By the way, did you receive my PM, Kolak?

Harry

Groucho2004
4th May 2013, 21:39
1) Release the first version of the CarbonSource Plugin using Interface Version 2
The interface version ("AVISYNTH_INTERFACE_VERSION") for 2.58 is actually 3.
2) Check if people desperately need multithreading and in case, go for Interface Version 5

Avisynth does not support multi-threading. However, there are some multi-threaded filters out there (nnedi3, for example).

The background for this decision is, that i dont know how stable 2.6 Alpha releases are, and any user of my plugin will most likely want to have the most stable environment thats possible.

Even though it's still in Alpha stage, 2.6 is considered more stable than 2.58 by many. There are also countless bug fixes since 2.58. I suppose that once Ian decides that no more features are to be added he'll bump it to beta.