[FFmpeg-devel] tinterlace license

Submitted by Vasile Toncu on Feb. 5, 2018, 10:58 a.m.

Details

Message ID a0877a82-beab-d2f4-4553-c537363e5b46@tremend.com
State New
Headers show

Commit Message

Vasile Toncu Feb. 5, 2018, 10:58 a.m.
Hello,

I'm looking forward to modify *tinterlace* filter from GPL to LGPL. The 
ASM opts will remain under GPL.

Previously I tried to make a whole new filter, *reinterlace*, that acts 
just like tinterlace, but it happens that this task results in 
unnecessary duplicated code.

I want to address the main copyright holders Thomas Mundt, Stefano 
Sabatini, Baptiste Coudurier and other ffmpeg maintainers for their 
approval.

Here is the path for the new changes:

 From 6cd7a4c7a963baacd9bdcc1b5ded8eef78de521b Mon Sep 17 00:00:00 2001
From: Vasile Toncu <vasile.toncu@tremend.com>
Date: Mon, 5 Feb 2018 12:32:30 +0200
Subject: [PATCH] Converted tinterlace from GPL to LGPL, expect the part with
  ASM opts.

---
  Changelog                   |  1 +
  configure                   |  2 +-
  libavfilter/tinterlace.h    |  8 +++++---
  libavfilter/vf_tinterlace.c | 10 +++++++---
  4 files changed, 14 insertions(+), 7 deletions(-)

   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
   */
@@ -262,15 +262,19 @@ static int config_out_props(AVFilterLink *outlink)
              tinterlace->lowpass_line = lowpass_line_complex_c_16;
          else
              tinterlace->lowpass_line = lowpass_line_complex_c;
+#ifdef CONFIG_GPL
          if (ARCH_X86)
              ff_tinterlace_init_x86(tinterlace);
