[FFmpeg-devel] [RFC] DXVA2 decoding and FFmpeg

Stefano Sabatini stefasab at gmail.com
Mon Jun 15 17:55:35 CEST 2015


On date Monday 2015-06-15 11:56:13 +0200, Stefano Sabatini encoded:
[...]
> From 3a75ef1e86360cd6f30b8e550307404d0d1c1dba Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Mon, 15 Jun 2015 11:02:50 +0200
> Subject: [PATCH] lavu/mem: add av_memcpynt() function with x86 optimizations
> 
> Assembly based on code from vlc dxva2.c, commit 62107e56 by Laurent Aimar
> <fenrir at videolan.org>.
> 
> TODO: bump minor, update APIchanges
> ---
>  libavutil/mem.c          |  9 +++++
>  libavutil/mem.h          | 14 ++++++++
>  libavutil/mem_internal.h | 26 +++++++++++++++
>  libavutil/x86/Makefile   |  1 +
>  libavutil/x86/mem.c      | 85 ++++++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 135 insertions(+)
>  create mode 100644 libavutil/mem_internal.h
>  create mode 100644 libavutil/x86/mem.c
> 
> diff --git a/libavutil/mem.c b/libavutil/mem.c
> index da291fb..0e1eb01 100644
> --- a/libavutil/mem.c
> +++ b/libavutil/mem.c
> @@ -42,6 +42,7 @@
>  #include "dynarray.h"
>  #include "intreadwrite.h"
>  #include "mem.h"
> +#include "mem_internal.h"
>  
>  #ifdef MALLOC_PREFIX
>  
> @@ -515,3 +516,11 @@ void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size)
>      ff_fast_malloc(ptr, size, min_size, 0);
>  }
>  
> +void av_memcpynt(void *dst, const void *src, size_t size, int cpu_flags)
> +{
> +#if ARCH_X86
> +    ff_memcpynt_x86(dst, src, size, cpu_flags);
> +#else
> +    memcpy(dst, src, size, cpu_flags);
> +#endif
> +}

Alternatively, what about something like:

av_memcpynt_fn av_memcpynt_get_fn(void);

modeled after av_pixelutils_get_sad_fn()? This would skip the need for
a wrapper calling the right function.
-- 
FFmpeg = Frightening and Fantastic Murdering Portentous Erratic Guru


More information about the ffmpeg-devel mailing list