Browse Source

avutil/avassert: Add av_assertX_fpu()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.2
Michael Niedermayer 8 years ago
parent
commit
f5495c970c
4 changed files with 26 additions and 1 deletions
  1. +3
    -0
      doc/APIchanges
  2. +9
    -0
      libavutil/avassert.h
  3. +13
    -0
      libavutil/utils.c
  4. +1
    -1
      libavutil/version.h

+ 3
- 0
doc/APIchanges View File

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

API changes, most recent first:

2016-10-22 - xxxxxxx - lavu 55.33.100 - avassert.h
Add av_assert0_fpu() / av_assert2_fpu()

2016-xx-xx - xxxxxxx - lavc 57.61.100 / lavc 57.24.0 - avcodec.h
Decoders now export the frame timestamp as AVFrame.pts. It was
previously exported as AVFrame.pkt_pts, which is now deprecated.


+ 9
- 0
libavutil/avassert.h View File

@@ -59,8 +59,17 @@
*/
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
#define av_assert2(cond) av_assert0(cond)
#define av_assert2_fpu() av_assert0_fpu()
#else
#define av_assert2(cond) ((void)0)
#define av_assert2_fpu() ((void)0)
#endif

/**
* Assert that floating point opperations can be executed.
*
* This will av_assert0() that the cpu is not in MMX state on X86
*/
void av_assert0_fpu(void);

#endif /* AVUTIL_AVASSERT_H */

+ 13
- 0
libavutil/utils.c View File

@@ -125,3 +125,16 @@ AVRational av_get_time_base_q(void)
{
return (AVRational){1, AV_TIME_BASE};
}

void av_assert0_fpu(void) {
#if HAVE_MMX_INLINE
uint16_t state[14];
__asm volatile (
"fstenv %0 \n\t"
: "+m" (state)
:
: "memory"
);
av_assert0((state[4] & 3) == 3);
#endif
}

+ 1
- 1
libavutil/version.h View File

@@ -79,7 +79,7 @@
*/

#define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 32
#define LIBAVUTIL_VERSION_MINOR 33
#define LIBAVUTIL_VERSION_MICRO 100

#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \


Loading…
Cancel
Save