[FFmpeg-devel] [FFMpeg-Devel][GSoC][PATCH 4/6] postproc: Updated postprocess_template to use new sse/avx deinterlace functions

Michael Niedermayer michaelni at gmx.at
Thu Apr 23 01:38:51 CEST 2015


On Thu, Apr 23, 2015 at 01:03:09AM +0200, Michael Niedermayer wrote:
> On Wed, Apr 22, 2015 at 04:27:29PM -0400, Tucker DiNapoli wrote:
> > This commit adds several new files containing yasm assembly code, they are:
> > PPContext.asm; Defines the PPContext struct using the yasm struc command
> > PPUtil.asm; Various utility macros used in the other asm code
> > block_copy.asm; Implements the block copy function, the sse2 and avx2
> > versions copy multiple blocks at once.
> > deinterlace.asm; Contains implemenations of the postprocessing filters
> > with support for sse2 and avx2.
> > 
> > Adding these new functions to postprocess_template entailed adding a new
> > templates for AVX2 and modifying the current SSE2 template to use the
> > sse2 functions.
> > A new deinterlace function was added to move the logic of which
> > deinterlace function to use out of the postprocess function and make
> > adding the new functions eaiser.
> > 
> > Being as the filters don't reproduce the exact results as the mmx/c versions they are
> > not actually used, the code to enable them is present, but commented out.
> > ---
> 
> Please remove all code that does not work
> and resubmit what does work and can be enabled
> 
> If code doesnt work it cannot be pushed to git, and pushing to git
> is required for the qualification task

also if i enable the code like below, i just get green and black
stripes, how can this be tested ?

diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
index 63b01a5..20df267 100644
--- a/libpostproc/postprocess.c
+++ b/libpostproc/postprocess.c
@@ -545,13 +545,13 @@ static av_always_inline void do_a_deblock_C(uint8_t *src, int step,
 #        define TEMPLATE_PP_AVX2 1
 #        include "postprocess_template.c"
 #    else
-/*#        if HAVE_AVX2_INLINE
+#        if HAVE_AVX2_INLINE
 #            define TEMPLATE_PP_AVX2 1
 #            include "postprocess_template.c"
 #        elif HAVE_SSE2_INLINE
 #            define TEMPLATE_PP_SSE2 1
-#            include "postprocess_template.c"*/
-#        if HAVE_MMXEXT_INLINE
+#            include "postprocess_template.c"
+#        elif HAVE_MMXEXT_INLINE
 #            define TEMPLATE_PP_MMXEXT 1
 #            include "postprocess_template.c"
 #        elif HAVE_AMD3DNOW_INLINE
@@ -579,9 +579,9 @@ static inline void postProcess(const uint8_t src[], int srcStride, uint8_t dst[]
 #if CONFIG_RUNTIME_CPUDETECT
 #if ARCH_X86 && HAVE_INLINE_ASM
         // ordered per speed fastest first
-/*        if      (c->cpuCaps & AV_CPU_FLAG_AVX2)     pp = postProcess_avx2;
-        else if (c->cpuCaps & AV_CPU_FLAG_SSE2)     pp = postProcess_sse2;*/
-        if (c->cpuCaps & AV_CPU_FLAG_MMXEXT)   pp = postProcess_MMX2;
+        if      (c->cpuCaps & AV_CPU_FLAG_AVX2)     pp = postProcess_avx2;
+        else if (c->cpuCaps & AV_CPU_FLAG_SSE2)     pp = postProcess_sse2;
+        else if (c->cpuCaps & AV_CPU_FLAG_MMXEXT)   pp = postProcess_MMX2;
         else if (c->cpuCaps & AV_CPU_FLAG_3DNOW)    pp = postProcess_3DNow;
         else if (c->cpuCaps & AV_CPU_FLAG_MMX)      pp = postProcess_MMX;
 #elif HAVE_ALTIVEC

[...]


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Why not whip the teacher when the pupil misbehaves? -- Diogenes of Sinope
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150423/26d92798/attachment.asc>


More information about the ffmpeg-devel mailing list