mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
pp: add auto detection cpu flag.
This commit is contained in:
parent
e034b07e40
commit
59d686f100
@ -586,11 +586,11 @@ static inline void postProcess(const uint8_t src[], int srcStride, uint8_t dst[]
|
|||||||
#if CONFIG_RUNTIME_CPUDETECT
|
#if CONFIG_RUNTIME_CPUDETECT
|
||||||
#if ARCH_X86 && HAVE_INLINE_ASM
|
#if ARCH_X86 && HAVE_INLINE_ASM
|
||||||
// ordered per speed fastest first
|
// ordered per speed fastest first
|
||||||
if (c->cpuCaps & PP_CPU_CAPS_MMX2) pp = postProcess_MMX2;
|
if (c->cpuCaps & AV_CPU_FLAG_MMXEXT) pp = postProcess_MMX2;
|
||||||
else if (c->cpuCaps & PP_CPU_CAPS_3DNOW) pp = postProcess_3DNow;
|
else if (c->cpuCaps & AV_CPU_FLAG_3DNOW) pp = postProcess_3DNow;
|
||||||
else if (c->cpuCaps & PP_CPU_CAPS_MMX) pp = postProcess_MMX;
|
else if (c->cpuCaps & AV_CPU_FLAG_MMX) pp = postProcess_MMX;
|
||||||
#elif HAVE_ALTIVEC
|
#elif HAVE_ALTIVEC
|
||||||
if (c->cpuCaps & PP_CPU_CAPS_ALTIVEC) pp = postProcess_altivec;
|
if (c->cpuCaps & AV_CPU_FLAG_ALTIVEC) pp = postProcess_altivec;
|
||||||
#endif
|
#endif
|
||||||
#else /* CONFIG_RUNTIME_CPUDETECT */
|
#else /* CONFIG_RUNTIME_CPUDETECT */
|
||||||
#if HAVE_MMXEXT_INLINE
|
#if HAVE_MMXEXT_INLINE
|
||||||
@ -896,7 +896,6 @@ pp_context *pp_get_context(int width, int height, int cpuCaps){
|
|||||||
|
|
||||||
memset(c, 0, sizeof(PPContext));
|
memset(c, 0, sizeof(PPContext));
|
||||||
c->av_class = &av_codec_context_class;
|
c->av_class = &av_codec_context_class;
|
||||||
c->cpuCaps= cpuCaps;
|
|
||||||
if(cpuCaps&PP_FORMAT){
|
if(cpuCaps&PP_FORMAT){
|
||||||
c->hChromaSubSample= cpuCaps&0x3;
|
c->hChromaSubSample= cpuCaps&0x3;
|
||||||
c->vChromaSubSample= (cpuCaps>>4)&0x3;
|
c->vChromaSubSample= (cpuCaps>>4)&0x3;
|
||||||
@ -904,6 +903,15 @@ pp_context *pp_get_context(int width, int height, int cpuCaps){
|
|||||||
c->hChromaSubSample= 1;
|
c->hChromaSubSample= 1;
|
||||||
c->vChromaSubSample= 1;
|
c->vChromaSubSample= 1;
|
||||||
}
|
}
|
||||||
|
if (cpuCaps & PP_CPU_CAPS_AUTO) {
|
||||||
|
c->cpuCaps = av_get_cpu_flags();
|
||||||
|
} else {
|
||||||
|
c->cpuCaps = 0;
|
||||||
|
if (cpuCaps & PP_CPU_CAPS_MMX) c->cpuCaps |= AV_CPU_FLAG_MMX;
|
||||||
|
if (cpuCaps & PP_CPU_CAPS_MMX2) c->cpuCaps |= AV_CPU_FLAG_MMXEXT;
|
||||||
|
if (cpuCaps & PP_CPU_CAPS_3DNOW) c->cpuCaps |= AV_CPU_FLAG_3DNOW;
|
||||||
|
if (cpuCaps & PP_CPU_CAPS_ALTIVEC) c->cpuCaps |= AV_CPU_FLAG_ALTIVEC;
|
||||||
|
}
|
||||||
|
|
||||||
reallocBuffers(c, width, height, stride, qpStride);
|
reallocBuffers(c, width, height, stride, qpStride);
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ void pp_free_context(pp_context *ppContext);
|
|||||||
#define PP_CPU_CAPS_MMX2 0x20000000
|
#define PP_CPU_CAPS_MMX2 0x20000000
|
||||||
#define PP_CPU_CAPS_3DNOW 0x40000000
|
#define PP_CPU_CAPS_3DNOW 0x40000000
|
||||||
#define PP_CPU_CAPS_ALTIVEC 0x10000000
|
#define PP_CPU_CAPS_ALTIVEC 0x10000000
|
||||||
|
#define PP_CPU_CAPS_AUTO 0x00080000
|
||||||
|
|
||||||
#define PP_FORMAT 0x00000008
|
#define PP_FORMAT 0x00000008
|
||||||
#define PP_FORMAT_420 (0x00000011|PP_FORMAT)
|
#define PP_FORMAT_420 (0x00000011|PP_FORMAT)
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
#ifndef LIBPOSTPROC_VERSION_MAJOR
|
#ifndef LIBPOSTPROC_VERSION_MAJOR
|
||||||
#define LIBPOSTPROC_VERSION_MAJOR 52
|
#define LIBPOSTPROC_VERSION_MAJOR 52
|
||||||
#define LIBPOSTPROC_VERSION_MINOR 1
|
#define LIBPOSTPROC_VERSION_MINOR 2
|
||||||
#define LIBPOSTPROC_VERSION_MICRO 100
|
#define LIBPOSTPROC_VERSION_MICRO 100
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user