[FFmpeg-devel] [PATCH] lavfi: remove noise libmpcodecs wrapper

Michael Niedermayer michaelni at gmx.at
Sat Apr 6 18:06:04 CEST 2013


On Fri, Apr 05, 2013 at 11:50:01PM +0000, Paul B Mahol wrote:
> Native filter have been implemented.
> 
> Even with inline assembly manually enabled, this filter
> is significanly slower than native one.
> 
> Optimization to native filter can be added at any time
> and there is no reason to keep mp filter just because
> it have inline assembly that gets never enabled.

noise=all_strength=30
22863845 decicycles in noise, 32 runs, 0 skips
the filter shows artifacts (quality is IMHO not acceptable)

mp=noise=30:30
15285560 decicycles in mpnoise, 32 runs, 0 skips

forcing MMX2
mp=noise=30:30
2790510 decicycles in mpnoise, 32 runs, 0 skips

PS: why does the native filter not handle shorthand notation ?

tested using:

diff --git a/libavfilter/libmpcodecs/vf_noise.c b/libavfilter/libmpcodecs/vf_noise.c
index 3b946e9..606ea66 100644
--- a/libavfilter/libmpcodecs/vf_noise.c
+++ b/libavfilter/libmpcodecs/vf_noise.c
@@ -351,11 +351,11 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
         }
 //else printf("dr\n");
         dmpi= vf->dmpi;
-
+START_TIMER
         noise(dmpi->planes[0], mpi->planes[0], dmpi->stride[0], mpi->stride[0], mpi->w, mpi->h, &vf->priv->lumaParam);
         noise(dmpi->planes[1], mpi->planes[1], dmpi->stride[1], mpi->stride[1], mpi->w/2, mpi->h/2, &vf->priv->chromaParam);
         noise(dmpi->planes[2], mpi->planes[2], dmpi->stride[2], mpi->stride[2], mpi->w/2, mpi->h/2, &vf->priv->chromaParam);
-
+STOP_TIMER("mpnoise")
         ff_vf_clone_mpi_attributes(dmpi, mpi);

 #if HAVE_MMX
diff --git a/libavfilter/vf_noise.c b/libavfilter/vf_noise.c
index 8db5329..8782b4a 100644
--- a/libavfilter/vf_noise.c
+++ b/libavfilter/vf_noise.c
@@ -309,11 +309,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
         }
         av_frame_copy_props(out, inpicref);
     }
-
+START_TIMER
     for (i = 0; i < n->nb_planes; i++)
         noise(out->data[i], inpicref->data[i], out->linesize[i],
               inpicref->linesize[i], n->linesize[i], n->height[i], n, i);
-
+STOP_TIMER("noise")
     ret = ff_filter_frame(outlink, out);
     if (inpicref != out)
         av_frame_free(&inpicref);

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

DNS cache poisoning attacks, popular search engine, Google internet authority
dont be evil, please
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130406/4866dc7b/attachment.asc>


More information about the ffmpeg-devel mailing list