Browse Source

cpu: add a function for querying maximum required data alignment

tags/n3.4
Anton Khirnov 8 years ago
parent
commit
e6bff23f1e
4 changed files with 30 additions and 1 deletions
  1. +3
    -0
      doc/APIchanges
  2. +13
    -0
      libavutil/cpu.c
  3. +13
    -0
      libavutil/cpu.h
  4. +1
    -1
      libavutil/version.h

+ 3
- 0
doc/APIchanges View File

@@ -13,6 +13,9 @@ libavutil: 2015-08-28


API changes, most recent first: API changes, most recent first:


2017-02-xx - xxxxxxx - lavu 55.31.0 - cpu.h
Add av_cpu_max_align() for querying maximum required data alignment.

2016-xx-xx - xxxxxxx - lavf 57.11.0 - avio.h 2016-xx-xx - xxxxxxx - lavf 57.11.0 - avio.h
Add avio_context_free(). From now on it must be used for freeing AVIOContext. Add avio_context_free(). From now on it must be used for freeing AVIOContext.




+ 13
- 0
libavutil/cpu.c View File

@@ -16,6 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */


#include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <stdatomic.h> #include <stdatomic.h>


@@ -180,3 +181,15 @@ int av_cpu_count(void)


return nb_cpus; return nb_cpus;
} }

size_t av_cpu_max_align(void)
{
int flags = av_get_cpu_flags();

if (flags & AV_CPU_FLAG_AVX)
return 32;
if (flags & (AV_CPU_FLAG_ALTIVEC | AV_CPU_FLAG_SSE | AV_CPU_FLAG_NEON))
return 16;

return 8;
}

+ 13
- 0
libavutil/cpu.h View File

@@ -21,6 +21,8 @@
#ifndef AVUTIL_CPU_H #ifndef AVUTIL_CPU_H
#define AVUTIL_CPU_H #define AVUTIL_CPU_H


#include <stddef.h>

#include "version.h" #include "version.h"


#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ #define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */
@@ -88,4 +90,15 @@ int av_parse_cpu_flags(const char *s);
*/ */
int av_cpu_count(void); int av_cpu_count(void);


/**
* Get the maximum data alignment that may be required by Libav.
*
* Note that this is affected by the build configuration and the CPU flags mask,
* so e.g. if the CPU supports AVX, but libavutil has been built with
* --disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through
* av_set_cpu_flags_mask(), then this function will behave as if AVX is not
* present.
*/
size_t av_cpu_max_align(void);

#endif /* AVUTIL_CPU_H */ #endif /* AVUTIL_CPU_H */

+ 1
- 1
libavutil/version.h View File

@@ -54,7 +54,7 @@
*/ */


#define LIBAVUTIL_VERSION_MAJOR 55 #define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 30
#define LIBAVUTIL_VERSION_MINOR 31
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0


#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \


Loading…
Cancel
Save