+#endif
      } else if (tinterlace->flags & TINTERLACE_FLAG_VLPF) {
          if (tinterlace->csp->comp[0].depth > 8)
              tinterlace->lowpass_line = lowpass_line_c_16;
          else
              tinterlace->lowpass_line = lowpass_line_c;
+#ifdef CONFIG_GPL
          if (ARCH_X86)
              ff_tinterlace_init_x86(tinterlace);
+#endif
      }

      av_log(ctx, AV_LOG_VERBOSE, "mode:%d filter:%s h:%d -> h:%d\n", 
tinterlace->mode,

Comments

Carl Eugen Hoyos Feb. 5, 2018, 11:49 a.m.
2018-02-05 11:58 GMT+01:00 Vasile Toncu <vasile.toncu@tremend.com>:

> I'm looking forward to modify *tinterlace* filter from GPL to LGPL.

I was under the impression you had already written a new filter
licensed under LGPL: What happened to it?

Carl Eugen
Vasile Toncu Feb. 5, 2018, 1:06 p.m.
>> I'm looking forward to modify *tinterlace* filter from GPL to LGPL.
> I was under the impression you had already written a new filter
> licensed under LGPL: What happened to it?

Yes, I wrote one, reinterlace. It implements tinterlace functionality as 
it was on version n3.0.2, without ASM opts.

First, I was thinking to update it, to meet the current tinterlace 
version. But, it can save a lot of work if the copyright holder would 
agree to change the license.

 From previous emails, I found that this has been done in the past with 
other ffmpeg components.

Do you believe that this can be done with tinterlace?

-Vasile
Carl Eugen Hoyos Feb. 5, 2018, 1:16 p.m.
2018-02-05 14:06 GMT+01:00 Vasile Toncu <vasile.toncu@tremend.com>:
>
>>> I'm looking forward to modify *tinterlace* filter from GPL to LGPL.
>>
>> I was under the impression you had already written a new filter
>> licensed under LGPL: What happened to it?
>
> Yes, I wrote one, reinterlace. It implements tinterlace functionality as it
> was on version n3.0.2, without ASM opts.

Sorry if you have already answered this question:
Can the existing asm optimizations be used with the filter you wrote?

Carl Eugen
Vasile Toncu Feb. 5, 2018, 1:22 p.m.
>> Yes, I wrote one, reinterlace. It implements tinterlace functionality as it
>> was on version n3.0.2, without ASM opts.
> Sorry if you have already answered this question:
> Can the existing asm optimizations be used with the filter you wrote?

Yes, I can integrate them with my filter.

-Vasile Toncu
Carl Eugen Hoyos Feb. 5, 2018, 2:14 p.m.
2018-02-05 14:22 GMT+01:00 Vasile Toncu <vasile.toncu@tremend.com>:
>
>>> Yes, I wrote one, reinterlace. It implements tinterlace functionality as
>>> it
>>> was on version n3.0.2, without ASM opts.
>>
>> Sorry if you have already answered this question:
>> Can the existing asm optimizations be used with the filter you wrote?
>
> Yes, I can integrate them with my filter.

Then the best solution - imo! - is that you send a patch that adds your
new filter that uses the existing asm optimizations if FFmpeg was
configured for GPL.
First send one patch only adding a new filter (with a new name) to
get some technical review
One possible procedure for a change that can actually be committed
is that you send two patches:
One that removes the existing filter (but not the asm code) and one
that adds your new filter.

Carl Eugen
Thomas Mundt Feb. 6, 2018, 6:13 p.m.
Hi,

2018-02-05 11:58 GMT+01:00 Vasile Toncu <vasile.toncu@tremend.com>:

> Hello,
>
> I'm looking forward to modify *tinterlace* filter from GPL to LGPL. The
> ASM opts will remain under GPL.
>
> Previously I tried to make a whole new filter, *reinterlace*, that acts
> just like tinterlace, but it happens that this task results in unnecessary
> duplicated code.
>
> I want to address the main copyright holders Thomas Mundt, Stefano
> Sabatini, Baptiste Coudurier and other ffmpeg maintainers for their
> approval.
>

I have no objections changing the license to LGPL, but can only determine
for the parts I authored.
That´s the complex vertical low pass filter and support for high bitdepths.

Regards,
Thomas
Stefano Sabatini Feb. 7, 2018, 9:23 p.m.
No objections from my side for the parts I contributed (but IIRC was mostly
a port of code authored by other people).

Best regards.


Il 06/feb/2018 19:19, "Thomas Mundt" <tmundt75@gmail.com> ha scritto:

> Hi,
>
> 2018-02-05 11:58 GMT+01:00 Vasile Toncu <vasile.toncu@tremend.com>:
>
> > Hello,
> >
> > I'm looking forward to modify *tinterlace* filter from GPL to LGPL. The
> > ASM opts will remain under GPL.
> >
> > Previously I tried to make a whole new filter, *reinterlace*, that acts
> > just like tinterlace, but it happens that this task results in
> unnecessary
> > duplicated code.
> >
> > I want to address the main copyright holders Thomas Mundt, Stefano
> > Sabatini, Baptiste Coudurier and other ffmpeg maintainers for their
> > approval.
> >
>
> I have no objections changing the license to LGPL, but can only determine
> for the parts I authored.
> That´s the complex vertical low pass filter and support for high bitdepths.
>
> Regards,
> Thomas
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
Vasile Toncu Feb. 8, 2018, 10:33 a.m.
Hello,


> Then the best solution - imo! - is that you send a patch that adds your
> new filter that uses the existing asm optimizations if FFmpeg was
> configured for GPL.
> First send one patch only adding a new filter (with a new name) to
> get some technical review

I'll send a patch with my new filter, to have some review.

> One possible procedure for a change that can actually be committed
> is that you send two patches:
> One that removes the existing filter (but not the asm code) and one
> that adds your new filter.

If everything goes well, I'll go on with this step too.

At this moment, two people agreed to change the license of the 
tinterlace -  Thomas Mundt and Stefano Sabatini.
 From the git history I figured out that they wrote a quite big part of 
tinterlace. Other parts are written mainly by the maintainers of ffmpeg 
project.

That being said, will it be possible to change the tinterlace to LGPL?
Nicolas George Feb. 8, 2018, 10:40 a.m.
Vasile Toncu (2018-02-08):
> From the git history I figured out that they wrote a quite big part of
> tinterlace. Other parts are written mainly by the maintainers of ffmpeg
> project.

Look at the first commit:

	lavfi: port tinterlace filter from MPlayer

That means you need to look at the MPlayer history too to know all the
authors.

Regards,
Vasile Toncu Feb. 8, 2018, 11:14 a.m.
>>  From the git history I figured out that they wrote a quite big part of
>> tinterlace. Other parts are written mainly by the maintainers of ffmpeg
>> project.
> Look at the first commit:
>
> 	lavfi: port tinterlace filter from MPlayer
>
> That means you need to look at the MPlayer history too to know all the
> authors.

Yes, you are right.

It is Mr. Michael Zucchi <notzed@ximian.com> who holds the authorship 
for tinterlace in MPlayer. The ximian company is dead/acquired since 2003.

I'll try to get in touch with Michael.

Thanks,
-Vasile Toncu
Vasile Toncu Feb. 8, 2018, 11:24 a.m.
Shall I start a new thread for the patch with the new filter, or can I 
use this one?

Patch hide | download patch | download mbox

diff --git a/Changelog b/Changelog
index 7a73447..aae5564 100644
--- a/Changelog
+++ b/Changelog
@@ -2,6 +2,7 @@  Entries are sorted chronologically from oldest to 
youngest within each release,
  releases are sorted from youngest to oldest.

  version <next>:
+- Made tinterlace filter LGPL, expect the part with ASM opts
  - Bitstream filters for editing metadata in H.264, HEVC and MPEG-2 streams
  - Dropped support for OpenJPEG versions 2.0 and below. Using OpenJPEG now
    requires 2.1 (or later) and pkg-config.
diff --git a/configure b/configure
index 2711382..f58038f 100755
--- a/configure
+++ b/configure
@@ -3281,7 +3281,7 @@  stereo3d_filter_deps="gpl"
  subtitles_filter_deps="avformat avcodec libass"
  super2xsai_filter_deps="gpl"
  pixfmts_super2xsai_test_deps="super2xsai_filter"
-tinterlace_filter_deps="gpl"
+tinterlace_filter_deps=""
  tinterlace_merge_test_deps="tinterlace_filter"
  tinterlace_pad_test_deps="tinterlace_filter"
  tonemap_filter_deps="const_nan"
diff --git a/libavfilter/tinterlace.h b/libavfilter/tinterlace.h
index b5c39aa..ceda17c 100644
--- a/libavfilter/tinterlace.h
+++ b/libavfilter/tinterlace.h
@@ -6,16 +6,16 @@ 
   * This file is part of FFmpeg.
   *
   * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
+ * it under the terms of the GNU Lesser General Public License as 
published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * FFmpeg 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.
+ * GNU Lesser General Public License for more details.
   *
- * You should have received a copy of the GNU General Public License along
+ * You should have received a copy of the GNU Lesser General Public 
License along
   * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
   */
@@ -67,6 +67,8 @@  typedef struct TInterlaceContext {
                           ptrdiff_t mref, ptrdiff_t pref, int clip_max);
  } TInterlaceContext;

+#ifdef CONFIG_GPL
  void ff_tinterlace_init_x86(TInterlaceContext *interlace);
+#endif

  #endif /* AVFILTER_TINTERLACE_H */
diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
index f13791d..238704e 100644
--- a/libavfilter/vf_tinterlace.c
+++ b/libavfilter/vf_tinterlace.c
@@ -7,16 +7,16 @@ 
   * This file is part of FFmpeg.
   *
   * FFmpeg is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
+ * it under the terms of the GNU Lesser General Public License as 
published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * FFmpeg 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.
+ * GNU Lesser General Public License for more details.
   *
- * You should have received a copy of the GNU General Public License along
+ * You should have received a copy of the GNU Lesser General Public 
License along
   * with FFmpeg if not, write to the Free Software Foundation, Inc.,