diff mbox

[FFmpeg-devel] Fw: [PATCH] Refactor two near-identical clauses.

Message ID 20180617154019.40a1f8be@telaviv1.shlomifish.org
State New
Headers show

Commit Message

Shlomi Fish June 17, 2018, 12:40 p.m. UTC
On Sun, 17 Jun 2018 03:05:27 +0200
Michael Niedermayer <michael@niedermayer.cc> wrote:

> On Tue, Jun 12, 2018 at 12:53:20PM +0300, Shlomi Fish wrote:
> > This message did not arrive to the list after three submissions.
> > 
> > Begin forwarded message:
> > 
> > Date: Tue, 12 Jun 2018 12:42:52 +0300
> > From: Shlomi Fish <shlomif@shlomifish.org>
> > To: ffmpeg-devel@ffmpeg.org
> > Cc: Shlomi Fish <shlomif@shlomifish.org>
> > Subject: [PATCH] Refactor two near-identical clauses.
> > 
> > 
> > Placed under the Expat licence . All tests pass.
> > ---
> >  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
> >  1 file changed, 14 insertions(+), 19 deletions(-)
> > 
> > diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> > index 037f5d1cf2..be371201e1 100644
> > --- a/libavfilter/vf_weave.c
> > +++ b/libavfilter/vf_weave.c
> > @@ -23,6 +23,7 @@
> >  #include "libavutil/pixdesc.h"
> >  #include "avfilter.h"
> >  #include "internal.h"
> > +#include <stdbool.h>
> >  
> >  typedef struct WeaveContext {
> >      const AVClass *class;
> > @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
> >      AVFilterLink *outlink = ctx->outputs[0];
> >      AVFrame *out;
> >      int i;
> > +    bool weave;
> > +    int field1, field2;
> >  
> >      if (!s->prev) {
> >          s->prev = in;
> > @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > *in) }
> >      av_frame_copy_props(out, in);
> >  
> > +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> > +    field1 = s->first_field * weave;
> > +    field2 = s->first_field * !weave;
> >      for (i = 0; i < s->nb_planes; i++) {
> > -        if (s->double_weave && !(inlink->frame_count_out & 1)) {
> > -            av_image_copy_plane(out->data[i] + out->linesize[i] *
> > s->first_field,  
> 
> this seems to be corrupted by line breaks
> 

Well, the git send-email email was silently dropped three times... See:

http://www.shlomifish.org/Files/files/code/0001-Refactor-two-near-identical-clauses.patch

also attached here. Email has sadly become unreliable.

> [...]
>

Comments

Shlomi Fish June 27, 2018, 12:10 p.m. UTC | #1
On Sun, 17 Jun 2018 15:40:19 +0300
Shlomi Fish <shlomif@shlomifish.org> wrote:

> On Sun, 17 Jun 2018 03:05:27 +0200
> Michael Niedermayer <michael@niedermayer.cc> wrote:
> 
> > On Tue, Jun 12, 2018 at 12:53:20PM +0300, Shlomi Fish wrote:  
> > > This message did not arrive to the list after three submissions.
> > > 
> > > Begin forwarded message:
> > > 
> > > Date: Tue, 12 Jun 2018 12:42:52 +0300
> > > From: Shlomi Fish <shlomif@shlomifish.org>
> > > To: ffmpeg-devel@ffmpeg.org
> > > Cc: Shlomi Fish <shlomif@shlomifish.org>
> > > Subject: [PATCH] Refactor two near-identical clauses.
> > > 
> > > 
> > > Placed under the Expat licence . All tests pass.
> > > ---
> > >  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
> > >  1 file changed, 14 insertions(+), 19 deletions(-)
> > > 
> > > diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> > > index 037f5d1cf2..be371201e1 100644
> > > --- a/libavfilter/vf_weave.c
> > > +++ b/libavfilter/vf_weave.c
> > > @@ -23,6 +23,7 @@
> > >  #include "libavutil/pixdesc.h"
> > >  #include "avfilter.h"
> > >  #include "internal.h"
> > > +#include <stdbool.h>
> > >  
> > >  typedef struct WeaveContext {
> > >      const AVClass *class;
> > > @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > > *in) AVFilterLink *outlink = ctx->outputs[0];
> > >      AVFrame *out;
> > >      int i;
> > > +    bool weave;
> > > +    int field1, field2;
> > >  
> > >      if (!s->prev) {
> > >          s->prev = in;
> > > @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > > *in) }
> > >      av_frame_copy_props(out, in);
> > >  
> > > +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> > > +    field1 = s->first_field * weave;
> > > +    field2 = s->first_field * !weave;
> > >      for (i = 0; i < s->nb_planes; i++) {
> > > -        if (s->double_weave && !(inlink->frame_count_out & 1)) {
> > > -            av_image_copy_plane(out->data[i] + out->linesize[i] *
> > > s->first_field,    
> > 
> > this seems to be corrupted by line breaks
> >   
> 
> Well, the git send-email email was silently dropped three times... See:
> 
> http://www.shlomifish.org/Files/files/code/0001-Refactor-two-near-identical-clauses.patch
> 
> also attached here. Email has sadly become unreliable.
> 

Ping! Please review.

> > [...]
> >   
> 
>
Michael Niedermayer June 28, 2018, 12:38 a.m. UTC | #2
On Sun, Jun 17, 2018 at 03:40:19PM +0300, Shlomi Fish wrote:
> On Sun, 17 Jun 2018 03:05:27 +0200
> Michael Niedermayer <michael@niedermayer.cc> wrote:
> 
> > On Tue, Jun 12, 2018 at 12:53:20PM +0300, Shlomi Fish wrote:
> > > This message did not arrive to the list after three submissions.
> > > 
> > > Begin forwarded message:
> > > 
> > > Date: Tue, 12 Jun 2018 12:42:52 +0300
> > > From: Shlomi Fish <shlomif@shlomifish.org>
> > > To: ffmpeg-devel@ffmpeg.org
> > > Cc: Shlomi Fish <shlomif@shlomifish.org>
> > > Subject: [PATCH] Refactor two near-identical clauses.
> > > 
> > > 
> > > Placed under the Expat licence . All tests pass.
> > > ---
> > >  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
> > >  1 file changed, 14 insertions(+), 19 deletions(-)
> > > 
> > > diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> > > index 037f5d1cf2..be371201e1 100644
> > > --- a/libavfilter/vf_weave.c
> > > +++ b/libavfilter/vf_weave.c
> > > @@ -23,6 +23,7 @@
> > >  #include "libavutil/pixdesc.h"
> > >  #include "avfilter.h"
> > >  #include "internal.h"
> > > +#include <stdbool.h>
> > >  
> > >  typedef struct WeaveContext {
> > >      const AVClass *class;
> > > @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
> > >      AVFilterLink *outlink = ctx->outputs[0];
> > >      AVFrame *out;
> > >      int i;
> > > +    bool weave;
> > > +    int field1, field2;
> > >  
> > >      if (!s->prev) {
> > >          s->prev = in;
> > > @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > > *in) }
> > >      av_frame_copy_props(out, in);
> > >  
> > > +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> > > +    field1 = s->first_field * weave;
> > > +    field2 = s->first_field * !weave;
> > >      for (i = 0; i < s->nb_planes; i++) {
> > > -        if (s->double_weave && !(inlink->frame_count_out & 1)) {
> > > -            av_image_copy_plane(out->data[i] + out->linesize[i] *
> > > s->first_field,  
> > 
> > this seems to be corrupted by line breaks
> > 
> 
> Well, the git send-email email was silently dropped three times... See:
> 
> http://www.shlomifish.org/Files/files/code/0001-Refactor-two-near-identical-clauses.patch
> 
> also attached here. Email has sadly become unreliable.
> 
> > [...]
> > 
> 
> 

>  vf_weave.c |   33 ++++++++++++++-------------------
>  1 file changed, 14 insertions(+), 19 deletions(-)
> f5a0afe735e322c2539a11dd7d8b28534d96c99c  0001-Refactor-two-near-identical-clauses.patch
> From b6678799848297cd7079085035259baf6d8c54f0 Mon Sep 17 00:00:00 2001
> From: Shlomi Fish <shlomif@shlomifish.org>
> Date: Fri, 25 May 2018 23:44:54 +0300
> Subject: [PATCH] Refactor two near-identical clauses.
> 
> Placed under the Expat licence . All tests pass.
> ---
>  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
>  1 file changed, 14 insertions(+), 19 deletions(-)
> 
> diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> index 037f5d1cf2..be371201e1 100644
> --- a/libavfilter/vf_weave.c
> +++ b/libavfilter/vf_weave.c
> @@ -23,6 +23,7 @@
>  #include "libavutil/pixdesc.h"
>  #include "avfilter.h"
>  #include "internal.h"
> +#include <stdbool.h>
>  
>  typedef struct WeaveContext {
>      const AVClass *class;
> @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
>      AVFilterLink *outlink = ctx->outputs[0];
>      AVFrame *out;
>      int i;
> +    bool weave;
> +    int field1, field2;
>  
>      if (!s->prev) {
>          s->prev = in;
> @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
>      }
>      av_frame_copy_props(out, in);
>  
> +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> +    field1 = s->first_field * weave;
> +    field2 = s->first_field * !weave;

if first_field is 0 both field1 and 2 are 0 while !s->first_field was not 0
but gets replaced by it
am i missing something ?

stdbool seems unneeded

and what is "Placed under the Expat licence" supposed to mean ?
the file is under LGPL


[...]
Shlomi Fish June 28, 2018, 8:07 a.m. UTC | #3
Hi Michael!

Thanks for your review.

On Thu, 28 Jun 2018 02:38:51 +0200
Michael Niedermayer <michael@niedermayer.cc> wrote:

> On Sun, Jun 17, 2018 at 03:40:19PM +0300, Shlomi Fish wrote:
> > On Sun, 17 Jun 2018 03:05:27 +0200
> > Michael Niedermayer <michael@niedermayer.cc> wrote:
> >   
> > > On Tue, Jun 12, 2018 at 12:53:20PM +0300, Shlomi Fish wrote:  
> > > > This message did not arrive to the list after three submissions.
> > > > 
> > > > Begin forwarded message:
> > > > 
> > > > Date: Tue, 12 Jun 2018 12:42:52 +0300
> > > > From: Shlomi Fish <shlomif@shlomifish.org>
> > > > To: ffmpeg-devel@ffmpeg.org
> > > > Cc: Shlomi Fish <shlomif@shlomifish.org>
> > > > Subject: [PATCH] Refactor two near-identical clauses.
> > > > 
> > > > 
> > > > Placed under the Expat licence . All tests pass.
> > > > ---
> > > >  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
> > > >  1 file changed, 14 insertions(+), 19 deletions(-)
> > > > 
> > > > diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> > > > index 037f5d1cf2..be371201e1 100644
> > > > --- a/libavfilter/vf_weave.c
> > > > +++ b/libavfilter/vf_weave.c
> > > > @@ -23,6 +23,7 @@
> > > >  #include "libavutil/pixdesc.h"
> > > >  #include "avfilter.h"
> > > >  #include "internal.h"
> > > > +#include <stdbool.h>
> > > >  
> > > >  typedef struct WeaveContext {
> > > >      const AVClass *class;
> > > > @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > > > *in) AVFilterLink *outlink = ctx->outputs[0];
> > > >      AVFrame *out;
> > > >      int i;
> > > > +    bool weave;
> > > > +    int field1, field2;
> > > >  
> > > >      if (!s->prev) {
> > > >          s->prev = in;
> > > > @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink,
> > > > AVFrame *in) }
> > > >      av_frame_copy_props(out, in);
> > > >  
> > > > +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> > > > +    field1 = s->first_field * weave;
> > > > +    field2 = s->first_field * !weave;
> > > >      for (i = 0; i < s->nb_planes; i++) {
> > > > -        if (s->double_weave && !(inlink->frame_count_out & 1)) {
> > > > -            av_image_copy_plane(out->data[i] + out->linesize[i] *
> > > > s->first_field,    
> > > 
> > > this seems to be corrupted by line breaks
> > >   
> > 
> > Well, the git send-email email was silently dropped three times... See:
> > 
> > http://www.shlomifish.org/Files/files/code/0001-Refactor-two-near-identical-clauses.patch
> > 
> > also attached here. Email has sadly become unreliable.
> >   
> > > [...]
> > >   
> > 
> >   
> 
> >  vf_weave.c |   33 ++++++++++++++-------------------
> >  1 file changed, 14 insertions(+), 19 deletions(-)
> > f5a0afe735e322c2539a11dd7d8b28534d96c99c
> > 0001-Refactor-two-near-identical-clauses.patch From
> > b6678799848297cd7079085035259baf6d8c54f0 Mon Sep 17 00:00:00 2001 From:
> > Shlomi Fish <shlomif@shlomifish.org> Date: Fri, 25 May 2018 23:44:54 +0300
> > Subject: [PATCH] Refactor two near-identical clauses.
> > 
> > Placed under the Expat licence . All tests pass.
> > ---
> >  libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
> >  1 file changed, 14 insertions(+), 19 deletions(-)
> > 
> > diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
> > index 037f5d1cf2..be371201e1 100644
> > --- a/libavfilter/vf_weave.c
> > +++ b/libavfilter/vf_weave.c
> > @@ -23,6 +23,7 @@
> >  #include "libavutil/pixdesc.h"
> >  #include "avfilter.h"
> >  #include "internal.h"
> > +#include <stdbool.h>
> >  
> >  typedef struct WeaveContext {
> >      const AVClass *class;
> > @@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
> >      AVFilterLink *outlink = ctx->outputs[0];
> >      AVFrame *out;
> >      int i;
> > +    bool weave;
> > +    int field1, field2;
> >  
> >      if (!s->prev) {
> >          s->prev = in;
> > @@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> > *in) }
> >      av_frame_copy_props(out, in);
> >  
> > +    weave = (s->double_weave && !(inlink->frame_count_out & 1));
> > +    field1 = s->first_field * weave;
> > +    field2 = s->first_field * !weave;  
> 
> if first_field is 0 both field1 and 2 are 0 while !s->first_field was not 0
> but gets replaced by it
> am i missing something ?
> 

so first_field is a boolean? I guess I can amend the code to the effect.

> stdbool seems unneeded
> 

I prefer to use it, but I guess I can avoid it.

> and what is "Placed under the Expat licence" supposed to mean ?
> the file is under LGPL
> 

It means I licence my changes under Expat, on top of the original terms of the
original code.

Regards,

	Shlomi

> 
> [...]
> 
>
diff mbox

Patch

From b6678799848297cd7079085035259baf6d8c54f0 Mon Sep 17 00:00:00 2001
From: Shlomi Fish <shlomif@shlomifish.org>
Date: Fri, 25 May 2018 23:44:54 +0300
Subject: [PATCH] Refactor two near-identical clauses.

Placed under the Expat licence . All tests pass.
---
 libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
index 037f5d1cf2..be371201e1 100644
--- a/libavfilter/vf_weave.c
+++ b/libavfilter/vf_weave.c
@@ -23,6 +23,7 @@ 
 #include "libavutil/pixdesc.h"
 #include "avfilter.h"
 #include "internal.h"
+#include <stdbool.h>
 
 typedef struct WeaveContext {
     const AVClass *class;
@@ -84,6 +85,8 @@  static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     AVFilterLink *outlink = ctx->outputs[0];
     AVFrame *out;
     int i;
+    bool weave;
+    int field1, field2;
 
     if (!s->prev) {
         s->prev = in;
@@ -98,26 +101,18 @@  static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     }
     av_frame_copy_props(out, in);
 
+    weave = (s->double_weave && !(inlink->frame_count_out & 1));
+    field1 = s->first_field * weave;
+    field2 = s->first_field * !weave;
     for (i = 0; i < s->nb_planes; i++) {
-        if (s->double_weave && !(inlink->frame_count_out & 1)) {
-            av_image_copy_plane(out->data[i] + out->linesize[i] * s->first_field,
-                                out->linesize[i] * 2,
-                                in->data[i], in->linesize[i],
-                                s->linesize[i], s->planeheight[i]);
-            av_image_copy_plane(out->data[i] + out->linesize[i] * !s->first_field,
-                                out->linesize[i] * 2,
-                                s->prev->data[i], s->prev->linesize[i],
-                                s->linesize[i], s->planeheight[i]);
-        } else {
-            av_image_copy_plane(out->data[i] + out->linesize[i] * !s->first_field,
-                                out->linesize[i] * 2,
-                                in->data[i], in->linesize[i],
-                                s->linesize[i], s->planeheight[i]);
-            av_image_copy_plane(out->data[i] + out->linesize[i] * s->first_field,
-                                out->linesize[i] * 2,
-                                s->prev->data[i], s->prev->linesize[i],
-                                s->linesize[i], s->planeheight[i]);
-        }
+        av_image_copy_plane(out->data[i] + out->linesize[i] * field1,
+                            out->linesize[i] * 2,
+                            in->data[i], in->linesize[i],
+                            s->linesize[i], s->planeheight[i]);
+        av_image_copy_plane(out->data[i] + out->linesize[i] * field2,
+                            out->linesize[i] * 2,
+                            s->prev->data[i], s->prev->linesize[i],
+                            s->linesize[i], s->planeheight[i]);
     }
 
     out->pts = s->double_weave ? s->prev->pts : in->pts / 2;
-- 
2.17.0