PDA

View Full Version : GPL questions


jstelly
12th July 2005, 01:19
This post might be considered generic GPL questions, but I figured I'd ask just to be safe and make sure I didn't upset anyone. Also the legalities I've heard about dynamic / static linking are sort of vague. I did search here, but I could find nothing specific about the GPL and DirectShow.

I'm in the process of writing an encoding app and I have some questions about the GPL as it relates to my project's source code. My application uses AC3Filter, Avisynth, DGIndex and some Avisynth filters for deinterlacing / denoising.

It launches dgindex.exe to decode/index a VOB and demux the AC3 stream, writes the .avs file, then creates a DirectShow filter graph and adds the .avs and .ac3 files as sources, leading to the ASF Writer filter to write the results out.

Does this scenario require that I release the source code for this application? I've heard it explained that a level of abstraction like this (the Directshow interfaces) means that the GPL wouldn't cross over into my own source, DirectShow being the dynamic-loading boundary. Is that correct?

Thanks in advance and sorry if this has been covered and I just didn't find it.

neuron2
12th July 2005, 02:04
Speaking just for myself...

If you bundle DGIndex or any of my other filters or tools, you'll need to include a link to the relevant page where the source code can be obtained. (If it were me, as a courtesy, I would also include a link to jackei's page.) You should also include the COPYING file that contains the GPL information.

Thank you for inquiring about this.

Sirber
12th July 2005, 02:25
Include the URL in "About" for exemple?

neuron2
12th July 2005, 02:38
That would be fine for me.

Sirber
12th July 2005, 02:49
Added you in my About form :D (Post RC3)

Thanks for the filters!!!

GaveUp
13th July 2005, 10:52
The way I understand it you scenario doesn't fall under the 'must be gpl too' clause because it's not build the code into your program. From the way you described it you're just calling the exe (CreateProcess() or some such) and I'm pretty sure that this is not grounds for requiring it to be opensourced. Afterall, what code is inherited into your program?

On the otherhand I say go opensource so I'd love to see another opensource app! ;)

jstelly
13th July 2005, 16:18
On the otherhand I say go opensource so I'd love to see another opensource app! ;)

Yeah, I might end up doing that anyway, I'm just not sure yet so wanted to check. And sure, Donald. I'll include a link to Jackei's website too.

mpucoder
13th July 2005, 16:21
GPL makes the distinction by how the other program/application/tool is run. If it is a seperate program which never shares resources (ie exe, com, etc) then it is not part of your program and does not affect your program's licensing. If it is a static or dynamic library (.lib or .dll) then it IS part of your program and affects licensing. And as Neuron2 pointed out, if you distribute any programs each must be distributed by the terms of its license.

GaveUp
13th July 2005, 17:04
GPL makes the distinction by how the other program/application/tool is run. If it is a seperate program which never shares resources (ie exe, com, etc) then it is not part of your program and does not affect your program's licensing. If it is a static or dynamic library (.lib or .dll) then it IS part of your program and affects licensing. And as Neuron2 pointed out, if you distribute any programs each must be distributed by the terms of its license.

This is the way I unsderstood things, except for I remember reading a clause that in some cases if the output of a seperate program is used then it may fall under the GPL licensing, but I think that case was extremely limited in its scope.

jstelly
13th July 2005, 19:53
So even if Avisynth is loaded indirectly through Directshow, you're saying it still requires that I release the source for my app? If that's the case, then how is it that AutoGK doesn't release their source code? Are they violating the GPL?

I'm not trying to be dodgy here about releasing my source code, at this point I'm just curious because it seems I have misunderstood the GPL.

GaveUp
13th July 2005, 20:09
According ot the FAQ on the GPL at gnu.org (http://gnu.org/) the output of a program only falls under the GPL when it copies part of itself into the output. I can't really come up with a great example of this off the top of my head, but the first thing tha t comes to mind is say something like an installer. Maybe someone else will have a better example.

In short, that's how AutoGK gets around it. I guess you could also say that in a way AutoGK is just make a dynamic call to the AVISynth library (indirectly, of course) and as far as I know dynamic linking is ok.

Doom9
13th July 2005, 20:17
So even if Avisynth is loaded indirectly through Directshowuhh.. how would that work? You do not have to load any dlls to use AviSynth.. opening a script is as easy as opening an AVI via AVIFILE API.. there's no difference between the two. You need to effectively consume a DLL for the GPL to apply.. you're not doing that if you're using the AVIFILE (or DirectShow) API to open an AviSynth script. Whatever DLLs are loaded by Windows is not of your concern. After all.. imagine if it were... you couldn't run any GPL program on Windows because Microsoft isn't just about to release the source code of their cashcow.

Though, the COM example shows what is imho a weakness of the language. Whether you're using a COM component or a DLL is not so fundamentally different. Doesn't the DLL clause stem from the fact that you normally use external header files that define the data structures used to interact with the DLL? Not every programming language requires that (for instance in .NET you define the structure in your own code, and I guess you could write your own header file as well as long as data structures match - perhaps even limit yourself to structures you need for the few functions you need), and the difference to COM is just that the definition of how data is exchanged between the component and an application using the component is done via the registry.

mpucoder
13th July 2005, 20:24
I thought the reasoning behind including dll's as being incorporated into your program was that a dll effectively becomes an extension of your program once linked. But I also believe the political reason was to stop people from taking GPL programs and making them into dll's to avoid having to GPL their own program.

GaveUp
13th July 2005, 20:51
I think that is the case. I also think that's why the LGPL exists ... so that you can use library code with a gpl license in a closed source program.

Doom9
13th July 2005, 21:20
but if COM components are okay, you could effectively write a COM wrapper..